1 /* PR target/81294 */
2 /* { dg-do run { target { ! ia32 } } } */
3 /* { dg-options "-O2" } */
4
5 #include <x86intrin.h>
6
main()7 int main ()
8 {
9 volatile unsigned char c;
10 unsigned long long x;
11 volatile unsigned long long y, sum_ref;
12
13 c = 0;
14 x = 1LL;
15 y = 0LL;
16 sum_ref = 0x0LL;
17
18 /* X = 0x0000000000000001, Y = 0x0000000000000000, C = 0. */
19 c = _subborrow_u64 (c, y, x, &x);
20 /* X = 0xFFFFFFFFFFFFFFFF, Y = 0x0000000000000000, C = 1. */
21 c = _subborrow_u64 (c, y, x, &x);
22 /* X = 0x0000000000000000, Y = 0x0000000000000000, C = 1. */
23
24 if (x != sum_ref)
25 __builtin_abort ();
26
27 return 0;
28 }
29