#include <stdio.h>

unsigned char tab[100];

int main(void)
{
	int i;
	char *p;
	short *p2;
	unsigned long *p4;
	unsigned long long *p8;
	for (i=0; i<sizeof(tab); i++) tab[i] = i * 0x1;
#if 0
	p = tab;
	while (p < &tab[99]) {
		p2 = (unsigned short *)p;
		printf("%04x  ", *p2);
		p++;
	}

	printf("\n");
	p = tab;
	while (p < &tab[99]) {
		p4 = (unsigned long *)p;
		printf("%08lx  ", *p4);
		p++;
	}
	printf("\n");
	p = tab;
	while (p < &tab[99]) {
		p8 = (unsigned long long *)p;
		printf("%08llx  ", *p8);
		p++;
	}
#endif
#if 1
	{
	p = tab;
	while (p < &tab[16]) {
		unsigned long long temp;
		p4 = (unsigned long *)p;
		temp = -1;
		asm("fldd 0(%1),%%fr22 ! fldw 0(%0),%%fr22R ! fstd %%fr22,0(%1)" : : "r" (p4), "r"(&temp): "memory");
		printf("%08x  %08llx\n", *p4, temp);
		p++;
	}
	}
	return 0;
#endif
#if 0
	{
	p = tab;
	while (p < &tab[16]) {
		unsigned long long temp;
		p8 = (unsigned long long *)p;
		temp = -1;
		asm("fldd 0(%1),%%fr22 ! fldd 0(%0),%%fr22 ! fstd %%fr22,0(%1) ! fstd %%fr22,0(%0)" : : "r" (p8), "r"(&temp): "memory");
		printf("%08llx  %08llx\n", *p8, temp);
		p++;
	}
	}
	return 0;
#endif
}

