Viewing file: fmul_scvtf_1.c (4.66 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-save-temps -O2 -fno-inline" } */
#define FUNC_DEFS(__a) \ float \ fsfoo##__a (int x) \ { \ return ((float) x)/(1lu << __a); \ } \ float \ fusfoo##__a (unsigned int x) \ { \ return ((float) x)/(1lu << __a); \ } \ float \ fslfoo##__a (long long x) \ { \ return ((float) x)/(1lu << __a); \ } \ float \ fulfoo##__a (unsigned long long x) \ { \ return ((float) x)/(1lu << __a); \ } \
#define FUNC_DEFD(__a) \ double \ dsfoo##__a (int x) \ { \ return ((double) x)/(1lu << __a); \ } \ double \ dusfoo##__a (unsigned int x) \ { \ return ((double) x)/(1lu << __a); \ } \ double \ dslfoo##__a (long long x) \ { \ return ((double) x)/(1lu << __a); \ } \ double \ dulfoo##__a (unsigned long long x) \ { \ return ((double) x)/(1lu << __a); \ }
FUNC_DEFS (4) /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], w\[0-9\]*.*#4" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], w\[0-9\]*.*#4" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], x\[0-9\]*.*#4" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], x\[0-9\]*.*#4" 1 } } */
FUNC_DEFD (4) /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], w\[0-9\]*.*#4" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], w\[0-9\]*.*#4" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], x\[0-9\]*.*#4" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], x\[0-9\]*.*#4" 1 } } */
FUNC_DEFS (8) /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], w\[0-9\]*.*#8" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], w\[0-9\]*.*#8" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], x\[0-9\]*.*#8" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], x\[0-9\]*.*#8" 1 } } */
FUNC_DEFD (8) /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], w\[0-9\]*.*#8" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], w\[0-9\]*.*#8" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], x\[0-9\]*.*#8" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], x\[0-9\]*.*#8" 1 } } */
FUNC_DEFS (16) /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], w\[0-9\]*.*#16" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], w\[0-9\]*.*#16" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], x\[0-9\]*.*#16" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], x\[0-9\]*.*#16" 1 } } */
FUNC_DEFD (16) /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], w\[0-9\]*.*#16" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], w\[0-9\]*.*#16" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], x\[0-9\]*.*#16" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], x\[0-9\]*.*#16" 1 } } */
FUNC_DEFS (32) /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], w\[0-9\]*.*#32" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], w\[0-9\]*.*#32" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\ts\[0-9\], x\[0-9\]*.*#32" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\ts\[0-9\], x\[0-9\]*.*#32" 1 } } */
FUNC_DEFD (32) /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], w\[0-9\]*.*#32" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], w\[0-9\]*.*#32" 1 } } */ /* { dg-final { scan-assembler-times "scvtf\td\[0-9\], x\[0-9\]*.*#32" 1 } } */ /* { dg-final { scan-assembler-times "ucvtf\td\[0-9\], x\[0-9\]*.*#32" 1 } } */
#define FUNC_TESTS(__a, __b) \ do \ { \ if (fsfoo##__a (__b) != ((int) i) * (1.0f/(1lu << __a)) ) \ __builtin_abort (); \ if (fusfoo##__a (__b) != ((int) i) * (1.0f/(1lu << __a)) ) \ __builtin_abort (); \ if (fslfoo##__a (__b) != ((int) i) * (1.0f/(1lu << __a)) ) \ __builtin_abort (); \ if (fulfoo##__a (__b) != ((int) i) * (1.0f/(1lu << __a)) ) \ __builtin_abort (); \ } while (0)
#define FUNC_TESTD(__a, __b) \ do \ { \ if (dsfoo##__a (__b) != ((int) i) * (1.0d/(1lu << __a)) ) \ __builtin_abort (); \ if (dusfoo##__a (__b) != ((int) i) * (1.0d/(1lu << __a)) ) \ __builtin_abort (); \ if (dslfoo##__a (__b) != ((int) i) * (1.0d/(1lu << __a)) ) \ __builtin_abort (); \ if (dulfoo##__a (__b) != ((int) i) * (1.0d/(1lu << __a)) ) \ __builtin_abort (); \ } while (0)
int main (void) { int i;
for (i = 0; i < 32; i ++) { FUNC_TESTS (4, i); FUNC_TESTS (8, i); FUNC_TESTS (16, i); FUNC_TESTS (32, i);
FUNC_TESTD (4, i); FUNC_TESTD (8, i); FUNC_TESTD (16, i); FUNC_TESTD (32, i); } return 0; }
|