(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr81300.c
       1  /* PR target/81300 */
       2  /* { dg-do run { target { ! ia32 } } } */
       3  /* { dg-options "-O2" } */
       4  
       5  int
       6  __attribute__((noinline, noclone))
       7  foo (void)
       8  {
       9    unsigned long long _discard = 0, zero = 0, maxull = 0;
      10    unsigned char zero1 = __builtin_ia32_addcarryx_u64 (0, 0, 0, &_discard);
      11    unsigned char zero2 = __builtin_ia32_addcarryx_u64 (zero1, 0, 0, &zero);
      12    __builtin_ia32_sbb_u64 (0x0, 2, -1, &_discard);
      13    unsigned char one = __builtin_ia32_sbb_u64 (0, zero, 1, &maxull);
      14    unsigned long long x = __builtin_ia32_sbb_u64 (one, zero2, 0, &_discard);
      15  
      16    unsigned long long z1 = 0;
      17    __asm__ ("mov{q}\t{%1, %0|%0, %1}" : "+r" (z1) : "r" (x));
      18    unsigned long long z2 = 3;
      19    __asm__ ("mov{q}\t{%1, %0|%0, %1}" : "+r" (z2) : "r" (x));
      20  
      21    return 1 - (z1 | z2);
      22  }
      23  
      24  int main ()
      25  {
      26    if (foo ())
      27      __builtin_abort ();
      28  
      29    return 0;
      30  }