| /* { dg-do run } */ |
| /* { dg-require-effective-target int128 } */ |
| /* { dg-options "-Wno-psabi" } */ |
| /* { 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-*-* } } } */ |
| |
| typedef unsigned char v64u8 __attribute__ ((vector_size (64))); |
| typedef unsigned short v64u16 __attribute__ ((vector_size (64))); |
| typedef unsigned int v64u32 __attribute__ ((vector_size (64))); |
| typedef unsigned long long v64u64 __attribute__ ((vector_size (64))); |
| typedef unsigned __int128 u128; |
| typedef unsigned __int128 v64u128 __attribute__ ((vector_size (64))); |
| |
| int a, b, d, e; |
| v64u64 c; |
| |
| v64u128 |
| foo (u128 g, v64u16 h, v64u32 i, v64u128 j) |
| { |
| c[e] = 0; |
| j &= (i[1] <<= b); |
| j >>= ((v64u128) h <= j); |
| d = __builtin_popcountll (-((v64u8) i)[0]); |
| return a + g + j; |
| } |
| |
| int |
| main (void) |
| { |
| v64u128 x = foo (0, (v64u16) { 0, 0, 0, 0, 0, 0, 0, 0, 5 }, (v64u32) { 2 }, |
| (v64u128) { }); |
| if (x[0] || x[1] || x[2] || x[3]) |
| __builtin_abort (); |
| return 0; |
| } |