1 /* { dg-do run { target avx_runtime } } */ 2 /* { dg-require-effective-target int128 } */ 3 /* { dg-options "-O -fno-forward-propagate -fno-split-wide-types -mavx" } */ 4 5 typedef unsigned int u32; 6 typedef unsigned __int128 u128; 7 typedef unsigned __int128 v32u128 __attribute__ ((vector_size (32))); 8 9 u128 __attribute__ ((noinline, noclone)) foo(u32 u32_0,v32u128 v32u128_0)10foo (u32 u32_0, v32u128 v32u128_0) 11 { 12 v32u128_0[0] >>= u32_0; 13 v32u128_0 += (v32u128) {u32_0, 0}; 14 return u32_0 + v32u128_0[0] + v32u128_0[1]; 15 } 16 17 int main()18main() 19 { 20 u128 x = foo (1, (v32u128) {1, 4}); 21 if (x != 6) 22 __builtin_abort (); 23 return 0; 24 } 25