[AArch64] SVE tests
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / cvtf_signed_1_run.c
blob451c28506c9a794849894699221fb1b189b857ba
1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
4 #include "cvtf_signed_1.c"
6 #define ARRAY_SIZE 47
8 #define VAL1 (i ^ 3)
9 #define VAL2 ((i * 3) - (15 * 3))
10 #define VAL3 ((i * 0xffdfffef) - (11 * 0xffdfffef))
12 int __attribute__ ((optimize (1)))
13 main (void)
15 static _Float16 array_dest16[ARRAY_SIZE];
16 static float array_dest32[ARRAY_SIZE];
17 static double array_dest64[ARRAY_SIZE];
19 int16_t array_source16[ARRAY_SIZE];
20 int32_t array_source32[ARRAY_SIZE];
21 int64_t array_source64[ARRAY_SIZE];
23 for (int i = 0; i < ARRAY_SIZE; i++)
25 array_source16[i] = VAL1;
26 array_source32[i] = VAL2;
27 array_source64[i] = VAL3;
28 asm volatile ("" ::: "memory");
31 vcvtf_16 (array_dest16, array_source16, ARRAY_SIZE);
32 for (int i = 0; i < ARRAY_SIZE; i++)
33 if (array_dest16[i] != (_Float16) VAL1)
34 __builtin_abort ();
36 vcvtf_32 (array_dest32, array_source32, ARRAY_SIZE);
37 for (int i = 0; i < ARRAY_SIZE; i++)
38 if (array_dest32[i] != (float) VAL2)
39 __builtin_abort ();
41 vcvtf_64 (array_dest64, array_source64, ARRAY_SIZE);
42 for (int i = 0; i < ARRAY_SIZE; i++)
43 if (array_dest64[i] != (double) VAL3)
44 __builtin_abort ();
46 return 0;