1 /* Test the vcagt_f64 AArch64 SIMD intrinsic. */
2
3 /* { dg-do run } */
4 /* { dg-options "-save-temps -O3" } */
5
6 #include "arm_neon.h"
7
8 #define SIZE 6
9
10 extern void abort (void);
11
12 volatile float64_t in[SIZE] = { -10.4, -3.14, 0.0, 1.5, 5.3, 532.3 };
13
14 int
main(void)15 main (void)
16 {
17 uint64_t expected;
18 uint64_t actual;
19 float64x1_t arg1, arg2;
20 int i, j;
21
22 for (i = 0; i < SIZE; ++i)
23 for (j = 0; j < SIZE; ++j)
24 {
25 expected = __builtin_fabs (in[i]) > __builtin_fabs (in[j]) ? -1 : 0;
26 arg1 = (float64x1_t) { in[i] };
27 arg2 = (float64x1_t) { in[j] };
28 actual = vget_lane_u64 (vcagt_f64 (arg1, arg2), 0);
29
30 if (actual != expected)
31 abort ();
32 }
33
34 return 0;
35 }
36
37 /* { dg-final { scan-assembler "facgt\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
38