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