1 /* { dg-do run { target { ! ia32 } } } */
2 /* { dg-options "-madx -O2" } */
3 /* { dg-require-effective-target adx } */
11 volatile unsigned char c
;
13 volatile unsigned long long y
, sum_ref
;
16 x
= y
= 0xFFFFFFFFFFFFFFFFLL
;
17 sum_ref
= 0xFFFFFFFFFFFFFFFELL
;
19 /* X = 0xFFFFFFFFFFFFFFFF, Y = 0xFFFFFFFFFFFFFFFF, C = 0. */
20 c
= _addcarryx_u64 (c
, x
, y
, &x
);
21 /* X = 0xFFFFFFFFFFFFFFFE, Y = 0xFFFFFFFFFFFFFFFF, C = 1. */
22 c
= _addcarryx_u64 (c
, x
, y
, &x
);
23 /* X = 0xFFFFFFFFFFFFFFFE, Y = 0xFFFFFFFFFFFFFFFF, C = 1. */
29 x
= y
= 0xFFFFFFFFFFFFFFFFLL
;
30 sum_ref
= 0xFFFFFFFFFFFFFFFELL
;
32 /* X = 0xFFFFFFFFFFFFFFFF, Y = 0xFFFFFFFFFFFFFFFF, C = 0. */
33 c
= _addcarry_u64 (c
, x
, y
, &x
);
34 /* X = 0xFFFFFFFFFFFFFFFE, Y = 0xFFFFFFFFFFFFFFFF, C = 1. */
35 c
= _addcarry_u64 (c
, x
, y
, &x
);
36 /* X = 0xFFFFFFFFFFFFFFFE, Y = 0xFFFFFFFFFFFFFFFF, C = 1. */
46 /* X = 0x0000000000000001, Y = 0x0000000000000000, C = 0. */
47 c
= _subborrow_u64 (c
, y
, x
, &x
);
48 /* X = 0xFFFFFFFFFFFFFFFF, Y = 0x0000000000000000, C = 1. */
49 c
= _subborrow_u64 (c
, y
, x
, &x
);
50 /* X = 0x0000000000000000, Y = 0x0000000000000000, C = 1. */