1 /* { dg-do run } */
2 /* { dg-require-effective-target int128 } */
3 /* { dg-options "-Wno-psabi" } */
4 /* { dg-additional-options "-frename-registers -fno-tree-forwprop -fno-tree-fre -fira-algorithm=priority -mstringop-strategy=loop --param=hot-bb-frequency-fraction=0 -Wno-psabi" { target { x86_64-*-* i?86-*-* } } } */
5 
6 typedef unsigned char v64u8 __attribute__ ((vector_size (64)));
7 typedef unsigned short v64u16 __attribute__ ((vector_size (64)));
8 typedef unsigned int v64u32 __attribute__ ((vector_size (64)));
9 typedef unsigned long long v64u64 __attribute__ ((vector_size (64)));
10 typedef unsigned __int128 u128;
11 typedef unsigned __int128 v64u128 __attribute__ ((vector_size (64)));
12 
13 int a, b, d, e;
14 v64u64 c;
15 
16 v64u128
foo(u128 g,v64u16 h,v64u32 i,v64u128 j)17 foo (u128 g, v64u16 h, v64u32 i, v64u128 j)
18 {
19   c[e] = 0;
20   j &= (i[1] <<= b);
21   j >>= ((v64u128) h <= j);
22   d = __builtin_popcountll (-((v64u8) i)[0]);
23   return a + g + j;
24 }
25 
26 int
main(void)27 main (void)
28 {
29   v64u128 x = foo (0, (v64u16) { 0, 0, 0, 0, 0, 0, 0, 0, 5 }, (v64u32) { 2 },
30 		   (v64u128) { });
31   if (x[0] || x[1] || x[2] || x[3])
32     __builtin_abort ();
33   return 0;
34 }
35