[PR81647][AARCH64] Fix handling of Unordered Comparisons in aarch64-simd.md
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / ngc.c
blobfdc223087f9b23524cb73b479b31575a5757e93b
1 /* { dg-do run } */
2 /* { dg-options "-O2 --save-temps -fno-inline" } */
4 extern void abort (void);
5 typedef unsigned int u32;
7 u32
8 ngc_si (u32 a, u32 b, u32 c, u32 d)
10 a = -b - (c < d);
11 return a;
14 typedef unsigned long long u64;
16 u64
17 ngc_si_tst (u64 a, u32 b, u32 c, u32 d)
19 a = -b - (c < d);
20 return a;
23 u64
24 ngc_di (u64 a, u64 b, u64 c, u64 d)
26 a = -b - (c < d);
27 return a;
30 int
31 main ()
33 int x;
34 u64 y;
36 x = ngc_si (29, 4, 5, 4);
37 if (x != -4)
38 abort ();
40 x = ngc_si (1024, 2, 20, 13);
41 if (x != -2)
42 abort ();
44 y = ngc_si_tst (0x130000029ll, 32, 50, 12);
45 if (y != 0xffffffe0)
46 abort ();
48 y = ngc_si_tst (0x5000500050005ll, 21, 2, 14);
49 if (y != 0xffffffea)
50 abort ();
52 y = ngc_di (0x130000029ll, 0x320000004ll, 0x505050505ll, 0x123123123ll);
53 if (y != 0xfffffffcdffffffc)
54 abort ();
56 y = ngc_di (0x5000500050005ll,
57 0x2111211121112ll, 0x0000000002020ll, 0x1414575046477ll);
58 if (y != 0xfffdeeedeeedeeed)
59 abort ();
61 return 0;
64 /* { dg-final { scan-assembler-times "ngc\tw\[0-9\]+, w\[0-9\]+" 2 } } */
65 /* { dg-final { scan-assembler-times "ngc\tx\[0-9\]+, x\[0-9\]+" 1 } } */