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