[rs6000] fix mffsl emulation
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / test_mffsl.c
blob41377efba1a7167fda4f066fa08cf77347492125
1 /* { dg-do run { target { powerpc*-*-* } } } */
2 /* { dg-options "-O2 -std=c99" } */
4 #ifdef DEBUG
5 #include <stdio.h>
6 #endif
8 void abort (void);
10 int main ()
13 register double f14;
14 union blah {
15 double d;
16 unsigned long long ll;
17 } mffs_val, mffsl_val;
19 /* Test reading the FPSCR register. */
20 __asm __volatile ("mffs %0" : "=f"(f14));
21 mffs_val.d = f14;
22 /* Select the same bits as mffsl. */
23 mffs_val.ll &= 0x70007f0ffLL;
25 mffsl_val.d = __builtin_mffsl ();
27 if (mffs_val.ll != mffsl_val.ll)
29 #ifdef DEBUG
30 printf("ERROR, __builtin_mffsl() returned 0x%llx, not the expecected value 0x%llx\n",
31 mffsl_val.ll, mffs_val.ll);
32 #else
33 abort();
34 #endif