/* Show values of uninitialised crunch registers */ volatile union u { unsigned long long ll; double d; struct { float f0, f1; } f; struct { long l0, l1; } l; } u; main(int argc, char **argv) { register volatile union u *up = &u; asm("ldr r7,=42"); asm("cfmvdlr mvd3,r7"); asm("cfstr64 mvdx0, [%0]"::"r" (up)); printf("mvdx0 = %llu\n", u.ll); u.d=42.0; asm("cfstr64 mvdx1, [%0]"::"r" (up)); printf("mvdx1 = %llu\n", u.ll); asm("cfstr64 mvdx2, [%0]"::"r" (up)); printf("mvdx2 = %llu\n", u.ll); asm("cfstr64 mvdx3, [%0]"::"r" (up)); printf("mvdx3 = %llu\n", u.ll); asm("cfstr64 mvdx4, [%0]"::"r" (up)); printf("mvdx4 = %llu\n", u.ll); asm("cfstr64 mvdx5, [%0]"::"r" (up)); printf("mvdx5 = %llu\n", u.ll); asm("cfstr64 mvdx6, [%0]"::"r" (up)); printf("mvdx6 = %llu\n", u.ll); asm("cfstr64 mvdx7, [%0]"::"r" (up)); printf("mvdx7 = %llu\n", u.ll); asm("cfstr64 mvdx8, [%0]"::"r" (up)); printf("mvdx8 = %llu\n", u.ll); asm("cfstr64 mvdx9, [%0]"::"r" (up)); printf("mvdx9 = %llu\n", u.ll); asm("cfstr64 mvdx10, [%0]"::"r" (up)); printf("mvdx10 = %llu\n", u.ll); asm("cfstr64 mvdx11, [%0]"::"r" (up)); printf("mvdx11 = %llu\n", u.ll); asm("cfstr64 mvdx12, [%0]"::"r" (up)); printf("mvdx12 = %llu\n", u.ll); asm("cfstr64 mvdx13, [%0]"::"r" (up)); printf("mvdx13 = %llu\n", u.ll); asm("cfstr64 mvdx14, [%0]"::"r" (up)); printf("mvdx14 = %llu\n", u.ll); asm("cfstr64 mvdx15, [%0]"::"r" (up)); printf("mvdx15 = %llu\n", u.ll); asm("cfmv64a mvdx15, mvax0"); asm("cfstr64 mvdx15, [%0]"::"r" (up)); printf("mvax0 = %llu\n", u.ll); asm("cfmv64a mvdx15, mvax1"); asm("cfstr64 mvdx15, [%0]"::"r" (up)); printf("mvax1 = %llu\n", u.ll); asm("cfmv64a mvdx15, mvax2"); asm("cfstr64 mvdx15, [%0]"::"r" (up)); printf("mvax2 = %llu\n", u.ll); asm("cfmv64a mvdx15, mvax3"); asm("cfstr64 mvdx15, [%0]"::"r" (up)); printf("mvax3 = %llu\n", u.ll); }