1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-vrp -fcompare-debug -Wno-psabi" } */
3 /* { dg-additional-options "-mno-sse" { target i?86-*-* x86_64-*-* } } */
4 /* { dg-require-effective-target scheduling } */
5 
6 typedef unsigned short u16;
7 typedef short v16u16 __attribute__ ((vector_size (16)));
8 typedef unsigned v16u32 __attribute__ ((vector_size (16)));
9 typedef unsigned long long v16u64 __attribute__ ((vector_size (16)));
10 
11 u16
foo(u16 u16_1,v16u16 v16u16_0,v16u32 v16u64_0,v16u16 v16u16_1,v16u32 v16u32_1,v16u64 v16u64_1)12 foo(u16 u16_1, v16u16 v16u16_0, v16u32 v16u64_0, v16u16 v16u16_1, v16u32 v16u32_1, v16u64 v16u64_1)
13 {
14   v16u64_1 /= (v16u64){~v16u32_1[1]};
15   u16_1 = 0;
16   u16_1 /= v16u32_1[2];
17   v16u64_1 -= (v16u64) v16u16_1;
18   u16_1 >>= 1;
19   u16_1 -= ~0;
20   v16u16_1 /= (v16u16){~u16_1, 1 - v16u64_0[0], 0xffb6};
21   return u16_1 + v16u16_0[1] + v16u16_1[3] + v16u64_1[0] + v16u64_1[1];
22 }
23