blob: 17883cb3121c4ca14eb97504a0aff890c0ad735d [file] [log] [blame]
Simon Pilgrim2f529412017-08-10 18:02:45 +00001; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+sse2 | FileCheck %s -check-prefix=CHECK -check-prefix=SSE -check-prefix=SSE2
2; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+ssse3 | FileCheck %s -check-prefix=CHECK -check-prefix=SSE -check-prefix=SSSE3
3; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+sse4.2 | FileCheck %s -check-prefix=CHECK -check-prefix=SSE -check-prefix=SSE42
4; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+avx | FileCheck %s -check-prefix=CHECK -check-prefix=AVX -check-prefix=AVX1
5; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 | FileCheck %s -check-prefix=CHECK -check-prefix=AVX -check-prefix=AVX2
6; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f | FileCheck %s --check-prefix=CHECK --check-prefix=AVX512 --check-prefix=AVX512F
7; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix=CHECK --check-prefix=AVX512 --check-prefix=AVX512BW
8; RUN: opt < %s -cost-model -analyze -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f,+avx512bw,+avx512vbmi | FileCheck %s --check-prefix=CHECK --check-prefix=AVX512 --check-prefix=AVX512VBMI
Elena Demikhovsky21706cb2017-01-02 10:37:52 +00009
10;
11; Verify the cost model for 2 src shuffles
12;
13
Simon Pilgrim2f529412017-08-10 18:02:45 +000014; CHECK-LABEL: 'test_vXf64'
15define void @test_vXf64(<2 x double> %src128, <4 x double> %src256, <8 x double> %src512, <16 x double> %src1024, <2 x double> %src128_1, <4 x double> %src256_1, <8 x double> %src512_1, <16 x double> %src1024_1) {
16
17 ; SSE2: cost of 1 {{.*}} %V128 = shufflevector
18 ; SSSE3: cost of 1 {{.*}} %V128 = shufflevector
19 ; SSE42: cost of 1 {{.*}} %V128 = shufflevector
20 ; AVX1: cost of 1 {{.*}} %V128 = shufflevector
21 ; AVX2: cost of 1 {{.*}} %V128 = shufflevector
22 ; AVX512: cost of 1 {{.*}} %V128 = shufflevector
23 %V128 = shufflevector <2 x double> %src128, <2 x double> %src128_1, <2 x i32> <i32 3, i32 0>
24
25 ; SSE2: cost of 6 {{.*}} %V256 = shufflevector
26 ; SSSE3: cost of 6 {{.*}} %V256 = shufflevector
27 ; SSE42: cost of 6 {{.*}} %V256 = shufflevector
28 ; AVX1: cost of 6 {{.*}} %V256 = shufflevector
29 ; AVX2: cost of 6 {{.*}} %V256 = shufflevector
30 ; AVX512: cost of 1 {{.*}} %V256 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +000031 %V256 = shufflevector <4 x double> %src256, <4 x double> %src256_1, <4 x i32> <i32 3, i32 3, i32 7, i32 6>
32
Simon Pilgrim2f529412017-08-10 18:02:45 +000033 ; SSE2: cost of 28 {{.*}} %V512 = shufflevector
34 ; SSSE3: cost of 28 {{.*}} %V512 = shufflevector
35 ; SSE42: cost of 28 {{.*}} %V512 = shufflevector
36 ; AVX1: cost of 12 {{.*}} %V512 = shufflevector
37 ; AVX2: cost of 12 {{.*}} %V512 = shufflevector
38 ; AVX512: cost of 1 {{.*}} %V512 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +000039 %V512 = shufflevector <8 x double> %src512, <8 x double> %src512_1, <8 x i32> <i32 7, i32 6, i32 12, i32 4, i32 3, i32 2, i32 1, i32 15>
40
Simon Pilgrim2f529412017-08-10 18:02:45 +000041 ; SSE2: cost of 120 {{.*}} %V1024 = shufflevector
42 ; SSSE3: cost of 120 {{.*}} %V1024 = shufflevector
43 ; SSE42: cost of 120 {{.*}} %V1024 = shufflevector
44 ; AVX1: cost of 24 {{.*}} %V1024 = shufflevector
45 ; AVX2: cost of 24 {{.*}} %V1024 = shufflevector
46 ; AVX512: cost of 6 {{.*}} %V1024 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +000047 %V1024 = shufflevector <16 x double> %src1024, <16 x double> %src1024_1, <16 x i32> <i32 30, i32 14, i32 13, i32 12, i32 13, i32 10, i32 18, i32 8, i32 8, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
48
49 ret void
50}
51
Simon Pilgrim2f529412017-08-10 18:02:45 +000052; CHECK-LABEL: 'test_vXi64'
53define void @test_vXi64(<2 x i64> %src128, <4 x i64> %src256, <8 x i64> %src512, <16 x i64> %src1024, <2 x i64> %src128_1, <4 x i64> %src256_1, <8 x i64> %src512_1, <16 x i64> %src1024_1) {
54
55 ; SSE2: cost of 1 {{.*}} %V128 = shufflevector
56 ; SSSE3: cost of 1 {{.*}} %V128 = shufflevector
57 ; SSE42: cost of 1 {{.*}} %V128 = shufflevector
58 ; AVX1: cost of 1 {{.*}} %V128 = shufflevector
59 ; AVX2: cost of 1 {{.*}} %V128 = shufflevector
60 ; AVX512: cost of 1 {{.*}} %V128 = shufflevector
61 %V128 = shufflevector <2 x i64> %src128, <2 x i64> %src128_1, <2 x i32> <i32 3, i32 0>
62
63 ; SSE2: cost of 6 {{.*}} %V256 = shufflevector
64 ; SSSE3: cost of 6 {{.*}} %V256 = shufflevector
65 ; SSE42: cost of 6 {{.*}} %V256 = shufflevector
66 ; AVX1: cost of 8 {{.*}} %V256 = shufflevector
67 ; AVX2: cost of 8 {{.*}} %V256 = shufflevector
68 ; AVX512: cost of 1 {{.*}} %V256 = shufflevector
69 %V256 = shufflevector <4 x i64> %src256, <4 x i64> %src256_1, <4 x i32> <i32 3, i32 3, i32 7, i32 6>
70
71 ; SSE2: cost of 28 {{.*}} %V512 = shufflevector
72 ; SSSE3: cost of 28 {{.*}} %V512 = shufflevector
73 ; SSE42: cost of 28 {{.*}} %V512 = shufflevector
74 ; AVX1: cost of 16 {{.*}} %V512 = shufflevector
75 ; AVX2: cost of 16 {{.*}} %V512 = shufflevector
76 ; AVX512: cost of 1 {{.*}} %V512 = shufflevector
77 %V512 = shufflevector <8 x i64> %src512, <8 x i64> %src512_1, <8 x i32> <i32 7, i32 6, i32 12, i32 4, i32 3, i32 2, i32 1, i32 15>
78
79 ; SSE2: cost of 120 {{.*}} %V1024 = shufflevector
80 ; SSSE3: cost of 120 {{.*}} %V1024 = shufflevector
81 ; SSE42: cost of 120 {{.*}} %V1024 = shufflevector
82 ; AVX1: cost of 32 {{.*}} %V1024 = shufflevector
83 ; AVX2: cost of 32 {{.*}} %V1024 = shufflevector
84 ; AVX512: cost of 6 {{.*}} %V1024 = shufflevector
85 %V1024 = shufflevector <16 x i64> %src1024, <16 x i64> %src1024_1, <16 x i32> <i32 30, i32 14, i32 13, i32 12, i32 13, i32 10, i32 18, i32 8, i32 8, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
86
87 ret void
88}
89
Elena Demikhovsky21706cb2017-01-02 10:37:52 +000090; CHECK-LABEL: 'test_vXf32'
91define void @test_vXf32(<4 x float> %src128, <8 x float> %src256, <16 x float> %src512, <32 x float> %src1024, <4 x float> %src128_1, <8 x float> %src256_1, <16 x float> %src512_1, <32 x float> %src1024_1) {
92
Simon Pilgrim2f529412017-08-10 18:02:45 +000093 ; SSE2: cost of 2 {{.*}} %V128 = shufflevector
94 ; SSSE3: cost of 2 {{.*}} %V128 = shufflevector
95 ; SSE42: cost of 2 {{.*}} %V128 = shufflevector
96 ; AVX1: cost of 2 {{.*}} %V128 = shufflevector
97 ; AVX2: cost of 2 {{.*}} %V128 = shufflevector
98 ; AVX512: cost of 1 {{.*}} %V128 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +000099 %V128 = shufflevector <4 x float> %src128, <4 x float> %src128_1, <4 x i32> <i32 3, i32 6, i32 1, i32 5>
100
Simon Pilgrim2f529412017-08-10 18:02:45 +0000101 ; SSE2: cost of 12 {{.*}} %V256 = shufflevector
102 ; SSSE3: cost of 12 {{.*}} %V256 = shufflevector
103 ; SSE42: cost of 12 {{.*}} %V256 = shufflevector
104 ; AVX1: cost of 14 {{.*}} %V256 = shufflevector
105 ; AVX2: cost of 14 {{.*}} %V256 = shufflevector
106 ; AVX512: cost of 1 {{.*}} %V256 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000107 %V256 = shufflevector <8 x float> %src256, <8 x float> %src256_1, <8 x i32> <i32 7, i32 6, i32 8, i32 4, i32 3, i32 2, i32 12, i32 0>
108
Simon Pilgrim2f529412017-08-10 18:02:45 +0000109 ; SSE2: cost of 56 {{.*}} %V512 = shufflevector
110 ; SSSE3: cost of 56 {{.*}} %V512 = shufflevector
111 ; SSE42: cost of 56 {{.*}} %V512 = shufflevector
112 ; AVX1: cost of 28 {{.*}} %V512 = shufflevector
113 ; AVX2: cost of 28 {{.*}} %V512 = shufflevector
114 ; AVX512: cost of 1 {{.*}} %V512 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000115 %V512 = shufflevector <16 x float> %src512, <16 x float> %src512_1, <16 x i32> <i32 15, i32 17, i32 13, i32 20, i32 11, i32 10, i32 8, i32 8, i32 7, i32 22, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
116
Simon Pilgrim2f529412017-08-10 18:02:45 +0000117 ; SSE2: cost of 240 {{.*}} %V1024 = shufflevector
118 ; SSSE3: cost of 240 {{.*}} %V1024 = shufflevector
119 ; SSE42: cost of 240 {{.*}} %V1024 = shufflevector
120 ; AVX1: cost of 56 {{.*}} %V1024 = shufflevector
121 ; AVX2: cost of 56 {{.*}} %V1024 = shufflevector
122 ; AVX512: cost of 6 {{.*}} %V1024 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000123 %V1024 = shufflevector <32 x float> %src1024, <32 x float> %src1024_1, <32 x i32> <i32 31, i32 33, i32 20, i32 28, i32 27, i32 26, i32 25, i32 24, i32 23, i32 22, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16, i32 15, i32 48, i32 13, i32 12, i32 11, i32 11, i32 9, i32 45, i32 7, i32 11, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
124
125 ret void
126}
127
Simon Pilgrim2f529412017-08-10 18:02:45 +0000128; CHECK-LABEL: 'test_vXi32'
129define void @test_vXi32(<4 x i32> %src128, <8 x i32> %src256, <16 x i32> %src512, <32 x i32> %src1024, <4 x i32> %src128_1, <8 x i32> %src256_1, <16 x i32> %src512_1, <32 x i32> %src1024_1) {
130
131 ; SSE2: cost of 2 {{.*}} %V128 = shufflevector
132 ; SSSE3: cost of 2 {{.*}} %V128 = shufflevector
133 ; SSE42: cost of 2 {{.*}} %V128 = shufflevector
134 ; AVX1: cost of 2 {{.*}} %V128 = shufflevector
135 ; AVX2: cost of 2 {{.*}} %V128 = shufflevector
136 ; AVX512: cost of 1 {{.*}} %V128 = shufflevector
137 %V128 = shufflevector <4 x i32> %src128, <4 x i32> %src128_1, <4 x i32> <i32 3, i32 6, i32 1, i32 5>
138
139 ; SSE2: cost of 12 {{.*}} %V256 = shufflevector
140 ; SSSE3: cost of 12 {{.*}} %V256 = shufflevector
141 ; SSE42: cost of 12 {{.*}} %V256 = shufflevector
142 ; AVX1: cost of 16 {{.*}} %V256 = shufflevector
143 ; AVX2: cost of 16 {{.*}} %V256 = shufflevector
144 ; AVX512: cost of 1 {{.*}} %V256 = shufflevector
145 %V256 = shufflevector <8 x i32> %src256, <8 x i32> %src256_1, <8 x i32> <i32 7, i32 6, i32 8, i32 4, i32 3, i32 2, i32 12, i32 0>
146
147 ; SSE2: cost of 56 {{.*}} %V512 = shufflevector
148 ; SSSE3: cost of 56 {{.*}} %V512 = shufflevector
149 ; SSE42: cost of 56 {{.*}} %V512 = shufflevector
150 ; AVX1: cost of 32 {{.*}} %V512 = shufflevector
151 ; AVX2: cost of 32 {{.*}} %V512 = shufflevector
152 ; AVX512: cost of 1 {{.*}} %V512 = shufflevector
153 %V512 = shufflevector <16 x i32> %src512, <16 x i32> %src512_1, <16 x i32> <i32 15, i32 17, i32 13, i32 20, i32 11, i32 10, i32 8, i32 8, i32 7, i32 22, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
154
155 ; SSE2: cost of 240 {{.*}} %V1024 = shufflevector
156 ; SSSE3: cost of 240 {{.*}} %V1024 = shufflevector
157 ; SSE42: cost of 240 {{.*}} %V1024 = shufflevector
158 ; AVX1: cost of 64 {{.*}} %V1024 = shufflevector
159 ; AVX2: cost of 64 {{.*}} %V1024 = shufflevector
160 ; AVX512: cost of 6 {{.*}} %V1024 = shufflevector
161 %V1024 = shufflevector <32 x i32> %src1024, <32 x i32> %src1024_1, <32 x i32> <i32 31, i32 33, i32 20, i32 28, i32 27, i32 26, i32 25, i32 24, i32 23, i32 22, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16, i32 15, i32 48, i32 13, i32 12, i32 11, i32 11, i32 9, i32 45, i32 7, i32 11, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
162
163 ret void
164}
165
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000166; CHECK-LABEL: 'test_vXi16'
167define void @test_vXi16(<8 x i16> %src128, <16 x i16> %src256, <32 x i16> %src512, <64 x i16> %src1024, <8 x i16> %src128_1, <16 x i16> %src256_1, <32 x i16> %src512_1, <64 x i16> %src1024_1) {
168
Simon Pilgrim2f529412017-08-10 18:02:45 +0000169 ; SSE2: cost of 16 {{.*}} %V128 = shufflevector
170 ; SSSE3: cost of 3 {{.*}} %V128 = shufflevector
171 ; SSE42: cost of 3 {{.*}} %V128 = shufflevector
172 ; AVX1: cost of 3 {{.*}} %V128 = shufflevector
173 ; AVX2: cost of 3 {{.*}} %V128 = shufflevector
174 ; AVX512F: cost of 3 {{.*}} %V128 = shufflevector
175 ; AVX512BW: cost of 1 {{.*}} %V128 = shufflevector
176 ; AVX512VBMI: cost of 1 {{.*}} %V128 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000177 %V128 = shufflevector <8 x i16> %src128, <8 x i16> %src128_1, <8 x i32> <i32 7, i32 6, i32 6, i32 8, i32 9, i32 2, i32 1, i32 0>
178
Simon Pilgrim2f529412017-08-10 18:02:45 +0000179 ; SSE2: cost of 32 {{.*}} %V256 = shufflevector
180 ; SSSE3: cost of 18 {{.*}} %V256 = shufflevector
181 ; SSE42: cost of 18 {{.*}} %V256 = shufflevector
182 ; AVX1: cost of 32 {{.*}} %V256 = shufflevector
183 ; AVX2: cost of 32 {{.*}} %V256 = shufflevector
184 ; AVX512F: cost of 32 {{.*}} %V256 = shufflevector
185 ; AVX512BW: cost of 1 {{.*}} %V256 = shufflevector
186 ; AVX512VBMI: cost of 1 {{.*}} %V256 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000187 %V256 = shufflevector <16 x i16> %src256, <16 x i16> %src256_1, <16 x i32> <i32 15, i32 14, i32 13, i32 20, i32 21, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
188
Simon Pilgrim2f529412017-08-10 18:02:45 +0000189 ; SSE2: cost of 64 {{.*}} %V512 = shufflevector
190 ; SSSE3: cost of 84 {{.*}} %V512 = shufflevector
191 ; SSE42: cost of 84 {{.*}} %V512 = shufflevector
192 ; AVX1: cost of 64 {{.*}} %V512 = shufflevector
193 ; AVX2: cost of 64 {{.*}} %V512 = shufflevector
194 ; AVX512F: cost of 64 {{.*}} %V512 = shufflevector
195 ; AVX512BW: cost of 1 {{.*}} %V512 = shufflevector
196 ; AVX512VBMI: cost of 1 {{.*}} %V512 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000197 %V512 = shufflevector <32 x i16> %src512, <32 x i16> %src512_1, <32 x i32> <i32 31, i32 30, i32 45, i32 28, i32 27, i32 26, i32 25, i32 24, i32 23, i32 22, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16, i32 15, i32 14, i32 13, i32 38, i32 11, i32 11, i32 9, i32 8, i32 7, i32 11, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
198
Simon Pilgrim2f529412017-08-10 18:02:45 +0000199 ; SSE2: cost of 128 {{.*}} %V1024 = shufflevector
200 ; SSSE3: cost of 360 {{.*}} %V1024 = shufflevector
201 ; SSE42: cost of 360 {{.*}} %V1024 = shufflevector
202 ; AVX1: cost of 128 {{.*}} %V1024 = shufflevector
203 ; AVX2: cost of 128 {{.*}} %V1024 = shufflevector
204 ; AVX512F: cost of 128 {{.*}} %V1024 = shufflevector
205 ; AVX512BW: cost of 6 {{.*}} %V1024 = shufflevector
206 ; AVX512VBMI: cost of 6 {{.*}} %V1024 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000207 %V1024 = shufflevector <64 x i16> %src1024, <64 x i16> %src1024_1, <64 x i32> <i32 63, i32 62, i32 71, i32 60, i32 59, i32 58, i32 57, i32 56, i32 55, i32 54, i32 53, i32 52, i32 51, i32 50, i32 49, i32 48, i32 47, i32 46, i32 45, i32 44, i32 43, i32 42, i32 41, i32 40, i32 39, i32 38, i32 37, i32 36, i32 35, i32 34, i32 33, i32 32, i32 31, i32 30, i32 29, i32 28, i32 27, i32 26, i32 25, i32 24, i32 23, i32 20, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 66, i32 2, i32 1, i32 0>
Simon Pilgrim2f529412017-08-10 18:02:45 +0000208
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000209 ret void
210}
211
212; CHECK-LABEL: 'test_vXi8'
213define void @test_vXi8(<16 x i8> %src128, <32 x i8> %src256, <64 x i8> %src512, <16 x i8> %src128_1, <32 x i8> %src256_1, <64 x i8> %src512_1) {
Simon Pilgrim2f529412017-08-10 18:02:45 +0000214
215 ; SSE2: cost of 32 {{.*}} %V128 = shufflevector
216 ; SSSE3: cost of 3 {{.*}} %V128 = shufflevector
217 ; SSE42: cost of 3 {{.*}} %V128 = shufflevector
218 ; AVX1: cost of 3 {{.*}} %V128 = shufflevector
219 ; AVX2: cost of 3 {{.*}} %V128 = shufflevector
220 ; AVX512F: cost of 3 {{.*}} %V128 = shufflevector
221 ; AVX512BW: cost of 3 {{.*}} %V128 = shufflevector
222 ; AVX512VBMI: cost of 1 {{.*}} %V128 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000223 %V128 = shufflevector <16 x i8> %src128, <16 x i8> %src128_1, <16 x i32> <i32 29, i32 14, i32 28, i32 12, i32 11, i32 10, i32 11, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
224
Simon Pilgrim2f529412017-08-10 18:02:45 +0000225 ; SSE2: cost of 64 {{.*}} %V256 = shufflevector
226 ; SSSE3: cost of 18 {{.*}} %V256 = shufflevector
227 ; SSE42: cost of 18 {{.*}} %V256 = shufflevector
228 ; AVX1: cost of 64 {{.*}} %V256 = shufflevector
229 ; AVX2: cost of 64 {{.*}} %V256 = shufflevector
230 ; AVX512F: cost of 64 {{.*}} %V256 = shufflevector
231 ; AVX512BW: cost of 3 {{.*}} %V256 = shufflevector
232 ; AVX512VBMI: cost of 1 {{.*}} %V256 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000233 %V256 = shufflevector <32 x i8> %src256, <32 x i8> %src256_1, <32 x i32> <i32 31, i32 30, i32 45, i32 28, i32 27, i32 26, i32 25, i32 24, i32 23, i32 22, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 8, i32 8, i32 7, i32 6, i32 8, i32 4, i32 3, i32 2, i32 1, i32 0>
234
Simon Pilgrim2f529412017-08-10 18:02:45 +0000235 ; SSE2: cost of 128 {{.*}} %V512 = shufflevector
236 ; SSSE3: cost of 84 {{.*}} %V512 = shufflevector
237 ; SSE42: cost of 84 {{.*}} %V512 = shufflevector
238 ; AVX1: cost of 128 {{.*}} %V512 = shufflevector
239 ; AVX2: cost of 128 {{.*}} %V512 = shufflevector
240 ; AVX512F: cost of 128 {{.*}} %V512 = shufflevector
241 ; AVX512BW: cost of 19 {{.*}} %V512 = shufflevector
242 ; AVX512VBMI: cost of 1 {{.*}} %V512 = shufflevector
Elena Demikhovsky21706cb2017-01-02 10:37:52 +0000243 %V512 = shufflevector <64 x i8> %src512, <64 x i8> %src512_1, <64 x i32> <i32 63, i32 100, i32 61, i32 96, i32 59, i32 58, i32 57, i32 56, i32 55, i32 54, i32 53, i32 52, i32 51, i32 50, i32 49, i32 48, i32 47, i32 46, i32 45, i32 44, i32 43, i32 42, i32 41, i32 40, i32 39, i32 38, i32 37, i32 36, i32 35, i32 34, i32 33, i32 32, i32 31, i32 30, i32 29, i32 28, i32 27, i32 26, i32 25, i32 24, i32 23, i32 20, i32 21, i32 20, i32 19, i32 18, i32 17, i32 16, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
244
245 ret void
246}