llvm.org GIT mirror llvm / dea3739
[X86] Regenerate avx2-intrinsics-x86.ll to compress the 32 vs 64 bit mode checks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@344560 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 1 year, 1 month ago
1 changed file(s) with 559 addition(s) and 1188 deletion(s). Raw diff Collapse all Expand all
44 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+avx512f,+avx512bw,+avx512vl,+avx512dq -show-mc-encoding | FileCheck %s --check-prefix=CHECK --check-prefix=AVX512VL --check-prefix=X64 --check-prefix=X64-AVX512VL
55
66 define <16 x i16> @test_x86_avx2_packssdw(<8 x i32> %a0, <8 x i32> %a1) {
7 ; X86-AVX-LABEL: test_x86_avx2_packssdw:
8 ; X86-AVX: ## %bb.0:
9 ; X86-AVX-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x6b,0xc1]
10 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
11 ;
12 ; X86-AVX512VL-LABEL: test_x86_avx2_packssdw:
13 ; X86-AVX512VL: ## %bb.0:
14 ; X86-AVX512VL-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6b,0xc1]
15 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
16 ;
17 ; X64-AVX-LABEL: test_x86_avx2_packssdw:
18 ; X64-AVX: ## %bb.0:
19 ; X64-AVX-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x6b,0xc1]
20 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
21 ;
22 ; X64-AVX512VL-LABEL: test_x86_avx2_packssdw:
23 ; X64-AVX512VL: ## %bb.0:
24 ; X64-AVX512VL-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6b,0xc1]
25 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
7 ; AVX2-LABEL: test_x86_avx2_packssdw:
8 ; AVX2: ## %bb.0:
9 ; AVX2-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x6b,0xc1]
10 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
11 ;
12 ; AVX512VL-LABEL: test_x86_avx2_packssdw:
13 ; AVX512VL: ## %bb.0:
14 ; AVX512VL-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6b,0xc1]
15 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2616 %res = call <16 x i16> @llvm.x86.avx2.packssdw(<8 x i32> %a0, <8 x i32> %a1) ; <<16 x i16>> [#uses=1]
2717 ret <16 x i16> %res
2818 }
6353
6454
6555 define <32 x i8> @test_x86_avx2_packsswb(<16 x i16> %a0, <16 x i16> %a1) {
66 ; X86-AVX-LABEL: test_x86_avx2_packsswb:
67 ; X86-AVX: ## %bb.0:
68 ; X86-AVX-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x63,0xc1]
69 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
70 ;
71 ; X86-AVX512VL-LABEL: test_x86_avx2_packsswb:
72 ; X86-AVX512VL: ## %bb.0:
73 ; X86-AVX512VL-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x63,0xc1]
74 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
75 ;
76 ; X64-AVX-LABEL: test_x86_avx2_packsswb:
77 ; X64-AVX: ## %bb.0:
78 ; X64-AVX-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x63,0xc1]
79 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
80 ;
81 ; X64-AVX512VL-LABEL: test_x86_avx2_packsswb:
82 ; X64-AVX512VL: ## %bb.0:
83 ; X64-AVX512VL-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x63,0xc1]
84 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
56 ; AVX2-LABEL: test_x86_avx2_packsswb:
57 ; AVX2: ## %bb.0:
58 ; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x63,0xc1]
59 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
60 ;
61 ; AVX512VL-LABEL: test_x86_avx2_packsswb:
62 ; AVX512VL: ## %bb.0:
63 ; AVX512VL-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x63,0xc1]
64 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
8565 %res = call <32 x i8> @llvm.x86.avx2.packsswb(<16 x i16> %a0, <16 x i16> %a1) ; <<32 x i8>> [#uses=1]
8666 ret <32 x i8> %res
8767 }
122102
123103
124104 define <32 x i8> @test_x86_avx2_packuswb(<16 x i16> %a0, <16 x i16> %a1) {
125 ; X86-AVX-LABEL: test_x86_avx2_packuswb:
126 ; X86-AVX: ## %bb.0:
127 ; X86-AVX-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x67,0xc1]
128 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
129 ;
130 ; X86-AVX512VL-LABEL: test_x86_avx2_packuswb:
131 ; X86-AVX512VL: ## %bb.0:
132 ; X86-AVX512VL-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x67,0xc1]
133 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
134 ;
135 ; X64-AVX-LABEL: test_x86_avx2_packuswb:
136 ; X64-AVX: ## %bb.0:
137 ; X64-AVX-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x67,0xc1]
138 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
139 ;
140 ; X64-AVX512VL-LABEL: test_x86_avx2_packuswb:
141 ; X64-AVX512VL: ## %bb.0:
142 ; X64-AVX512VL-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x67,0xc1]
143 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
105 ; AVX2-LABEL: test_x86_avx2_packuswb:
106 ; AVX2: ## %bb.0:
107 ; AVX2-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x67,0xc1]
108 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
109 ;
110 ; AVX512VL-LABEL: test_x86_avx2_packuswb:
111 ; AVX512VL: ## %bb.0:
112 ; AVX512VL-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x67,0xc1]
113 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
144114 %res = call <32 x i8> @llvm.x86.avx2.packuswb(<16 x i16> %a0, <16 x i16> %a1) ; <<32 x i8>> [#uses=1]
145115 ret <32 x i8> %res
146116 }
181151
182152
183153 define <32 x i8> @test_x86_avx2_padds_b(<32 x i8> %a0, <32 x i8> %a1) {
184 ; X86-AVX-LABEL: test_x86_avx2_padds_b:
185 ; X86-AVX: ## %bb.0:
186 ; X86-AVX-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xec,0xc1]
187 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
188 ;
189 ; X86-AVX512VL-LABEL: test_x86_avx2_padds_b:
190 ; X86-AVX512VL: ## %bb.0:
191 ; X86-AVX512VL-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xec,0xc1]
192 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
193 ;
194 ; X64-AVX-LABEL: test_x86_avx2_padds_b:
195 ; X64-AVX: ## %bb.0:
196 ; X64-AVX-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xec,0xc1]
197 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
198 ;
199 ; X64-AVX512VL-LABEL: test_x86_avx2_padds_b:
200 ; X64-AVX512VL: ## %bb.0:
201 ; X64-AVX512VL-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xec,0xc1]
202 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
154 ; AVX2-LABEL: test_x86_avx2_padds_b:
155 ; AVX2: ## %bb.0:
156 ; AVX2-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xec,0xc1]
157 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
158 ;
159 ; AVX512VL-LABEL: test_x86_avx2_padds_b:
160 ; AVX512VL: ## %bb.0:
161 ; AVX512VL-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xec,0xc1]
162 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
203163 %res = call <32 x i8> @llvm.x86.avx2.padds.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
204164 ret <32 x i8> %res
205165 }
207167
208168
209169 define <16 x i16> @test_x86_avx2_padds_w(<16 x i16> %a0, <16 x i16> %a1) {
210 ; X86-AVX-LABEL: test_x86_avx2_padds_w:
211 ; X86-AVX: ## %bb.0:
212 ; X86-AVX-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xed,0xc1]
213 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
214 ;
215 ; X86-AVX512VL-LABEL: test_x86_avx2_padds_w:
216 ; X86-AVX512VL: ## %bb.0:
217 ; X86-AVX512VL-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xed,0xc1]
218 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
219 ;
220 ; X64-AVX-LABEL: test_x86_avx2_padds_w:
221 ; X64-AVX: ## %bb.0:
222 ; X64-AVX-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xed,0xc1]
223 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
224 ;
225 ; X64-AVX512VL-LABEL: test_x86_avx2_padds_w:
226 ; X64-AVX512VL: ## %bb.0:
227 ; X64-AVX512VL-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xed,0xc1]
228 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
170 ; AVX2-LABEL: test_x86_avx2_padds_w:
171 ; AVX2: ## %bb.0:
172 ; AVX2-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xed,0xc1]
173 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
174 ;
175 ; AVX512VL-LABEL: test_x86_avx2_padds_w:
176 ; AVX512VL: ## %bb.0:
177 ; AVX512VL-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xed,0xc1]
178 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
229179 %res = call <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
230180 ret <16 x i16> %res
231181 }
233183
234184
235185 define <8 x i32> @test_x86_avx2_pmadd_wd(<16 x i16> %a0, <16 x i16> %a1) {
236 ; X86-AVX-LABEL: test_x86_avx2_pmadd_wd:
237 ; X86-AVX: ## %bb.0:
238 ; X86-AVX-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf5,0xc1]
239 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
240 ;
241 ; X86-AVX512VL-LABEL: test_x86_avx2_pmadd_wd:
242 ; X86-AVX512VL: ## %bb.0:
243 ; X86-AVX512VL-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf5,0xc1]
244 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
245 ;
246 ; X64-AVX-LABEL: test_x86_avx2_pmadd_wd:
247 ; X64-AVX: ## %bb.0:
248 ; X64-AVX-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf5,0xc1]
249 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
250 ;
251 ; X64-AVX512VL-LABEL: test_x86_avx2_pmadd_wd:
252 ; X64-AVX512VL: ## %bb.0:
253 ; X64-AVX512VL-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf5,0xc1]
254 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
186 ; AVX2-LABEL: test_x86_avx2_pmadd_wd:
187 ; AVX2: ## %bb.0:
188 ; AVX2-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf5,0xc1]
189 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
190 ;
191 ; AVX512VL-LABEL: test_x86_avx2_pmadd_wd:
192 ; AVX512VL: ## %bb.0:
193 ; AVX512VL-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf5,0xc1]
194 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
255195 %res = call <8 x i32> @llvm.x86.avx2.pmadd.wd(<16 x i16> %a0, <16 x i16> %a1) ; <<8 x i32>> [#uses=1]
256196 ret <8 x i32> %res
257197 }
259199
260200
261201 define <16 x i16> @test_x86_avx2_pmaxs_w(<16 x i16> %a0, <16 x i16> %a1) {
262 ; X86-AVX-LABEL: test_x86_avx2_pmaxs_w:
263 ; X86-AVX: ## %bb.0:
264 ; X86-AVX-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xee,0xc1]
265 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
266 ;
267 ; X86-AVX512VL-LABEL: test_x86_avx2_pmaxs_w:
268 ; X86-AVX512VL: ## %bb.0:
269 ; X86-AVX512VL-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xee,0xc1]
270 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
271 ;
272 ; X64-AVX-LABEL: test_x86_avx2_pmaxs_w:
273 ; X64-AVX: ## %bb.0:
274 ; X64-AVX-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xee,0xc1]
275 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
276 ;
277 ; X64-AVX512VL-LABEL: test_x86_avx2_pmaxs_w:
278 ; X64-AVX512VL: ## %bb.0:
279 ; X64-AVX512VL-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xee,0xc1]
280 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
202 ; AVX2-LABEL: test_x86_avx2_pmaxs_w:
203 ; AVX2: ## %bb.0:
204 ; AVX2-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xee,0xc1]
205 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
206 ;
207 ; AVX512VL-LABEL: test_x86_avx2_pmaxs_w:
208 ; AVX512VL: ## %bb.0:
209 ; AVX512VL-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xee,0xc1]
210 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
281211 %res = call <16 x i16> @llvm.x86.avx2.pmaxs.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
282212 ret <16 x i16> %res
283213 }
285215
286216
287217 define <32 x i8> @test_x86_avx2_pmaxu_b(<32 x i8> %a0, <32 x i8> %a1) {
288 ; X86-AVX-LABEL: test_x86_avx2_pmaxu_b:
289 ; X86-AVX: ## %bb.0:
290 ; X86-AVX-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xde,0xc1]
291 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
292 ;
293 ; X86-AVX512VL-LABEL: test_x86_avx2_pmaxu_b:
294 ; X86-AVX512VL: ## %bb.0:
295 ; X86-AVX512VL-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xde,0xc1]
296 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
297 ;
298 ; X64-AVX-LABEL: test_x86_avx2_pmaxu_b:
299 ; X64-AVX: ## %bb.0:
300 ; X64-AVX-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xde,0xc1]
301 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
302 ;
303 ; X64-AVX512VL-LABEL: test_x86_avx2_pmaxu_b:
304 ; X64-AVX512VL: ## %bb.0:
305 ; X64-AVX512VL-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xde,0xc1]
306 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
218 ; AVX2-LABEL: test_x86_avx2_pmaxu_b:
219 ; AVX2: ## %bb.0:
220 ; AVX2-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xde,0xc1]
221 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
222 ;
223 ; AVX512VL-LABEL: test_x86_avx2_pmaxu_b:
224 ; AVX512VL: ## %bb.0:
225 ; AVX512VL-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xde,0xc1]
226 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
307227 %res = call <32 x i8> @llvm.x86.avx2.pmaxu.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
308228 ret <32 x i8> %res
309229 }
311231
312232
313233 define <16 x i16> @test_x86_avx2_pmins_w(<16 x i16> %a0, <16 x i16> %a1) {
314 ; X86-AVX-LABEL: test_x86_avx2_pmins_w:
315 ; X86-AVX: ## %bb.0:
316 ; X86-AVX-NEXT: vpminsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xea,0xc1]
317 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
318 ;
319 ; X86-AVX512VL-LABEL: test_x86_avx2_pmins_w:
320 ; X86-AVX512VL: ## %bb.0:
321 ; X86-AVX512VL-NEXT: vpminsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xea,0xc1]
322 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
323 ;
324 ; X64-AVX-LABEL: test_x86_avx2_pmins_w:
325 ; X64-AVX: ## %bb.0:
326 ; X64-AVX-NEXT: vpminsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xea,0xc1]
327 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
328 ;
329 ; X64-AVX512VL-LABEL: test_x86_avx2_pmins_w:
330 ; X64-AVX512VL: ## %bb.0:
331 ; X64-AVX512VL-NEXT: vpminsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xea,0xc1]
332 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
234 ; AVX2-LABEL: test_x86_avx2_pmins_w:
235 ; AVX2: ## %bb.0:
236 ; AVX2-NEXT: vpminsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xea,0xc1]
237 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
238 ;
239 ; AVX512VL-LABEL: test_x86_avx2_pmins_w:
240 ; AVX512VL: ## %bb.0:
241 ; AVX512VL-NEXT: vpminsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xea,0xc1]
242 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
333243 %res = call <16 x i16> @llvm.x86.avx2.pmins.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
334244 ret <16 x i16> %res
335245 }
337247
338248
339249 define <32 x i8> @test_x86_avx2_pminu_b(<32 x i8> %a0, <32 x i8> %a1) {
340 ; X86-AVX-LABEL: test_x86_avx2_pminu_b:
341 ; X86-AVX: ## %bb.0:
342 ; X86-AVX-NEXT: vpminub %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xda,0xc1]
343 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
344 ;
345 ; X86-AVX512VL-LABEL: test_x86_avx2_pminu_b:
346 ; X86-AVX512VL: ## %bb.0:
347 ; X86-AVX512VL-NEXT: vpminub %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xda,0xc1]
348 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
349 ;
350 ; X64-AVX-LABEL: test_x86_avx2_pminu_b:
351 ; X64-AVX: ## %bb.0:
352 ; X64-AVX-NEXT: vpminub %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xda,0xc1]
353 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
354 ;
355 ; X64-AVX512VL-LABEL: test_x86_avx2_pminu_b:
356 ; X64-AVX512VL: ## %bb.0:
357 ; X64-AVX512VL-NEXT: vpminub %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xda,0xc1]
358 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
250 ; AVX2-LABEL: test_x86_avx2_pminu_b:
251 ; AVX2: ## %bb.0:
252 ; AVX2-NEXT: vpminub %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xda,0xc1]
253 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
254 ;
255 ; AVX512VL-LABEL: test_x86_avx2_pminu_b:
256 ; AVX512VL: ## %bb.0:
257 ; AVX512VL-NEXT: vpminub %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xda,0xc1]
258 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
359259 %res = call <32 x i8> @llvm.x86.avx2.pminu.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
360260 ret <32 x i8> %res
361261 }
363263
364264
365265 define i32 @test_x86_avx2_pmovmskb(<32 x i8> %a0) {
366 ; X86-LABEL: test_x86_avx2_pmovmskb:
367 ; X86: ## %bb.0:
368 ; X86-NEXT: vpmovmskb %ymm0, %eax ## encoding: [0xc5,0xfd,0xd7,0xc0]
369 ; X86-NEXT: vzeroupper ## encoding: [0xc5,0xf8,0x77]
370 ; X86-NEXT: retl ## encoding: [0xc3]
371 ;
372 ; X64-LABEL: test_x86_avx2_pmovmskb:
373 ; X64: ## %bb.0:
374 ; X64-NEXT: vpmovmskb %ymm0, %eax ## encoding: [0xc5,0xfd,0xd7,0xc0]
375 ; X64-NEXT: vzeroupper ## encoding: [0xc5,0xf8,0x77]
376 ; X64-NEXT: retq ## encoding: [0xc3]
266 ; CHECK-LABEL: test_x86_avx2_pmovmskb:
267 ; CHECK: ## %bb.0:
268 ; CHECK-NEXT: vpmovmskb %ymm0, %eax ## encoding: [0xc5,0xfd,0xd7,0xc0]
269 ; CHECK-NEXT: vzeroupper ## encoding: [0xc5,0xf8,0x77]
270 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
377271 %res = call i32 @llvm.x86.avx2.pmovmskb(<32 x i8> %a0) ; [#uses=1]
378272 ret i32 %res
379273 }
381275
382276
383277 define <16 x i16> @test_x86_avx2_pmulh_w(<16 x i16> %a0, <16 x i16> %a1) {
384 ; X86-AVX-LABEL: test_x86_avx2_pmulh_w:
385 ; X86-AVX: ## %bb.0:
386 ; X86-AVX-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe5,0xc1]
387 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
388 ;
389 ; X86-AVX512VL-LABEL: test_x86_avx2_pmulh_w:
390 ; X86-AVX512VL: ## %bb.0:
391 ; X86-AVX512VL-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe5,0xc1]
392 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
393 ;
394 ; X64-AVX-LABEL: test_x86_avx2_pmulh_w:
395 ; X64-AVX: ## %bb.0:
396 ; X64-AVX-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe5,0xc1]
397 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
398 ;
399 ; X64-AVX512VL-LABEL: test_x86_avx2_pmulh_w:
400 ; X64-AVX512VL: ## %bb.0:
401 ; X64-AVX512VL-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe5,0xc1]
402 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
278 ; AVX2-LABEL: test_x86_avx2_pmulh_w:
279 ; AVX2: ## %bb.0:
280 ; AVX2-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe5,0xc1]
281 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
282 ;
283 ; AVX512VL-LABEL: test_x86_avx2_pmulh_w:
284 ; AVX512VL: ## %bb.0:
285 ; AVX512VL-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe5,0xc1]
286 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
403287 %res = call <16 x i16> @llvm.x86.avx2.pmulh.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
404288 ret <16 x i16> %res
405289 }
407291
408292
409293 define <16 x i16> @test_x86_avx2_pmulhu_w(<16 x i16> %a0, <16 x i16> %a1) {
410 ; X86-AVX-LABEL: test_x86_avx2_pmulhu_w:
411 ; X86-AVX: ## %bb.0:
412 ; X86-AVX-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe4,0xc1]
413 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
414 ;
415 ; X86-AVX512VL-LABEL: test_x86_avx2_pmulhu_w:
416 ; X86-AVX512VL: ## %bb.0:
417 ; X86-AVX512VL-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe4,0xc1]
418 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
419 ;
420 ; X64-AVX-LABEL: test_x86_avx2_pmulhu_w:
421 ; X64-AVX: ## %bb.0:
422 ; X64-AVX-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe4,0xc1]
423 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
424 ;
425 ; X64-AVX512VL-LABEL: test_x86_avx2_pmulhu_w:
426 ; X64-AVX512VL: ## %bb.0:
427 ; X64-AVX512VL-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe4,0xc1]
428 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
294 ; AVX2-LABEL: test_x86_avx2_pmulhu_w:
295 ; AVX2: ## %bb.0:
296 ; AVX2-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe4,0xc1]
297 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
298 ;
299 ; AVX512VL-LABEL: test_x86_avx2_pmulhu_w:
300 ; AVX512VL: ## %bb.0:
301 ; AVX512VL-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe4,0xc1]
302 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
429303 %res = call <16 x i16> @llvm.x86.avx2.pmulhu.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
430304 ret <16 x i16> %res
431305 }
433307
434308
435309 define <4 x i64> @test_x86_avx2_psad_bw(<32 x i8> %a0, <32 x i8> %a1) {
436 ; X86-AVX-LABEL: test_x86_avx2_psad_bw:
437 ; X86-AVX: ## %bb.0:
438 ; X86-AVX-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf6,0xc1]
439 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
440 ;
441 ; X86-AVX512VL-LABEL: test_x86_avx2_psad_bw:
442 ; X86-AVX512VL: ## %bb.0:
443 ; X86-AVX512VL-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf6,0xc1]
444 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
445 ;
446 ; X64-AVX-LABEL: test_x86_avx2_psad_bw:
447 ; X64-AVX: ## %bb.0:
448 ; X64-AVX-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf6,0xc1]
449 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
450 ;
451 ; X64-AVX512VL-LABEL: test_x86_avx2_psad_bw:
452 ; X64-AVX512VL: ## %bb.0:
453 ; X64-AVX512VL-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf6,0xc1]
454 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
310 ; AVX2-LABEL: test_x86_avx2_psad_bw:
311 ; AVX2: ## %bb.0:
312 ; AVX2-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf6,0xc1]
313 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
314 ;
315 ; AVX512VL-LABEL: test_x86_avx2_psad_bw:
316 ; AVX512VL: ## %bb.0:
317 ; AVX512VL-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf6,0xc1]
318 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
455319 %res = call <4 x i64> @llvm.x86.avx2.psad.bw(<32 x i8> %a0, <32 x i8> %a1) ; <<4 x i64>> [#uses=1]
456320 ret <4 x i64> %res
457321 }
459323
460324
461325 define <8 x i32> @test_x86_avx2_psll_d(<8 x i32> %a0, <4 x i32> %a1) {
462 ; X86-AVX-LABEL: test_x86_avx2_psll_d:
463 ; X86-AVX: ## %bb.0:
464 ; X86-AVX-NEXT: vpslld %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf2,0xc1]
465 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
466 ;
467 ; X86-AVX512VL-LABEL: test_x86_avx2_psll_d:
468 ; X86-AVX512VL: ## %bb.0:
469 ; X86-AVX512VL-NEXT: vpslld %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf2,0xc1]
470 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
471 ;
472 ; X64-AVX-LABEL: test_x86_avx2_psll_d:
473 ; X64-AVX: ## %bb.0:
474 ; X64-AVX-NEXT: vpslld %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf2,0xc1]
475 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
476 ;
477 ; X64-AVX512VL-LABEL: test_x86_avx2_psll_d:
478 ; X64-AVX512VL: ## %bb.0:
479 ; X64-AVX512VL-NEXT: vpslld %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf2,0xc1]
480 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
326 ; AVX2-LABEL: test_x86_avx2_psll_d:
327 ; AVX2: ## %bb.0:
328 ; AVX2-NEXT: vpslld %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf2,0xc1]
329 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
330 ;
331 ; AVX512VL-LABEL: test_x86_avx2_psll_d:
332 ; AVX512VL: ## %bb.0:
333 ; AVX512VL-NEXT: vpslld %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf2,0xc1]
334 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
481335 %res = call <8 x i32> @llvm.x86.avx2.psll.d(<8 x i32> %a0, <4 x i32> %a1) ; <<8 x i32>> [#uses=1]
482336 ret <8 x i32> %res
483337 }
485339
486340
487341 define <4 x i64> @test_x86_avx2_psll_q(<4 x i64> %a0, <2 x i64> %a1) {
488 ; X86-AVX-LABEL: test_x86_avx2_psll_q:
489 ; X86-AVX: ## %bb.0:
490 ; X86-AVX-NEXT: vpsllq %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf3,0xc1]
491 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
492 ;
493 ; X86-AVX512VL-LABEL: test_x86_avx2_psll_q:
494 ; X86-AVX512VL: ## %bb.0:
495 ; X86-AVX512VL-NEXT: vpsllq %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf3,0xc1]
496 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
497 ;
498 ; X64-AVX-LABEL: test_x86_avx2_psll_q:
499 ; X64-AVX: ## %bb.0:
500 ; X64-AVX-NEXT: vpsllq %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf3,0xc1]
501 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
502 ;
503 ; X64-AVX512VL-LABEL: test_x86_avx2_psll_q:
504 ; X64-AVX512VL: ## %bb.0:
505 ; X64-AVX512VL-NEXT: vpsllq %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf3,0xc1]
506 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
342 ; AVX2-LABEL: test_x86_avx2_psll_q:
343 ; AVX2: ## %bb.0:
344 ; AVX2-NEXT: vpsllq %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf3,0xc1]
345 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
346 ;
347 ; AVX512VL-LABEL: test_x86_avx2_psll_q:
348 ; AVX512VL: ## %bb.0:
349 ; AVX512VL-NEXT: vpsllq %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf3,0xc1]
350 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
507351 %res = call <4 x i64> @llvm.x86.avx2.psll.q(<4 x i64> %a0, <2 x i64> %a1) ; <<4 x i64>> [#uses=1]
508352 ret <4 x i64> %res
509353 }
511355
512356
513357 define <16 x i16> @test_x86_avx2_psll_w(<16 x i16> %a0, <8 x i16> %a1) {
514 ; X86-AVX-LABEL: test_x86_avx2_psll_w:
515 ; X86-AVX: ## %bb.0:
516 ; X86-AVX-NEXT: vpsllw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf1,0xc1]
517 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
518 ;
519 ; X86-AVX512VL-LABEL: test_x86_avx2_psll_w:
520 ; X86-AVX512VL: ## %bb.0:
521 ; X86-AVX512VL-NEXT: vpsllw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf1,0xc1]
522 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
523 ;
524 ; X64-AVX-LABEL: test_x86_avx2_psll_w:
525 ; X64-AVX: ## %bb.0:
526 ; X64-AVX-NEXT: vpsllw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf1,0xc1]
527 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
528 ;
529 ; X64-AVX512VL-LABEL: test_x86_avx2_psll_w:
530 ; X64-AVX512VL: ## %bb.0:
531 ; X64-AVX512VL-NEXT: vpsllw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf1,0xc1]
532 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
358 ; AVX2-LABEL: test_x86_avx2_psll_w:
359 ; AVX2: ## %bb.0:
360 ; AVX2-NEXT: vpsllw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xf1,0xc1]
361 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
362 ;
363 ; AVX512VL-LABEL: test_x86_avx2_psll_w:
364 ; AVX512VL: ## %bb.0:
365 ; AVX512VL-NEXT: vpsllw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xf1,0xc1]
366 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
533367 %res = call <16 x i16> @llvm.x86.avx2.psll.w(<16 x i16> %a0, <8 x i16> %a1) ; <<16 x i16>> [#uses=1]
534368 ret <16 x i16> %res
535369 }
537371
538372
539373 define <8 x i32> @test_x86_avx2_pslli_d(<8 x i32> %a0) {
540 ; X86-AVX-LABEL: test_x86_avx2_pslli_d:
541 ; X86-AVX: ## %bb.0:
542 ; X86-AVX-NEXT: vpslld $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xf0,0x07]
543 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
544 ;
545 ; X86-AVX512VL-LABEL: test_x86_avx2_pslli_d:
546 ; X86-AVX512VL: ## %bb.0:
547 ; X86-AVX512VL-NEXT: vpslld $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xf0,0x07]
548 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
549 ;
550 ; X64-AVX-LABEL: test_x86_avx2_pslli_d:
551 ; X64-AVX: ## %bb.0:
552 ; X64-AVX-NEXT: vpslld $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xf0,0x07]
553 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
554 ;
555 ; X64-AVX512VL-LABEL: test_x86_avx2_pslli_d:
556 ; X64-AVX512VL: ## %bb.0:
557 ; X64-AVX512VL-NEXT: vpslld $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xf0,0x07]
558 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
374 ; AVX2-LABEL: test_x86_avx2_pslli_d:
375 ; AVX2: ## %bb.0:
376 ; AVX2-NEXT: vpslld $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xf0,0x07]
377 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
378 ;
379 ; AVX512VL-LABEL: test_x86_avx2_pslli_d:
380 ; AVX512VL: ## %bb.0:
381 ; AVX512VL-NEXT: vpslld $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xf0,0x07]
382 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
559383 %res = call <8 x i32> @llvm.x86.avx2.pslli.d(<8 x i32> %a0, i32 7) ; <<8 x i32>> [#uses=1]
560384 ret <8 x i32> %res
561385 }
563387
564388
565389 define <4 x i64> @test_x86_avx2_pslli_q(<4 x i64> %a0) {
566 ; X86-AVX-LABEL: test_x86_avx2_pslli_q:
567 ; X86-AVX: ## %bb.0:
568 ; X86-AVX-NEXT: vpsllq $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x73,0xf0,0x07]
569 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
570 ;
571 ; X86-AVX512VL-LABEL: test_x86_avx2_pslli_q:
572 ; X86-AVX512VL: ## %bb.0:
573 ; X86-AVX512VL-NEXT: vpsllq $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x73,0xf0,0x07]
574 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
575 ;
576 ; X64-AVX-LABEL: test_x86_avx2_pslli_q:
577 ; X64-AVX: ## %bb.0:
578 ; X64-AVX-NEXT: vpsllq $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x73,0xf0,0x07]
579 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
580 ;
581 ; X64-AVX512VL-LABEL: test_x86_avx2_pslli_q:
582 ; X64-AVX512VL: ## %bb.0:
583 ; X64-AVX512VL-NEXT: vpsllq $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x73,0xf0,0x07]
584 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
390 ; AVX2-LABEL: test_x86_avx2_pslli_q:
391 ; AVX2: ## %bb.0:
392 ; AVX2-NEXT: vpsllq $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x73,0xf0,0x07]
393 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
394 ;
395 ; AVX512VL-LABEL: test_x86_avx2_pslli_q:
396 ; AVX512VL: ## %bb.0:
397 ; AVX512VL-NEXT: vpsllq $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x73,0xf0,0x07]
398 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
585399 %res = call <4 x i64> @llvm.x86.avx2.pslli.q(<4 x i64> %a0, i32 7) ; <<4 x i64>> [#uses=1]
586400 ret <4 x i64> %res
587401 }
589403
590404
591405 define <16 x i16> @test_x86_avx2_pslli_w(<16 x i16> %a0) {
592 ; X86-AVX-LABEL: test_x86_avx2_pslli_w:
593 ; X86-AVX: ## %bb.0:
594 ; X86-AVX-NEXT: vpsllw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xf0,0x07]
595 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
596 ;
597 ; X86-AVX512VL-LABEL: test_x86_avx2_pslli_w:
598 ; X86-AVX512VL: ## %bb.0:
599 ; X86-AVX512VL-NEXT: vpsllw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xf0,0x07]
600 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
601 ;
602 ; X64-AVX-LABEL: test_x86_avx2_pslli_w:
603 ; X64-AVX: ## %bb.0:
604 ; X64-AVX-NEXT: vpsllw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xf0,0x07]
605 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
606 ;
607 ; X64-AVX512VL-LABEL: test_x86_avx2_pslli_w:
608 ; X64-AVX512VL: ## %bb.0:
609 ; X64-AVX512VL-NEXT: vpsllw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xf0,0x07]
610 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
406 ; AVX2-LABEL: test_x86_avx2_pslli_w:
407 ; AVX2: ## %bb.0:
408 ; AVX2-NEXT: vpsllw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xf0,0x07]
409 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
410 ;
411 ; AVX512VL-LABEL: test_x86_avx2_pslli_w:
412 ; AVX512VL: ## %bb.0:
413 ; AVX512VL-NEXT: vpsllw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xf0,0x07]
414 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
611415 %res = call <16 x i16> @llvm.x86.avx2.pslli.w(<16 x i16> %a0, i32 7) ; <<16 x i16>> [#uses=1]
612416 ret <16 x i16> %res
613417 }
615419
616420
617421 define <8 x i32> @test_x86_avx2_psra_d(<8 x i32> %a0, <4 x i32> %a1) {
618 ; X86-AVX-LABEL: test_x86_avx2_psra_d:
619 ; X86-AVX: ## %bb.0:
620 ; X86-AVX-NEXT: vpsrad %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe2,0xc1]
621 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
622 ;
623 ; X86-AVX512VL-LABEL: test_x86_avx2_psra_d:
624 ; X86-AVX512VL: ## %bb.0:
625 ; X86-AVX512VL-NEXT: vpsrad %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe2,0xc1]
626 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
627 ;
628 ; X64-AVX-LABEL: test_x86_avx2_psra_d:
629 ; X64-AVX: ## %bb.0:
630 ; X64-AVX-NEXT: vpsrad %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe2,0xc1]
631 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
632 ;
633 ; X64-AVX512VL-LABEL: test_x86_avx2_psra_d:
634 ; X64-AVX512VL: ## %bb.0:
635 ; X64-AVX512VL-NEXT: vpsrad %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe2,0xc1]
636 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
422 ; AVX2-LABEL: test_x86_avx2_psra_d:
423 ; AVX2: ## %bb.0:
424 ; AVX2-NEXT: vpsrad %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe2,0xc1]
425 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
426 ;
427 ; AVX512VL-LABEL: test_x86_avx2_psra_d:
428 ; AVX512VL: ## %bb.0:
429 ; AVX512VL-NEXT: vpsrad %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe2,0xc1]
430 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
637431 %res = call <8 x i32> @llvm.x86.avx2.psra.d(<8 x i32> %a0, <4 x i32> %a1) ; <<8 x i32>> [#uses=1]
638432 ret <8 x i32> %res
639433 }
641435
642436
643437 define <16 x i16> @test_x86_avx2_psra_w(<16 x i16> %a0, <8 x i16> %a1) {
644 ; X86-AVX-LABEL: test_x86_avx2_psra_w:
645 ; X86-AVX: ## %bb.0:
646 ; X86-AVX-NEXT: vpsraw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe1,0xc1]
647 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
648 ;
649 ; X86-AVX512VL-LABEL: test_x86_avx2_psra_w:
650 ; X86-AVX512VL: ## %bb.0:
651 ; X86-AVX512VL-NEXT: vpsraw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe1,0xc1]
652 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
653 ;
654 ; X64-AVX-LABEL: test_x86_avx2_psra_w:
655 ; X64-AVX: ## %bb.0:
656 ; X64-AVX-NEXT: vpsraw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe1,0xc1]
657 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
658 ;
659 ; X64-AVX512VL-LABEL: test_x86_avx2_psra_w:
660 ; X64-AVX512VL: ## %bb.0:
661 ; X64-AVX512VL-NEXT: vpsraw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe1,0xc1]
662 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
438 ; AVX2-LABEL: test_x86_avx2_psra_w:
439 ; AVX2: ## %bb.0:
440 ; AVX2-NEXT: vpsraw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe1,0xc1]
441 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
442 ;
443 ; AVX512VL-LABEL: test_x86_avx2_psra_w:
444 ; AVX512VL: ## %bb.0:
445 ; AVX512VL-NEXT: vpsraw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe1,0xc1]
446 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
663447 %res = call <16 x i16> @llvm.x86.avx2.psra.w(<16 x i16> %a0, <8 x i16> %a1) ; <<16 x i16>> [#uses=1]
664448 ret <16 x i16> %res
665449 }
667451
668452
669453 define <8 x i32> @test_x86_avx2_psrai_d(<8 x i32> %a0) {
670 ; X86-AVX-LABEL: test_x86_avx2_psrai_d:
671 ; X86-AVX: ## %bb.0:
672 ; X86-AVX-NEXT: vpsrad $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xe0,0x07]
673 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
674 ;
675 ; X86-AVX512VL-LABEL: test_x86_avx2_psrai_d:
676 ; X86-AVX512VL: ## %bb.0:
677 ; X86-AVX512VL-NEXT: vpsrad $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xe0,0x07]
678 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
679 ;
680 ; X64-AVX-LABEL: test_x86_avx2_psrai_d:
681 ; X64-AVX: ## %bb.0:
682 ; X64-AVX-NEXT: vpsrad $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xe0,0x07]
683 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
684 ;
685 ; X64-AVX512VL-LABEL: test_x86_avx2_psrai_d:
686 ; X64-AVX512VL: ## %bb.0:
687 ; X64-AVX512VL-NEXT: vpsrad $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xe0,0x07]
688 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
454 ; AVX2-LABEL: test_x86_avx2_psrai_d:
455 ; AVX2: ## %bb.0:
456 ; AVX2-NEXT: vpsrad $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xe0,0x07]
457 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
458 ;
459 ; AVX512VL-LABEL: test_x86_avx2_psrai_d:
460 ; AVX512VL: ## %bb.0:
461 ; AVX512VL-NEXT: vpsrad $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xe0,0x07]
462 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
689463 %res = call <8 x i32> @llvm.x86.avx2.psrai.d(<8 x i32> %a0, i32 7) ; <<8 x i32>> [#uses=1]
690464 ret <8 x i32> %res
691465 }
693467
694468
695469 define <16 x i16> @test_x86_avx2_psrai_w(<16 x i16> %a0) {
696 ; X86-AVX-LABEL: test_x86_avx2_psrai_w:
697 ; X86-AVX: ## %bb.0:
698 ; X86-AVX-NEXT: vpsraw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xe0,0x07]
699 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
700 ;
701 ; X86-AVX512VL-LABEL: test_x86_avx2_psrai_w:
702 ; X86-AVX512VL: ## %bb.0:
703 ; X86-AVX512VL-NEXT: vpsraw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xe0,0x07]
704 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
705 ;
706 ; X64-AVX-LABEL: test_x86_avx2_psrai_w:
707 ; X64-AVX: ## %bb.0:
708 ; X64-AVX-NEXT: vpsraw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xe0,0x07]
709 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
710 ;
711 ; X64-AVX512VL-LABEL: test_x86_avx2_psrai_w:
712 ; X64-AVX512VL: ## %bb.0:
713 ; X64-AVX512VL-NEXT: vpsraw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xe0,0x07]
714 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
470 ; AVX2-LABEL: test_x86_avx2_psrai_w:
471 ; AVX2: ## %bb.0:
472 ; AVX2-NEXT: vpsraw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xe0,0x07]
473 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
474 ;
475 ; AVX512VL-LABEL: test_x86_avx2_psrai_w:
476 ; AVX512VL: ## %bb.0:
477 ; AVX512VL-NEXT: vpsraw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xe0,0x07]
478 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
715479 %res = call <16 x i16> @llvm.x86.avx2.psrai.w(<16 x i16> %a0, i32 7) ; <<16 x i16>> [#uses=1]
716480 ret <16 x i16> %res
717481 }
719483
720484
721485 define <8 x i32> @test_x86_avx2_psrl_d(<8 x i32> %a0, <4 x i32> %a1) {
722 ; X86-AVX-LABEL: test_x86_avx2_psrl_d:
723 ; X86-AVX: ## %bb.0:
724 ; X86-AVX-NEXT: vpsrld %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd2,0xc1]
725 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
726 ;
727 ; X86-AVX512VL-LABEL: test_x86_avx2_psrl_d:
728 ; X86-AVX512VL: ## %bb.0:
729 ; X86-AVX512VL-NEXT: vpsrld %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd2,0xc1]
730 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
731 ;
732 ; X64-AVX-LABEL: test_x86_avx2_psrl_d:
733 ; X64-AVX: ## %bb.0:
734 ; X64-AVX-NEXT: vpsrld %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd2,0xc1]
735 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
736 ;
737 ; X64-AVX512VL-LABEL: test_x86_avx2_psrl_d:
738 ; X64-AVX512VL: ## %bb.0:
739 ; X64-AVX512VL-NEXT: vpsrld %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd2,0xc1]
740 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
486 ; AVX2-LABEL: test_x86_avx2_psrl_d:
487 ; AVX2: ## %bb.0:
488 ; AVX2-NEXT: vpsrld %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd2,0xc1]
489 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
490 ;
491 ; AVX512VL-LABEL: test_x86_avx2_psrl_d:
492 ; AVX512VL: ## %bb.0:
493 ; AVX512VL-NEXT: vpsrld %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd2,0xc1]
494 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
741495 %res = call <8 x i32> @llvm.x86.avx2.psrl.d(<8 x i32> %a0, <4 x i32> %a1) ; <<8 x i32>> [#uses=1]
742496 ret <8 x i32> %res
743497 }
745499
746500
747501 define <4 x i64> @test_x86_avx2_psrl_q(<4 x i64> %a0, <2 x i64> %a1) {
748 ; X86-AVX-LABEL: test_x86_avx2_psrl_q:
749 ; X86-AVX: ## %bb.0:
750 ; X86-AVX-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd3,0xc1]
751 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
752 ;
753 ; X86-AVX512VL-LABEL: test_x86_avx2_psrl_q:
754 ; X86-AVX512VL: ## %bb.0:
755 ; X86-AVX512VL-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd3,0xc1]
756 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
757 ;
758 ; X64-AVX-LABEL: test_x86_avx2_psrl_q:
759 ; X64-AVX: ## %bb.0:
760 ; X64-AVX-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd3,0xc1]
761 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
762 ;
763 ; X64-AVX512VL-LABEL: test_x86_avx2_psrl_q:
764 ; X64-AVX512VL: ## %bb.0:
765 ; X64-AVX512VL-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd3,0xc1]
766 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
502 ; AVX2-LABEL: test_x86_avx2_psrl_q:
503 ; AVX2: ## %bb.0:
504 ; AVX2-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd3,0xc1]
505 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
506 ;
507 ; AVX512VL-LABEL: test_x86_avx2_psrl_q:
508 ; AVX512VL: ## %bb.0:
509 ; AVX512VL-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd3,0xc1]
510 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
767511 %res = call <4 x i64> @llvm.x86.avx2.psrl.q(<4 x i64> %a0, <2 x i64> %a1) ; <<4 x i64>> [#uses=1]
768512 ret <4 x i64> %res
769513 }
771515
772516
773517 define <16 x i16> @test_x86_avx2_psrl_w(<16 x i16> %a0, <8 x i16> %a1) {
774 ; X86-AVX-LABEL: test_x86_avx2_psrl_w:
775 ; X86-AVX: ## %bb.0:
776 ; X86-AVX-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd1,0xc1]
777 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
778 ;
779 ; X86-AVX512VL-LABEL: test_x86_avx2_psrl_w:
780 ; X86-AVX512VL: ## %bb.0:
781 ; X86-AVX512VL-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd1,0xc1]
782 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
783 ;
784 ; X64-AVX-LABEL: test_x86_avx2_psrl_w:
785 ; X64-AVX: ## %bb.0:
786 ; X64-AVX-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd1,0xc1]
787 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
788 ;
789 ; X64-AVX512VL-LABEL: test_x86_avx2_psrl_w:
790 ; X64-AVX512VL: ## %bb.0:
791 ; X64-AVX512VL-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd1,0xc1]
792 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
518 ; AVX2-LABEL: test_x86_avx2_psrl_w:
519 ; AVX2: ## %bb.0:
520 ; AVX2-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xd1,0xc1]
521 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
522 ;
523 ; AVX512VL-LABEL: test_x86_avx2_psrl_w:
524 ; AVX512VL: ## %bb.0:
525 ; AVX512VL-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xd1,0xc1]
526 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
793527 %res = call <16 x i16> @llvm.x86.avx2.psrl.w(<16 x i16> %a0, <8 x i16> %a1) ; <<16 x i16>> [#uses=1]
794528 ret <16 x i16> %res
795529 }
797531
798532
799533 define <8 x i32> @test_x86_avx2_psrli_d(<8 x i32> %a0) {
800 ; X86-AVX-LABEL: test_x86_avx2_psrli_d:
801 ; X86-AVX: ## %bb.0:
802 ; X86-AVX-NEXT: vpsrld $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xd0,0x07]
803 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
804 ;
805 ; X86-AVX512VL-LABEL: test_x86_avx2_psrli_d:
806 ; X86-AVX512VL: ## %bb.0:
807 ; X86-AVX512VL-NEXT: vpsrld $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xd0,0x07]
808 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
809 ;
810 ; X64-AVX-LABEL: test_x86_avx2_psrli_d:
811 ; X64-AVX: ## %bb.0:
812 ; X64-AVX-NEXT: vpsrld $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xd0,0x07]
813 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
814 ;
815 ; X64-AVX512VL-LABEL: test_x86_avx2_psrli_d:
816 ; X64-AVX512VL: ## %bb.0:
817 ; X64-AVX512VL-NEXT: vpsrld $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xd0,0x07]
818 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
534 ; AVX2-LABEL: test_x86_avx2_psrli_d:
535 ; AVX2: ## %bb.0:
536 ; AVX2-NEXT: vpsrld $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x72,0xd0,0x07]
537 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
538 ;
539 ; AVX512VL-LABEL: test_x86_avx2_psrli_d:
540 ; AVX512VL: ## %bb.0:
541 ; AVX512VL-NEXT: vpsrld $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x72,0xd0,0x07]
542 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
819543 %res = call <8 x i32> @llvm.x86.avx2.psrli.d(<8 x i32> %a0, i32 7) ; <<8 x i32>> [#uses=1]
820544 ret <8 x i32> %res
821545 }
823547
824548
825549 define <4 x i64> @test_x86_avx2_psrli_q(<4 x i64> %a0) {
826 ; X86-AVX-LABEL: test_x86_avx2_psrli_q:
827 ; X86-AVX: ## %bb.0:
828 ; X86-AVX-NEXT: vpsrlq $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x73,0xd0,0x07]
829 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
830 ;
831 ; X86-AVX512VL-LABEL: test_x86_avx2_psrli_q:
832 ; X86-AVX512VL: ## %bb.0:
833 ; X86-AVX512VL-NEXT: vpsrlq $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x73,0xd0,0x07]
834 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
835 ;
836 ; X64-AVX-LABEL: test_x86_avx2_psrli_q:
837 ; X64-AVX: ## %bb.0:
838 ; X64-AVX-NEXT: vpsrlq $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x73,0xd0,0x07]
839 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
840 ;
841 ; X64-AVX512VL-LABEL: test_x86_avx2_psrli_q:
842 ; X64-AVX512VL: ## %bb.0:
843 ; X64-AVX512VL-NEXT: vpsrlq $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x73,0xd0,0x07]
844 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
550 ; AVX2-LABEL: test_x86_avx2_psrli_q:
551 ; AVX2: ## %bb.0:
552 ; AVX2-NEXT: vpsrlq $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x73,0xd0,0x07]
553 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
554 ;
555 ; AVX512VL-LABEL: test_x86_avx2_psrli_q:
556 ; AVX512VL: ## %bb.0:
557 ; AVX512VL-NEXT: vpsrlq $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x73,0xd0,0x07]
558 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
845559 %res = call <4 x i64> @llvm.x86.avx2.psrli.q(<4 x i64> %a0, i32 7) ; <<4 x i64>> [#uses=1]
846560 ret <4 x i64> %res
847561 }
849563
850564
851565 define <16 x i16> @test_x86_avx2_psrli_w(<16 x i16> %a0) {
852 ; X86-AVX-LABEL: test_x86_avx2_psrli_w:
853 ; X86-AVX: ## %bb.0:
854 ; X86-AVX-NEXT: vpsrlw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xd0,0x07]
855 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
856 ;
857 ; X86-AVX512VL-LABEL: test_x86_avx2_psrli_w:
858 ; X86-AVX512VL: ## %bb.0:
859 ; X86-AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xd0,0x07]
860 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
861 ;
862 ; X64-AVX-LABEL: test_x86_avx2_psrli_w:
863 ; X64-AVX: ## %bb.0:
864 ; X64-AVX-NEXT: vpsrlw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xd0,0x07]
865 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
866 ;
867 ; X64-AVX512VL-LABEL: test_x86_avx2_psrli_w:
868 ; X64-AVX512VL: ## %bb.0:
869 ; X64-AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xd0,0x07]
870 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
566 ; AVX2-LABEL: test_x86_avx2_psrli_w:
567 ; AVX2: ## %bb.0:
568 ; AVX2-NEXT: vpsrlw $7, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0x71,0xd0,0x07]
569 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
570 ;
571 ; AVX512VL-LABEL: test_x86_avx2_psrli_w:
572 ; AVX512VL: ## %bb.0:
573 ; AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0x71,0xd0,0x07]
574 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
871575 %res = call <16 x i16> @llvm.x86.avx2.psrli.w(<16 x i16> %a0, i32 7) ; <<16 x i16>> [#uses=1]
872576 ret <16 x i16> %res
873577 }
875579
876580
877581 define <32 x i8> @test_x86_avx2_psubs_b(<32 x i8> %a0, <32 x i8> %a1) {
878 ; X86-AVX-LABEL: test_x86_avx2_psubs_b:
879 ; X86-AVX: ## %bb.0:
880 ; X86-AVX-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe8,0xc1]
881 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
882 ;
883 ; X86-AVX512VL-LABEL: test_x86_avx2_psubs_b:
884 ; X86-AVX512VL: ## %bb.0:
885 ; X86-AVX512VL-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe8,0xc1]
886 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
887 ;
888 ; X64-AVX-LABEL: test_x86_avx2_psubs_b:
889 ; X64-AVX: ## %bb.0:
890 ; X64-AVX-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe8,0xc1]
891 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
892 ;
893 ; X64-AVX512VL-LABEL: test_x86_avx2_psubs_b:
894 ; X64-AVX512VL: ## %bb.0:
895 ; X64-AVX512VL-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe8,0xc1]
896 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
582 ; AVX2-LABEL: test_x86_avx2_psubs_b:
583 ; AVX2: ## %bb.0:
584 ; AVX2-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe8,0xc1]
585 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
586 ;
587 ; AVX512VL-LABEL: test_x86_avx2_psubs_b:
588 ; AVX512VL: ## %bb.0:
589 ; AVX512VL-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe8,0xc1]
590 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
897591 %res = call <32 x i8> @llvm.x86.avx2.psubs.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
898592 ret <32 x i8> %res
899593 }
901595
902596
903597 define <16 x i16> @test_x86_avx2_psubs_w(<16 x i16> %a0, <16 x i16> %a1) {
904 ; X86-AVX-LABEL: test_x86_avx2_psubs_w:
905 ; X86-AVX: ## %bb.0:
906 ; X86-AVX-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe9,0xc1]
907 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
908 ;
909 ; X86-AVX512VL-LABEL: test_x86_avx2_psubs_w:
910 ; X86-AVX512VL: ## %bb.0:
911 ; X86-AVX512VL-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe9,0xc1]
912 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
913 ;
914 ; X64-AVX-LABEL: test_x86_avx2_psubs_w:
915 ; X64-AVX: ## %bb.0:
916 ; X64-AVX-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe9,0xc1]
917 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
918 ;
919 ; X64-AVX512VL-LABEL: test_x86_avx2_psubs_w:
920 ; X64-AVX512VL: ## %bb.0:
921 ; X64-AVX512VL-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe9,0xc1]
922 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
598 ; AVX2-LABEL: test_x86_avx2_psubs_w:
599 ; AVX2: ## %bb.0:
600 ; AVX2-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc5,0xfd,0xe9,0xc1]
601 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
602 ;
603 ; AVX512VL-LABEL: test_x86_avx2_psubs_w:
604 ; AVX512VL: ## %bb.0:
605 ; AVX512VL-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfd,0xe9,0xc1]
606 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
923607 %res = call <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
924608 ret <16 x i16> %res
925609 }
926610 declare <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16>, <16 x i16>) nounwind readnone
927611
928612 define <8 x i32> @test_x86_avx2_phadd_d(<8 x i32> %a0, <8 x i32> %a1) {
929 ; X86-LABEL: test_x86_avx2_phadd_d:
930 ; X86: ## %bb.0:
931 ; X86-NEXT: vphaddd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x02,0xc1]
932 ; X86-NEXT: retl ## encoding: [0xc3]
933 ;
934 ; X64-LABEL: test_x86_avx2_phadd_d:
935 ; X64: ## %bb.0:
936 ; X64-NEXT: vphaddd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x02,0xc1]
937 ; X64-NEXT: retq ## encoding: [0xc3]
613 ; CHECK-LABEL: test_x86_avx2_phadd_d:
614 ; CHECK: ## %bb.0:
615 ; CHECK-NEXT: vphaddd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x02,0xc1]
616 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
938617 %res = call <8 x i32> @llvm.x86.avx2.phadd.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
939618 ret <8 x i32> %res
940619 }
942621
943622
944623 define <16 x i16> @test_x86_avx2_phadd_sw(<16 x i16> %a0, <16 x i16> %a1) {
945 ; X86-LABEL: test_x86_avx2_phadd_sw:
946 ; X86: ## %bb.0:
947 ; X86-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x03,0xc1]
948 ; X86-NEXT: retl ## encoding: [0xc3]
949 ;
950 ; X64-LABEL: test_x86_avx2_phadd_sw:
951 ; X64: ## %bb.0:
952 ; X64-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x03,0xc1]
953 ; X64-NEXT: retq ## encoding: [0xc3]
624 ; CHECK-LABEL: test_x86_avx2_phadd_sw:
625 ; CHECK: ## %bb.0:
626 ; CHECK-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x03,0xc1]
627 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
954628 %res = call <16 x i16> @llvm.x86.avx2.phadd.sw(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
955629 ret <16 x i16> %res
956630 }
958632
959633
960634 define <16 x i16> @test_x86_avx2_phadd_w(<16 x i16> %a0, <16 x i16> %a1) {
961 ; X86-LABEL: test_x86_avx2_phadd_w:
962 ; X86: ## %bb.0:
963 ; X86-NEXT: vphaddw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x01,0xc1]
964 ; X86-NEXT: retl ## encoding: [0xc3]
965 ;
966 ; X64-LABEL: test_x86_avx2_phadd_w:
967 ; X64: ## %bb.0:
968 ; X64-NEXT: vphaddw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x01,0xc1]
969 ; X64-NEXT: retq ## encoding: [0xc3]
635 ; CHECK-LABEL: test_x86_avx2_phadd_w:
636 ; CHECK: ## %bb.0:
637 ; CHECK-NEXT: vphaddw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x01,0xc1]
638 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
970639 %res = call <16 x i16> @llvm.x86.avx2.phadd.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
971640 ret <16 x i16> %res
972641 }
974643
975644
976645 define <8 x i32> @test_x86_avx2_phsub_d(<8 x i32> %a0, <8 x i32> %a1) {
977 ; X86-LABEL: test_x86_avx2_phsub_d:
978 ; X86: ## %bb.0:
979 ; X86-NEXT: vphsubd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x06,0xc1]
980 ; X86-NEXT: retl ## encoding: [0xc3]
981 ;
982 ; X64-LABEL: test_x86_avx2_phsub_d:
983 ; X64: ## %bb.0:
984 ; X64-NEXT: vphsubd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x06,0xc1]
985 ; X64-NEXT: retq ## encoding: [0xc3]
646 ; CHECK-LABEL: test_x86_avx2_phsub_d:
647 ; CHECK: ## %bb.0:
648 ; CHECK-NEXT: vphsubd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x06,0xc1]
649 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
986650 %res = call <8 x i32> @llvm.x86.avx2.phsub.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
987651 ret <8 x i32> %res
988652 }
990654
991655
992656 define <16 x i16> @test_x86_avx2_phsub_sw(<16 x i16> %a0, <16 x i16> %a1) {
993 ; X86-LABEL: test_x86_avx2_phsub_sw:
994 ; X86: ## %bb.0:
995 ; X86-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x07,0xc1]
996 ; X86-NEXT: retl ## encoding: [0xc3]
997 ;
998 ; X64-LABEL: test_x86_avx2_phsub_sw:
999 ; X64: ## %bb.0:
1000 ; X64-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x07,0xc1]
1001 ; X64-NEXT: retq ## encoding: [0xc3]
657 ; CHECK-LABEL: test_x86_avx2_phsub_sw:
658 ; CHECK: ## %bb.0:
659 ; CHECK-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x07,0xc1]
660 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1002661 %res = call <16 x i16> @llvm.x86.avx2.phsub.sw(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
1003662 ret <16 x i16> %res
1004663 }
1006665
1007666
1008667 define <16 x i16> @test_x86_avx2_phsub_w(<16 x i16> %a0, <16 x i16> %a1) {
1009 ; X86-LABEL: test_x86_avx2_phsub_w:
1010 ; X86: ## %bb.0:
1011 ; X86-NEXT: vphsubw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x05,0xc1]
1012 ; X86-NEXT: retl ## encoding: [0xc3]
1013 ;
1014 ; X64-LABEL: test_x86_avx2_phsub_w:
1015 ; X64: ## %bb.0:
1016 ; X64-NEXT: vphsubw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x05,0xc1]
1017 ; X64-NEXT: retq ## encoding: [0xc3]
668 ; CHECK-LABEL: test_x86_avx2_phsub_w:
669 ; CHECK: ## %bb.0:
670 ; CHECK-NEXT: vphsubw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x05,0xc1]
671 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1018672 %res = call <16 x i16> @llvm.x86.avx2.phsub.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
1019673 ret <16 x i16> %res
1020674 }
1022676
1023677
1024678 define <16 x i16> @test_x86_avx2_pmadd_ub_sw(<32 x i8> %a0, <32 x i8> %a1) {
1025 ; X86-AVX-LABEL: test_x86_avx2_pmadd_ub_sw:
1026 ; X86-AVX: ## %bb.0:
1027 ; X86-AVX-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x04,0xc1]
1028 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1029 ;
1030 ; X86-AVX512VL-LABEL: test_x86_avx2_pmadd_ub_sw:
1031 ; X86-AVX512VL: ## %bb.0:
1032 ; X86-AVX512VL-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x04,0xc1]
1033 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1034 ;
1035 ; X64-AVX-LABEL: test_x86_avx2_pmadd_ub_sw:
1036 ; X64-AVX: ## %bb.0:
1037 ; X64-AVX-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x04,0xc1]
1038 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1039 ;
1040 ; X64-AVX512VL-LABEL: test_x86_avx2_pmadd_ub_sw:
1041 ; X64-AVX512VL: ## %bb.0:
1042 ; X64-AVX512VL-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x04,0xc1]
1043 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
679 ; AVX2-LABEL: test_x86_avx2_pmadd_ub_sw:
680 ; AVX2: ## %bb.0:
681 ; AVX2-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x04,0xc1]
682 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
683 ;
684 ; AVX512VL-LABEL: test_x86_avx2_pmadd_ub_sw:
685 ; AVX512VL: ## %bb.0:
686 ; AVX512VL-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x04,0xc1]
687 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1044688 %res = call <16 x i16> @llvm.x86.avx2.pmadd.ub.sw(<32 x i8> %a0, <32 x i8> %a1) ; <<16 x i16>> [#uses=1]
1045689 ret <16 x i16> %res
1046690 }
1079723 }
1080724
1081725 define <16 x i16> @test_x86_avx2_pmul_hr_sw(<16 x i16> %a0, <16 x i16> %a1) {
1082 ; X86-AVX-LABEL: test_x86_avx2_pmul_hr_sw:
1083 ; X86-AVX: ## %bb.0:
1084 ; X86-AVX-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x0b,0xc1]
1085 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1086 ;
1087 ; X86-AVX512VL-LABEL: test_x86_avx2_pmul_hr_sw:
1088 ; X86-AVX512VL: ## %bb.0:
1089 ; X86-AVX512VL-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x0b,0xc1]
1090 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1091 ;
1092 ; X64-AVX-LABEL: test_x86_avx2_pmul_hr_sw:
1093 ; X64-AVX: ## %bb.0:
1094 ; X64-AVX-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x0b,0xc1]
1095 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1096 ;
1097 ; X64-AVX512VL-LABEL: test_x86_avx2_pmul_hr_sw:
1098 ; X64-AVX512VL: ## %bb.0:
1099 ; X64-AVX512VL-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x0b,0xc1]
1100 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
726 ; AVX2-LABEL: test_x86_avx2_pmul_hr_sw:
727 ; AVX2: ## %bb.0:
728 ; AVX2-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x0b,0xc1]
729 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
730 ;
731 ; AVX512VL-LABEL: test_x86_avx2_pmul_hr_sw:
732 ; AVX512VL: ## %bb.0:
733 ; AVX512VL-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x0b,0xc1]
734 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1101735 %res = call <16 x i16> @llvm.x86.avx2.pmul.hr.sw(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
1102736 ret <16 x i16> %res
1103737 }
1105739
1106740
1107741 define <32 x i8> @test_x86_avx2_pshuf_b(<32 x i8> %a0, <32 x i8> %a1) {
1108 ; X86-AVX-LABEL: test_x86_avx2_pshuf_b:
1109 ; X86-AVX: ## %bb.0:
1110 ; X86-AVX-NEXT: vpshufb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
1111 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1112 ;
1113 ; X86-AVX512VL-LABEL: test_x86_avx2_pshuf_b:
1114 ; X86-AVX512VL: ## %bb.0:
1115 ; X86-AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
1116 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1117 ;
1118 ; X64-AVX-LABEL: test_x86_avx2_pshuf_b:
1119 ; X64-AVX: ## %bb.0:
1120 ; X64-AVX-NEXT: vpshufb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
1121 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1122 ;
1123 ; X64-AVX512VL-LABEL: test_x86_avx2_pshuf_b:
1124 ; X64-AVX512VL: ## %bb.0:
1125 ; X64-AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
1126 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
742 ; AVX2-LABEL: test_x86_avx2_pshuf_b:
743 ; AVX2: ## %bb.0:
744 ; AVX2-NEXT: vpshufb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
745 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
746 ;
747 ; AVX512VL-LABEL: test_x86_avx2_pshuf_b:
748 ; AVX512VL: ## %bb.0:
749 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
750 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1127751 %res = call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> %a0, <32 x i8> %a1) ; <<16 x i8>> [#uses=1]
1128752 ret <32 x i8> %res
1129753 }
1131755
1132756
1133757 define <32 x i8> @test_x86_avx2_psign_b(<32 x i8> %a0, <32 x i8> %a1) {
1134 ; X86-LABEL: test_x86_avx2_psign_b:
1135 ; X86: ## %bb.0:
1136 ; X86-NEXT: vpsignb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x08,0xc1]
1137 ; X86-NEXT: retl ## encoding: [0xc3]
1138 ;
1139 ; X64-LABEL: test_x86_avx2_psign_b:
1140 ; X64: ## %bb.0:
1141 ; X64-NEXT: vpsignb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x08,0xc1]
1142 ; X64-NEXT: retq ## encoding: [0xc3]
758 ; CHECK-LABEL: test_x86_avx2_psign_b:
759 ; CHECK: ## %bb.0:
760 ; CHECK-NEXT: vpsignb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x08,0xc1]
761 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1143762 %res = call <32 x i8> @llvm.x86.avx2.psign.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
1144763 ret <32 x i8> %res
1145764 }
1147766
1148767
1149768 define <8 x i32> @test_x86_avx2_psign_d(<8 x i32> %a0, <8 x i32> %a1) {
1150 ; X86-LABEL: test_x86_avx2_psign_d:
1151 ; X86: ## %bb.0:
1152 ; X86-NEXT: vpsignd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x0a,0xc1]
1153 ; X86-NEXT: retl ## encoding: [0xc3]
1154 ;
1155 ; X64-LABEL: test_x86_avx2_psign_d:
1156 ; X64: ## %bb.0:
1157 ; X64-NEXT: vpsignd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x0a,0xc1]
1158 ; X64-NEXT: retq ## encoding: [0xc3]
769 ; CHECK-LABEL: test_x86_avx2_psign_d:
770 ; CHECK: ## %bb.0:
771 ; CHECK-NEXT: vpsignd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x0a,0xc1]
772 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1159773 %res = call <8 x i32> @llvm.x86.avx2.psign.d(<8 x i32> %a0, <8 x i32> %a1) ; <<4 x i32>> [#uses=1]
1160774 ret <8 x i32> %res
1161775 }
1163777
1164778
1165779 define <16 x i16> @test_x86_avx2_psign_w(<16 x i16> %a0, <16 x i16> %a1) {
1166 ; X86-LABEL: test_x86_avx2_psign_w:
1167 ; X86: ## %bb.0:
1168 ; X86-NEXT: vpsignw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x09,0xc1]
1169 ; X86-NEXT: retl ## encoding: [0xc3]
1170 ;
1171 ; X64-LABEL: test_x86_avx2_psign_w:
1172 ; X64: ## %bb.0:
1173 ; X64-NEXT: vpsignw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x09,0xc1]
1174 ; X64-NEXT: retq ## encoding: [0xc3]
780 ; CHECK-LABEL: test_x86_avx2_psign_w:
781 ; CHECK: ## %bb.0:
782 ; CHECK-NEXT: vpsignw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x09,0xc1]
783 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1175784 %res = call <16 x i16> @llvm.x86.avx2.psign.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
1176785 ret <16 x i16> %res
1177786 }
1179788
1180789
1181790 define <16 x i16> @test_x86_avx2_mpsadbw(<32 x i8> %a0, <32 x i8> %a1) {
1182 ; X86-LABEL: test_x86_avx2_mpsadbw:
1183 ; X86: ## %bb.0:
1184 ; X86-NEXT: vmpsadbw $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x42,0xc1,0x07]
1185 ; X86-NEXT: retl ## encoding: [0xc3]
1186 ;
1187 ; X64-LABEL: test_x86_avx2_mpsadbw:
1188 ; X64: ## %bb.0:
1189 ; X64-NEXT: vmpsadbw $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x42,0xc1,0x07]
1190 ; X64-NEXT: retq ## encoding: [0xc3]
791 ; CHECK-LABEL: test_x86_avx2_mpsadbw:
792 ; CHECK: ## %bb.0:
793 ; CHECK-NEXT: vmpsadbw $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x42,0xc1,0x07]
794 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1191795 %res = call <16 x i16> @llvm.x86.avx2.mpsadbw(<32 x i8> %a0, <32 x i8> %a1, i8 7) ; <<16 x i16>> [#uses=1]
1192796 ret <16 x i16> %res
1193797 }
1195799
1196800
1197801 define <16 x i16> @test_x86_avx2_packusdw(<8 x i32> %a0, <8 x i32> %a1) {
1198 ; X86-AVX-LABEL: test_x86_avx2_packusdw:
1199 ; X86-AVX: ## %bb.0:
1200 ; X86-AVX-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x2b,0xc1]
1201 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1202 ;
1203 ; X86-AVX512VL-LABEL: test_x86_avx2_packusdw:
1204 ; X86-AVX512VL: ## %bb.0:
1205 ; X86-AVX512VL-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x2b,0xc1]
1206 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1207 ;
1208 ; X64-AVX-LABEL: test_x86_avx2_packusdw:
1209 ; X64-AVX: ## %bb.0:
1210 ; X64-AVX-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x2b,0xc1]
1211 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1212 ;
1213 ; X64-AVX512VL-LABEL: test_x86_avx2_packusdw:
1214 ; X64-AVX512VL: ## %bb.0:
1215 ; X64-AVX512VL-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x2b,0xc1]
1216 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
802 ; AVX2-LABEL: test_x86_avx2_packusdw:
803 ; AVX2: ## %bb.0:
804 ; AVX2-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x2b,0xc1]
805 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
806 ;
807 ; AVX512VL-LABEL: test_x86_avx2_packusdw:
808 ; AVX512VL: ## %bb.0:
809 ; AVX512VL-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x2b,0xc1]
810 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1217811 %res = call <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32> %a0, <8 x i32> %a1) ; <<16 x i16>> [#uses=1]
1218812 ret <16 x i16> %res
1219813 }
1254848
1255849
1256850 define <32 x i8> @test_x86_avx2_pblendvb(<32 x i8> %a0, <32 x i8> %a1, <32 x i8> %a2) {
1257 ; X86-LABEL: test_x86_avx2_pblendvb:
1258 ; X86: ## %bb.0:
1259 ; X86-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x4c,0xc1,0x20]
1260 ; X86-NEXT: retl ## encoding: [0xc3]
1261 ;
1262 ; X64-LABEL: test_x86_avx2_pblendvb:
1263 ; X64: ## %bb.0:
1264 ; X64-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x4c,0xc1,0x20]
1265 ; X64-NEXT: retq ## encoding: [0xc3]
851 ; CHECK-LABEL: test_x86_avx2_pblendvb:
852 ; CHECK: ## %bb.0:
853 ; CHECK-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x4c,0xc1,0x20]
854 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1266855 %res = call <32 x i8> @llvm.x86.avx2.pblendvb(<32 x i8> %a0, <32 x i8> %a1, <32 x i8> %a2) ; <<32 x i8>> [#uses=1]
1267856 ret <32 x i8> %res
1268857 }
1270859
1271860
1272861 define <16 x i16> @test_x86_avx2_pblendw(<16 x i16> %a0, <16 x i16> %a1) {
1273 ; X86-LABEL: test_x86_avx2_pblendw:
1274 ; X86: ## %bb.0:
1275 ; X86-NEXT: vpblendw $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x0e,0xc1,0x07]
1276 ; X86-NEXT: ## ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15]
1277 ; X86-NEXT: retl ## encoding: [0xc3]
1278 ;
1279 ; X64-LABEL: test_x86_avx2_pblendw:
1280 ; X64: ## %bb.0:
1281 ; X64-NEXT: vpblendw $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x0e,0xc1,0x07]
1282 ; X64-NEXT: ## ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15]
1283 ; X64-NEXT: retq ## encoding: [0xc3]
862 ; CHECK-LABEL: test_x86_avx2_pblendw:
863 ; CHECK: ## %bb.0:
864 ; CHECK-NEXT: vpblendw $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x0e,0xc1,0x07]
865 ; CHECK-NEXT: ## ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15]
866 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1284867 %res = call <16 x i16> @llvm.x86.avx2.pblendw(<16 x i16> %a0, <16 x i16> %a1, i8 7) ; <<16 x i16>> [#uses=1]
1285868 ret <16 x i16> %res
1286869 }
1288871
1289872
1290873 define <32 x i8> @test_x86_avx2_pmaxsb(<32 x i8> %a0, <32 x i8> %a1) {
1291 ; X86-AVX-LABEL: test_x86_avx2_pmaxsb:
1292 ; X86-AVX: ## %bb.0:
1293 ; X86-AVX-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3c,0xc1]
1294 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1295 ;
1296 ; X86-AVX512VL-LABEL: test_x86_avx2_pmaxsb:
1297 ; X86-AVX512VL: ## %bb.0:
1298 ; X86-AVX512VL-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3c,0xc1]
1299 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1300 ;
1301 ; X64-AVX-LABEL: test_x86_avx2_pmaxsb:
1302 ; X64-AVX: ## %bb.0:
1303 ; X64-AVX-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3c,0xc1]
1304 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1305 ;
1306 ; X64-AVX512VL-LABEL: test_x86_avx2_pmaxsb:
1307 ; X64-AVX512VL: ## %bb.0:
1308 ; X64-AVX512VL-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3c,0xc1]
1309 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
874 ; AVX2-LABEL: test_x86_avx2_pmaxsb:
875 ; AVX2: ## %bb.0:
876 ; AVX2-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3c,0xc1]
877 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
878 ;
879 ; AVX512VL-LABEL: test_x86_avx2_pmaxsb:
880 ; AVX512VL: ## %bb.0:
881 ; AVX512VL-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3c,0xc1]
882 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1310883 %res = call <32 x i8> @llvm.x86.avx2.pmaxs.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
1311884 ret <32 x i8> %res
1312885 }
1314887
1315888
1316889 define <8 x i32> @test_x86_avx2_pmaxsd(<8 x i32> %a0, <8 x i32> %a1) {
1317 ; X86-AVX-LABEL: test_x86_avx2_pmaxsd:
1318 ; X86-AVX: ## %bb.0:
1319 ; X86-AVX-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3d,0xc1]
1320 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1321 ;
1322 ; X86-AVX512VL-LABEL: test_x86_avx2_pmaxsd:
1323 ; X86-AVX512VL: ## %bb.0:
1324 ; X86-AVX512VL-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3d,0xc1]
1325 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1326 ;
1327 ; X64-AVX-LABEL: test_x86_avx2_pmaxsd:
1328 ; X64-AVX: ## %bb.0:
1329 ; X64-AVX-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3d,0xc1]
1330 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1331 ;
1332 ; X64-AVX512VL-LABEL: test_x86_avx2_pmaxsd:
1333 ; X64-AVX512VL: ## %bb.0:
1334 ; X64-AVX512VL-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3d,0xc1]
1335 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
890 ; AVX2-LABEL: test_x86_avx2_pmaxsd:
891 ; AVX2: ## %bb.0:
892 ; AVX2-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3d,0xc1]
893 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
894 ;
895 ; AVX512VL-LABEL: test_x86_avx2_pmaxsd:
896 ; AVX512VL: ## %bb.0:
897 ; AVX512VL-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3d,0xc1]
898 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1336899 %res = call <8 x i32> @llvm.x86.avx2.pmaxs.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
1337900 ret <8 x i32> %res
1338901 }
1340903
1341904
1342905 define <8 x i32> @test_x86_avx2_pmaxud(<8 x i32> %a0, <8 x i32> %a1) {
1343 ; X86-AVX-LABEL: test_x86_avx2_pmaxud:
1344 ; X86-AVX: ## %bb.0:
1345 ; X86-AVX-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3f,0xc1]
1346 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1347 ;
1348 ; X86-AVX512VL-LABEL: test_x86_avx2_pmaxud:
1349 ; X86-AVX512VL: ## %bb.0:
1350 ; X86-AVX512VL-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3f,0xc1]
1351 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1352 ;
1353 ; X64-AVX-LABEL: test_x86_avx2_pmaxud:
1354 ; X64-AVX: ## %bb.0:
1355 ; X64-AVX-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3f,0xc1]
1356 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1357 ;
1358 ; X64-AVX512VL-LABEL: test_x86_avx2_pmaxud:
1359 ; X64-AVX512VL: ## %bb.0:
1360 ; X64-AVX512VL-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3f,0xc1]
1361 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
906 ; AVX2-LABEL: test_x86_avx2_pmaxud:
907 ; AVX2: ## %bb.0:
908 ; AVX2-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3f,0xc1]
909 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
910 ;
911 ; AVX512VL-LABEL: test_x86_avx2_pmaxud:
912 ; AVX512VL: ## %bb.0:
913 ; AVX512VL-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3f,0xc1]
914 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1362915 %res = call <8 x i32> @llvm.x86.avx2.pmaxu.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
1363916 ret <8 x i32> %res
1364917 }
1366919
1367920
1368921 define <16 x i16> @test_x86_avx2_pmaxuw(<16 x i16> %a0, <16 x i16> %a1) {
1369 ; X86-AVX-LABEL: test_x86_avx2_pmaxuw:
1370 ; X86-AVX: ## %bb.0:
1371 ; X86-AVX-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3e,0xc1]
1372 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1373 ;
1374 ; X86-AVX512VL-LABEL: test_x86_avx2_pmaxuw:
1375 ; X86-AVX512VL: ## %bb.0:
1376 ; X86-AVX512VL-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3e,0xc1]
1377 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1378 ;
1379 ; X64-AVX-LABEL: test_x86_avx2_pmaxuw:
1380 ; X64-AVX: ## %bb.0:
1381 ; X64-AVX-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3e,0xc1]
1382 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1383 ;
1384 ; X64-AVX512VL-LABEL: test_x86_avx2_pmaxuw:
1385 ; X64-AVX512VL: ## %bb.0:
1386 ; X64-AVX512VL-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3e,0xc1]
1387 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
922 ; AVX2-LABEL: test_x86_avx2_pmaxuw:
923 ; AVX2: ## %bb.0:
924 ; AVX2-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3e,0xc1]
925 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
926 ;
927 ; AVX512VL-LABEL: test_x86_avx2_pmaxuw:
928 ; AVX512VL: ## %bb.0:
929 ; AVX512VL-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3e,0xc1]
930 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1388931 %res = call <16 x i16> @llvm.x86.avx2.pmaxu.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
1389932 ret <16 x i16> %res
1390933 }
1392935
1393936
1394937 define <32 x i8> @test_x86_avx2_pminsb(<32 x i8> %a0, <32 x i8> %a1) {
1395 ; X86-AVX-LABEL: test_x86_avx2_pminsb:
1396 ; X86-AVX: ## %bb.0:
1397 ; X86-AVX-NEXT: vpminsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x38,0xc1]
1398 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1399 ;
1400 ; X86-AVX512VL-LABEL: test_x86_avx2_pminsb:
1401 ; X86-AVX512VL: ## %bb.0:
1402 ; X86-AVX512VL-NEXT: vpminsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x38,0xc1]
1403 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1404 ;
1405 ; X64-AVX-LABEL: test_x86_avx2_pminsb:
1406 ; X64-AVX: ## %bb.0:
1407 ; X64-AVX-NEXT: vpminsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x38,0xc1]
1408 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1409 ;
1410 ; X64-AVX512VL-LABEL: test_x86_avx2_pminsb:
1411 ; X64-AVX512VL: ## %bb.0:
1412 ; X64-AVX512VL-NEXT: vpminsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x38,0xc1]
1413 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
938 ; AVX2-LABEL: test_x86_avx2_pminsb:
939 ; AVX2: ## %bb.0:
940 ; AVX2-NEXT: vpminsb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x38,0xc1]
941 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
942 ;
943 ; AVX512VL-LABEL: test_x86_avx2_pminsb:
944 ; AVX512VL: ## %bb.0:
945 ; AVX512VL-NEXT: vpminsb %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x38,0xc1]
946 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1414947 %res = call <32 x i8> @llvm.x86.avx2.pmins.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1]
1415948 ret <32 x i8> %res
1416949 }
1418951
1419952
1420953 define <8 x i32> @test_x86_avx2_pminsd(<8 x i32> %a0, <8 x i32> %a1) {
1421 ; X86-AVX-LABEL: test_x86_avx2_pminsd:
1422 ; X86-AVX: ## %bb.0:
1423 ; X86-AVX-NEXT: vpminsd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x39,0xc1]
1424 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1425 ;
1426 ; X86-AVX512VL-LABEL: test_x86_avx2_pminsd:
1427 ; X86-AVX512VL: ## %bb.0:
1428 ; X86-AVX512VL-NEXT: vpminsd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x39,0xc1]
1429 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1430 ;
1431 ; X64-AVX-LABEL: test_x86_avx2_pminsd:
1432 ; X64-AVX: ## %bb.0:
1433 ; X64-AVX-NEXT: vpminsd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x39,0xc1]
1434 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1435 ;
1436 ; X64-AVX512VL-LABEL: test_x86_avx2_pminsd:
1437 ; X64-AVX512VL: ## %bb.0:
1438 ; X64-AVX512VL-NEXT: vpminsd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x39,0xc1]
1439 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
954 ; AVX2-LABEL: test_x86_avx2_pminsd:
955 ; AVX2: ## %bb.0:
956 ; AVX2-NEXT: vpminsd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x39,0xc1]
957 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
958 ;
959 ; AVX512VL-LABEL: test_x86_avx2_pminsd:
960 ; AVX512VL: ## %bb.0:
961 ; AVX512VL-NEXT: vpminsd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x39,0xc1]
962 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1440963 %res = call <8 x i32> @llvm.x86.avx2.pmins.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
1441964 ret <8 x i32> %res
1442965 }
1444967
1445968
1446969 define <8 x i32> @test_x86_avx2_pminud(<8 x i32> %a0, <8 x i32> %a1) {
1447 ; X86-AVX-LABEL: test_x86_avx2_pminud:
1448 ; X86-AVX: ## %bb.0:
1449 ; X86-AVX-NEXT: vpminud %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3b,0xc1]
1450 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1451 ;
1452 ; X86-AVX512VL-LABEL: test_x86_avx2_pminud:
1453 ; X86-AVX512VL: ## %bb.0:
1454 ; X86-AVX512VL-NEXT: vpminud %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3b,0xc1]
1455 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1456 ;
1457 ; X64-AVX-LABEL: test_x86_avx2_pminud:
1458 ; X64-AVX: ## %bb.0:
1459 ; X64-AVX-NEXT: vpminud %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3b,0xc1]
1460 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1461 ;
1462 ; X64-AVX512VL-LABEL: test_x86_avx2_pminud:
1463 ; X64-AVX512VL: ## %bb.0:
1464 ; X64-AVX512VL-NEXT: vpminud %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3b,0xc1]
1465 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
970 ; AVX2-LABEL: test_x86_avx2_pminud:
971 ; AVX2: ## %bb.0:
972 ; AVX2-NEXT: vpminud %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3b,0xc1]
973 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
974 ;
975 ; AVX512VL-LABEL: test_x86_avx2_pminud:
976 ; AVX512VL: ## %bb.0:
977 ; AVX512VL-NEXT: vpminud %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3b,0xc1]
978 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1466979 %res = call <8 x i32> @llvm.x86.avx2.pminu.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
1467980 ret <8 x i32> %res
1468981 }
1470983
1471984
1472985 define <16 x i16> @test_x86_avx2_pminuw(<16 x i16> %a0, <16 x i16> %a1) {
1473 ; X86-AVX-LABEL: test_x86_avx2_pminuw:
1474 ; X86-AVX: ## %bb.0:
1475 ; X86-AVX-NEXT: vpminuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3a,0xc1]
1476 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1477 ;
1478 ; X86-AVX512VL-LABEL: test_x86_avx2_pminuw:
1479 ; X86-AVX512VL: ## %bb.0:
1480 ; X86-AVX512VL-NEXT: vpminuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3a,0xc1]
1481 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1482 ;
1483 ; X64-AVX-LABEL: test_x86_avx2_pminuw:
1484 ; X64-AVX: ## %bb.0:
1485 ; X64-AVX-NEXT: vpminuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3a,0xc1]
1486 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1487 ;
1488 ; X64-AVX512VL-LABEL: test_x86_avx2_pminuw:
1489 ; X64-AVX512VL: ## %bb.0:
1490 ; X64-AVX512VL-NEXT: vpminuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3a,0xc1]
1491 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
986 ; AVX2-LABEL: test_x86_avx2_pminuw:
987 ; AVX2: ## %bb.0:
988 ; AVX2-NEXT: vpminuw %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x3a,0xc1]
989 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
990 ;
991 ; AVX512VL-LABEL: test_x86_avx2_pminuw:
992 ; AVX512VL: ## %bb.0:
993 ; AVX512VL-NEXT: vpminuw %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x3a,0xc1]
994 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1492995 %res = call <16 x i16> @llvm.x86.avx2.pminu.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1]
1493996 ret <16 x i16> %res
1494997 }
1496999
14971000
14981001 define <4 x i32> @test_x86_avx2_pblendd_128(<4 x i32> %a0, <4 x i32> %a1) {
1499 ; X86-LABEL: test_x86_avx2_pblendd_128:
1500 ; X86: ## %bb.0:
1501 ; X86-NEXT: vblendps $8, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x08]
1502 ; X86-NEXT: ## xmm0 = xmm1[0,1,2],xmm0[3]
1503 ; X86-NEXT: retl ## encoding: [0xc3]
1504 ;
1505 ; X64-LABEL: test_x86_avx2_pblendd_128:
1506 ; X64: ## %bb.0:
1507 ; X64-NEXT: vblendps $8, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x08]
1508 ; X64-NEXT: ## xmm0 = xmm1[0,1,2],xmm0[3]
1509 ; X64-NEXT: retq ## encoding: [0xc3]
1002 ; CHECK-LABEL: test_x86_avx2_pblendd_128:
1003 ; CHECK: ## %bb.0:
1004 ; CHECK-NEXT: vblendps $8, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x08]
1005 ; CHECK-NEXT: ## xmm0 = xmm1[0,1,2],xmm0[3]
1006 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
15101007 %res = call <4 x i32> @llvm.x86.avx2.pblendd.128(<4 x i32> %a0, <4 x i32> %a1, i8 7) ; <<4 x i32>> [#uses=1]
15111008 ret <4 x i32> %res
15121009 }
15141011
15151012
15161013 define <8 x i32> @test_x86_avx2_pblendd_256(<8 x i32> %a0, <8 x i32> %a1) {
1517 ; X86-LABEL: test_x86_avx2_pblendd_256:
1518 ; X86: ## %bb.0:
1519 ; X86-NEXT: vblendps $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x0c,0xc1,0x07]
1520 ; X86-NEXT: ## ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]
1521 ; X86-NEXT: retl ## encoding: [0xc3]
1522 ;
1523 ; X64-LABEL: test_x86_avx2_pblendd_256:
1524 ; X64: ## %bb.0:
1525 ; X64-NEXT: vblendps $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x0c,0xc1,0x07]
1526 ; X64-NEXT: ## ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]
1527 ; X64-NEXT: retq ## encoding: [0xc3]
1014 ; CHECK-LABEL: test_x86_avx2_pblendd_256:
1015 ; CHECK: ## %bb.0:
1016 ; CHECK-NEXT: vblendps $7, %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe3,0x7d,0x0c,0xc1,0x07]
1017 ; CHECK-NEXT: ## ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7]
1018 ; CHECK-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
15281019 %res = call <8 x i32> @llvm.x86.avx2.pblendd.256(<8 x i32> %a0, <8 x i32> %a1, i8 7) ; <<8 x i32>> [#uses=1]
15291020 ret <8 x i32> %res
15301021 }
15351026 ; and its lowering. Indeed, the offsets are the first source in
15361027 ; the instruction.
15371028 define <8 x i32> @test_x86_avx2_permd(<8 x i32> %a0, <8 x i32> %a1) {
1538 ; X86-AVX-LABEL: test_x86_avx2_permd:
1539 ; X86-AVX: ## %bb.0:
1540 ; X86-AVX-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1541 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1542 ;
1543 ; X86-AVX512VL-LABEL: test_x86_avx2_permd:
1544 ; X86-AVX512VL: ## %bb.0:
1545 ; X86-AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1546 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1547 ;
1548 ; X64-AVX-LABEL: test_x86_avx2_permd:
1549 ; X64-AVX: ## %bb.0:
1550 ; X64-AVX-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1551 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1552 ;
1553 ; X64-AVX512VL-LABEL: test_x86_avx2_permd:
1554 ; X64-AVX512VL: ## %bb.0:
1555 ; X64-AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1556 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1029 ; AVX2-LABEL: test_x86_avx2_permd:
1030 ; AVX2: ## %bb.0:
1031 ; AVX2-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1032 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1033 ;
1034 ; AVX512VL-LABEL: test_x86_avx2_permd:
1035 ; AVX512VL: ## %bb.0:
1036 ; AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1037 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
15571038 %res = call <8 x i32> @llvm.x86.avx2.permd(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
15581039 ret <8 x i32> %res
15591040 }
15641045 ; and its lowering. Indeed, the offsets are the first source in
15651046 ; the instruction.
15661047 define <8 x float> @test_x86_avx2_permps(<8 x float> %a0, <8 x i32> %a1) {
1567 ; X86-AVX-LABEL: test_x86_avx2_permps:
1568 ; X86-AVX: ## %bb.0:
1569 ; X86-AVX-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1570 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1571 ;
1572 ; X86-AVX512VL-LABEL: test_x86_avx2_permps:
1573 ; X86-AVX512VL: ## %bb.0:
1574 ; X86-AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1575 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1576 ;
1577 ; X64-AVX-LABEL: test_x86_avx2_permps:
1578 ; X64-AVX: ## %bb.0:
1579 ; X64-AVX-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1580 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1581 ;
1582 ; X64-AVX512VL-LABEL: test_x86_avx2_permps:
1583 ; X64-AVX512VL: ## %bb.0:
1584 ; X64-AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1585 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1048 ; AVX2-LABEL: test_x86_avx2_permps:
1049 ; AVX2: ## %bb.0:
1050 ; AVX2-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1051 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1052 ;
1053 ; AVX512VL-LABEL: test_x86_avx2_permps:
1054 ; AVX512VL: ## %bb.0:
1055 ; AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x75,0x16,0xc0]
1056 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
15861057 %res = call <8 x float> @llvm.x86.avx2.permps(<8 x float> %a0, <8 x i32> %a1) ; <<8 x float>> [#uses=1]
15871058 ret <8 x float> %res
15881059 }
17301201
17311202
17321203 define <4 x i32> @test_x86_avx2_psllv_d(<4 x i32> %a0, <4 x i32> %a1) {
1733 ; X86-AVX-LABEL: test_x86_avx2_psllv_d:
1734 ; X86-AVX: ## %bb.0:
1735 ; X86-AVX-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x47,0xc1]
1736 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1737 ;
1738 ; X86-AVX512VL-LABEL: test_x86_avx2_psllv_d:
1739 ; X86-AVX512VL: ## %bb.0:
1740 ; X86-AVX512VL-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x47,0xc1]
1741 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1742 ;
1743 ; X64-AVX-LABEL: test_x86_avx2_psllv_d:
1744 ; X64-AVX: ## %bb.0:
1745 ; X64-AVX-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x47,0xc1]
1746 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1747 ;
1748 ; X64-AVX512VL-LABEL: test_x86_avx2_psllv_d:
1749 ; X64-AVX512VL: ## %bb.0:
1750 ; X64-AVX512VL-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x47,0xc1]
1751 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1204 ; AVX2-LABEL: test_x86_avx2_psllv_d:
1205 ; AVX2: ## %bb.0:
1206 ; AVX2-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x47,0xc1]
1207 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1208 ;
1209 ; AVX512VL-LABEL: test_x86_avx2_psllv_d:
1210 ; AVX512VL: ## %bb.0:
1211 ; AVX512VL-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x47,0xc1]
1212 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
17521213 %res = call <4 x i32> @llvm.x86.avx2.psllv.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
17531214 ret <4 x i32> %res
17541215 }
17561217
17571218
17581219 define <8 x i32> @test_x86_avx2_psllv_d_256(<8 x i32> %a0, <8 x i32> %a1) {
1759 ; X86-AVX-LABEL: test_x86_avx2_psllv_d_256:
1760 ; X86-AVX: ## %bb.0:
1761 ; X86-AVX-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x47,0xc1]
1762 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1763 ;
1764 ; X86-AVX512VL-LABEL: test_x86_avx2_psllv_d_256:
1765 ; X86-AVX512VL: ## %bb.0:
1766 ; X86-AVX512VL-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x47,0xc1]
1767 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1768 ;
1769 ; X64-AVX-LABEL: test_x86_avx2_psllv_d_256:
1770 ; X64-AVX: ## %bb.0:
1771 ; X64-AVX-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x47,0xc1]
1772 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1773 ;
1774 ; X64-AVX512VL-LABEL: test_x86_avx2_psllv_d_256:
1775 ; X64-AVX512VL: ## %bb.0:
1776 ; X64-AVX512VL-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x47,0xc1]
1777 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1220 ; AVX2-LABEL: test_x86_avx2_psllv_d_256:
1221 ; AVX2: ## %bb.0:
1222 ; AVX2-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x47,0xc1]
1223 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1224 ;
1225 ; AVX512VL-LABEL: test_x86_avx2_psllv_d_256:
1226 ; AVX512VL: ## %bb.0:
1227 ; AVX512VL-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x47,0xc1]
1228 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
17781229 %res = call <8 x i32> @llvm.x86.avx2.psllv.d.256(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
17791230 ret <8 x i32> %res
17801231 }
17821233
17831234
17841235 define <2 x i64> @test_x86_avx2_psllv_q(<2 x i64> %a0, <2 x i64> %a1) {
1785 ; X86-AVX-LABEL: test_x86_avx2_psllv_q:
1786 ; X86-AVX: ## %bb.0:
1787 ; X86-AVX-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0xf9,0x47,0xc1]
1788 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1789 ;
1790 ; X86-AVX512VL-LABEL: test_x86_avx2_psllv_q:
1791 ; X86-AVX512VL: ## %bb.0:
1792 ; X86-AVX512VL-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf9,0x47,0xc1]
1793 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1794 ;
1795 ; X64-AVX-LABEL: test_x86_avx2_psllv_q:
1796 ; X64-AVX: ## %bb.0:
1797 ; X64-AVX-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0xf9,0x47,0xc1]
1798 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1799 ;
1800 ; X64-AVX512VL-LABEL: test_x86_avx2_psllv_q:
1801 ; X64-AVX512VL: ## %bb.0:
1802 ; X64-AVX512VL-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf9,0x47,0xc1]
1803 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1236 ; AVX2-LABEL: test_x86_avx2_psllv_q:
1237 ; AVX2: ## %bb.0:
1238 ; AVX2-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0xf9,0x47,0xc1]
1239 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1240 ;
1241 ; AVX512VL-LABEL: test_x86_avx2_psllv_q:
1242 ; AVX512VL: ## %bb.0:
1243 ; AVX512VL-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf9,0x47,0xc1]
1244 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
18041245 %res = call <2 x i64> @llvm.x86.avx2.psllv.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
18051246 ret <2 x i64> %res
18061247 }
18081249
18091250
18101251 define <4 x i64> @test_x86_avx2_psllv_q_256(<4 x i64> %a0, <4 x i64> %a1) {
1811 ; X86-AVX-LABEL: test_x86_avx2_psllv_q_256:
1812 ; X86-AVX: ## %bb.0:
1813 ; X86-AVX-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0xfd,0x47,0xc1]
1814 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1815 ;
1816 ; X86-AVX512VL-LABEL: test_x86_avx2_psllv_q_256:
1817 ; X86-AVX512VL: ## %bb.0:
1818 ; X86-AVX512VL-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xfd,0x47,0xc1]
1819 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1820 ;
1821 ; X64-AVX-LABEL: test_x86_avx2_psllv_q_256:
1822 ; X64-AVX: ## %bb.0:
1823 ; X64-AVX-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0xfd,0x47,0xc1]
1824 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1825 ;
1826 ; X64-AVX512VL-LABEL: test_x86_avx2_psllv_q_256:
1827 ; X64-AVX512VL: ## %bb.0:
1828 ; X64-AVX512VL-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xfd,0x47,0xc1]
1829 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1252 ; AVX2-LABEL: test_x86_avx2_psllv_q_256:
1253 ; AVX2: ## %bb.0:
1254 ; AVX2-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0xfd,0x47,0xc1]
1255 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1256 ;
1257 ; AVX512VL-LABEL: test_x86_avx2_psllv_q_256:
1258 ; AVX512VL: ## %bb.0:
1259 ; AVX512VL-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xfd,0x47,0xc1]
1260 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
18301261 %res = call <4 x i64> @llvm.x86.avx2.psllv.q.256(<4 x i64> %a0, <4 x i64> %a1) ; <<4 x i64>> [#uses=1]
18311262 ret <4 x i64> %res
18321263 }
18341265
18351266
18361267 define <4 x i32> @test_x86_avx2_psrlv_d(<4 x i32> %a0, <4 x i32> %a1) {
1837 ; X86-AVX-LABEL: test_x86_avx2_psrlv_d:
1838 ; X86-AVX: ## %bb.0:
1839 ; X86-AVX-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x45,0xc1]
1840 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1841 ;
1842 ; X86-AVX512VL-LABEL: test_x86_avx2_psrlv_d:
1843 ; X86-AVX512VL: ## %bb.0:
1844 ; X86-AVX512VL-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x45,0xc1]
1845 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1846 ;
1847 ; X64-AVX-LABEL: test_x86_avx2_psrlv_d:
1848 ; X64-AVX: ## %bb.0:
1849 ; X64-AVX-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x45,0xc1]
1850 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1851 ;
1852 ; X64-AVX512VL-LABEL: test_x86_avx2_psrlv_d:
1853 ; X64-AVX512VL: ## %bb.0:
1854 ; X64-AVX512VL-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x45,0xc1]
1855 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1268 ; AVX2-LABEL: test_x86_avx2_psrlv_d:
1269 ; AVX2: ## %bb.0:
1270 ; AVX2-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x45,0xc1]
1271 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1272 ;
1273 ; AVX512VL-LABEL: test_x86_avx2_psrlv_d:
1274 ; AVX512VL: ## %bb.0:
1275 ; AVX512VL-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x45,0xc1]
1276 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
18561277 %res = call <4 x i32> @llvm.x86.avx2.psrlv.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
18571278 ret <4 x i32> %res
18581279 }
18601281
18611282
18621283 define <8 x i32> @test_x86_avx2_psrlv_d_256(<8 x i32> %a0, <8 x i32> %a1) {
1863 ; X86-AVX-LABEL: test_x86_avx2_psrlv_d_256:
1864 ; X86-AVX: ## %bb.0:
1865 ; X86-AVX-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x45,0xc1]
1866 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1867 ;
1868 ; X86-AVX512VL-LABEL: test_x86_avx2_psrlv_d_256:
1869 ; X86-AVX512VL: ## %bb.0:
1870 ; X86-AVX512VL-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x45,0xc1]
1871 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1872 ;
1873 ; X64-AVX-LABEL: test_x86_avx2_psrlv_d_256:
1874 ; X64-AVX: ## %bb.0:
1875 ; X64-AVX-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x45,0xc1]
1876 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1877 ;
1878 ; X64-AVX512VL-LABEL: test_x86_avx2_psrlv_d_256:
1879 ; X64-AVX512VL: ## %bb.0:
1880 ; X64-AVX512VL-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x45,0xc1]
1881 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1284 ; AVX2-LABEL: test_x86_avx2_psrlv_d_256:
1285 ; AVX2: ## %bb.0:
1286 ; AVX2-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x45,0xc1]
1287 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1288 ;
1289 ; AVX512VL-LABEL: test_x86_avx2_psrlv_d_256:
1290 ; AVX512VL: ## %bb.0:
1291 ; AVX512VL-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x45,0xc1]
1292 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
18821293 %res = call <8 x i32> @llvm.x86.avx2.psrlv.d.256(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
18831294 ret <8 x i32> %res
18841295 }
18861297
18871298
18881299 define <2 x i64> @test_x86_avx2_psrlv_q(<2 x i64> %a0, <2 x i64> %a1) {
1889 ; X86-AVX-LABEL: test_x86_avx2_psrlv_q:
1890 ; X86-AVX: ## %bb.0:
1891 ; X86-AVX-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0xf9,0x45,0xc1]
1892 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1893 ;
1894 ; X86-AVX512VL-LABEL: test_x86_avx2_psrlv_q:
1895 ; X86-AVX512VL: ## %bb.0:
1896 ; X86-AVX512VL-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf9,0x45,0xc1]
1897 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1898 ;
1899 ; X64-AVX-LABEL: test_x86_avx2_psrlv_q:
1900 ; X64-AVX: ## %bb.0:
1901 ; X64-AVX-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0xf9,0x45,0xc1]
1902 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1903 ;
1904 ; X64-AVX512VL-LABEL: test_x86_avx2_psrlv_q:
1905 ; X64-AVX512VL: ## %bb.0:
1906 ; X64-AVX512VL-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf9,0x45,0xc1]
1907 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1300 ; AVX2-LABEL: test_x86_avx2_psrlv_q:
1301 ; AVX2: ## %bb.0:
1302 ; AVX2-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0xf9,0x45,0xc1]
1303 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1304 ;
1305 ; AVX512VL-LABEL: test_x86_avx2_psrlv_q:
1306 ; AVX512VL: ## %bb.0:
1307 ; AVX512VL-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf9,0x45,0xc1]
1308 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
19081309 %res = call <2 x i64> @llvm.x86.avx2.psrlv.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
19091310 ret <2 x i64> %res
19101311 }
19121313
19131314
19141315 define <4 x i64> @test_x86_avx2_psrlv_q_256(<4 x i64> %a0, <4 x i64> %a1) {
1915 ; X86-AVX-LABEL: test_x86_avx2_psrlv_q_256:
1916 ; X86-AVX: ## %bb.0:
1917 ; X86-AVX-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0xfd,0x45,0xc1]
1918 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1919 ;
1920 ; X86-AVX512VL-LABEL: test_x86_avx2_psrlv_q_256:
1921 ; X86-AVX512VL: ## %bb.0:
1922 ; X86-AVX512VL-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xfd,0x45,0xc1]
1923 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1924 ;
1925 ; X64-AVX-LABEL: test_x86_avx2_psrlv_q_256:
1926 ; X64-AVX: ## %bb.0:
1927 ; X64-AVX-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0xfd,0x45,0xc1]
1928 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1929 ;
1930 ; X64-AVX512VL-LABEL: test_x86_avx2_psrlv_q_256:
1931 ; X64-AVX512VL: ## %bb.0:
1932 ; X64-AVX512VL-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xfd,0x45,0xc1]
1933 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1316 ; AVX2-LABEL: test_x86_avx2_psrlv_q_256:
1317 ; AVX2: ## %bb.0:
1318 ; AVX2-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0xfd,0x45,0xc1]
1319 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1320 ;
1321 ; AVX512VL-LABEL: test_x86_avx2_psrlv_q_256:
1322 ; AVX512VL: ## %bb.0:
1323 ; AVX512VL-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xfd,0x45,0xc1]
1324 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
19341325 %res = call <4 x i64> @llvm.x86.avx2.psrlv.q.256(<4 x i64> %a0, <4 x i64> %a1) ; <<4 x i64>> [#uses=1]
19351326 ret <4 x i64> %res
19361327 }
19381329
19391330
19401331 define <4 x i32> @test_x86_avx2_psrav_d(<4 x i32> %a0, <4 x i32> %a1) {
1941 ; X86-AVX-LABEL: test_x86_avx2_psrav_d:
1942 ; X86-AVX: ## %bb.0:
1943 ; X86-AVX-NEXT: vpsravd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0xc1]
1944 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
1945 ;
1946 ; X86-AVX512VL-LABEL: test_x86_avx2_psrav_d:
1947 ; X86-AVX512VL: ## %bb.0:
1948 ; X86-AVX512VL-NEXT: vpsravd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0xc1]
1949 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
1950 ;
1951 ; X64-AVX-LABEL: test_x86_avx2_psrav_d:
1952 ; X64-AVX: ## %bb.0:
1953 ; X64-AVX-NEXT: vpsravd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0xc1]
1954 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
1955 ;
1956 ; X64-AVX512VL-LABEL: test_x86_avx2_psrav_d:
1957 ; X64-AVX512VL: ## %bb.0:
1958 ; X64-AVX512VL-NEXT: vpsravd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0xc1]
1959 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1332 ; AVX2-LABEL: test_x86_avx2_psrav_d:
1333 ; AVX2: ## %bb.0:
1334 ; AVX2-NEXT: vpsravd %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x46,0xc1]
1335 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1336 ;
1337 ; AVX512VL-LABEL: test_x86_avx2_psrav_d:
1338 ; AVX512VL: ## %bb.0:
1339 ; AVX512VL-NEXT: vpsravd %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x46,0xc1]
1340 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
19601341 %res = call <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
19611342 ret <4 x i32> %res
19621343 }
20031384 declare <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32>, <4 x i32>) nounwind readnone
20041385
20051386 define <8 x i32> @test_x86_avx2_psrav_d_256(<8 x i32> %a0, <8 x i32> %a1) {
2006 ; X86-AVX-LABEL: test_x86_avx2_psrav_d_256:
2007 ; X86-AVX: ## %bb.0:
2008 ; X86-AVX-NEXT: vpsravd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0xc1]
2009 ; X86-AVX-NEXT: retl ## encoding: [0xc3]
2010 ;
2011 ; X86-AVX512VL-LABEL: test_x86_avx2_psrav_d_256:
2012 ; X86-AVX512VL: ## %bb.0:
2013 ; X86-AVX512VL-NEXT: vpsravd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0xc1]
2014 ; X86-AVX512VL-NEXT: retl ## encoding: [0xc3]
2015 ;
2016 ; X64-AVX-LABEL: test_x86_avx2_psrav_d_256:
2017 ; X64-AVX: ## %bb.0:
2018 ; X64-AVX-NEXT: vpsravd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0xc1]
2019 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
2020 ;
2021 ; X64-AVX512VL-LABEL: test_x86_avx2_psrav_d_256:
2022 ; X64-AVX512VL: ## %bb.0:
2023 ; X64-AVX512VL-NEXT: vpsravd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0xc1]
2024 ; X64-AVX512VL-NEXT: retq ## encoding: [0xc3]
1387 ; AVX2-LABEL: test_x86_avx2_psrav_d_256:
1388 ; AVX2: ## %bb.0:
1389 ; AVX2-NEXT: vpsravd %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x46,0xc1]
1390 ; AVX2-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1391 ;
1392 ; AVX512VL-LABEL: test_x86_avx2_psrav_d_256:
1393 ; AVX512VL: ## %bb.0:
1394 ; AVX512VL-NEXT: vpsravd %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x46,0xc1]
1395 ; AVX512VL-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
20251396 %res = call <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1]
20261397 ret <8 x i32> %res
20271398 }