(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
compile/
pr70240.c
       1  /* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
       2  
       3  typedef short v16hi __attribute__ ((vector_size (32)));
       4  typedef int v8si __attribute__ ((vector_size (32)));
       5  typedef long long v4di __attribute__ ((vector_size (32)));
       6  
       7  int
       8  foo(int u16_0, int u32_0, int u64_0, int u16_1, int u32_1, int u64_1, v16hi v32u16_0, v8si v32u32_0, v4di v32u64_0, v16hi v32u16_1, v8si v32u32_1, v4di v32u64_1)
       9  {
      10    do {
      11      v32u16_1 += (v16hi){ v32u32_1[7], ~v32u32_1[3], 0, v32u64_0[0]};
      12      u32_0 = (u32_0 << 31) | (u32_0 >> ~v32u32_0[1]);
      13      u64_0 += 1;
      14      v32u64_0[2] <<= v32u64_0[2] & 63;
      15      u16_1 = (u16_1 >> (v32u16_0[11] & 15)) | (u16_1 << (-v32u16_0[11] & 15));
      16      v32u16_0 -= ~v32u16_1;
      17      v32u32_1[5] += u32_1;
      18      if (v32u32_1[3] >= 0) {
      19        u64_1 -= ~v32u64_1[1];
      20        v32u16_1 += (v16hi){ -u64_1, ~u32_0, ~u16_1, v32u32_1[1], 0, ~v32u16_1[2], ~v32u64_1[2], ~v32u32_0[7]};
      21      }
      22      v32u64_1 += (v4di){0, 0, ~v32u32_0[5]};
      23      v32u32_1 *= (v8si){0, ~v32u32_1[6]};
      24      v32u64_0[3] &= 0x1234;
      25      v32u64_0 += (v4di){v32u32_1[6]};
      26    } while (u16_0 < 0x1234);
      27    return u64_0 + u16_1;
      28  }