[PR81647][AARCH64] Fix handling of Unordered Comparisons in aarch64-simd.md
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / bics_5.c
blobb9c2c40082dc131943c9a93104d28c0e03b73557
1 /* { dg-do run } */
2 /* { dg-options "-O2 --save-temps -fno-inline" } */
4 extern void abort (void);
6 int
7 bics_si_test1 (int a, int b, int c)
9 if ((a | b) == a)
10 return a;
11 else
12 return c;
15 int
16 bics_si_test2 (int a, int b, int c)
18 if ((a | b) == b)
19 return b;
20 else
21 return c;
24 typedef long long s64;
26 s64
27 bics_di_test1 (s64 a, s64 b, s64 c)
29 if ((a | b) == a)
30 return a;
31 else
32 return c;
35 s64
36 bics_di_test2 (s64 a, s64 b, s64 c)
38 if ((a | b) == b)
39 return b;
40 else
41 return c;
44 int
45 main ()
47 int x;
48 s64 y;
50 x = bics_si_test1 (0xf00d, 0xf11f, 0);
51 if (x != 0)
52 abort ();
54 x = bics_si_test1 (0xf11f, 0xf00d, 0);
55 if (x != 0xf11f)
56 abort ();
58 x = bics_si_test2 (0xf00d, 0xf11f, 0);
59 if (x != 0xf11f)
60 abort ();
62 x = bics_si_test2 (0xf11f, 0xf00d, 0);
63 if (x != 0)
64 abort ();
66 y = bics_di_test1 (0x10001000f00dll, 0x12341000f00dll, 0ll);
67 if (y != 0)
68 abort ();
70 y = bics_di_test1 (0x12341000f00dll, 0x10001000f00dll, 0ll);
71 if (y != 0x12341000f00dll)
72 abort ();
74 y = bics_di_test2 (0x10001000f00dll, 0x12341000f00dll, 0ll);
75 if (y != 0x12341000f00dll)
76 abort ();
78 y = bics_di_test2 (0x12341000f00dll, 0x10001000f00dll, 0ll);
79 if (y != 0)
80 abort ();
82 return 0;
85 /* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+" 2 } } */
86 /* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+" 2 } } */