1 /* PR target/82370 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -mavx -mno-avx2 -masm=att" } */
4 /* { dg-final { scan-assembler-times "vpslld\[ \t]\+\\\$7, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
5 /* { dg-final { scan-assembler-times "vpsllq\[ \t]\+\\\$7, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
6 /* { dg-final { scan-assembler-times "vpsllw\[ \t]\+\\\$7, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
7 /* { dg-final { scan-assembler-times "vpsrad\[ \t]\+\\\$3, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
8 /* { dg-final { scan-assembler-times "vpsraq\[ \t]\+\\\$3, %xmm\[0-9]\+, %xmm\[0-9]\+" 0 } } */
9 /* { dg-final { scan-assembler-times "vpsraw\[ \t]\+\\\$3, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
10 /* { dg-final { scan-assembler-times "vpsrld\[ \t]\+\\\$5, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
11 /* { dg-final { scan-assembler-times "vpsrlq\[ \t]\+\\\$5, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
12 /* { dg-final { scan-assembler-times "vpsrlw\[ \t]\+\\\$5, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
13 
14 typedef short int v32hi __attribute__((vector_size (64)));
15 typedef short int v16hi __attribute__((vector_size (32)));
16 typedef short int v8hi __attribute__((vector_size (16)));
17 typedef int v16si __attribute__((vector_size (64)));
18 typedef int v8si __attribute__((vector_size (32)));
19 typedef int v4si __attribute__((vector_size (16)));
20 typedef long long int v8di __attribute__((vector_size (64)));
21 typedef long long int v4di __attribute__((vector_size (32)));
22 typedef long long int v2di __attribute__((vector_size (16)));
23 typedef unsigned short int v32uhi __attribute__((vector_size (64)));
24 typedef unsigned short int v16uhi __attribute__((vector_size (32)));
25 typedef unsigned short int v8uhi __attribute__((vector_size (16)));
26 typedef unsigned int v16usi __attribute__((vector_size (64)));
27 typedef unsigned int v8usi __attribute__((vector_size (32)));
28 typedef unsigned int v4usi __attribute__((vector_size (16)));
29 typedef unsigned long long int v8udi __attribute__((vector_size (64)));
30 typedef unsigned long long int v4udi __attribute__((vector_size (32)));
31 typedef unsigned long long int v2udi __attribute__((vector_size (16)));
32 
33 #ifdef __AVX512F__
f1(v32hi * x)34 v32hi f1 (v32hi *x) { return *x >> 3; }
f2(v32uhi * x)35 v32uhi f2 (v32uhi *x) { return *x >> 5; }
f3(v32uhi * x)36 v32uhi f3 (v32uhi *x) { return *x << 7; }
37 #endif
f4(v16hi * x)38 v16hi f4 (v16hi *x) { return *x >> 3; }
f5(v16uhi * x)39 v16uhi f5 (v16uhi *x) { return *x >> 5; }
f6(v16uhi * x)40 v16uhi f6 (v16uhi *x) { return *x << 7; }
f7(v8hi * x)41 v8hi f7 (v8hi *x) { return *x >> 3; }
f8(v8uhi * x)42 v8uhi f8 (v8uhi *x) { return *x >> 5; }
f9(v8uhi * x)43 v8uhi f9 (v8uhi *x) { return *x << 7; }
44 #ifdef __AVX512F__
f10(v16si * x)45 v16si f10 (v16si *x) { return *x >> 3; }
f11(v16usi * x)46 v16usi f11 (v16usi *x) { return *x >> 5; }
f12(v16usi * x)47 v16usi f12 (v16usi *x) { return *x << 7; }
48 #endif
f13(v8si * x)49 v8si f13 (v8si *x) { return *x >> 3; }
f14(v8usi * x)50 v8usi f14 (v8usi *x) { return *x >> 5; }
f15(v8usi * x)51 v8usi f15 (v8usi *x) { return *x << 7; }
f16(v4si * x)52 v4si f16 (v4si *x) { return *x >> 3; }
f17(v4usi * x)53 v4usi f17 (v4usi *x) { return *x >> 5; }
f18(v4usi * x)54 v4usi f18 (v4usi *x) { return *x << 7; }
55 #ifdef __AVX512F__
f19(v8di * x)56 v8di f19 (v8di *x) { return *x >> 3; }
f20(v8udi * x)57 v8udi f20 (v8udi *x) { return *x >> 5; }
f21(v8udi * x)58 v8udi f21 (v8udi *x) { return *x << 7; }
59 #endif
f22(v4di * x)60 v4di f22 (v4di *x) { return *x >> 3; }
f23(v4udi * x)61 v4udi f23 (v4udi *x) { return *x >> 5; }
f24(v4udi * x)62 v4udi f24 (v4udi *x) { return *x << 7; }
f25(v2di * x)63 v2di f25 (v2di *x) { return *x >> 3; }
f26(v2udi * x)64 v2udi f26 (v2udi *x) { return *x >> 5; }
f27(v2udi * x)65 v2udi f27 (v2udi *x) { return *x << 7; }
66