1 /* { dg-do run } */
2 /* { dg-require-effective-target int128 } */
3 /* { dg-options "-O2 -Wno-psabi" } */
4 
5 #define MAGIC 0x0706050403020100
6 
7 typedef unsigned long long u64;
8 typedef unsigned __int128 v64u128 __attribute__ ((vector_size (64)));
9 
10 v64u128 __attribute__ ((noinline, noclone))
foo(u64 x1,u64 x2,u64 x3,u64 x4,v64u128 x5)11 foo (u64 x1, u64 x2, u64 x3, u64 x4, v64u128 x5)
12 {
13   (void)x1, (void)x2;
14   x4 >>= x4 & 63;
15   return x3 + x4 + x5;
16 }
17 
18 int
main()19 main ()
20 {
21   v64u128 x = foo (0, 0, 0, MAGIC, (v64u128) {});
22   if (x[0] != MAGIC || x[1] != MAGIC || x[2] != MAGIC || x[3] != MAGIC)
23     __builtin_abort();
24   return 0;
25 }
26