blob: 352092a97f6280fe9bd7fee439ce1ca1afb88219 [file] [log] [blame]
/* PR target/97387 */
/* { dg-do compile } */
/* { dg-options "-O2 -fomit-frame-pointer" } */
/* { dg-final { scan-assembler-times "\taddl\t" 1 } } */
/* { dg-final { scan-assembler-times "\tadcl\t" 3 } } */
/* { dg-final { scan-assembler-times "\tsubl\t" 1 } } */
/* { dg-final { scan-assembler-times "\tsbbl\t" 3 } } */
/* { dg-final { scan-assembler-not "\tset\[bc]\t" } } */
/* { dg-final { scan-assembler-not "\taddb\t" } } */
#include <x86intrin.h>
void
foo (unsigned int a[4], unsigned int b[4])
{
unsigned char carry = 0;
carry = _addcarry_u32 (carry, a[0], b[0], &a[0]);
carry = _addcarry_u32 (carry, a[1], b[1], &a[1]);
carry = _addcarry_u32 (carry, a[2], b[2], &a[2]);
_addcarry_u32 (carry, a[3], b[3], &a[3]);
}
void
bar (unsigned int a[4], unsigned int b[4])
{
unsigned char carry = 0;
carry = _subborrow_u32 (carry, a[0], b[0], &a[0]);
carry = _subborrow_u32 (carry, a[1], b[1], &a[1]);
carry = _subborrow_u32 (carry, a[2], b[2], &a[2]);
_subborrow_u32 (carry, a[3], b[3], &a[3]);
}