[PR81647][AARCH64] Fix handling of Unordered Comparisons in aarch64-simd.md
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / pr65235_1.c
blobca12cd59c41a7b0af4478f6c6b3613cce52ea8b1
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
4 #include "arm_neon.h"
6 int
7 main (int argc, char** argv)
9 int64x1_t val1;
10 int64x1_t val2;
11 int64x1_t val3;
12 uint64x1_t val13;
13 uint64x2_t val14;
14 uint64_t got;
15 uint64_t exp;
16 val1 = vcreate_s64(UINT64_C(0xffffffff80008000));
17 val2 = vcreate_s64(UINT64_C(0x0000f38d00000000));
18 val3 = vcreate_s64(UINT64_C(0xffff7fff0000809b));
19 /* Expect: "val13" = 8000000000001553. */
20 val13 = vcreate_u64 (UINT64_C(0x8000000000001553));
21 /* Expect: "val14" = 0010 0000 0000 0002 0000 0000 0000 0000. */
22 val14 = vcombine_u64(vcgt_s64(vqrshl_s64(val1, val2),
23 vshr_n_s64(val3, 18)),
24 vshr_n_u64(val13, 11));
25 /* Should be 0000000000000000. */
26 got = vgetq_lane_u64(val14, 0);
27 exp = 0;
28 if(exp != got)
29 __builtin_abort ();