llvm.org GIT mirror llvm / 1635c63
[X86][AVX512] Added more non-VLX test cases Cleaned up check prefixes so that they actually share a bit more git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327246 91177308-0d34-0410-b5e6-96231b3b80d8 Simon Pilgrim 2 years ago
2 changed file(s) with 207 addition(s) and 274 deletion(s). Raw diff Collapse all Expand all
33 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,XOP
44 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,AVX1
55 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,AVX2
6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVX512,AVXNOVLBW,AVX512F
7 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX,AVX512,AVXNOVLBW,AVX512VL
8 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX,AVX512,AVX512VLBW
9 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=AVX,AVX512,AVX512VLBW,VBMI
6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,AVX512,AVX512F
7 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,AVX512,AVX512BW
8 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,AVX512,VBMI
9 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX,AVX512VL,AVX512VLBW
10 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=AVX,AVX512VL,VLVBMI
1011
1112 define <2 x i64> @var_shuffle_v2i64(<2 x i64> %v, <2 x i64> %indices) nounwind {
1213 ; SSSE3-LABEL: var_shuffle_v2i64:
103104 ; AVXNOVLBW-NEXT: vpshufb %xmm1, %xmm0, %xmm0
104105 ; AVXNOVLBW-NEXT: retq
105106 ;
106 ; AVX512VLBW-LABEL: var_shuffle_v8i16:
107 ; AVX512VLBW: # %bb.0:
108 ; AVX512VLBW-NEXT: vpermw %xmm0, %xmm1, %xmm0
109 ; AVX512VLBW-NEXT: retq
107 ; AVX512VL-LABEL: var_shuffle_v8i16:
108 ; AVX512VL: # %bb.0:
109 ; AVX512VL-NEXT: vpermw %xmm0, %xmm1, %xmm0
110 ; AVX512VL-NEXT: retq
110111 %index0 = extractelement <8 x i16> %indices, i32 0
111112 %index1 = extractelement <8 x i16> %indices, i32 1
112113 %index2 = extractelement <8 x i16> %indices, i32 2
596597 ; AVX2-NEXT: vzeroupper
597598 ; AVX2-NEXT: retq
598599 ;
599 ; AVX512F-LABEL: var_shuffle_v16i8_from_v32i8_v16i8:
600 ; AVX512F: # %bb.0:
601 ; AVX512F-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
602 ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
603 ; AVX512F-NEXT: vpshufb %ymm1, %ymm2, %ymm2
604 ; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm3
605 ; AVX512F-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
606 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0
607 ; AVX512F-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
608 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
609 ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
610 ; AVX512F-NEXT: vzeroupper
611 ; AVX512F-NEXT: retq
612 ;
613 ; AVX512VL-LABEL: var_shuffle_v16i8_from_v32i8_v16i8:
614 ; AVX512VL: # %bb.0:
615 ; AVX512VL-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
616 ; AVX512VL-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
617 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm2, %ymm2
618 ; AVX512VL-NEXT: vextracti128 $1, %ymm0, %xmm3
619 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
620 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0
621 ; AVX512VL-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
622 ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
623 ; AVX512VL-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
624 ; AVX512VL-NEXT: vzeroupper
625 ; AVX512VL-NEXT: retq
626 ;
627 ; VBMI-LABEL: var_shuffle_v16i8_from_v32i8_v16i8:
628 ; VBMI: # %bb.0:
629 ; VBMI-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
630 ; VBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
631 ; VBMI-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
632 ; VBMI-NEXT: vzeroupper
633 ; VBMI-NEXT: retq
600 ; AVX512-LABEL: var_shuffle_v16i8_from_v32i8_v16i8:
601 ; AVX512: # %bb.0:
602 ; AVX512-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
603 ; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
604 ; AVX512-NEXT: vpshufb %ymm1, %ymm2, %ymm2
605 ; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm3
606 ; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
607 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm0
608 ; AVX512-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
609 ; AVX512-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
610 ; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
611 ; AVX512-NEXT: vzeroupper
612 ; AVX512-NEXT: retq
613 ;
614 ; AVX512VLBW-LABEL: var_shuffle_v16i8_from_v32i8_v16i8:
615 ; AVX512VLBW: # %bb.0:
616 ; AVX512VLBW-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
617 ; AVX512VLBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
618 ; AVX512VLBW-NEXT: vpshufb %ymm1, %ymm2, %ymm2
619 ; AVX512VLBW-NEXT: vextracti128 $1, %ymm0, %xmm3
620 ; AVX512VLBW-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
621 ; AVX512VLBW-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %k1
622 ; AVX512VLBW-NEXT: vpshufb %ymm1, %ymm0, %ymm2 {%k1}
623 ; AVX512VLBW-NEXT: vmovdqa %xmm2, %xmm0
624 ; AVX512VLBW-NEXT: vzeroupper
625 ; AVX512VLBW-NEXT: retq
626 ;
627 ; VLVBMI-LABEL: var_shuffle_v16i8_from_v32i8_v16i8:
628 ; VLVBMI: # %bb.0:
629 ; VLVBMI-NEXT: # kill: def $xmm1 killed $xmm1 def $ymm1
630 ; VLVBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
631 ; VLVBMI-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0
632 ; VLVBMI-NEXT: vzeroupper
633 ; VLVBMI-NEXT: retq
634634 %index0 = extractelement <16 x i8> %indices, i32 0
635635 %index1 = extractelement <16 x i8> %indices, i32 1
636636 %index2 = extractelement <16 x i8> %indices, i32 2
33 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX2
44 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512,AVX512F
55 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512,AVX512DQ
6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512,AVX512VL
7 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512,AVX512VL,AVX512DQVL
8 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX,INT256,AVX512,AVX512VLBW
9 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=AVX,INT256,AVX512,AVX512VLBW,VBMI
6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512,AVX512BW
7 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512,VBMI
8 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512VL
9 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=AVX,AVXNOVLBW,INT256,AVX512VL,AVX512VLDQ
10 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX,INT256,AVX512VL,AVX512VLBW
11 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=AVX,INT256,AVX512VL,VLVBMI
1012
1113 define <4 x i64> @var_shuffle_v4i64(<4 x i64> %v, <4 x i64> %indices) nounwind {
1214 ; XOP-LABEL: var_shuffle_v4i64:
5052 ; AVX2-NEXT: vblendvpd %ymm2, %ymm3, %ymm0, %ymm0
5153 ; AVX2-NEXT: retq
5254 ;
53 ; AVX512F-LABEL: var_shuffle_v4i64:
54 ; AVX512F: # %bb.0:
55 ; AVX512F-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
56 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
57 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
58 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
59 ; AVX512F-NEXT: retq
60 ;
61 ; AVX512DQ-LABEL: var_shuffle_v4i64:
62 ; AVX512DQ: # %bb.0:
63 ; AVX512DQ-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
64 ; AVX512DQ-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
65 ; AVX512DQ-NEXT: vpermpd %zmm0, %zmm1, %zmm0
66 ; AVX512DQ-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
67 ; AVX512DQ-NEXT: retq
55 ; AVX512-LABEL: var_shuffle_v4i64:
56 ; AVX512: # %bb.0:
57 ; AVX512-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
58 ; AVX512-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
59 ; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0
60 ; AVX512-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
61 ; AVX512-NEXT: retq
6862 ;
6963 ; AVX512VL-LABEL: var_shuffle_v4i64:
7064 ; AVX512VL: # %bb.0:
7165 ; AVX512VL-NEXT: vpermpd %ymm0, %ymm1, %ymm0
7266 ; AVX512VL-NEXT: retq
73 ;
74 ; AVX512VLBW-LABEL: var_shuffle_v4i64:
75 ; AVX512VLBW: # %bb.0:
76 ; AVX512VLBW-NEXT: vpermpd %ymm0, %ymm1, %ymm0
77 ; AVX512VLBW-NEXT: retq
7867 %index0 = extractelement <4 x i64> %indices, i32 0
7968 %index1 = extractelement <4 x i64> %indices, i32 1
8069 %index2 = extractelement <4 x i64> %indices, i32 2
193182 ; AVX2-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
194183 ; AVX2-NEXT: retq
195184 ;
196 ; AVX512F-LABEL: var_shuffle_v16i16:
197 ; AVX512F: # %bb.0:
198 ; AVX512F-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
199 ; AVX512F-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
200 ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
201 ; AVX512F-NEXT: vpshufb %ymm1, %ymm2, %ymm2
202 ; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm3
203 ; AVX512F-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
204 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0
205 ; AVX512F-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
206 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
207 ; AVX512F-NEXT: retq
208 ;
209 ; AVX512DQ-LABEL: var_shuffle_v16i16:
210 ; AVX512DQ: # %bb.0:
211 ; AVX512DQ-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
212 ; AVX512DQ-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
213 ; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
214 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm2, %ymm2
215 ; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm3
216 ; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
217 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
218 ; AVX512DQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
219 ; AVX512DQ-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
220 ; AVX512DQ-NEXT: retq
221 ;
222 ; AVX512VL-LABEL: var_shuffle_v16i16:
223 ; AVX512VL: # %bb.0:
224 ; AVX512VL-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
225 ; AVX512VL-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
226 ; AVX512VL-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
227 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm2, %ymm2
228 ; AVX512VL-NEXT: vextracti128 $1, %ymm0, %xmm3
229 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
230 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0
231 ; AVX512VL-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
232 ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
233 ; AVX512VL-NEXT: retq
185 ; AVX512-LABEL: var_shuffle_v16i16:
186 ; AVX512: # %bb.0:
187 ; AVX512-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
188 ; AVX512-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
189 ; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
190 ; AVX512-NEXT: vpshufb %ymm1, %ymm2, %ymm2
191 ; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm3
192 ; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
193 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm0
194 ; AVX512-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
195 ; AVX512-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
196 ; AVX512-NEXT: retq
197 ;
198 ; AVX512VLDQ-LABEL: var_shuffle_v16i16:
199 ; AVX512VLDQ: # %bb.0:
200 ; AVX512VLDQ-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
201 ; AVX512VLDQ-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
202 ; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
203 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm2, %ymm2
204 ; AVX512VLDQ-NEXT: vextracti128 $1, %ymm0, %xmm3
205 ; AVX512VLDQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
206 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
207 ; AVX512VLDQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
208 ; AVX512VLDQ-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
209 ; AVX512VLDQ-NEXT: retq
234210 ;
235211 ; AVX512VLBW-LABEL: var_shuffle_v16i16:
236212 ; AVX512VLBW: # %bb.0:
237213 ; AVX512VLBW-NEXT: vpermw %ymm0, %ymm1, %ymm0
238214 ; AVX512VLBW-NEXT: retq
215 ;
216 ; VLVBMI-LABEL: var_shuffle_v16i16:
217 ; VLVBMI: # %bb.0:
218 ; VLVBMI-NEXT: vpermw %ymm0, %ymm1, %ymm0
219 ; VLVBMI-NEXT: retq
239220 %index0 = extractelement <16 x i16> %indices, i32 0
240221 %index1 = extractelement <16 x i16> %indices, i32 1
241222 %index2 = extractelement <16 x i16> %indices, i32 2
324305 ; AVX2-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
325306 ; AVX2-NEXT: retq
326307 ;
327 ; AVX512F-LABEL: var_shuffle_v32i8:
328 ; AVX512F: # %bb.0:
329 ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
330 ; AVX512F-NEXT: vpshufb %ymm1, %ymm2, %ymm2
331 ; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm3
332 ; AVX512F-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
333 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0
334 ; AVX512F-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
335 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
336 ; AVX512F-NEXT: retq
337 ;
338 ; AVX512DQ-LABEL: var_shuffle_v32i8:
339 ; AVX512DQ: # %bb.0:
340 ; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
341 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm2, %ymm2
342 ; AVX512DQ-NEXT: vextracti128 $1, %ymm0, %xmm3
343 ; AVX512DQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
344 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
345 ; AVX512DQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
346 ; AVX512DQ-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
347 ; AVX512DQ-NEXT: retq
348 ;
349 ; AVX512VL-LABEL: var_shuffle_v32i8:
350 ; AVX512VL: # %bb.0:
351 ; AVX512VL-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
352 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm2, %ymm2
353 ; AVX512VL-NEXT: vextracti128 $1, %ymm0, %xmm3
354 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
355 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0
356 ; AVX512VL-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
357 ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
358 ; AVX512VL-NEXT: retq
359 ;
360 ; VBMI-LABEL: var_shuffle_v32i8:
361 ; VBMI: # %bb.0:
362 ; VBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
363 ; VBMI-NEXT: retq
308 ; AVX512-LABEL: var_shuffle_v32i8:
309 ; AVX512: # %bb.0:
310 ; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
311 ; AVX512-NEXT: vpshufb %ymm1, %ymm2, %ymm2
312 ; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm3
313 ; AVX512-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
314 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm0
315 ; AVX512-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
316 ; AVX512-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
317 ; AVX512-NEXT: retq
318 ;
319 ; AVX512VLDQ-LABEL: var_shuffle_v32i8:
320 ; AVX512VLDQ: # %bb.0:
321 ; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
322 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm2, %ymm2
323 ; AVX512VLDQ-NEXT: vextracti128 $1, %ymm0, %xmm3
324 ; AVX512VLDQ-NEXT: vpblendd {{.*#+}} ymm0 = ymm3[0,1,2,3],ymm0[4,5,6,7]
325 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
326 ; AVX512VLDQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
327 ; AVX512VLDQ-NEXT: vpblendvb %ymm1, %ymm0, %ymm2, %ymm0
328 ; AVX512VLDQ-NEXT: retq
329 ;
330 ; AVX512VLBW-LABEL: var_shuffle_v32i8:
331 ; AVX512VLBW: # %bb.0:
332 ; AVX512VLBW-NEXT: vextracti128 $1, %ymm0, %xmm2
333 ; AVX512VLBW-NEXT: vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm0[4,5,6,7]
334 ; AVX512VLBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
335 ; AVX512VLBW-NEXT: vpshufb %ymm1, %ymm0, %ymm0
336 ; AVX512VLBW-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %k1
337 ; AVX512VLBW-NEXT: vpshufb %ymm1, %ymm2, %ymm0 {%k1}
338 ; AVX512VLBW-NEXT: retq
339 ;
340 ; VLVBMI-LABEL: var_shuffle_v32i8:
341 ; VLVBMI: # %bb.0:
342 ; VLVBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
343 ; VLVBMI-NEXT: retq
364344 %index0 = extractelement <32 x i8> %indices, i32 0
365345 %index1 = extractelement <32 x i8> %indices, i32 1
366346 %index2 = extractelement <32 x i8> %indices, i32 2
502482 ; AVX2-NEXT: vblendvpd %ymm2, %ymm3, %ymm0, %ymm0
503483 ; AVX2-NEXT: retq
504484 ;
505 ; AVX512F-LABEL: var_shuffle_v4f64:
506 ; AVX512F: # %bb.0:
507 ; AVX512F-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
508 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
509 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
510 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
511 ; AVX512F-NEXT: retq
512 ;
513 ; AVX512DQ-LABEL: var_shuffle_v4f64:
514 ; AVX512DQ: # %bb.0:
515 ; AVX512DQ-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
516 ; AVX512DQ-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
517 ; AVX512DQ-NEXT: vpermpd %zmm0, %zmm1, %zmm0
518 ; AVX512DQ-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
519 ; AVX512DQ-NEXT: retq
485 ; AVX512-LABEL: var_shuffle_v4f64:
486 ; AVX512: # %bb.0:
487 ; AVX512-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
488 ; AVX512-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
489 ; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0
490 ; AVX512-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
491 ; AVX512-NEXT: retq
520492 ;
521493 ; AVX512VL-LABEL: var_shuffle_v4f64:
522494 ; AVX512VL: # %bb.0:
523495 ; AVX512VL-NEXT: vpermpd %ymm0, %ymm1, %ymm0
524496 ; AVX512VL-NEXT: retq
525 ;
526 ; AVX512VLBW-LABEL: var_shuffle_v4f64:
527 ; AVX512VLBW: # %bb.0:
528 ; AVX512VLBW-NEXT: vpermpd %ymm0, %ymm1, %ymm0
529 ; AVX512VLBW-NEXT: retq
530497 %index0 = extractelement <4 x i64> %indices, i32 0
531498 %index1 = extractelement <4 x i64> %indices, i32 1
532499 %index2 = extractelement <4 x i64> %indices, i32 2
645612 ; AVX2-NEXT: vblendvpd %ymm2, %ymm3, %ymm0, %ymm0
646613 ; AVX2-NEXT: retq
647614 ;
648 ; AVX512F-LABEL: var_shuffle_v4i64_from_v2i64:
649 ; AVX512F: # %bb.0:
650 ; AVX512F-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
651 ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
652 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
653 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
654 ; AVX512F-NEXT: retq
655 ;
656 ; AVX512DQ-LABEL: var_shuffle_v4i64_from_v2i64:
657 ; AVX512DQ: # %bb.0:
658 ; AVX512DQ-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
659 ; AVX512DQ-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
660 ; AVX512DQ-NEXT: vpermpd %zmm0, %zmm1, %zmm0
661 ; AVX512DQ-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
662 ; AVX512DQ-NEXT: retq
615 ; AVX512-LABEL: var_shuffle_v4i64_from_v2i64:
616 ; AVX512: # %bb.0:
617 ; AVX512-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
618 ; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
619 ; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0
620 ; AVX512-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
621 ; AVX512-NEXT: retq
663622 ;
664623 ; AVX512VL-LABEL: var_shuffle_v4i64_from_v2i64:
665624 ; AVX512VL: # %bb.0:
666625 ; AVX512VL-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
667626 ; AVX512VL-NEXT: vpermpd %ymm0, %ymm1, %ymm0
668627 ; AVX512VL-NEXT: retq
669 ;
670 ; AVX512VLBW-LABEL: var_shuffle_v4i64_from_v2i64:
671 ; AVX512VLBW: # %bb.0:
672 ; AVX512VLBW-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
673 ; AVX512VLBW-NEXT: vpermpd %ymm0, %ymm1, %ymm0
674 ; AVX512VLBW-NEXT: retq
675628 %index0 = extractelement <4 x i64> %indices, i32 0
676629 %index1 = extractelement <4 x i64> %indices, i32 1
677630 %index2 = extractelement <4 x i64> %indices, i32 2
791744 ; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
792745 ; AVX2-NEXT: retq
793746 ;
794 ; AVX512F-LABEL: var_shuffle_v16i16_from_v8i16:
795 ; AVX512F: # %bb.0:
796 ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
797 ; AVX512F-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
798 ; AVX512F-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
799 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm2
800 ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
801 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0
802 ; AVX512F-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
803 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
804 ; AVX512F-NEXT: retq
805 ;
806 ; AVX512DQ-LABEL: var_shuffle_v16i16_from_v8i16:
807 ; AVX512DQ: # %bb.0:
808 ; AVX512DQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
809 ; AVX512DQ-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
810 ; AVX512DQ-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
811 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm2
812 ; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
813 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
814 ; AVX512DQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
815 ; AVX512DQ-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
816 ; AVX512DQ-NEXT: retq
817 ;
818 ; AVX512VL-LABEL: var_shuffle_v16i16_from_v8i16:
819 ; AVX512VL: # %bb.0:
820 ; AVX512VL-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
821 ; AVX512VL-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
822 ; AVX512VL-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
823 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm2
824 ; AVX512VL-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
825 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0
826 ; AVX512VL-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
827 ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
828 ; AVX512VL-NEXT: retq
747 ; AVX512-LABEL: var_shuffle_v16i16_from_v8i16:
748 ; AVX512: # %bb.0:
749 ; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
750 ; AVX512-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
751 ; AVX512-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
752 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm2
753 ; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
754 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm0
755 ; AVX512-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
756 ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
757 ; AVX512-NEXT: retq
758 ;
759 ; AVX512VLDQ-LABEL: var_shuffle_v16i16_from_v8i16:
760 ; AVX512VLDQ: # %bb.0:
761 ; AVX512VLDQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
762 ; AVX512VLDQ-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
763 ; AVX512VLDQ-NEXT: vpaddw {{.*}}(%rip), %ymm1, %ymm1
764 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm2
765 ; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
766 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
767 ; AVX512VLDQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
768 ; AVX512VLDQ-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
769 ; AVX512VLDQ-NEXT: retq
829770 ;
830771 ; AVX512VLBW-LABEL: var_shuffle_v16i16_from_v8i16:
831772 ; AVX512VLBW: # %bb.0:
832773 ; AVX512VLBW-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
833774 ; AVX512VLBW-NEXT: vpermw %ymm0, %ymm1, %ymm0
834775 ; AVX512VLBW-NEXT: retq
776 ;
777 ; VLVBMI-LABEL: var_shuffle_v16i16_from_v8i16:
778 ; VLVBMI: # %bb.0:
779 ; VLVBMI-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
780 ; VLVBMI-NEXT: vpermw %ymm0, %ymm1, %ymm0
781 ; VLVBMI-NEXT: retq
835782 %index0 = extractelement <16 x i16> %indices, i32 0
836783 %index1 = extractelement <16 x i16> %indices, i32 1
837784 %index2 = extractelement <16 x i16> %indices, i32 2
917864 ; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
918865 ; AVX2-NEXT: retq
919866 ;
920 ; AVX512F-LABEL: var_shuffle_v32i8_from_v16i8:
921 ; AVX512F: # %bb.0:
922 ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
923 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm2
924 ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
925 ; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0
926 ; AVX512F-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
927 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
928 ; AVX512F-NEXT: retq
929 ;
930 ; AVX512DQ-LABEL: var_shuffle_v32i8_from_v16i8:
931 ; AVX512DQ: # %bb.0:
932 ; AVX512DQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
933 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm2
934 ; AVX512DQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
935 ; AVX512DQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
936 ; AVX512DQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
937 ; AVX512DQ-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
938 ; AVX512DQ-NEXT: retq
939 ;
940 ; AVX512VL-LABEL: var_shuffle_v32i8_from_v16i8:
941 ; AVX512VL: # %bb.0:
942 ; AVX512VL-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
943 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm2
944 ; AVX512VL-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
945 ; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0
946 ; AVX512VL-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
947 ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
948 ; AVX512VL-NEXT: retq
949 ;
950 ; VBMI-LABEL: var_shuffle_v32i8_from_v16i8:
951 ; VBMI: # %bb.0:
952 ; VBMI-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
953 ; VBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
954 ; VBMI-NEXT: retq
867 ; AVX512-LABEL: var_shuffle_v32i8_from_v16i8:
868 ; AVX512: # %bb.0:
869 ; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
870 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm2
871 ; AVX512-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
872 ; AVX512-NEXT: vpshufb %ymm1, %ymm0, %ymm0
873 ; AVX512-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
874 ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
875 ; AVX512-NEXT: retq
876 ;
877 ; AVX512VLDQ-LABEL: var_shuffle_v32i8_from_v16i8:
878 ; AVX512VLDQ: # %bb.0:
879 ; AVX512VLDQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
880 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm2
881 ; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
882 ; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0
883 ; AVX512VLDQ-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %ymm1
884 ; AVX512VLDQ-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
885 ; AVX512VLDQ-NEXT: retq
886 ;
887 ; AVX512VLBW-LABEL: var_shuffle_v32i8_from_v16i8:
888 ; AVX512VLBW: # %bb.0:
889 ; AVX512VLBW-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
890 ; AVX512VLBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
891 ; AVX512VLBW-NEXT: vpshufb %ymm1, %ymm2, %ymm2
892 ; AVX512VLBW-NEXT: vpcmpgtb {{.*}}(%rip), %ymm1, %k1
893 ; AVX512VLBW-NEXT: vpshufb %ymm1, %ymm0, %ymm2 {%k1}
894 ; AVX512VLBW-NEXT: vmovdqa %ymm2, %ymm0
895 ; AVX512VLBW-NEXT: retq
896 ;
897 ; VLVBMI-LABEL: var_shuffle_v32i8_from_v16i8:
898 ; VLVBMI: # %bb.0:
899 ; VLVBMI-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
900 ; VLVBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
901 ; VLVBMI-NEXT: retq
955902 %index0 = extractelement <32 x i8> %indices, i32 0
956903 %index1 = extractelement <32 x i8> %indices, i32 1
957904 %index2 = extractelement <32 x i8> %indices, i32 2
10961043 ; AVX2-NEXT: vblendvpd %ymm2, %ymm3, %ymm0, %ymm0
10971044 ; AVX2-NEXT: retq
10981045 ;
1099 ; AVX512F-LABEL: var_shuffle_v4f64_from_v2f64:
1100 ; AVX512F: # %bb.0:
1101 ; AVX512F-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
1102 ; AVX512F-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
1103 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1104 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
1105 ; AVX512F-NEXT: retq
1106 ;
1107 ; AVX512DQ-LABEL: var_shuffle_v4f64_from_v2f64:
1108 ; AVX512DQ: # %bb.0:
1109 ; AVX512DQ-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
1110 ; AVX512DQ-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
1111 ; AVX512DQ-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1112 ; AVX512DQ-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
1113 ; AVX512DQ-NEXT: retq
1046 ; AVX512-LABEL: var_shuffle_v4f64_from_v2f64:
1047 ; AVX512: # %bb.0:
1048 ; AVX512-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
1049 ; AVX512-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
1050 ; AVX512-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1051 ; AVX512-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
1052 ; AVX512-NEXT: retq
11141053 ;
11151054 ; AVX512VL-LABEL: var_shuffle_v4f64_from_v2f64:
11161055 ; AVX512VL: # %bb.0:
11171056 ; AVX512VL-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
11181057 ; AVX512VL-NEXT: vpermpd %ymm0, %ymm1, %ymm0
11191058 ; AVX512VL-NEXT: retq
1120 ;
1121 ; AVX512VLBW-LABEL: var_shuffle_v4f64_from_v2f64:
1122 ; AVX512VLBW: # %bb.0:
1123 ; AVX512VLBW-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
1124 ; AVX512VLBW-NEXT: vpermpd %ymm0, %ymm1, %ymm0
1125 ; AVX512VLBW-NEXT: retq
11261059 %index0 = extractelement <4 x i64> %indices, i32 0
11271060 %index1 = extractelement <4 x i64> %indices, i32 1
11281061 %index2 = extractelement <4 x i64> %indices, i32 2