[PR81647][AARCH64] Fix handling of Unordered Comparisons in aarch64-simd.md
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / vrecpx.c
blob1a4892f09e5d7f412d912c6dec4b5a0e7b7d3f1a
1 /* { dg-do run } */
2 /* { dg-options "-O3 --save-temps" } */
4 #include <arm_neon.h>
5 #include <math.h>
6 #include <stdlib.h>
8 float32_t in_f[] =
9 {2.0, 4.0, 8.0, 16.0, 1.0, 0.5, 0.25, 0.125};
10 float32_t rec_f[] =
11 {1.0, 0.5, 0.25, 0.125, 2.0, 4.0, 8.0, 16.0};
12 float64_t in_d[] =
13 {2.0, 4.0, 8.0, 16.0, 1.0, 0.5, 0.25, 0.125};
14 float32_t rec_d[] =
15 {1.0, 0.5, 0.25, 0.125, 2.0, 4.0, 8.0, 16.0};
17 int
18 test_frecpx_float32_t (void)
20 int i = 0;
21 int ret = 1;
22 for (i = 0; i < 8; i++)
23 ret &= fabs (vrecpxs_f32 (in_f[i]) - rec_f[i]) < 0.001;
25 return ret;
28 /* { dg-final { scan-assembler "frecpx\\ts\[0-9\]+, s\[0-9\]+" } } */
30 int
31 test_frecpx_float64_t (void)
33 int i = 0;
34 int ret = 1;
35 for (i = 0; i < 8; i++)
36 ret &= fabs (vrecpxd_f64 (in_d[i]) - rec_d[i]) < 0.001;
38 return ret;
41 /* { dg-final { scan-assembler "frecpx\\td\[0-9\]+, d\[0-9\]+" } } */
43 int
44 main (int argc, char **argv)
46 if (!test_frecpx_float32_t ())
47 abort ();
48 if (!test_frecpx_float64_t ())
49 abort ();
51 return 0;