(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr106053.c
       1  /* { dg-do run { target lp64 } } */
       2  /* { dg-options "-O -fno-tree-fre -w -mno-avx" } */
       3  
       4  typedef unsigned __attribute__((__vector_size__ (32))) v256u8;
       5  typedef unsigned __attribute__((__vector_size__ (64))) v512u8;
       6  typedef unsigned short u16;
       7  typedef unsigned int u32;
       8  typedef unsigned long long u64;
       9  typedef unsigned long __attribute__((__vector_size__ (64))) v512u64;
      10  typedef unsigned __int128 __attribute__((__vector_size__ (32))) v256u128;
      11  unsigned u;
      12  v512u64 foo0_v512u64_0;
      13  
      14  static inline v256u8
      15  foo (u32 u32_0, u64 u64_0, v256u128 v256u128_0)
      16  {
      17    int o = __builtin_add_overflow_p (u64_0, 0, 0);
      18    v512u64 v512u64_1 =
      19      foo0_v512u64_0 & (u32) __builtin_sub_overflow_p (0, o, 0);
      20    u64_0 |= u;
      21    v256u128 v256u128_2 = u64_0 < v256u128_0;
      22    v256u128 v256u128_3 = -v256u128_2 == u64_0 * u32_0;
      23    v256u8 v256u8_r = ((union {
      24                        v512u8 a; v256u8 b[2];
      25                        }) (v512u8) v512u64_1).b[0] + (v256u8) v256u128_3;
      26    return v256u8_r;
      27  }
      28  
      29  int
      30  main (void)
      31  {
      32    v256u8 x = foo (3095179400, 23725760132, (v256u128) { 2, 2 });
      33    for (unsigned i = 0; i < sizeof (x) / sizeof (x[0]); i++)
      34      if (x[i])
      35        __builtin_abort ();
      36    return 0;
      37  }