Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / masked_expandload.ll
blob46b1fa5dd2757eaa102dac641808f5364def44c9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_mem_shuffle
2 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=sse2    | FileCheck %s --check-prefixes=SSE,SSE2
3 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=sse4.2  | FileCheck %s --check-prefixes=SSE,SSE42
4 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx     | FileCheck %s --check-prefixes=AVX1OR2,AVX1
5 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx2    | FileCheck %s --check-prefixes=AVX1OR2,AVX2
6 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F
7 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512dq,avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL,AVX512VLDQ
8 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=avx512f,avx512bw,avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL,AVX512VLBW
11 ; vXf64
14 define <2 x double> @expandload_v2f64_v2i64(ptr %base, <2 x double> %src0, <2 x i64> %trigger) {
15 ; SSE2-LABEL: expandload_v2f64_v2i64:
16 ; SSE2:       ## %bb.0:
17 ; SSE2-NEXT:    pxor %xmm2, %xmm2
18 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm2
19 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[1,0,3,2]
20 ; SSE2-NEXT:    pand %xmm2, %xmm1
21 ; SSE2-NEXT:    movmskpd %xmm1, %eax
22 ; SSE2-NEXT:    testb $1, %al
23 ; SSE2-NEXT:    jne LBB0_1
24 ; SSE2-NEXT:  ## %bb.2: ## %else
25 ; SSE2-NEXT:    testb $2, %al
26 ; SSE2-NEXT:    jne LBB0_3
27 ; SSE2-NEXT:  LBB0_4: ## %else2
28 ; SSE2-NEXT:    retq
29 ; SSE2-NEXT:  LBB0_1: ## %cond.load
30 ; SSE2-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
31 ; SSE2-NEXT:    addq $8, %rdi
32 ; SSE2-NEXT:    testb $2, %al
33 ; SSE2-NEXT:    je LBB0_4
34 ; SSE2-NEXT:  LBB0_3: ## %cond.load1
35 ; SSE2-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
36 ; SSE2-NEXT:    retq
38 ; SSE42-LABEL: expandload_v2f64_v2i64:
39 ; SSE42:       ## %bb.0:
40 ; SSE42-NEXT:    pxor %xmm2, %xmm2
41 ; SSE42-NEXT:    pcmpeqq %xmm1, %xmm2
42 ; SSE42-NEXT:    movmskpd %xmm2, %eax
43 ; SSE42-NEXT:    testb $1, %al
44 ; SSE42-NEXT:    jne LBB0_1
45 ; SSE42-NEXT:  ## %bb.2: ## %else
46 ; SSE42-NEXT:    testb $2, %al
47 ; SSE42-NEXT:    jne LBB0_3
48 ; SSE42-NEXT:  LBB0_4: ## %else2
49 ; SSE42-NEXT:    retq
50 ; SSE42-NEXT:  LBB0_1: ## %cond.load
51 ; SSE42-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
52 ; SSE42-NEXT:    addq $8, %rdi
53 ; SSE42-NEXT:    testb $2, %al
54 ; SSE42-NEXT:    je LBB0_4
55 ; SSE42-NEXT:  LBB0_3: ## %cond.load1
56 ; SSE42-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
57 ; SSE42-NEXT:    retq
59 ; AVX1OR2-LABEL: expandload_v2f64_v2i64:
60 ; AVX1OR2:       ## %bb.0:
61 ; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
62 ; AVX1OR2-NEXT:    vpcmpeqq %xmm2, %xmm1, %xmm1
63 ; AVX1OR2-NEXT:    vmovmskpd %xmm1, %eax
64 ; AVX1OR2-NEXT:    testb $1, %al
65 ; AVX1OR2-NEXT:    jne LBB0_1
66 ; AVX1OR2-NEXT:  ## %bb.2: ## %else
67 ; AVX1OR2-NEXT:    testb $2, %al
68 ; AVX1OR2-NEXT:    jne LBB0_3
69 ; AVX1OR2-NEXT:  LBB0_4: ## %else2
70 ; AVX1OR2-NEXT:    retq
71 ; AVX1OR2-NEXT:  LBB0_1: ## %cond.load
72 ; AVX1OR2-NEXT:    vmovlps (%rdi), %xmm0, %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
73 ; AVX1OR2-NEXT:    addq $8, %rdi
74 ; AVX1OR2-NEXT:    testb $2, %al
75 ; AVX1OR2-NEXT:    je LBB0_4
76 ; AVX1OR2-NEXT:  LBB0_3: ## %cond.load1
77 ; AVX1OR2-NEXT:    vmovhps (%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
78 ; AVX1OR2-NEXT:    retq
80 ; AVX512F-LABEL: expandload_v2f64_v2i64:
81 ; AVX512F:       ## %bb.0:
82 ; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm1
83 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0
84 ; AVX512F-NEXT:    vptestnmq %zmm1, %zmm1, %k0
85 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k0
86 ; AVX512F-NEXT:    kshiftrw $14, %k0, %k1
87 ; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}
88 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm0
89 ; AVX512F-NEXT:    vzeroupper
90 ; AVX512F-NEXT:    retq
92 ; AVX512VL-LABEL: expandload_v2f64_v2i64:
93 ; AVX512VL:       ## %bb.0:
94 ; AVX512VL-NEXT:    vptestnmq %xmm1, %xmm1, %k1
95 ; AVX512VL-NEXT:    vexpandpd (%rdi), %xmm0 {%k1}
96 ; AVX512VL-NEXT:    retq
97   %mask = icmp eq <2 x i64> %trigger, zeroinitializer
98   %res = call <2 x double> @llvm.masked.expandload.v2f64(ptr %base, <2 x i1> %mask, <2 x double> %src0)
99   ret <2 x double>%res
102 define <4 x double> @expandload_v4f64_v4i64(ptr %base, <4 x double> %src0, <4 x i64> %trigger) {
103 ; SSE2-LABEL: expandload_v4f64_v4i64:
104 ; SSE2:       ## %bb.0:
105 ; SSE2-NEXT:    pxor %xmm4, %xmm4
106 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm3
107 ; SSE2-NEXT:    pcmpeqd %xmm4, %xmm2
108 ; SSE2-NEXT:    movdqa %xmm2, %xmm4
109 ; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[1,3],xmm3[1,3]
110 ; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,2],xmm3[0,2]
111 ; SSE2-NEXT:    andps %xmm4, %xmm2
112 ; SSE2-NEXT:    movmskps %xmm2, %eax
113 ; SSE2-NEXT:    testb $1, %al
114 ; SSE2-NEXT:    jne LBB1_1
115 ; SSE2-NEXT:  ## %bb.2: ## %else
116 ; SSE2-NEXT:    testb $2, %al
117 ; SSE2-NEXT:    jne LBB1_3
118 ; SSE2-NEXT:  LBB1_4: ## %else2
119 ; SSE2-NEXT:    testb $4, %al
120 ; SSE2-NEXT:    jne LBB1_5
121 ; SSE2-NEXT:  LBB1_6: ## %else6
122 ; SSE2-NEXT:    testb $8, %al
123 ; SSE2-NEXT:    jne LBB1_7
124 ; SSE2-NEXT:  LBB1_8: ## %else10
125 ; SSE2-NEXT:    retq
126 ; SSE2-NEXT:  LBB1_1: ## %cond.load
127 ; SSE2-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
128 ; SSE2-NEXT:    addq $8, %rdi
129 ; SSE2-NEXT:    testb $2, %al
130 ; SSE2-NEXT:    je LBB1_4
131 ; SSE2-NEXT:  LBB1_3: ## %cond.load1
132 ; SSE2-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
133 ; SSE2-NEXT:    addq $8, %rdi
134 ; SSE2-NEXT:    testb $4, %al
135 ; SSE2-NEXT:    je LBB1_6
136 ; SSE2-NEXT:  LBB1_5: ## %cond.load5
137 ; SSE2-NEXT:    movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]
138 ; SSE2-NEXT:    addq $8, %rdi
139 ; SSE2-NEXT:    testb $8, %al
140 ; SSE2-NEXT:    je LBB1_8
141 ; SSE2-NEXT:  LBB1_7: ## %cond.load9
142 ; SSE2-NEXT:    movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]
143 ; SSE2-NEXT:    retq
145 ; SSE42-LABEL: expandload_v4f64_v4i64:
146 ; SSE42:       ## %bb.0:
147 ; SSE42-NEXT:    pxor %xmm4, %xmm4
148 ; SSE42-NEXT:    pcmpeqq %xmm4, %xmm3
149 ; SSE42-NEXT:    pcmpeqq %xmm4, %xmm2
150 ; SSE42-NEXT:    packssdw %xmm3, %xmm2
151 ; SSE42-NEXT:    movmskps %xmm2, %eax
152 ; SSE42-NEXT:    testb $1, %al
153 ; SSE42-NEXT:    jne LBB1_1
154 ; SSE42-NEXT:  ## %bb.2: ## %else
155 ; SSE42-NEXT:    testb $2, %al
156 ; SSE42-NEXT:    jne LBB1_3
157 ; SSE42-NEXT:  LBB1_4: ## %else2
158 ; SSE42-NEXT:    testb $4, %al
159 ; SSE42-NEXT:    jne LBB1_5
160 ; SSE42-NEXT:  LBB1_6: ## %else6
161 ; SSE42-NEXT:    testb $8, %al
162 ; SSE42-NEXT:    jne LBB1_7
163 ; SSE42-NEXT:  LBB1_8: ## %else10
164 ; SSE42-NEXT:    retq
165 ; SSE42-NEXT:  LBB1_1: ## %cond.load
166 ; SSE42-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
167 ; SSE42-NEXT:    addq $8, %rdi
168 ; SSE42-NEXT:    testb $2, %al
169 ; SSE42-NEXT:    je LBB1_4
170 ; SSE42-NEXT:  LBB1_3: ## %cond.load1
171 ; SSE42-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
172 ; SSE42-NEXT:    addq $8, %rdi
173 ; SSE42-NEXT:    testb $4, %al
174 ; SSE42-NEXT:    je LBB1_6
175 ; SSE42-NEXT:  LBB1_5: ## %cond.load5
176 ; SSE42-NEXT:    movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]
177 ; SSE42-NEXT:    addq $8, %rdi
178 ; SSE42-NEXT:    testb $8, %al
179 ; SSE42-NEXT:    je LBB1_8
180 ; SSE42-NEXT:  LBB1_7: ## %cond.load9
181 ; SSE42-NEXT:    movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]
182 ; SSE42-NEXT:    retq
184 ; AVX1-LABEL: expandload_v4f64_v4i64:
185 ; AVX1:       ## %bb.0:
186 ; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2
187 ; AVX1-NEXT:    vpxor %xmm3, %xmm3, %xmm3
188 ; AVX1-NEXT:    vpcmpeqq %xmm3, %xmm2, %xmm2
189 ; AVX1-NEXT:    vpcmpeqq %xmm3, %xmm1, %xmm1
190 ; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm1
191 ; AVX1-NEXT:    vmovmskpd %ymm1, %eax
192 ; AVX1-NEXT:    testb $1, %al
193 ; AVX1-NEXT:    jne LBB1_1
194 ; AVX1-NEXT:  ## %bb.2: ## %else
195 ; AVX1-NEXT:    testb $2, %al
196 ; AVX1-NEXT:    jne LBB1_3
197 ; AVX1-NEXT:  LBB1_4: ## %else2
198 ; AVX1-NEXT:    testb $4, %al
199 ; AVX1-NEXT:    jne LBB1_5
200 ; AVX1-NEXT:  LBB1_6: ## %else6
201 ; AVX1-NEXT:    testb $8, %al
202 ; AVX1-NEXT:    jne LBB1_7
203 ; AVX1-NEXT:  LBB1_8: ## %else10
204 ; AVX1-NEXT:    retq
205 ; AVX1-NEXT:  LBB1_1: ## %cond.load
206 ; AVX1-NEXT:    vmovsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
207 ; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3]
208 ; AVX1-NEXT:    addq $8, %rdi
209 ; AVX1-NEXT:    testb $2, %al
210 ; AVX1-NEXT:    je LBB1_4
211 ; AVX1-NEXT:  LBB1_3: ## %cond.load1
212 ; AVX1-NEXT:    vmovhpd (%rdi), %xmm0, %xmm1 ## xmm1 = xmm0[0],mem[0]
213 ; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]
214 ; AVX1-NEXT:    addq $8, %rdi
215 ; AVX1-NEXT:    testb $4, %al
216 ; AVX1-NEXT:    je LBB1_6
217 ; AVX1-NEXT:  LBB1_5: ## %cond.load5
218 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm1
219 ; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3]
220 ; AVX1-NEXT:    addq $8, %rdi
221 ; AVX1-NEXT:    testb $8, %al
222 ; AVX1-NEXT:    je LBB1_8
223 ; AVX1-NEXT:  LBB1_7: ## %cond.load9
224 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm1
225 ; AVX1-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3]
226 ; AVX1-NEXT:    retq
228 ; AVX2-LABEL: expandload_v4f64_v4i64:
229 ; AVX2:       ## %bb.0:
230 ; AVX2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
231 ; AVX2-NEXT:    vpcmpeqq %ymm2, %ymm1, %ymm1
232 ; AVX2-NEXT:    vmovmskpd %ymm1, %eax
233 ; AVX2-NEXT:    testb $1, %al
234 ; AVX2-NEXT:    jne LBB1_1
235 ; AVX2-NEXT:  ## %bb.2: ## %else
236 ; AVX2-NEXT:    testb $2, %al
237 ; AVX2-NEXT:    jne LBB1_3
238 ; AVX2-NEXT:  LBB1_4: ## %else2
239 ; AVX2-NEXT:    testb $4, %al
240 ; AVX2-NEXT:    jne LBB1_5
241 ; AVX2-NEXT:  LBB1_6: ## %else6
242 ; AVX2-NEXT:    testb $8, %al
243 ; AVX2-NEXT:    jne LBB1_7
244 ; AVX2-NEXT:  LBB1_8: ## %else10
245 ; AVX2-NEXT:    retq
246 ; AVX2-NEXT:  LBB1_1: ## %cond.load
247 ; AVX2-NEXT:    vmovsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
248 ; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3]
249 ; AVX2-NEXT:    addq $8, %rdi
250 ; AVX2-NEXT:    testb $2, %al
251 ; AVX2-NEXT:    je LBB1_4
252 ; AVX2-NEXT:  LBB1_3: ## %cond.load1
253 ; AVX2-NEXT:    vmovhpd (%rdi), %xmm0, %xmm1 ## xmm1 = xmm0[0],mem[0]
254 ; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3]
255 ; AVX2-NEXT:    addq $8, %rdi
256 ; AVX2-NEXT:    testb $4, %al
257 ; AVX2-NEXT:    je LBB1_6
258 ; AVX2-NEXT:  LBB1_5: ## %cond.load5
259 ; AVX2-NEXT:    vbroadcastsd (%rdi), %ymm1
260 ; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3]
261 ; AVX2-NEXT:    addq $8, %rdi
262 ; AVX2-NEXT:    testb $8, %al
263 ; AVX2-NEXT:    je LBB1_8
264 ; AVX2-NEXT:  LBB1_7: ## %cond.load9
265 ; AVX2-NEXT:    vbroadcastsd (%rdi), %ymm1
266 ; AVX2-NEXT:    vblendpd {{.*#+}} ymm0 = ymm0[0,1,2],ymm1[3]
267 ; AVX2-NEXT:    retq
269 ; AVX512F-LABEL: expandload_v4f64_v4i64:
270 ; AVX512F:       ## %bb.0:
271 ; AVX512F-NEXT:    ## kill: def $ymm1 killed $ymm1 def $zmm1
272 ; AVX512F-NEXT:    ## kill: def $ymm0 killed $ymm0 def $zmm0
273 ; AVX512F-NEXT:    vptestnmq %zmm1, %zmm1, %k0
274 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k0
275 ; AVX512F-NEXT:    kshiftrw $12, %k0, %k1
276 ; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}
277 ; AVX512F-NEXT:    ## kill: def $ymm0 killed $ymm0 killed $zmm0
278 ; AVX512F-NEXT:    retq
280 ; AVX512VL-LABEL: expandload_v4f64_v4i64:
281 ; AVX512VL:       ## %bb.0:
282 ; AVX512VL-NEXT:    vptestnmq %ymm1, %ymm1, %k1
283 ; AVX512VL-NEXT:    vexpandpd (%rdi), %ymm0 {%k1}
284 ; AVX512VL-NEXT:    retq
285   %mask = icmp eq <4 x i64> %trigger, zeroinitializer
286   %res = call <4 x double> @llvm.masked.expandload.v4f64(ptr %base, <4 x i1> %mask, <4 x double> %src0)
287   ret <4 x double>%res
290 define <8 x double> @expandload_v8f64_v8i1(ptr %base, <8 x double> %src0, <8 x i1> %mask) {
291 ; SSE-LABEL: expandload_v8f64_v8i1:
292 ; SSE:       ## %bb.0:
293 ; SSE-NEXT:    psllw $15, %xmm4
294 ; SSE-NEXT:    packsswb %xmm4, %xmm4
295 ; SSE-NEXT:    pmovmskb %xmm4, %eax
296 ; SSE-NEXT:    testb $1, %al
297 ; SSE-NEXT:    jne LBB2_1
298 ; SSE-NEXT:  ## %bb.2: ## %else
299 ; SSE-NEXT:    testb $2, %al
300 ; SSE-NEXT:    jne LBB2_3
301 ; SSE-NEXT:  LBB2_4: ## %else2
302 ; SSE-NEXT:    testb $4, %al
303 ; SSE-NEXT:    jne LBB2_5
304 ; SSE-NEXT:  LBB2_6: ## %else6
305 ; SSE-NEXT:    testb $8, %al
306 ; SSE-NEXT:    jne LBB2_7
307 ; SSE-NEXT:  LBB2_8: ## %else10
308 ; SSE-NEXT:    testb $16, %al
309 ; SSE-NEXT:    jne LBB2_9
310 ; SSE-NEXT:  LBB2_10: ## %else14
311 ; SSE-NEXT:    testb $32, %al
312 ; SSE-NEXT:    jne LBB2_11
313 ; SSE-NEXT:  LBB2_12: ## %else18
314 ; SSE-NEXT:    testb $64, %al
315 ; SSE-NEXT:    jne LBB2_13
316 ; SSE-NEXT:  LBB2_14: ## %else22
317 ; SSE-NEXT:    testb $-128, %al
318 ; SSE-NEXT:    jne LBB2_15
319 ; SSE-NEXT:  LBB2_16: ## %else26
320 ; SSE-NEXT:    retq
321 ; SSE-NEXT:  LBB2_1: ## %cond.load
322 ; SSE-NEXT:    movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
323 ; SSE-NEXT:    addq $8, %rdi
324 ; SSE-NEXT:    testb $2, %al
325 ; SSE-NEXT:    je LBB2_4
326 ; SSE-NEXT:  LBB2_3: ## %cond.load1
327 ; SSE-NEXT:    movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
328 ; SSE-NEXT:    addq $8, %rdi
329 ; SSE-NEXT:    testb $4, %al
330 ; SSE-NEXT:    je LBB2_6
331 ; SSE-NEXT:  LBB2_5: ## %cond.load5
332 ; SSE-NEXT:    movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]
333 ; SSE-NEXT:    addq $8, %rdi
334 ; SSE-NEXT:    testb $8, %al
335 ; SSE-NEXT:    je LBB2_8
336 ; SSE-NEXT:  LBB2_7: ## %cond.load9
337 ; SSE-NEXT:    movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]
338 ; SSE-NEXT:    addq $8, %rdi
339 ; SSE-NEXT:    testb $16, %al
340 ; SSE-NEXT:    je LBB2_10
341 ; SSE-NEXT:  LBB2_9: ## %cond.load13
342 ; SSE-NEXT:    movlps (%rdi), %xmm2 ## xmm2 = mem[0,1],xmm2[2,3]
343 ; SSE-NEXT:    addq $8, %rdi
344 ; SSE-NEXT:    testb $32, %al
345 ; SSE-NEXT:    je LBB2_12
346 ; SSE-NEXT:  LBB2_11: ## %cond.load17
347 ; SSE-NEXT:    movhps (%rdi), %xmm2 ## xmm2 = xmm2[0,1],mem[0,1]
348 ; SSE-NEXT:    addq $8, %rdi
349 ; SSE-NEXT:    testb $64, %al
350 ; SSE-NEXT:    je LBB2_14
351 ; SSE-NEXT:  LBB2_13: ## %cond.load21
352 ; SSE-NEXT:    movlps (%rdi), %xmm3 ## xmm3 = mem[0,1],xmm3[2,3]
353 ; SSE-NEXT:    addq $8, %rdi
354 ; SSE-NEXT:    testb $-128, %al
355 ; SSE-NEXT:    je LBB2_16
356 ; SSE-NEXT:  LBB2_15: ## %cond.load25
357 ; SSE-NEXT:    movhps (%rdi), %xmm3 ## xmm3 = xmm3[0,1],mem[0,1]
358 ; SSE-NEXT:    retq
360 ; AVX1-LABEL: expandload_v8f64_v8i1:
361 ; AVX1:       ## %bb.0:
362 ; AVX1-NEXT:    vpsllw $15, %xmm2, %xmm2
363 ; AVX1-NEXT:    vpacksswb %xmm2, %xmm2, %xmm2
364 ; AVX1-NEXT:    vpmovmskb %xmm2, %eax
365 ; AVX1-NEXT:    testb $1, %al
366 ; AVX1-NEXT:    jne LBB2_1
367 ; AVX1-NEXT:  ## %bb.2: ## %else
368 ; AVX1-NEXT:    testb $2, %al
369 ; AVX1-NEXT:    jne LBB2_3
370 ; AVX1-NEXT:  LBB2_4: ## %else2
371 ; AVX1-NEXT:    testb $4, %al
372 ; AVX1-NEXT:    jne LBB2_5
373 ; AVX1-NEXT:  LBB2_6: ## %else6
374 ; AVX1-NEXT:    testb $8, %al
375 ; AVX1-NEXT:    jne LBB2_7
376 ; AVX1-NEXT:  LBB2_8: ## %else10
377 ; AVX1-NEXT:    testb $16, %al
378 ; AVX1-NEXT:    jne LBB2_9
379 ; AVX1-NEXT:  LBB2_10: ## %else14
380 ; AVX1-NEXT:    testb $32, %al
381 ; AVX1-NEXT:    jne LBB2_11
382 ; AVX1-NEXT:  LBB2_12: ## %else18
383 ; AVX1-NEXT:    testb $64, %al
384 ; AVX1-NEXT:    jne LBB2_13
385 ; AVX1-NEXT:  LBB2_14: ## %else22
386 ; AVX1-NEXT:    testb $-128, %al
387 ; AVX1-NEXT:    jne LBB2_15
388 ; AVX1-NEXT:  LBB2_16: ## %else26
389 ; AVX1-NEXT:    retq
390 ; AVX1-NEXT:  LBB2_1: ## %cond.load
391 ; AVX1-NEXT:    vmovsd (%rdi), %xmm2 ## xmm2 = mem[0],zero
392 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3,4,5,6,7]
393 ; AVX1-NEXT:    addq $8, %rdi
394 ; AVX1-NEXT:    testb $2, %al
395 ; AVX1-NEXT:    je LBB2_4
396 ; AVX1-NEXT:  LBB2_3: ## %cond.load1
397 ; AVX1-NEXT:    vmovhps (%rdi), %xmm0, %xmm2 ## xmm2 = xmm0[0,1],mem[0,1]
398 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
399 ; AVX1-NEXT:    addq $8, %rdi
400 ; AVX1-NEXT:    testb $4, %al
401 ; AVX1-NEXT:    je LBB2_6
402 ; AVX1-NEXT:  LBB2_5: ## %cond.load5
403 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2
404 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5],ymm0[6,7]
405 ; AVX1-NEXT:    addq $8, %rdi
406 ; AVX1-NEXT:    testb $8, %al
407 ; AVX1-NEXT:    je LBB2_8
408 ; AVX1-NEXT:  LBB2_7: ## %cond.load9
409 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2
410 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]
411 ; AVX1-NEXT:    addq $8, %rdi
412 ; AVX1-NEXT:    testb $16, %al
413 ; AVX1-NEXT:    je LBB2_10
414 ; AVX1-NEXT:  LBB2_9: ## %cond.load13
415 ; AVX1-NEXT:    vmovsd (%rdi), %xmm2 ## xmm2 = mem[0],zero
416 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3,4,5,6,7]
417 ; AVX1-NEXT:    addq $8, %rdi
418 ; AVX1-NEXT:    testb $32, %al
419 ; AVX1-NEXT:    je LBB2_12
420 ; AVX1-NEXT:  LBB2_11: ## %cond.load17
421 ; AVX1-NEXT:    vmovhps (%rdi), %xmm1, %xmm2 ## xmm2 = xmm1[0,1],mem[0,1]
422 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
423 ; AVX1-NEXT:    addq $8, %rdi
424 ; AVX1-NEXT:    testb $64, %al
425 ; AVX1-NEXT:    je LBB2_14
426 ; AVX1-NEXT:  LBB2_13: ## %cond.load21
427 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2
428 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
429 ; AVX1-NEXT:    addq $8, %rdi
430 ; AVX1-NEXT:    testb $-128, %al
431 ; AVX1-NEXT:    je LBB2_16
432 ; AVX1-NEXT:  LBB2_15: ## %cond.load25
433 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm2
434 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]
435 ; AVX1-NEXT:    retq
437 ; AVX2-LABEL: expandload_v8f64_v8i1:
438 ; AVX2:       ## %bb.0:
439 ; AVX2-NEXT:    vpsllw $15, %xmm2, %xmm2
440 ; AVX2-NEXT:    vpacksswb %xmm2, %xmm2, %xmm2
441 ; AVX2-NEXT:    vpmovmskb %xmm2, %eax
442 ; AVX2-NEXT:    testb $1, %al
443 ; AVX2-NEXT:    jne LBB2_1
444 ; AVX2-NEXT:  ## %bb.2: ## %else
445 ; AVX2-NEXT:    testb $2, %al
446 ; AVX2-NEXT:    jne LBB2_3
447 ; AVX2-NEXT:  LBB2_4: ## %else2
448 ; AVX2-NEXT:    testb $4, %al
449 ; AVX2-NEXT:    jne LBB2_5
450 ; AVX2-NEXT:  LBB2_6: ## %else6
451 ; AVX2-NEXT:    testb $8, %al
452 ; AVX2-NEXT:    jne LBB2_7
453 ; AVX2-NEXT:  LBB2_8: ## %else10
454 ; AVX2-NEXT:    testb $16, %al
455 ; AVX2-NEXT:    jne LBB2_9
456 ; AVX2-NEXT:  LBB2_10: ## %else14
457 ; AVX2-NEXT:    testb $32, %al
458 ; AVX2-NEXT:    jne LBB2_11
459 ; AVX2-NEXT:  LBB2_12: ## %else18
460 ; AVX2-NEXT:    testb $64, %al
461 ; AVX2-NEXT:    jne LBB2_13
462 ; AVX2-NEXT:  LBB2_14: ## %else22
463 ; AVX2-NEXT:    testb $-128, %al
464 ; AVX2-NEXT:    jne LBB2_15
465 ; AVX2-NEXT:  LBB2_16: ## %else26
466 ; AVX2-NEXT:    retq
467 ; AVX2-NEXT:  LBB2_1: ## %cond.load
468 ; AVX2-NEXT:    vmovq (%rdi), %xmm2 ## xmm2 = mem[0],zero
469 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm2[0,1],ymm0[2,3,4,5,6,7]
470 ; AVX2-NEXT:    addq $8, %rdi
471 ; AVX2-NEXT:    testb $2, %al
472 ; AVX2-NEXT:    je LBB2_4
473 ; AVX2-NEXT:  LBB2_3: ## %cond.load1
474 ; AVX2-NEXT:    vmovhps (%rdi), %xmm0, %xmm2 ## xmm2 = xmm0[0,1],mem[0,1]
475 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7]
476 ; AVX2-NEXT:    addq $8, %rdi
477 ; AVX2-NEXT:    testb $4, %al
478 ; AVX2-NEXT:    je LBB2_6
479 ; AVX2-NEXT:  LBB2_5: ## %cond.load5
480 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2
481 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5],ymm0[6,7]
482 ; AVX2-NEXT:    addq $8, %rdi
483 ; AVX2-NEXT:    testb $8, %al
484 ; AVX2-NEXT:    je LBB2_8
485 ; AVX2-NEXT:  LBB2_7: ## %cond.load9
486 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2
487 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm2[6,7]
488 ; AVX2-NEXT:    addq $8, %rdi
489 ; AVX2-NEXT:    testb $16, %al
490 ; AVX2-NEXT:    je LBB2_10
491 ; AVX2-NEXT:  LBB2_9: ## %cond.load13
492 ; AVX2-NEXT:    vmovq (%rdi), %xmm2 ## xmm2 = mem[0],zero
493 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1],ymm1[2,3,4,5,6,7]
494 ; AVX2-NEXT:    addq $8, %rdi
495 ; AVX2-NEXT:    testb $32, %al
496 ; AVX2-NEXT:    je LBB2_12
497 ; AVX2-NEXT:  LBB2_11: ## %cond.load17
498 ; AVX2-NEXT:    vmovhps (%rdi), %xmm1, %xmm2 ## xmm2 = xmm1[0,1],mem[0,1]
499 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
500 ; AVX2-NEXT:    addq $8, %rdi
501 ; AVX2-NEXT:    testb $64, %al
502 ; AVX2-NEXT:    je LBB2_14
503 ; AVX2-NEXT:  LBB2_13: ## %cond.load21
504 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2
505 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5],ymm1[6,7]
506 ; AVX2-NEXT:    addq $8, %rdi
507 ; AVX2-NEXT:    testb $-128, %al
508 ; AVX2-NEXT:    je LBB2_16
509 ; AVX2-NEXT:  LBB2_15: ## %cond.load25
510 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm2
511 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm2[6,7]
512 ; AVX2-NEXT:    retq
514 ; AVX512F-LABEL: expandload_v8f64_v8i1:
515 ; AVX512F:       ## %bb.0:
516 ; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm1
517 ; AVX512F-NEXT:    vpsllq $63, %zmm1, %zmm1
518 ; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k1
519 ; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}
520 ; AVX512F-NEXT:    retq
522 ; AVX512VLDQ-LABEL: expandload_v8f64_v8i1:
523 ; AVX512VLDQ:       ## %bb.0:
524 ; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm1
525 ; AVX512VLDQ-NEXT:    vpslld $31, %ymm1, %ymm1
526 ; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k1
527 ; AVX512VLDQ-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}
528 ; AVX512VLDQ-NEXT:    retq
530 ; AVX512VLBW-LABEL: expandload_v8f64_v8i1:
531 ; AVX512VLBW:       ## %bb.0:
532 ; AVX512VLBW-NEXT:    vpsllw $15, %xmm1, %xmm1
533 ; AVX512VLBW-NEXT:    vpmovw2m %xmm1, %k1
534 ; AVX512VLBW-NEXT:    vexpandpd (%rdi), %zmm0 {%k1}
535 ; AVX512VLBW-NEXT:    retq
536   %res = call <8 x double> @llvm.masked.expandload.v8f64(ptr %base, <8 x i1> %mask, <8 x double> %src0)
537   ret <8 x double>%res
540 define <16 x double> @expandload_v16f64_v16i32(ptr %base, <16 x double> %src0, <16 x i32> %trigger) {
541 ; SSE-LABEL: expandload_v16f64_v16i32:
542 ; SSE:       ## %bb.0:
543 ; SSE-NEXT:    movq %rdi, %rax
544 ; SSE-NEXT:    pxor %xmm8, %xmm8
545 ; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
546 ; SSE-NEXT:    pcmpeqd %xmm8, %xmm9
547 ; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10
548 ; SSE-NEXT:    pcmpeqd %xmm8, %xmm10
549 ; SSE-NEXT:    packssdw %xmm9, %xmm10
550 ; SSE-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
551 ; SSE-NEXT:    pcmpeqd %xmm8, %xmm9
552 ; SSE-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm8
553 ; SSE-NEXT:    packssdw %xmm9, %xmm8
554 ; SSE-NEXT:    packsswb %xmm10, %xmm8
555 ; SSE-NEXT:    pmovmskb %xmm8, %ecx
556 ; SSE-NEXT:    testb $1, %cl
557 ; SSE-NEXT:    jne LBB3_1
558 ; SSE-NEXT:  ## %bb.2: ## %else
559 ; SSE-NEXT:    testb $2, %cl
560 ; SSE-NEXT:    jne LBB3_3
561 ; SSE-NEXT:  LBB3_4: ## %else2
562 ; SSE-NEXT:    testb $4, %cl
563 ; SSE-NEXT:    jne LBB3_5
564 ; SSE-NEXT:  LBB3_6: ## %else6
565 ; SSE-NEXT:    testb $8, %cl
566 ; SSE-NEXT:    jne LBB3_7
567 ; SSE-NEXT:  LBB3_8: ## %else10
568 ; SSE-NEXT:    testb $16, %cl
569 ; SSE-NEXT:    jne LBB3_9
570 ; SSE-NEXT:  LBB3_10: ## %else14
571 ; SSE-NEXT:    testb $32, %cl
572 ; SSE-NEXT:    jne LBB3_11
573 ; SSE-NEXT:  LBB3_12: ## %else18
574 ; SSE-NEXT:    testb $64, %cl
575 ; SSE-NEXT:    jne LBB3_13
576 ; SSE-NEXT:  LBB3_14: ## %else22
577 ; SSE-NEXT:    testb %cl, %cl
578 ; SSE-NEXT:    js LBB3_15
579 ; SSE-NEXT:  LBB3_16: ## %else26
580 ; SSE-NEXT:    testl $256, %ecx ## imm = 0x100
581 ; SSE-NEXT:    jne LBB3_17
582 ; SSE-NEXT:  LBB3_18: ## %else30
583 ; SSE-NEXT:    testl $512, %ecx ## imm = 0x200
584 ; SSE-NEXT:    jne LBB3_19
585 ; SSE-NEXT:  LBB3_20: ## %else34
586 ; SSE-NEXT:    testl $1024, %ecx ## imm = 0x400
587 ; SSE-NEXT:    jne LBB3_21
588 ; SSE-NEXT:  LBB3_22: ## %else38
589 ; SSE-NEXT:    testl $2048, %ecx ## imm = 0x800
590 ; SSE-NEXT:    jne LBB3_23
591 ; SSE-NEXT:  LBB3_24: ## %else42
592 ; SSE-NEXT:    testl $4096, %ecx ## imm = 0x1000
593 ; SSE-NEXT:    jne LBB3_25
594 ; SSE-NEXT:  LBB3_26: ## %else46
595 ; SSE-NEXT:    testl $8192, %ecx ## imm = 0x2000
596 ; SSE-NEXT:    jne LBB3_27
597 ; SSE-NEXT:  LBB3_28: ## %else50
598 ; SSE-NEXT:    testl $16384, %ecx ## imm = 0x4000
599 ; SSE-NEXT:    jne LBB3_29
600 ; SSE-NEXT:  LBB3_30: ## %else54
601 ; SSE-NEXT:    testl $32768, %ecx ## imm = 0x8000
602 ; SSE-NEXT:    je LBB3_32
603 ; SSE-NEXT:  LBB3_31: ## %cond.load57
604 ; SSE-NEXT:    movhps (%rsi), %xmm7 ## xmm7 = xmm7[0,1],mem[0,1]
605 ; SSE-NEXT:  LBB3_32: ## %else58
606 ; SSE-NEXT:    movaps %xmm0, (%rax)
607 ; SSE-NEXT:    movaps %xmm1, 16(%rax)
608 ; SSE-NEXT:    movaps %xmm2, 32(%rax)
609 ; SSE-NEXT:    movaps %xmm3, 48(%rax)
610 ; SSE-NEXT:    movaps %xmm4, 64(%rax)
611 ; SSE-NEXT:    movaps %xmm5, 80(%rax)
612 ; SSE-NEXT:    movaps %xmm6, 96(%rax)
613 ; SSE-NEXT:    movaps %xmm7, 112(%rax)
614 ; SSE-NEXT:    retq
615 ; SSE-NEXT:  LBB3_1: ## %cond.load
616 ; SSE-NEXT:    movlps (%rsi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
617 ; SSE-NEXT:    addq $8, %rsi
618 ; SSE-NEXT:    testb $2, %cl
619 ; SSE-NEXT:    je LBB3_4
620 ; SSE-NEXT:  LBB3_3: ## %cond.load1
621 ; SSE-NEXT:    movhps (%rsi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
622 ; SSE-NEXT:    addq $8, %rsi
623 ; SSE-NEXT:    testb $4, %cl
624 ; SSE-NEXT:    je LBB3_6
625 ; SSE-NEXT:  LBB3_5: ## %cond.load5
626 ; SSE-NEXT:    movlps (%rsi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]
627 ; SSE-NEXT:    addq $8, %rsi
628 ; SSE-NEXT:    testb $8, %cl
629 ; SSE-NEXT:    je LBB3_8
630 ; SSE-NEXT:  LBB3_7: ## %cond.load9
631 ; SSE-NEXT:    movhps (%rsi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]
632 ; SSE-NEXT:    addq $8, %rsi
633 ; SSE-NEXT:    testb $16, %cl
634 ; SSE-NEXT:    je LBB3_10
635 ; SSE-NEXT:  LBB3_9: ## %cond.load13
636 ; SSE-NEXT:    movlps (%rsi), %xmm2 ## xmm2 = mem[0,1],xmm2[2,3]
637 ; SSE-NEXT:    addq $8, %rsi
638 ; SSE-NEXT:    testb $32, %cl
639 ; SSE-NEXT:    je LBB3_12
640 ; SSE-NEXT:  LBB3_11: ## %cond.load17
641 ; SSE-NEXT:    movhps (%rsi), %xmm2 ## xmm2 = xmm2[0,1],mem[0,1]
642 ; SSE-NEXT:    addq $8, %rsi
643 ; SSE-NEXT:    testb $64, %cl
644 ; SSE-NEXT:    je LBB3_14
645 ; SSE-NEXT:  LBB3_13: ## %cond.load21
646 ; SSE-NEXT:    movlps (%rsi), %xmm3 ## xmm3 = mem[0,1],xmm3[2,3]
647 ; SSE-NEXT:    addq $8, %rsi
648 ; SSE-NEXT:    testb %cl, %cl
649 ; SSE-NEXT:    jns LBB3_16
650 ; SSE-NEXT:  LBB3_15: ## %cond.load25
651 ; SSE-NEXT:    movhps (%rsi), %xmm3 ## xmm3 = xmm3[0,1],mem[0,1]
652 ; SSE-NEXT:    addq $8, %rsi
653 ; SSE-NEXT:    testl $256, %ecx ## imm = 0x100
654 ; SSE-NEXT:    je LBB3_18
655 ; SSE-NEXT:  LBB3_17: ## %cond.load29
656 ; SSE-NEXT:    movlps (%rsi), %xmm4 ## xmm4 = mem[0,1],xmm4[2,3]
657 ; SSE-NEXT:    addq $8, %rsi
658 ; SSE-NEXT:    testl $512, %ecx ## imm = 0x200
659 ; SSE-NEXT:    je LBB3_20
660 ; SSE-NEXT:  LBB3_19: ## %cond.load33
661 ; SSE-NEXT:    movhps (%rsi), %xmm4 ## xmm4 = xmm4[0,1],mem[0,1]
662 ; SSE-NEXT:    addq $8, %rsi
663 ; SSE-NEXT:    testl $1024, %ecx ## imm = 0x400
664 ; SSE-NEXT:    je LBB3_22
665 ; SSE-NEXT:  LBB3_21: ## %cond.load37
666 ; SSE-NEXT:    movlps (%rsi), %xmm5 ## xmm5 = mem[0,1],xmm5[2,3]
667 ; SSE-NEXT:    addq $8, %rsi
668 ; SSE-NEXT:    testl $2048, %ecx ## imm = 0x800
669 ; SSE-NEXT:    je LBB3_24
670 ; SSE-NEXT:  LBB3_23: ## %cond.load41
671 ; SSE-NEXT:    movhps (%rsi), %xmm5 ## xmm5 = xmm5[0,1],mem[0,1]
672 ; SSE-NEXT:    addq $8, %rsi
673 ; SSE-NEXT:    testl $4096, %ecx ## imm = 0x1000
674 ; SSE-NEXT:    je LBB3_26
675 ; SSE-NEXT:  LBB3_25: ## %cond.load45
676 ; SSE-NEXT:    movlps (%rsi), %xmm6 ## xmm6 = mem[0,1],xmm6[2,3]
677 ; SSE-NEXT:    addq $8, %rsi
678 ; SSE-NEXT:    testl $8192, %ecx ## imm = 0x2000
679 ; SSE-NEXT:    je LBB3_28
680 ; SSE-NEXT:  LBB3_27: ## %cond.load49
681 ; SSE-NEXT:    movhps (%rsi), %xmm6 ## xmm6 = xmm6[0,1],mem[0,1]
682 ; SSE-NEXT:    addq $8, %rsi
683 ; SSE-NEXT:    testl $16384, %ecx ## imm = 0x4000
684 ; SSE-NEXT:    je LBB3_30
685 ; SSE-NEXT:  LBB3_29: ## %cond.load53
686 ; SSE-NEXT:    movlps (%rsi), %xmm7 ## xmm7 = mem[0,1],xmm7[2,3]
687 ; SSE-NEXT:    addq $8, %rsi
688 ; SSE-NEXT:    testl $32768, %ecx ## imm = 0x8000
689 ; SSE-NEXT:    jne LBB3_31
690 ; SSE-NEXT:    jmp LBB3_32
692 ; AVX1-LABEL: expandload_v16f64_v16i32:
693 ; AVX1:       ## %bb.0:
694 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm6
695 ; AVX1-NEXT:    vpxor %xmm7, %xmm7, %xmm7
696 ; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm6, %xmm6
697 ; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm5, %xmm5
698 ; AVX1-NEXT:    vpackssdw %xmm6, %xmm5, %xmm5
699 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm6
700 ; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm6, %xmm6
701 ; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm4, %xmm4
702 ; AVX1-NEXT:    vpackssdw %xmm6, %xmm4, %xmm4
703 ; AVX1-NEXT:    vpacksswb %xmm5, %xmm4, %xmm4
704 ; AVX1-NEXT:    vpmovmskb %xmm4, %eax
705 ; AVX1-NEXT:    testb $1, %al
706 ; AVX1-NEXT:    jne LBB3_1
707 ; AVX1-NEXT:  ## %bb.2: ## %else
708 ; AVX1-NEXT:    testb $2, %al
709 ; AVX1-NEXT:    jne LBB3_3
710 ; AVX1-NEXT:  LBB3_4: ## %else2
711 ; AVX1-NEXT:    testb $4, %al
712 ; AVX1-NEXT:    jne LBB3_5
713 ; AVX1-NEXT:  LBB3_6: ## %else6
714 ; AVX1-NEXT:    testb $8, %al
715 ; AVX1-NEXT:    jne LBB3_7
716 ; AVX1-NEXT:  LBB3_8: ## %else10
717 ; AVX1-NEXT:    testb $16, %al
718 ; AVX1-NEXT:    jne LBB3_9
719 ; AVX1-NEXT:  LBB3_10: ## %else14
720 ; AVX1-NEXT:    testb $32, %al
721 ; AVX1-NEXT:    jne LBB3_11
722 ; AVX1-NEXT:  LBB3_12: ## %else18
723 ; AVX1-NEXT:    testb $64, %al
724 ; AVX1-NEXT:    jne LBB3_13
725 ; AVX1-NEXT:  LBB3_14: ## %else22
726 ; AVX1-NEXT:    testb %al, %al
727 ; AVX1-NEXT:    js LBB3_15
728 ; AVX1-NEXT:  LBB3_16: ## %else26
729 ; AVX1-NEXT:    testl $256, %eax ## imm = 0x100
730 ; AVX1-NEXT:    jne LBB3_17
731 ; AVX1-NEXT:  LBB3_18: ## %else30
732 ; AVX1-NEXT:    testl $512, %eax ## imm = 0x200
733 ; AVX1-NEXT:    jne LBB3_19
734 ; AVX1-NEXT:  LBB3_20: ## %else34
735 ; AVX1-NEXT:    testl $1024, %eax ## imm = 0x400
736 ; AVX1-NEXT:    jne LBB3_21
737 ; AVX1-NEXT:  LBB3_22: ## %else38
738 ; AVX1-NEXT:    testl $2048, %eax ## imm = 0x800
739 ; AVX1-NEXT:    jne LBB3_23
740 ; AVX1-NEXT:  LBB3_24: ## %else42
741 ; AVX1-NEXT:    testl $4096, %eax ## imm = 0x1000
742 ; AVX1-NEXT:    jne LBB3_25
743 ; AVX1-NEXT:  LBB3_26: ## %else46
744 ; AVX1-NEXT:    testl $8192, %eax ## imm = 0x2000
745 ; AVX1-NEXT:    jne LBB3_27
746 ; AVX1-NEXT:  LBB3_28: ## %else50
747 ; AVX1-NEXT:    testl $16384, %eax ## imm = 0x4000
748 ; AVX1-NEXT:    jne LBB3_29
749 ; AVX1-NEXT:  LBB3_30: ## %else54
750 ; AVX1-NEXT:    testl $32768, %eax ## imm = 0x8000
751 ; AVX1-NEXT:    jne LBB3_31
752 ; AVX1-NEXT:  LBB3_32: ## %else58
753 ; AVX1-NEXT:    retq
754 ; AVX1-NEXT:  LBB3_1: ## %cond.load
755 ; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero
756 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1],ymm0[2,3,4,5,6,7]
757 ; AVX1-NEXT:    addq $8, %rdi
758 ; AVX1-NEXT:    testb $2, %al
759 ; AVX1-NEXT:    je LBB3_4
760 ; AVX1-NEXT:  LBB3_3: ## %cond.load1
761 ; AVX1-NEXT:    vmovhps (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0,1]
762 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
763 ; AVX1-NEXT:    addq $8, %rdi
764 ; AVX1-NEXT:    testb $4, %al
765 ; AVX1-NEXT:    je LBB3_6
766 ; AVX1-NEXT:  LBB3_5: ## %cond.load5
767 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
768 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5],ymm0[6,7]
769 ; AVX1-NEXT:    addq $8, %rdi
770 ; AVX1-NEXT:    testb $8, %al
771 ; AVX1-NEXT:    je LBB3_8
772 ; AVX1-NEXT:  LBB3_7: ## %cond.load9
773 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
774 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6,7]
775 ; AVX1-NEXT:    addq $8, %rdi
776 ; AVX1-NEXT:    testb $16, %al
777 ; AVX1-NEXT:    je LBB3_10
778 ; AVX1-NEXT:  LBB3_9: ## %cond.load13
779 ; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero
780 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1],ymm1[2,3,4,5,6,7]
781 ; AVX1-NEXT:    addq $8, %rdi
782 ; AVX1-NEXT:    testb $32, %al
783 ; AVX1-NEXT:    je LBB3_12
784 ; AVX1-NEXT:  LBB3_11: ## %cond.load17
785 ; AVX1-NEXT:    vmovhps (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0,1]
786 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
787 ; AVX1-NEXT:    addq $8, %rdi
788 ; AVX1-NEXT:    testb $64, %al
789 ; AVX1-NEXT:    je LBB3_14
790 ; AVX1-NEXT:  LBB3_13: ## %cond.load21
791 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
792 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4,5],ymm1[6,7]
793 ; AVX1-NEXT:    addq $8, %rdi
794 ; AVX1-NEXT:    testb %al, %al
795 ; AVX1-NEXT:    jns LBB3_16
796 ; AVX1-NEXT:  LBB3_15: ## %cond.load25
797 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
798 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6,7]
799 ; AVX1-NEXT:    addq $8, %rdi
800 ; AVX1-NEXT:    testl $256, %eax ## imm = 0x100
801 ; AVX1-NEXT:    je LBB3_18
802 ; AVX1-NEXT:  LBB3_17: ## %cond.load29
803 ; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero
804 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3,4,5,6,7]
805 ; AVX1-NEXT:    addq $8, %rdi
806 ; AVX1-NEXT:    testl $512, %eax ## imm = 0x200
807 ; AVX1-NEXT:    je LBB3_20
808 ; AVX1-NEXT:  LBB3_19: ## %cond.load33
809 ; AVX1-NEXT:    vmovhps (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0,1]
810 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
811 ; AVX1-NEXT:    addq $8, %rdi
812 ; AVX1-NEXT:    testl $1024, %eax ## imm = 0x400
813 ; AVX1-NEXT:    je LBB3_22
814 ; AVX1-NEXT:  LBB3_21: ## %cond.load37
815 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
816 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5],ymm2[6,7]
817 ; AVX1-NEXT:    addq $8, %rdi
818 ; AVX1-NEXT:    testl $2048, %eax ## imm = 0x800
819 ; AVX1-NEXT:    je LBB3_24
820 ; AVX1-NEXT:  LBB3_23: ## %cond.load41
821 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
822 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]
823 ; AVX1-NEXT:    addq $8, %rdi
824 ; AVX1-NEXT:    testl $4096, %eax ## imm = 0x1000
825 ; AVX1-NEXT:    je LBB3_26
826 ; AVX1-NEXT:  LBB3_25: ## %cond.load45
827 ; AVX1-NEXT:    vmovsd (%rdi), %xmm4 ## xmm4 = mem[0],zero
828 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1],ymm3[2,3,4,5,6,7]
829 ; AVX1-NEXT:    addq $8, %rdi
830 ; AVX1-NEXT:    testl $8192, %eax ## imm = 0x2000
831 ; AVX1-NEXT:    je LBB3_28
832 ; AVX1-NEXT:  LBB3_27: ## %cond.load49
833 ; AVX1-NEXT:    vmovhps (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0,1]
834 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
835 ; AVX1-NEXT:    addq $8, %rdi
836 ; AVX1-NEXT:    testl $16384, %eax ## imm = 0x4000
837 ; AVX1-NEXT:    je LBB3_30
838 ; AVX1-NEXT:  LBB3_29: ## %cond.load53
839 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
840 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5],ymm3[6,7]
841 ; AVX1-NEXT:    addq $8, %rdi
842 ; AVX1-NEXT:    testl $32768, %eax ## imm = 0x8000
843 ; AVX1-NEXT:    je LBB3_32
844 ; AVX1-NEXT:  LBB3_31: ## %cond.load57
845 ; AVX1-NEXT:    vbroadcastsd (%rdi), %ymm4
846 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]
847 ; AVX1-NEXT:    retq
849 ; AVX2-LABEL: expandload_v16f64_v16i32:
850 ; AVX2:       ## %bb.0:
851 ; AVX2-NEXT:    vpxor %xmm6, %xmm6, %xmm6
852 ; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm5, %ymm5
853 ; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm4, %ymm4
854 ; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm4
855 ; AVX2-NEXT:    vextracti128 $1, %ymm4, %xmm5
856 ; AVX2-NEXT:    vpacksswb %xmm5, %xmm4, %xmm4
857 ; AVX2-NEXT:    vpshufd {{.*#+}} xmm4 = xmm4[0,2,1,3]
858 ; AVX2-NEXT:    vpmovmskb %xmm4, %eax
859 ; AVX2-NEXT:    testb $1, %al
860 ; AVX2-NEXT:    jne LBB3_1
861 ; AVX2-NEXT:  ## %bb.2: ## %else
862 ; AVX2-NEXT:    testb $2, %al
863 ; AVX2-NEXT:    jne LBB3_3
864 ; AVX2-NEXT:  LBB3_4: ## %else2
865 ; AVX2-NEXT:    testb $4, %al
866 ; AVX2-NEXT:    jne LBB3_5
867 ; AVX2-NEXT:  LBB3_6: ## %else6
868 ; AVX2-NEXT:    testb $8, %al
869 ; AVX2-NEXT:    jne LBB3_7
870 ; AVX2-NEXT:  LBB3_8: ## %else10
871 ; AVX2-NEXT:    testb $16, %al
872 ; AVX2-NEXT:    jne LBB3_9
873 ; AVX2-NEXT:  LBB3_10: ## %else14
874 ; AVX2-NEXT:    testb $32, %al
875 ; AVX2-NEXT:    jne LBB3_11
876 ; AVX2-NEXT:  LBB3_12: ## %else18
877 ; AVX2-NEXT:    testb $64, %al
878 ; AVX2-NEXT:    jne LBB3_13
879 ; AVX2-NEXT:  LBB3_14: ## %else22
880 ; AVX2-NEXT:    testb %al, %al
881 ; AVX2-NEXT:    js LBB3_15
882 ; AVX2-NEXT:  LBB3_16: ## %else26
883 ; AVX2-NEXT:    testl $256, %eax ## imm = 0x100
884 ; AVX2-NEXT:    jne LBB3_17
885 ; AVX2-NEXT:  LBB3_18: ## %else30
886 ; AVX2-NEXT:    testl $512, %eax ## imm = 0x200
887 ; AVX2-NEXT:    jne LBB3_19
888 ; AVX2-NEXT:  LBB3_20: ## %else34
889 ; AVX2-NEXT:    testl $1024, %eax ## imm = 0x400
890 ; AVX2-NEXT:    jne LBB3_21
891 ; AVX2-NEXT:  LBB3_22: ## %else38
892 ; AVX2-NEXT:    testl $2048, %eax ## imm = 0x800
893 ; AVX2-NEXT:    jne LBB3_23
894 ; AVX2-NEXT:  LBB3_24: ## %else42
895 ; AVX2-NEXT:    testl $4096, %eax ## imm = 0x1000
896 ; AVX2-NEXT:    jne LBB3_25
897 ; AVX2-NEXT:  LBB3_26: ## %else46
898 ; AVX2-NEXT:    testl $8192, %eax ## imm = 0x2000
899 ; AVX2-NEXT:    jne LBB3_27
900 ; AVX2-NEXT:  LBB3_28: ## %else50
901 ; AVX2-NEXT:    testl $16384, %eax ## imm = 0x4000
902 ; AVX2-NEXT:    jne LBB3_29
903 ; AVX2-NEXT:  LBB3_30: ## %else54
904 ; AVX2-NEXT:    testl $32768, %eax ## imm = 0x8000
905 ; AVX2-NEXT:    jne LBB3_31
906 ; AVX2-NEXT:  LBB3_32: ## %else58
907 ; AVX2-NEXT:    retq
908 ; AVX2-NEXT:  LBB3_1: ## %cond.load
909 ; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero
910 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm4[0,1],ymm0[2,3,4,5,6,7]
911 ; AVX2-NEXT:    addq $8, %rdi
912 ; AVX2-NEXT:    testb $2, %al
913 ; AVX2-NEXT:    je LBB3_4
914 ; AVX2-NEXT:  LBB3_3: ## %cond.load1
915 ; AVX2-NEXT:    vmovhps (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0,1]
916 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
917 ; AVX2-NEXT:    addq $8, %rdi
918 ; AVX2-NEXT:    testb $4, %al
919 ; AVX2-NEXT:    je LBB3_6
920 ; AVX2-NEXT:  LBB3_5: ## %cond.load5
921 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
922 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4,5],ymm0[6,7]
923 ; AVX2-NEXT:    addq $8, %rdi
924 ; AVX2-NEXT:    testb $8, %al
925 ; AVX2-NEXT:    je LBB3_8
926 ; AVX2-NEXT:  LBB3_7: ## %cond.load9
927 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
928 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6,7]
929 ; AVX2-NEXT:    addq $8, %rdi
930 ; AVX2-NEXT:    testb $16, %al
931 ; AVX2-NEXT:    je LBB3_10
932 ; AVX2-NEXT:  LBB3_9: ## %cond.load13
933 ; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero
934 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm4[0,1],ymm1[2,3,4,5,6,7]
935 ; AVX2-NEXT:    addq $8, %rdi
936 ; AVX2-NEXT:    testb $32, %al
937 ; AVX2-NEXT:    je LBB3_12
938 ; AVX2-NEXT:  LBB3_11: ## %cond.load17
939 ; AVX2-NEXT:    vmovhps (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0,1]
940 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
941 ; AVX2-NEXT:    addq $8, %rdi
942 ; AVX2-NEXT:    testb $64, %al
943 ; AVX2-NEXT:    je LBB3_14
944 ; AVX2-NEXT:  LBB3_13: ## %cond.load21
945 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
946 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4,5],ymm1[6,7]
947 ; AVX2-NEXT:    addq $8, %rdi
948 ; AVX2-NEXT:    testb %al, %al
949 ; AVX2-NEXT:    jns LBB3_16
950 ; AVX2-NEXT:  LBB3_15: ## %cond.load25
951 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
952 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6,7]
953 ; AVX2-NEXT:    addq $8, %rdi
954 ; AVX2-NEXT:    testl $256, %eax ## imm = 0x100
955 ; AVX2-NEXT:    je LBB3_18
956 ; AVX2-NEXT:  LBB3_17: ## %cond.load29
957 ; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero
958 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm4[0,1],ymm2[2,3,4,5,6,7]
959 ; AVX2-NEXT:    addq $8, %rdi
960 ; AVX2-NEXT:    testl $512, %eax ## imm = 0x200
961 ; AVX2-NEXT:    je LBB3_20
962 ; AVX2-NEXT:  LBB3_19: ## %cond.load33
963 ; AVX2-NEXT:    vmovhps (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0,1]
964 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
965 ; AVX2-NEXT:    addq $8, %rdi
966 ; AVX2-NEXT:    testl $1024, %eax ## imm = 0x400
967 ; AVX2-NEXT:    je LBB3_22
968 ; AVX2-NEXT:  LBB3_21: ## %cond.load37
969 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
970 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4,5],ymm2[6,7]
971 ; AVX2-NEXT:    addq $8, %rdi
972 ; AVX2-NEXT:    testl $2048, %eax ## imm = 0x800
973 ; AVX2-NEXT:    je LBB3_24
974 ; AVX2-NEXT:  LBB3_23: ## %cond.load41
975 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
976 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6,7]
977 ; AVX2-NEXT:    addq $8, %rdi
978 ; AVX2-NEXT:    testl $4096, %eax ## imm = 0x1000
979 ; AVX2-NEXT:    je LBB3_26
980 ; AVX2-NEXT:  LBB3_25: ## %cond.load45
981 ; AVX2-NEXT:    vmovq (%rdi), %xmm4 ## xmm4 = mem[0],zero
982 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1],ymm3[2,3,4,5,6,7]
983 ; AVX2-NEXT:    addq $8, %rdi
984 ; AVX2-NEXT:    testl $8192, %eax ## imm = 0x2000
985 ; AVX2-NEXT:    je LBB3_28
986 ; AVX2-NEXT:  LBB3_27: ## %cond.load49
987 ; AVX2-NEXT:    vmovhps (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0,1]
988 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
989 ; AVX2-NEXT:    addq $8, %rdi
990 ; AVX2-NEXT:    testl $16384, %eax ## imm = 0x4000
991 ; AVX2-NEXT:    je LBB3_30
992 ; AVX2-NEXT:  LBB3_29: ## %cond.load53
993 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
994 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4,5],ymm3[6,7]
995 ; AVX2-NEXT:    addq $8, %rdi
996 ; AVX2-NEXT:    testl $32768, %eax ## imm = 0x8000
997 ; AVX2-NEXT:    je LBB3_32
998 ; AVX2-NEXT:  LBB3_31: ## %cond.load57
999 ; AVX2-NEXT:    vpbroadcastq (%rdi), %ymm4
1000 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6,7]
1001 ; AVX2-NEXT:    retq
1003 ; AVX512F-LABEL: expandload_v16f64_v16i32:
1004 ; AVX512F:       ## %bb.0:
1005 ; AVX512F-NEXT:    vextracti64x4 $1, %zmm2, %ymm3
1006 ; AVX512F-NEXT:    vptestnmd %zmm3, %zmm3, %k1
1007 ; AVX512F-NEXT:    vptestnmd %zmm2, %zmm2, %k2
1008 ; AVX512F-NEXT:    vexpandpd (%rdi), %zmm0 {%k2}
1009 ; AVX512F-NEXT:    kmovw %k2, %eax
1010 ; AVX512F-NEXT:    movzbl %al, %eax
1011 ; AVX512F-NEXT:    movl %eax, %ecx
1012 ; AVX512F-NEXT:    shrl %ecx
1013 ; AVX512F-NEXT:    andl $-43, %ecx
1014 ; AVX512F-NEXT:    subl %ecx, %eax
1015 ; AVX512F-NEXT:    movl %eax, %ecx
1016 ; AVX512F-NEXT:    andl $858993459, %ecx ## imm = 0x33333333
1017 ; AVX512F-NEXT:    shrl $2, %eax
1018 ; AVX512F-NEXT:    andl $858993459, %eax ## imm = 0x33333333
1019 ; AVX512F-NEXT:    addl %ecx, %eax
1020 ; AVX512F-NEXT:    movl %eax, %ecx
1021 ; AVX512F-NEXT:    shrl $4, %ecx
1022 ; AVX512F-NEXT:    addl %eax, %ecx
1023 ; AVX512F-NEXT:    andl $252645135, %ecx ## imm = 0xF0F0F0F
1024 ; AVX512F-NEXT:    imull $16843009, %ecx, %eax ## imm = 0x1010101
1025 ; AVX512F-NEXT:    shrl $24, %eax
1026 ; AVX512F-NEXT:    vexpandpd (%rdi,%rax,8), %zmm1 {%k1}
1027 ; AVX512F-NEXT:    retq
1029 ; AVX512VLDQ-LABEL: expandload_v16f64_v16i32:
1030 ; AVX512VLDQ:       ## %bb.0:
1031 ; AVX512VLDQ-NEXT:    vextracti64x4 $1, %zmm2, %ymm3
1032 ; AVX512VLDQ-NEXT:    vptestnmd %ymm3, %ymm3, %k1
1033 ; AVX512VLDQ-NEXT:    vptestnmd %ymm2, %ymm2, %k2
1034 ; AVX512VLDQ-NEXT:    kmovb %k2, %eax
1035 ; AVX512VLDQ-NEXT:    movl %eax, %ecx
1036 ; AVX512VLDQ-NEXT:    shrl %ecx
1037 ; AVX512VLDQ-NEXT:    andl $-43, %ecx
1038 ; AVX512VLDQ-NEXT:    subl %ecx, %eax
1039 ; AVX512VLDQ-NEXT:    movl %eax, %ecx
1040 ; AVX512VLDQ-NEXT:    andl $858993459, %ecx ## imm = 0x33333333
1041 ; AVX512VLDQ-NEXT:    shrl $2, %eax
1042 ; AVX512VLDQ-NEXT:    andl $858993459, %eax ## imm = 0x33333333
1043 ; AVX512VLDQ-NEXT:    addl %ecx, %eax
1044 ; AVX512VLDQ-NEXT:    movl %eax, %ecx
1045 ; AVX512VLDQ-NEXT:    shrl $4, %ecx
1046 ; AVX512VLDQ-NEXT:    addl %eax, %ecx
1047 ; AVX512VLDQ-NEXT:    andl $252645135, %ecx ## imm = 0xF0F0F0F
1048 ; AVX512VLDQ-NEXT:    imull $16843009, %ecx, %eax ## imm = 0x1010101
1049 ; AVX512VLDQ-NEXT:    shrl $24, %eax
1050 ; AVX512VLDQ-NEXT:    vexpandpd (%rdi,%rax,8), %zmm1 {%k1}
1051 ; AVX512VLDQ-NEXT:    vexpandpd (%rdi), %zmm0 {%k2}
1052 ; AVX512VLDQ-NEXT:    retq
1054 ; AVX512VLBW-LABEL: expandload_v16f64_v16i32:
1055 ; AVX512VLBW:       ## %bb.0:
1056 ; AVX512VLBW-NEXT:    vextracti64x4 $1, %zmm2, %ymm3
1057 ; AVX512VLBW-NEXT:    vptestnmd %ymm3, %ymm3, %k1
1058 ; AVX512VLBW-NEXT:    vptestnmd %ymm2, %ymm2, %k2
1059 ; AVX512VLBW-NEXT:    vexpandpd (%rdi), %zmm0 {%k2}
1060 ; AVX512VLBW-NEXT:    kmovd %k2, %eax
1061 ; AVX512VLBW-NEXT:    movzbl %al, %eax
1062 ; AVX512VLBW-NEXT:    movl %eax, %ecx
1063 ; AVX512VLBW-NEXT:    shrl %ecx
1064 ; AVX512VLBW-NEXT:    andl $-43, %ecx
1065 ; AVX512VLBW-NEXT:    subl %ecx, %eax
1066 ; AVX512VLBW-NEXT:    movl %eax, %ecx
1067 ; AVX512VLBW-NEXT:    andl $858993459, %ecx ## imm = 0x33333333
1068 ; AVX512VLBW-NEXT:    shrl $2, %eax
1069 ; AVX512VLBW-NEXT:    andl $858993459, %eax ## imm = 0x33333333
1070 ; AVX512VLBW-NEXT:    addl %ecx, %eax
1071 ; AVX512VLBW-NEXT:    movl %eax, %ecx
1072 ; AVX512VLBW-NEXT:    shrl $4, %ecx
1073 ; AVX512VLBW-NEXT:    addl %eax, %ecx
1074 ; AVX512VLBW-NEXT:    andl $252645135, %ecx ## imm = 0xF0F0F0F
1075 ; AVX512VLBW-NEXT:    imull $16843009, %ecx, %eax ## imm = 0x1010101
1076 ; AVX512VLBW-NEXT:    shrl $24, %eax
1077 ; AVX512VLBW-NEXT:    vexpandpd (%rdi,%rax,8), %zmm1 {%k1}
1078 ; AVX512VLBW-NEXT:    retq
1079   %mask = icmp eq <16 x i32> %trigger, zeroinitializer
1080   %res = call <16 x double> @llvm.masked.expandload.v16f64(ptr %base, <16 x i1> %mask, <16 x double> %src0)
1081   ret <16 x double> %res
1085 ; vXf32
1088 define <2 x float> @expandload_v2f32_v2i1(ptr %base, <2 x float> %src0, <2 x i32> %trigger) {
1089 ; SSE2-LABEL: expandload_v2f32_v2i1:
1090 ; SSE2:       ## %bb.0:
1091 ; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
1092 ; SSE2-NEXT:    pxor %xmm2, %xmm2
1093 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm2
1094 ; SSE2-NEXT:    movmskpd %xmm2, %eax
1095 ; SSE2-NEXT:    testb $1, %al
1096 ; SSE2-NEXT:    jne LBB4_1
1097 ; SSE2-NEXT:  ## %bb.2: ## %else
1098 ; SSE2-NEXT:    testb $2, %al
1099 ; SSE2-NEXT:    jne LBB4_3
1100 ; SSE2-NEXT:  LBB4_4: ## %else2
1101 ; SSE2-NEXT:    retq
1102 ; SSE2-NEXT:  LBB4_1: ## %cond.load
1103 ; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1104 ; SSE2-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
1105 ; SSE2-NEXT:    addq $4, %rdi
1106 ; SSE2-NEXT:    testb $2, %al
1107 ; SSE2-NEXT:    je LBB4_4
1108 ; SSE2-NEXT:  LBB4_3: ## %cond.load1
1109 ; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1110 ; SSE2-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1111 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[2,3]
1112 ; SSE2-NEXT:    movaps %xmm1, %xmm0
1113 ; SSE2-NEXT:    retq
1115 ; SSE42-LABEL: expandload_v2f32_v2i1:
1116 ; SSE42:       ## %bb.0:
1117 ; SSE42-NEXT:    pxor %xmm2, %xmm2
1118 ; SSE42-NEXT:    pcmpeqd %xmm1, %xmm2
1119 ; SSE42-NEXT:    pmovsxdq %xmm2, %xmm1
1120 ; SSE42-NEXT:    movmskpd %xmm1, %eax
1121 ; SSE42-NEXT:    testb $1, %al
1122 ; SSE42-NEXT:    jne LBB4_1
1123 ; SSE42-NEXT:  ## %bb.2: ## %else
1124 ; SSE42-NEXT:    testb $2, %al
1125 ; SSE42-NEXT:    jne LBB4_3
1126 ; SSE42-NEXT:  LBB4_4: ## %else2
1127 ; SSE42-NEXT:    retq
1128 ; SSE42-NEXT:  LBB4_1: ## %cond.load
1129 ; SSE42-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1130 ; SSE42-NEXT:    blendps {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
1131 ; SSE42-NEXT:    addq $4, %rdi
1132 ; SSE42-NEXT:    testb $2, %al
1133 ; SSE42-NEXT:    je LBB4_4
1134 ; SSE42-NEXT:  LBB4_3: ## %cond.load1
1135 ; SSE42-NEXT:    insertps $16, (%rdi), %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
1136 ; SSE42-NEXT:    retq
1138 ; AVX1OR2-LABEL: expandload_v2f32_v2i1:
1139 ; AVX1OR2:       ## %bb.0:
1140 ; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
1141 ; AVX1OR2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm1
1142 ; AVX1OR2-NEXT:    vpmovsxdq %xmm1, %xmm1
1143 ; AVX1OR2-NEXT:    vmovmskpd %xmm1, %eax
1144 ; AVX1OR2-NEXT:    testb $1, %al
1145 ; AVX1OR2-NEXT:    jne LBB4_1
1146 ; AVX1OR2-NEXT:  ## %bb.2: ## %else
1147 ; AVX1OR2-NEXT:    testb $2, %al
1148 ; AVX1OR2-NEXT:    jne LBB4_3
1149 ; AVX1OR2-NEXT:  LBB4_4: ## %else2
1150 ; AVX1OR2-NEXT:    retq
1151 ; AVX1OR2-NEXT:  LBB4_1: ## %cond.load
1152 ; AVX1OR2-NEXT:    vmovss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1153 ; AVX1OR2-NEXT:    vblendps {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
1154 ; AVX1OR2-NEXT:    addq $4, %rdi
1155 ; AVX1OR2-NEXT:    testb $2, %al
1156 ; AVX1OR2-NEXT:    je LBB4_4
1157 ; AVX1OR2-NEXT:  LBB4_3: ## %cond.load1
1158 ; AVX1OR2-NEXT:    vinsertps $16, (%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
1159 ; AVX1OR2-NEXT:    retq
1161 ; AVX512F-LABEL: expandload_v2f32_v2i1:
1162 ; AVX512F:       ## %bb.0:
1163 ; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm1
1164 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0
1165 ; AVX512F-NEXT:    vptestnmd %zmm1, %zmm1, %k0
1166 ; AVX512F-NEXT:    kshiftlw $14, %k0, %k0
1167 ; AVX512F-NEXT:    kshiftrw $14, %k0, %k1
1168 ; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1}
1169 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm0
1170 ; AVX512F-NEXT:    vzeroupper
1171 ; AVX512F-NEXT:    retq
1173 ; AVX512VLDQ-LABEL: expandload_v2f32_v2i1:
1174 ; AVX512VLDQ:       ## %bb.0:
1175 ; AVX512VLDQ-NEXT:    vptestnmd %xmm1, %xmm1, %k0
1176 ; AVX512VLDQ-NEXT:    kshiftlb $6, %k0, %k0
1177 ; AVX512VLDQ-NEXT:    kshiftrb $6, %k0, %k1
1178 ; AVX512VLDQ-NEXT:    vexpandps (%rdi), %xmm0 {%k1}
1179 ; AVX512VLDQ-NEXT:    retq
1181 ; AVX512VLBW-LABEL: expandload_v2f32_v2i1:
1182 ; AVX512VLBW:       ## %bb.0:
1183 ; AVX512VLBW-NEXT:    vptestnmd %xmm1, %xmm1, %k0
1184 ; AVX512VLBW-NEXT:    kshiftlw $14, %k0, %k0
1185 ; AVX512VLBW-NEXT:    kshiftrw $14, %k0, %k1
1186 ; AVX512VLBW-NEXT:    vexpandps (%rdi), %xmm0 {%k1}
1187 ; AVX512VLBW-NEXT:    retq
1188   %mask = icmp eq <2 x i32> %trigger, zeroinitializer
1189   %res = call <2 x float> @llvm.masked.expandload.v2f32(ptr %base, <2 x i1> %mask, <2 x float> %src0)
1190   ret <2 x float> %res
1193 define <4 x float> @expandload_v4f32_const(ptr %base, <4 x float> %src0) {
1194 ; SSE2-LABEL: expandload_v4f32_const:
1195 ; SSE2:       ## %bb.0:
1196 ; SSE2-NEXT:    movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
1197 ; SSE2-NEXT:    movss 8(%rdi), %xmm2 ## xmm2 = mem[0],zero,zero,zero
1198 ; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,1],xmm2[0,3]
1199 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,0]
1200 ; SSE2-NEXT:    movaps %xmm1, %xmm0
1201 ; SSE2-NEXT:    retq
1203 ; SSE42-LABEL: expandload_v4f32_const:
1204 ; SSE42:       ## %bb.0:
1205 ; SSE42-NEXT:    movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
1206 ; SSE42-NEXT:    insertps $32, 8(%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]
1207 ; SSE42-NEXT:    blendps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]
1208 ; SSE42-NEXT:    retq
1210 ; AVX1OR2-LABEL: expandload_v4f32_const:
1211 ; AVX1OR2:       ## %bb.0:
1212 ; AVX1OR2-NEXT:    vmovsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
1213 ; AVX1OR2-NEXT:    vinsertps $32, 8(%rdi), %xmm1, %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]
1214 ; AVX1OR2-NEXT:    vblendps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]
1215 ; AVX1OR2-NEXT:    retq
1217 ; AVX512F-LABEL: expandload_v4f32_const:
1218 ; AVX512F:       ## %bb.0:
1219 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0
1220 ; AVX512F-NEXT:    movw $7, %ax
1221 ; AVX512F-NEXT:    kmovw %eax, %k1
1222 ; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1}
1223 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm0
1224 ; AVX512F-NEXT:    vzeroupper
1225 ; AVX512F-NEXT:    retq
1227 ; AVX512VLDQ-LABEL: expandload_v4f32_const:
1228 ; AVX512VLDQ:       ## %bb.0:
1229 ; AVX512VLDQ-NEXT:    movb $7, %al
1230 ; AVX512VLDQ-NEXT:    kmovw %eax, %k1
1231 ; AVX512VLDQ-NEXT:    vexpandps (%rdi), %xmm0 {%k1}
1232 ; AVX512VLDQ-NEXT:    retq
1234 ; AVX512VLBW-LABEL: expandload_v4f32_const:
1235 ; AVX512VLBW:       ## %bb.0:
1236 ; AVX512VLBW-NEXT:    movb $7, %al
1237 ; AVX512VLBW-NEXT:    kmovd %eax, %k1
1238 ; AVX512VLBW-NEXT:    vexpandps (%rdi), %xmm0 {%k1}
1239 ; AVX512VLBW-NEXT:    retq
1240   %res = call <4 x float> @llvm.masked.expandload.v4f32(ptr %base, <4 x i1> <i1 true, i1 true, i1 true, i1 false>, <4 x float> %src0)
1241   ret <4 x float>%res
1244 define <16 x float> @expandload_v16f32_const(ptr %base, <16 x float> %src0) {
1245 ; SSE2-LABEL: expandload_v16f32_const:
1246 ; SSE2:       ## %bb.0:
1247 ; SSE2-NEXT:    movups (%rdi), %xmm0
1248 ; SSE2-NEXT:    movups 16(%rdi), %xmm1
1249 ; SSE2-NEXT:    movsd 44(%rdi), %xmm4 ## xmm4 = mem[0],zero
1250 ; SSE2-NEXT:    movss 52(%rdi), %xmm6 ## xmm6 = mem[0],zero,zero,zero
1251 ; SSE2-NEXT:    movsd 32(%rdi), %xmm5 ## xmm5 = mem[0],zero
1252 ; SSE2-NEXT:    movss 40(%rdi), %xmm7 ## xmm7 = mem[0],zero,zero,zero
1253 ; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[3,1],xmm7[0,3]
1254 ; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm2[2,0]
1255 ; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[3,1],xmm6[0,3]
1256 ; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm3[2,0]
1257 ; SSE2-NEXT:    movaps %xmm5, %xmm2
1258 ; SSE2-NEXT:    movaps %xmm4, %xmm3
1259 ; SSE2-NEXT:    retq
1261 ; SSE42-LABEL: expandload_v16f32_const:
1262 ; SSE42:       ## %bb.0:
1263 ; SSE42-NEXT:    movsd 44(%rdi), %xmm4 ## xmm4 = mem[0],zero
1264 ; SSE42-NEXT:    insertps $32, 52(%rdi), %xmm4 ## xmm4 = xmm4[0,1],mem[0],xmm4[3]
1265 ; SSE42-NEXT:    movsd 32(%rdi), %xmm5 ## xmm5 = mem[0],zero
1266 ; SSE42-NEXT:    insertps $32, 40(%rdi), %xmm5 ## xmm5 = xmm5[0,1],mem[0],xmm5[3]
1267 ; SSE42-NEXT:    movups (%rdi), %xmm0
1268 ; SSE42-NEXT:    movups 16(%rdi), %xmm1
1269 ; SSE42-NEXT:    blendps {{.*#+}} xmm2 = xmm5[0,1,2],xmm2[3]
1270 ; SSE42-NEXT:    blendps {{.*#+}} xmm3 = xmm4[0,1,2],xmm3[3]
1271 ; SSE42-NEXT:    retq
1273 ; AVX1OR2-LABEL: expandload_v16f32_const:
1274 ; AVX1OR2:       ## %bb.0:
1275 ; AVX1OR2-NEXT:    vmovsd 44(%rdi), %xmm0 ## xmm0 = mem[0],zero
1276 ; AVX1OR2-NEXT:    vinsertps $32, 52(%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]
1277 ; AVX1OR2-NEXT:    vmovsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero
1278 ; AVX1OR2-NEXT:    vinsertps $32, 40(%rdi), %xmm2, %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]
1279 ; AVX1OR2-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm2
1280 ; AVX1OR2-NEXT:    vmovups (%rdi), %ymm0
1281 ; AVX1OR2-NEXT:    vblendps {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5,6],ymm1[7]
1282 ; AVX1OR2-NEXT:    retq
1284 ; AVX512F-LABEL: expandload_v16f32_const:
1285 ; AVX512F:       ## %bb.0:
1286 ; AVX512F-NEXT:    movw $30719, %ax ## imm = 0x77FF
1287 ; AVX512F-NEXT:    kmovw %eax, %k1
1288 ; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1}
1289 ; AVX512F-NEXT:    retq
1291 ; AVX512VLDQ-LABEL: expandload_v16f32_const:
1292 ; AVX512VLDQ:       ## %bb.0:
1293 ; AVX512VLDQ-NEXT:    movw $30719, %ax ## imm = 0x77FF
1294 ; AVX512VLDQ-NEXT:    kmovw %eax, %k1
1295 ; AVX512VLDQ-NEXT:    vexpandps (%rdi), %zmm0 {%k1}
1296 ; AVX512VLDQ-NEXT:    retq
1298 ; AVX512VLBW-LABEL: expandload_v16f32_const:
1299 ; AVX512VLBW:       ## %bb.0:
1300 ; AVX512VLBW-NEXT:    movw $30719, %ax ## imm = 0x77FF
1301 ; AVX512VLBW-NEXT:    kmovd %eax, %k1
1302 ; AVX512VLBW-NEXT:    vexpandps (%rdi), %zmm0 {%k1}
1303 ; AVX512VLBW-NEXT:    retq
1304   %res = call <16 x float> @llvm.masked.expandload.v16f32(ptr %base, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 false>, <16 x float> %src0)
1305   ret <16 x float>%res
1308 define <16 x float> @expandload_v16f32_const_undef(ptr %base) {
1309 ; SSE2-LABEL: expandload_v16f32_const_undef:
1310 ; SSE2:       ## %bb.0:
1311 ; SSE2-NEXT:    movss 40(%rdi), %xmm0 ## xmm0 = mem[0],zero,zero,zero
1312 ; SSE2-NEXT:    movsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero
1313 ; SSE2-NEXT:    movlhps {{.*#+}} xmm2 = xmm2[0],xmm0[0]
1314 ; SSE2-NEXT:    movups (%rdi), %xmm0
1315 ; SSE2-NEXT:    movups 16(%rdi), %xmm1
1316 ; SSE2-NEXT:    movups 44(%rdi), %xmm3
1317 ; SSE2-NEXT:    retq
1319 ; SSE42-LABEL: expandload_v16f32_const_undef:
1320 ; SSE42:       ## %bb.0:
1321 ; SSE42-NEXT:    movsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero
1322 ; SSE42-NEXT:    insertps $32, 40(%rdi), %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]
1323 ; SSE42-NEXT:    movups (%rdi), %xmm0
1324 ; SSE42-NEXT:    movups 16(%rdi), %xmm1
1325 ; SSE42-NEXT:    movups 44(%rdi), %xmm3
1326 ; SSE42-NEXT:    retq
1328 ; AVX1OR2-LABEL: expandload_v16f32_const_undef:
1329 ; AVX1OR2:       ## %bb.0:
1330 ; AVX1OR2-NEXT:    vmovsd 32(%rdi), %xmm0 ## xmm0 = mem[0],zero
1331 ; AVX1OR2-NEXT:    vinsertps $32, 40(%rdi), %xmm0, %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]
1332 ; AVX1OR2-NEXT:    vinsertf128 $1, 44(%rdi), %ymm0, %ymm1
1333 ; AVX1OR2-NEXT:    vmovups (%rdi), %ymm0
1334 ; AVX1OR2-NEXT:    retq
1336 ; AVX512F-LABEL: expandload_v16f32_const_undef:
1337 ; AVX512F:       ## %bb.0:
1338 ; AVX512F-NEXT:    movw $-2049, %ax ## imm = 0xF7FF
1339 ; AVX512F-NEXT:    kmovw %eax, %k1
1340 ; AVX512F-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
1341 ; AVX512F-NEXT:    retq
1343 ; AVX512VLDQ-LABEL: expandload_v16f32_const_undef:
1344 ; AVX512VLDQ:       ## %bb.0:
1345 ; AVX512VLDQ-NEXT:    movw $-2049, %ax ## imm = 0xF7FF
1346 ; AVX512VLDQ-NEXT:    kmovw %eax, %k1
1347 ; AVX512VLDQ-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
1348 ; AVX512VLDQ-NEXT:    retq
1350 ; AVX512VLBW-LABEL: expandload_v16f32_const_undef:
1351 ; AVX512VLBW:       ## %bb.0:
1352 ; AVX512VLBW-NEXT:    movw $-2049, %ax ## imm = 0xF7FF
1353 ; AVX512VLBW-NEXT:    kmovd %eax, %k1
1354 ; AVX512VLBW-NEXT:    vexpandps (%rdi), %zmm0 {%k1} {z}
1355 ; AVX512VLBW-NEXT:    retq
1356   %res = call <16 x float> @llvm.masked.expandload.v16f32(ptr %base, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 true, i1 true, i1 true, i1 true>, <16 x float> undef)
1357   ret <16 x float>%res
1361 define <32 x float> @expandload_v32f32_v32i32(ptr %base, <32 x float> %src0, <32 x i32> %trigger) {
1362 ; SSE2-LABEL: expandload_v32f32_v32i32:
1363 ; SSE2:       ## %bb.0:
1364 ; SSE2-NEXT:    movq %rdi, %rax
1365 ; SSE2-NEXT:    pxor %xmm8, %xmm8
1366 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1367 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm9
1368 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10
1369 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm10
1370 ; SSE2-NEXT:    packssdw %xmm9, %xmm10
1371 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1372 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm9
1373 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm11
1374 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm11
1375 ; SSE2-NEXT:    packssdw %xmm9, %xmm11
1376 ; SSE2-NEXT:    packsswb %xmm10, %xmm11
1377 ; SSE2-NEXT:    pmovmskb %xmm11, %edx
1378 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1379 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm9
1380 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10
1381 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm10
1382 ; SSE2-NEXT:    packssdw %xmm9, %xmm10
1383 ; SSE2-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1384 ; SSE2-NEXT:    pcmpeqd %xmm8, %xmm9
1385 ; SSE2-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm8
1386 ; SSE2-NEXT:    packssdw %xmm9, %xmm8
1387 ; SSE2-NEXT:    packsswb %xmm10, %xmm8
1388 ; SSE2-NEXT:    pmovmskb %xmm8, %ecx
1389 ; SSE2-NEXT:    shll $16, %ecx
1390 ; SSE2-NEXT:    orl %edx, %ecx
1391 ; SSE2-NEXT:    testb $1, %cl
1392 ; SSE2-NEXT:    jne LBB8_1
1393 ; SSE2-NEXT:  ## %bb.2: ## %else
1394 ; SSE2-NEXT:    testb $2, %cl
1395 ; SSE2-NEXT:    jne LBB8_3
1396 ; SSE2-NEXT:  LBB8_4: ## %else2
1397 ; SSE2-NEXT:    testb $4, %cl
1398 ; SSE2-NEXT:    jne LBB8_5
1399 ; SSE2-NEXT:  LBB8_6: ## %else6
1400 ; SSE2-NEXT:    testb $8, %cl
1401 ; SSE2-NEXT:    jne LBB8_7
1402 ; SSE2-NEXT:  LBB8_8: ## %else10
1403 ; SSE2-NEXT:    testb $16, %cl
1404 ; SSE2-NEXT:    jne LBB8_9
1405 ; SSE2-NEXT:  LBB8_10: ## %else14
1406 ; SSE2-NEXT:    testb $32, %cl
1407 ; SSE2-NEXT:    jne LBB8_11
1408 ; SSE2-NEXT:  LBB8_12: ## %else18
1409 ; SSE2-NEXT:    testb $64, %cl
1410 ; SSE2-NEXT:    jne LBB8_13
1411 ; SSE2-NEXT:  LBB8_14: ## %else22
1412 ; SSE2-NEXT:    testb %cl, %cl
1413 ; SSE2-NEXT:    js LBB8_15
1414 ; SSE2-NEXT:  LBB8_16: ## %else26
1415 ; SSE2-NEXT:    testl $256, %ecx ## imm = 0x100
1416 ; SSE2-NEXT:    jne LBB8_17
1417 ; SSE2-NEXT:  LBB8_18: ## %else30
1418 ; SSE2-NEXT:    testl $512, %ecx ## imm = 0x200
1419 ; SSE2-NEXT:    jne LBB8_19
1420 ; SSE2-NEXT:  LBB8_20: ## %else34
1421 ; SSE2-NEXT:    testl $1024, %ecx ## imm = 0x400
1422 ; SSE2-NEXT:    jne LBB8_21
1423 ; SSE2-NEXT:  LBB8_22: ## %else38
1424 ; SSE2-NEXT:    testl $2048, %ecx ## imm = 0x800
1425 ; SSE2-NEXT:    jne LBB8_23
1426 ; SSE2-NEXT:  LBB8_24: ## %else42
1427 ; SSE2-NEXT:    testl $4096, %ecx ## imm = 0x1000
1428 ; SSE2-NEXT:    jne LBB8_25
1429 ; SSE2-NEXT:  LBB8_26: ## %else46
1430 ; SSE2-NEXT:    testl $8192, %ecx ## imm = 0x2000
1431 ; SSE2-NEXT:    jne LBB8_27
1432 ; SSE2-NEXT:  LBB8_28: ## %else50
1433 ; SSE2-NEXT:    testl $16384, %ecx ## imm = 0x4000
1434 ; SSE2-NEXT:    jne LBB8_29
1435 ; SSE2-NEXT:  LBB8_30: ## %else54
1436 ; SSE2-NEXT:    testw %cx, %cx
1437 ; SSE2-NEXT:    js LBB8_31
1438 ; SSE2-NEXT:  LBB8_32: ## %else58
1439 ; SSE2-NEXT:    testl $65536, %ecx ## imm = 0x10000
1440 ; SSE2-NEXT:    jne LBB8_33
1441 ; SSE2-NEXT:  LBB8_34: ## %else62
1442 ; SSE2-NEXT:    testl $131072, %ecx ## imm = 0x20000
1443 ; SSE2-NEXT:    jne LBB8_35
1444 ; SSE2-NEXT:  LBB8_36: ## %else66
1445 ; SSE2-NEXT:    testl $262144, %ecx ## imm = 0x40000
1446 ; SSE2-NEXT:    jne LBB8_37
1447 ; SSE2-NEXT:  LBB8_38: ## %else70
1448 ; SSE2-NEXT:    testl $524288, %ecx ## imm = 0x80000
1449 ; SSE2-NEXT:    jne LBB8_39
1450 ; SSE2-NEXT:  LBB8_40: ## %else74
1451 ; SSE2-NEXT:    testl $1048576, %ecx ## imm = 0x100000
1452 ; SSE2-NEXT:    jne LBB8_41
1453 ; SSE2-NEXT:  LBB8_42: ## %else78
1454 ; SSE2-NEXT:    testl $2097152, %ecx ## imm = 0x200000
1455 ; SSE2-NEXT:    jne LBB8_43
1456 ; SSE2-NEXT:  LBB8_44: ## %else82
1457 ; SSE2-NEXT:    testl $4194304, %ecx ## imm = 0x400000
1458 ; SSE2-NEXT:    jne LBB8_45
1459 ; SSE2-NEXT:  LBB8_46: ## %else86
1460 ; SSE2-NEXT:    testl $8388608, %ecx ## imm = 0x800000
1461 ; SSE2-NEXT:    jne LBB8_47
1462 ; SSE2-NEXT:  LBB8_48: ## %else90
1463 ; SSE2-NEXT:    testl $16777216, %ecx ## imm = 0x1000000
1464 ; SSE2-NEXT:    jne LBB8_49
1465 ; SSE2-NEXT:  LBB8_50: ## %else94
1466 ; SSE2-NEXT:    testl $33554432, %ecx ## imm = 0x2000000
1467 ; SSE2-NEXT:    jne LBB8_51
1468 ; SSE2-NEXT:  LBB8_52: ## %else98
1469 ; SSE2-NEXT:    testl $67108864, %ecx ## imm = 0x4000000
1470 ; SSE2-NEXT:    jne LBB8_53
1471 ; SSE2-NEXT:  LBB8_54: ## %else102
1472 ; SSE2-NEXT:    testl $134217728, %ecx ## imm = 0x8000000
1473 ; SSE2-NEXT:    jne LBB8_55
1474 ; SSE2-NEXT:  LBB8_56: ## %else106
1475 ; SSE2-NEXT:    testl $268435456, %ecx ## imm = 0x10000000
1476 ; SSE2-NEXT:    jne LBB8_57
1477 ; SSE2-NEXT:  LBB8_58: ## %else110
1478 ; SSE2-NEXT:    testl $536870912, %ecx ## imm = 0x20000000
1479 ; SSE2-NEXT:    jne LBB8_59
1480 ; SSE2-NEXT:  LBB8_60: ## %else114
1481 ; SSE2-NEXT:    testl $1073741824, %ecx ## imm = 0x40000000
1482 ; SSE2-NEXT:    jne LBB8_61
1483 ; SSE2-NEXT:  LBB8_62: ## %else118
1484 ; SSE2-NEXT:    testl $-2147483648, %ecx ## imm = 0x80000000
1485 ; SSE2-NEXT:    je LBB8_64
1486 ; SSE2-NEXT:  LBB8_63: ## %cond.load121
1487 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1488 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm7[2,3]
1489 ; SSE2-NEXT:    shufps {{.*#+}} xmm7 = xmm7[0,1],xmm8[2,0]
1490 ; SSE2-NEXT:  LBB8_64: ## %else122
1491 ; SSE2-NEXT:    movaps %xmm0, (%rax)
1492 ; SSE2-NEXT:    movaps %xmm1, 16(%rax)
1493 ; SSE2-NEXT:    movaps %xmm2, 32(%rax)
1494 ; SSE2-NEXT:    movaps %xmm3, 48(%rax)
1495 ; SSE2-NEXT:    movaps %xmm4, 64(%rax)
1496 ; SSE2-NEXT:    movaps %xmm5, 80(%rax)
1497 ; SSE2-NEXT:    movaps %xmm6, 96(%rax)
1498 ; SSE2-NEXT:    movaps %xmm7, 112(%rax)
1499 ; SSE2-NEXT:    retq
1500 ; SSE2-NEXT:  LBB8_1: ## %cond.load
1501 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1502 ; SSE2-NEXT:    movss {{.*#+}} xmm0 = xmm8[0],xmm0[1,2,3]
1503 ; SSE2-NEXT:    addq $4, %rsi
1504 ; SSE2-NEXT:    testb $2, %cl
1505 ; SSE2-NEXT:    je LBB8_4
1506 ; SSE2-NEXT:  LBB8_3: ## %cond.load1
1507 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1508 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm0[0]
1509 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm0[2,3]
1510 ; SSE2-NEXT:    addq $4, %rsi
1511 ; SSE2-NEXT:    movaps %xmm8, %xmm0
1512 ; SSE2-NEXT:    testb $4, %cl
1513 ; SSE2-NEXT:    je LBB8_6
1514 ; SSE2-NEXT:  LBB8_5: ## %cond.load5
1515 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1516 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm0[3,0]
1517 ; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm8[0,2]
1518 ; SSE2-NEXT:    addq $4, %rsi
1519 ; SSE2-NEXT:    testb $8, %cl
1520 ; SSE2-NEXT:    je LBB8_8
1521 ; SSE2-NEXT:  LBB8_7: ## %cond.load9
1522 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1523 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm0[2,3]
1524 ; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm8[2,0]
1525 ; SSE2-NEXT:    addq $4, %rsi
1526 ; SSE2-NEXT:    testb $16, %cl
1527 ; SSE2-NEXT:    je LBB8_10
1528 ; SSE2-NEXT:  LBB8_9: ## %cond.load13
1529 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1530 ; SSE2-NEXT:    movss {{.*#+}} xmm1 = xmm8[0],xmm1[1,2,3]
1531 ; SSE2-NEXT:    addq $4, %rsi
1532 ; SSE2-NEXT:    testb $32, %cl
1533 ; SSE2-NEXT:    je LBB8_12
1534 ; SSE2-NEXT:  LBB8_11: ## %cond.load17
1535 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1536 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm1[0]
1537 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm1[2,3]
1538 ; SSE2-NEXT:    addq $4, %rsi
1539 ; SSE2-NEXT:    movaps %xmm8, %xmm1
1540 ; SSE2-NEXT:    testb $64, %cl
1541 ; SSE2-NEXT:    je LBB8_14
1542 ; SSE2-NEXT:  LBB8_13: ## %cond.load21
1543 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1544 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm1[3,0]
1545 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm8[0,2]
1546 ; SSE2-NEXT:    addq $4, %rsi
1547 ; SSE2-NEXT:    testb %cl, %cl
1548 ; SSE2-NEXT:    jns LBB8_16
1549 ; SSE2-NEXT:  LBB8_15: ## %cond.load25
1550 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1551 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm1[2,3]
1552 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm8[2,0]
1553 ; SSE2-NEXT:    addq $4, %rsi
1554 ; SSE2-NEXT:    testl $256, %ecx ## imm = 0x100
1555 ; SSE2-NEXT:    je LBB8_18
1556 ; SSE2-NEXT:  LBB8_17: ## %cond.load29
1557 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1558 ; SSE2-NEXT:    movss {{.*#+}} xmm2 = xmm8[0],xmm2[1,2,3]
1559 ; SSE2-NEXT:    addq $4, %rsi
1560 ; SSE2-NEXT:    testl $512, %ecx ## imm = 0x200
1561 ; SSE2-NEXT:    je LBB8_20
1562 ; SSE2-NEXT:  LBB8_19: ## %cond.load33
1563 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1564 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm2[0]
1565 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm2[2,3]
1566 ; SSE2-NEXT:    addq $4, %rsi
1567 ; SSE2-NEXT:    movaps %xmm8, %xmm2
1568 ; SSE2-NEXT:    testl $1024, %ecx ## imm = 0x400
1569 ; SSE2-NEXT:    je LBB8_22
1570 ; SSE2-NEXT:  LBB8_21: ## %cond.load37
1571 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1572 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm2[3,0]
1573 ; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,1],xmm8[0,2]
1574 ; SSE2-NEXT:    addq $4, %rsi
1575 ; SSE2-NEXT:    testl $2048, %ecx ## imm = 0x800
1576 ; SSE2-NEXT:    je LBB8_24
1577 ; SSE2-NEXT:  LBB8_23: ## %cond.load41
1578 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1579 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm2[2,3]
1580 ; SSE2-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,1],xmm8[2,0]
1581 ; SSE2-NEXT:    addq $4, %rsi
1582 ; SSE2-NEXT:    testl $4096, %ecx ## imm = 0x1000
1583 ; SSE2-NEXT:    je LBB8_26
1584 ; SSE2-NEXT:  LBB8_25: ## %cond.load45
1585 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1586 ; SSE2-NEXT:    movss {{.*#+}} xmm3 = xmm8[0],xmm3[1,2,3]
1587 ; SSE2-NEXT:    addq $4, %rsi
1588 ; SSE2-NEXT:    testl $8192, %ecx ## imm = 0x2000
1589 ; SSE2-NEXT:    je LBB8_28
1590 ; SSE2-NEXT:  LBB8_27: ## %cond.load49
1591 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1592 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm3[0]
1593 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm3[2,3]
1594 ; SSE2-NEXT:    addq $4, %rsi
1595 ; SSE2-NEXT:    movaps %xmm8, %xmm3
1596 ; SSE2-NEXT:    testl $16384, %ecx ## imm = 0x4000
1597 ; SSE2-NEXT:    je LBB8_30
1598 ; SSE2-NEXT:  LBB8_29: ## %cond.load53
1599 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1600 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm3[3,0]
1601 ; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[0,1],xmm8[0,2]
1602 ; SSE2-NEXT:    addq $4, %rsi
1603 ; SSE2-NEXT:    testw %cx, %cx
1604 ; SSE2-NEXT:    jns LBB8_32
1605 ; SSE2-NEXT:  LBB8_31: ## %cond.load57
1606 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1607 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm3[2,3]
1608 ; SSE2-NEXT:    shufps {{.*#+}} xmm3 = xmm3[0,1],xmm8[2,0]
1609 ; SSE2-NEXT:    addq $4, %rsi
1610 ; SSE2-NEXT:    testl $65536, %ecx ## imm = 0x10000
1611 ; SSE2-NEXT:    je LBB8_34
1612 ; SSE2-NEXT:  LBB8_33: ## %cond.load61
1613 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1614 ; SSE2-NEXT:    movss {{.*#+}} xmm4 = xmm8[0],xmm4[1,2,3]
1615 ; SSE2-NEXT:    addq $4, %rsi
1616 ; SSE2-NEXT:    testl $131072, %ecx ## imm = 0x20000
1617 ; SSE2-NEXT:    je LBB8_36
1618 ; SSE2-NEXT:  LBB8_35: ## %cond.load65
1619 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1620 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm4[0]
1621 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm4[2,3]
1622 ; SSE2-NEXT:    addq $4, %rsi
1623 ; SSE2-NEXT:    movaps %xmm8, %xmm4
1624 ; SSE2-NEXT:    testl $262144, %ecx ## imm = 0x40000
1625 ; SSE2-NEXT:    je LBB8_38
1626 ; SSE2-NEXT:  LBB8_37: ## %cond.load69
1627 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1628 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm4[3,0]
1629 ; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm8[0,2]
1630 ; SSE2-NEXT:    addq $4, %rsi
1631 ; SSE2-NEXT:    testl $524288, %ecx ## imm = 0x80000
1632 ; SSE2-NEXT:    je LBB8_40
1633 ; SSE2-NEXT:  LBB8_39: ## %cond.load73
1634 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1635 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm4[2,3]
1636 ; SSE2-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm8[2,0]
1637 ; SSE2-NEXT:    addq $4, %rsi
1638 ; SSE2-NEXT:    testl $1048576, %ecx ## imm = 0x100000
1639 ; SSE2-NEXT:    je LBB8_42
1640 ; SSE2-NEXT:  LBB8_41: ## %cond.load77
1641 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1642 ; SSE2-NEXT:    movss {{.*#+}} xmm5 = xmm8[0],xmm5[1,2,3]
1643 ; SSE2-NEXT:    addq $4, %rsi
1644 ; SSE2-NEXT:    testl $2097152, %ecx ## imm = 0x200000
1645 ; SSE2-NEXT:    je LBB8_44
1646 ; SSE2-NEXT:  LBB8_43: ## %cond.load81
1647 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1648 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm5[0]
1649 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm5[2,3]
1650 ; SSE2-NEXT:    addq $4, %rsi
1651 ; SSE2-NEXT:    movaps %xmm8, %xmm5
1652 ; SSE2-NEXT:    testl $4194304, %ecx ## imm = 0x400000
1653 ; SSE2-NEXT:    je LBB8_46
1654 ; SSE2-NEXT:  LBB8_45: ## %cond.load85
1655 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1656 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm5[3,0]
1657 ; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm8[0,2]
1658 ; SSE2-NEXT:    addq $4, %rsi
1659 ; SSE2-NEXT:    testl $8388608, %ecx ## imm = 0x800000
1660 ; SSE2-NEXT:    je LBB8_48
1661 ; SSE2-NEXT:  LBB8_47: ## %cond.load89
1662 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1663 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm5[2,3]
1664 ; SSE2-NEXT:    shufps {{.*#+}} xmm5 = xmm5[0,1],xmm8[2,0]
1665 ; SSE2-NEXT:    addq $4, %rsi
1666 ; SSE2-NEXT:    testl $16777216, %ecx ## imm = 0x1000000
1667 ; SSE2-NEXT:    je LBB8_50
1668 ; SSE2-NEXT:  LBB8_49: ## %cond.load93
1669 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1670 ; SSE2-NEXT:    movss {{.*#+}} xmm6 = xmm8[0],xmm6[1,2,3]
1671 ; SSE2-NEXT:    addq $4, %rsi
1672 ; SSE2-NEXT:    testl $33554432, %ecx ## imm = 0x2000000
1673 ; SSE2-NEXT:    je LBB8_52
1674 ; SSE2-NEXT:  LBB8_51: ## %cond.load97
1675 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1676 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm6[0]
1677 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm6[2,3]
1678 ; SSE2-NEXT:    addq $4, %rsi
1679 ; SSE2-NEXT:    movaps %xmm8, %xmm6
1680 ; SSE2-NEXT:    testl $67108864, %ecx ## imm = 0x4000000
1681 ; SSE2-NEXT:    je LBB8_54
1682 ; SSE2-NEXT:  LBB8_53: ## %cond.load101
1683 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1684 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm6[3,0]
1685 ; SSE2-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm8[0,2]
1686 ; SSE2-NEXT:    addq $4, %rsi
1687 ; SSE2-NEXT:    testl $134217728, %ecx ## imm = 0x8000000
1688 ; SSE2-NEXT:    je LBB8_56
1689 ; SSE2-NEXT:  LBB8_55: ## %cond.load105
1690 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1691 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,1],xmm6[2,3]
1692 ; SSE2-NEXT:    shufps {{.*#+}} xmm6 = xmm6[0,1],xmm8[2,0]
1693 ; SSE2-NEXT:    addq $4, %rsi
1694 ; SSE2-NEXT:    testl $268435456, %ecx ## imm = 0x10000000
1695 ; SSE2-NEXT:    je LBB8_58
1696 ; SSE2-NEXT:  LBB8_57: ## %cond.load109
1697 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1698 ; SSE2-NEXT:    movss {{.*#+}} xmm7 = xmm8[0],xmm7[1,2,3]
1699 ; SSE2-NEXT:    addq $4, %rsi
1700 ; SSE2-NEXT:    testl $536870912, %ecx ## imm = 0x20000000
1701 ; SSE2-NEXT:    je LBB8_60
1702 ; SSE2-NEXT:  LBB8_59: ## %cond.load113
1703 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1704 ; SSE2-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm7[0]
1705 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,0],xmm7[2,3]
1706 ; SSE2-NEXT:    addq $4, %rsi
1707 ; SSE2-NEXT:    movaps %xmm8, %xmm7
1708 ; SSE2-NEXT:    testl $1073741824, %ecx ## imm = 0x40000000
1709 ; SSE2-NEXT:    je LBB8_62
1710 ; SSE2-NEXT:  LBB8_61: ## %cond.load117
1711 ; SSE2-NEXT:    movss (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1712 ; SSE2-NEXT:    shufps {{.*#+}} xmm8 = xmm8[0,0],xmm7[3,0]
1713 ; SSE2-NEXT:    shufps {{.*#+}} xmm7 = xmm7[0,1],xmm8[0,2]
1714 ; SSE2-NEXT:    addq $4, %rsi
1715 ; SSE2-NEXT:    testl $-2147483648, %ecx ## imm = 0x80000000
1716 ; SSE2-NEXT:    jne LBB8_63
1717 ; SSE2-NEXT:    jmp LBB8_64
1719 ; SSE42-LABEL: expandload_v32f32_v32i32:
1720 ; SSE42:       ## %bb.0:
1721 ; SSE42-NEXT:    movq %rdi, %rax
1722 ; SSE42-NEXT:    pxor %xmm8, %xmm8
1723 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1724 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm9
1725 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10
1726 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm10
1727 ; SSE42-NEXT:    packssdw %xmm9, %xmm10
1728 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1729 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm9
1730 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm11
1731 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm11
1732 ; SSE42-NEXT:    packssdw %xmm9, %xmm11
1733 ; SSE42-NEXT:    packsswb %xmm10, %xmm11
1734 ; SSE42-NEXT:    pmovmskb %xmm11, %edx
1735 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1736 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm9
1737 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm10
1738 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm10
1739 ; SSE42-NEXT:    packssdw %xmm9, %xmm10
1740 ; SSE42-NEXT:    movdqa {{[0-9]+}}(%rsp), %xmm9
1741 ; SSE42-NEXT:    pcmpeqd %xmm8, %xmm9
1742 ; SSE42-NEXT:    pcmpeqd {{[0-9]+}}(%rsp), %xmm8
1743 ; SSE42-NEXT:    packssdw %xmm9, %xmm8
1744 ; SSE42-NEXT:    packsswb %xmm10, %xmm8
1745 ; SSE42-NEXT:    pmovmskb %xmm8, %ecx
1746 ; SSE42-NEXT:    shll $16, %ecx
1747 ; SSE42-NEXT:    orl %edx, %ecx
1748 ; SSE42-NEXT:    testb $1, %cl
1749 ; SSE42-NEXT:    jne LBB8_1
1750 ; SSE42-NEXT:  ## %bb.2: ## %else
1751 ; SSE42-NEXT:    testb $2, %cl
1752 ; SSE42-NEXT:    jne LBB8_3
1753 ; SSE42-NEXT:  LBB8_4: ## %else2
1754 ; SSE42-NEXT:    testb $4, %cl
1755 ; SSE42-NEXT:    jne LBB8_5
1756 ; SSE42-NEXT:  LBB8_6: ## %else6
1757 ; SSE42-NEXT:    testb $8, %cl
1758 ; SSE42-NEXT:    jne LBB8_7
1759 ; SSE42-NEXT:  LBB8_8: ## %else10
1760 ; SSE42-NEXT:    testb $16, %cl
1761 ; SSE42-NEXT:    jne LBB8_9
1762 ; SSE42-NEXT:  LBB8_10: ## %else14
1763 ; SSE42-NEXT:    testb $32, %cl
1764 ; SSE42-NEXT:    jne LBB8_11
1765 ; SSE42-NEXT:  LBB8_12: ## %else18
1766 ; SSE42-NEXT:    testb $64, %cl
1767 ; SSE42-NEXT:    jne LBB8_13
1768 ; SSE42-NEXT:  LBB8_14: ## %else22
1769 ; SSE42-NEXT:    testb %cl, %cl
1770 ; SSE42-NEXT:    js LBB8_15
1771 ; SSE42-NEXT:  LBB8_16: ## %else26
1772 ; SSE42-NEXT:    testl $256, %ecx ## imm = 0x100
1773 ; SSE42-NEXT:    jne LBB8_17
1774 ; SSE42-NEXT:  LBB8_18: ## %else30
1775 ; SSE42-NEXT:    testl $512, %ecx ## imm = 0x200
1776 ; SSE42-NEXT:    jne LBB8_19
1777 ; SSE42-NEXT:  LBB8_20: ## %else34
1778 ; SSE42-NEXT:    testl $1024, %ecx ## imm = 0x400
1779 ; SSE42-NEXT:    jne LBB8_21
1780 ; SSE42-NEXT:  LBB8_22: ## %else38
1781 ; SSE42-NEXT:    testl $2048, %ecx ## imm = 0x800
1782 ; SSE42-NEXT:    jne LBB8_23
1783 ; SSE42-NEXT:  LBB8_24: ## %else42
1784 ; SSE42-NEXT:    testl $4096, %ecx ## imm = 0x1000
1785 ; SSE42-NEXT:    jne LBB8_25
1786 ; SSE42-NEXT:  LBB8_26: ## %else46
1787 ; SSE42-NEXT:    testl $8192, %ecx ## imm = 0x2000
1788 ; SSE42-NEXT:    jne LBB8_27
1789 ; SSE42-NEXT:  LBB8_28: ## %else50
1790 ; SSE42-NEXT:    testl $16384, %ecx ## imm = 0x4000
1791 ; SSE42-NEXT:    jne LBB8_29
1792 ; SSE42-NEXT:  LBB8_30: ## %else54
1793 ; SSE42-NEXT:    testw %cx, %cx
1794 ; SSE42-NEXT:    js LBB8_31
1795 ; SSE42-NEXT:  LBB8_32: ## %else58
1796 ; SSE42-NEXT:    testl $65536, %ecx ## imm = 0x10000
1797 ; SSE42-NEXT:    jne LBB8_33
1798 ; SSE42-NEXT:  LBB8_34: ## %else62
1799 ; SSE42-NEXT:    testl $131072, %ecx ## imm = 0x20000
1800 ; SSE42-NEXT:    jne LBB8_35
1801 ; SSE42-NEXT:  LBB8_36: ## %else66
1802 ; SSE42-NEXT:    testl $262144, %ecx ## imm = 0x40000
1803 ; SSE42-NEXT:    jne LBB8_37
1804 ; SSE42-NEXT:  LBB8_38: ## %else70
1805 ; SSE42-NEXT:    testl $524288, %ecx ## imm = 0x80000
1806 ; SSE42-NEXT:    jne LBB8_39
1807 ; SSE42-NEXT:  LBB8_40: ## %else74
1808 ; SSE42-NEXT:    testl $1048576, %ecx ## imm = 0x100000
1809 ; SSE42-NEXT:    jne LBB8_41
1810 ; SSE42-NEXT:  LBB8_42: ## %else78
1811 ; SSE42-NEXT:    testl $2097152, %ecx ## imm = 0x200000
1812 ; SSE42-NEXT:    jne LBB8_43
1813 ; SSE42-NEXT:  LBB8_44: ## %else82
1814 ; SSE42-NEXT:    testl $4194304, %ecx ## imm = 0x400000
1815 ; SSE42-NEXT:    jne LBB8_45
1816 ; SSE42-NEXT:  LBB8_46: ## %else86
1817 ; SSE42-NEXT:    testl $8388608, %ecx ## imm = 0x800000
1818 ; SSE42-NEXT:    jne LBB8_47
1819 ; SSE42-NEXT:  LBB8_48: ## %else90
1820 ; SSE42-NEXT:    testl $16777216, %ecx ## imm = 0x1000000
1821 ; SSE42-NEXT:    jne LBB8_49
1822 ; SSE42-NEXT:  LBB8_50: ## %else94
1823 ; SSE42-NEXT:    testl $33554432, %ecx ## imm = 0x2000000
1824 ; SSE42-NEXT:    jne LBB8_51
1825 ; SSE42-NEXT:  LBB8_52: ## %else98
1826 ; SSE42-NEXT:    testl $67108864, %ecx ## imm = 0x4000000
1827 ; SSE42-NEXT:    jne LBB8_53
1828 ; SSE42-NEXT:  LBB8_54: ## %else102
1829 ; SSE42-NEXT:    testl $134217728, %ecx ## imm = 0x8000000
1830 ; SSE42-NEXT:    jne LBB8_55
1831 ; SSE42-NEXT:  LBB8_56: ## %else106
1832 ; SSE42-NEXT:    testl $268435456, %ecx ## imm = 0x10000000
1833 ; SSE42-NEXT:    jne LBB8_57
1834 ; SSE42-NEXT:  LBB8_58: ## %else110
1835 ; SSE42-NEXT:    testl $536870912, %ecx ## imm = 0x20000000
1836 ; SSE42-NEXT:    jne LBB8_59
1837 ; SSE42-NEXT:  LBB8_60: ## %else114
1838 ; SSE42-NEXT:    testl $1073741824, %ecx ## imm = 0x40000000
1839 ; SSE42-NEXT:    jne LBB8_61
1840 ; SSE42-NEXT:  LBB8_62: ## %else118
1841 ; SSE42-NEXT:    testl $-2147483648, %ecx ## imm = 0x80000000
1842 ; SSE42-NEXT:    je LBB8_64
1843 ; SSE42-NEXT:  LBB8_63: ## %cond.load121
1844 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm7 ## xmm7 = xmm7[0,1,2],mem[0]
1845 ; SSE42-NEXT:  LBB8_64: ## %else122
1846 ; SSE42-NEXT:    movaps %xmm0, (%rax)
1847 ; SSE42-NEXT:    movaps %xmm1, 16(%rax)
1848 ; SSE42-NEXT:    movaps %xmm2, 32(%rax)
1849 ; SSE42-NEXT:    movaps %xmm3, 48(%rax)
1850 ; SSE42-NEXT:    movaps %xmm4, 64(%rax)
1851 ; SSE42-NEXT:    movaps %xmm5, 80(%rax)
1852 ; SSE42-NEXT:    movaps %xmm6, 96(%rax)
1853 ; SSE42-NEXT:    movaps %xmm7, 112(%rax)
1854 ; SSE42-NEXT:    retq
1855 ; SSE42-NEXT:  LBB8_1: ## %cond.load
1856 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1857 ; SSE42-NEXT:    pblendw {{.*#+}} xmm0 = xmm8[0,1],xmm0[2,3,4,5,6,7]
1858 ; SSE42-NEXT:    addq $4, %rsi
1859 ; SSE42-NEXT:    testb $2, %cl
1860 ; SSE42-NEXT:    je LBB8_4
1861 ; SSE42-NEXT:  LBB8_3: ## %cond.load1
1862 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
1863 ; SSE42-NEXT:    addq $4, %rsi
1864 ; SSE42-NEXT:    testb $4, %cl
1865 ; SSE42-NEXT:    je LBB8_6
1866 ; SSE42-NEXT:  LBB8_5: ## %cond.load5
1867 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]
1868 ; SSE42-NEXT:    addq $4, %rsi
1869 ; SSE42-NEXT:    testb $8, %cl
1870 ; SSE42-NEXT:    je LBB8_8
1871 ; SSE42-NEXT:  LBB8_7: ## %cond.load9
1872 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm0 ## xmm0 = xmm0[0,1,2],mem[0]
1873 ; SSE42-NEXT:    addq $4, %rsi
1874 ; SSE42-NEXT:    testb $16, %cl
1875 ; SSE42-NEXT:    je LBB8_10
1876 ; SSE42-NEXT:  LBB8_9: ## %cond.load13
1877 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1878 ; SSE42-NEXT:    pblendw {{.*#+}} xmm1 = xmm8[0,1],xmm1[2,3,4,5,6,7]
1879 ; SSE42-NEXT:    addq $4, %rsi
1880 ; SSE42-NEXT:    testb $32, %cl
1881 ; SSE42-NEXT:    je LBB8_12
1882 ; SSE42-NEXT:  LBB8_11: ## %cond.load17
1883 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm1 ## xmm1 = xmm1[0],mem[0],xmm1[2,3]
1884 ; SSE42-NEXT:    addq $4, %rsi
1885 ; SSE42-NEXT:    testb $64, %cl
1886 ; SSE42-NEXT:    je LBB8_14
1887 ; SSE42-NEXT:  LBB8_13: ## %cond.load21
1888 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]
1889 ; SSE42-NEXT:    addq $4, %rsi
1890 ; SSE42-NEXT:    testb %cl, %cl
1891 ; SSE42-NEXT:    jns LBB8_16
1892 ; SSE42-NEXT:  LBB8_15: ## %cond.load25
1893 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm1 ## xmm1 = xmm1[0,1,2],mem[0]
1894 ; SSE42-NEXT:    addq $4, %rsi
1895 ; SSE42-NEXT:    testl $256, %ecx ## imm = 0x100
1896 ; SSE42-NEXT:    je LBB8_18
1897 ; SSE42-NEXT:  LBB8_17: ## %cond.load29
1898 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1899 ; SSE42-NEXT:    pblendw {{.*#+}} xmm2 = xmm8[0,1],xmm2[2,3,4,5,6,7]
1900 ; SSE42-NEXT:    addq $4, %rsi
1901 ; SSE42-NEXT:    testl $512, %ecx ## imm = 0x200
1902 ; SSE42-NEXT:    je LBB8_20
1903 ; SSE42-NEXT:  LBB8_19: ## %cond.load33
1904 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm2 ## xmm2 = xmm2[0],mem[0],xmm2[2,3]
1905 ; SSE42-NEXT:    addq $4, %rsi
1906 ; SSE42-NEXT:    testl $1024, %ecx ## imm = 0x400
1907 ; SSE42-NEXT:    je LBB8_22
1908 ; SSE42-NEXT:  LBB8_21: ## %cond.load37
1909 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]
1910 ; SSE42-NEXT:    addq $4, %rsi
1911 ; SSE42-NEXT:    testl $2048, %ecx ## imm = 0x800
1912 ; SSE42-NEXT:    je LBB8_24
1913 ; SSE42-NEXT:  LBB8_23: ## %cond.load41
1914 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm2 ## xmm2 = xmm2[0,1,2],mem[0]
1915 ; SSE42-NEXT:    addq $4, %rsi
1916 ; SSE42-NEXT:    testl $4096, %ecx ## imm = 0x1000
1917 ; SSE42-NEXT:    je LBB8_26
1918 ; SSE42-NEXT:  LBB8_25: ## %cond.load45
1919 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1920 ; SSE42-NEXT:    pblendw {{.*#+}} xmm3 = xmm8[0,1],xmm3[2,3,4,5,6,7]
1921 ; SSE42-NEXT:    addq $4, %rsi
1922 ; SSE42-NEXT:    testl $8192, %ecx ## imm = 0x2000
1923 ; SSE42-NEXT:    je LBB8_28
1924 ; SSE42-NEXT:  LBB8_27: ## %cond.load49
1925 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm3 ## xmm3 = xmm3[0],mem[0],xmm3[2,3]
1926 ; SSE42-NEXT:    addq $4, %rsi
1927 ; SSE42-NEXT:    testl $16384, %ecx ## imm = 0x4000
1928 ; SSE42-NEXT:    je LBB8_30
1929 ; SSE42-NEXT:  LBB8_29: ## %cond.load53
1930 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm3 ## xmm3 = xmm3[0,1],mem[0],xmm3[3]
1931 ; SSE42-NEXT:    addq $4, %rsi
1932 ; SSE42-NEXT:    testw %cx, %cx
1933 ; SSE42-NEXT:    jns LBB8_32
1934 ; SSE42-NEXT:  LBB8_31: ## %cond.load57
1935 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm3 ## xmm3 = xmm3[0,1,2],mem[0]
1936 ; SSE42-NEXT:    addq $4, %rsi
1937 ; SSE42-NEXT:    testl $65536, %ecx ## imm = 0x10000
1938 ; SSE42-NEXT:    je LBB8_34
1939 ; SSE42-NEXT:  LBB8_33: ## %cond.load61
1940 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1941 ; SSE42-NEXT:    pblendw {{.*#+}} xmm4 = xmm8[0,1],xmm4[2,3,4,5,6,7]
1942 ; SSE42-NEXT:    addq $4, %rsi
1943 ; SSE42-NEXT:    testl $131072, %ecx ## imm = 0x20000
1944 ; SSE42-NEXT:    je LBB8_36
1945 ; SSE42-NEXT:  LBB8_35: ## %cond.load65
1946 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm4 ## xmm4 = xmm4[0],mem[0],xmm4[2,3]
1947 ; SSE42-NEXT:    addq $4, %rsi
1948 ; SSE42-NEXT:    testl $262144, %ecx ## imm = 0x40000
1949 ; SSE42-NEXT:    je LBB8_38
1950 ; SSE42-NEXT:  LBB8_37: ## %cond.load69
1951 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm4 ## xmm4 = xmm4[0,1],mem[0],xmm4[3]
1952 ; SSE42-NEXT:    addq $4, %rsi
1953 ; SSE42-NEXT:    testl $524288, %ecx ## imm = 0x80000
1954 ; SSE42-NEXT:    je LBB8_40
1955 ; SSE42-NEXT:  LBB8_39: ## %cond.load73
1956 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm4 ## xmm4 = xmm4[0,1,2],mem[0]
1957 ; SSE42-NEXT:    addq $4, %rsi
1958 ; SSE42-NEXT:    testl $1048576, %ecx ## imm = 0x100000
1959 ; SSE42-NEXT:    je LBB8_42
1960 ; SSE42-NEXT:  LBB8_41: ## %cond.load77
1961 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1962 ; SSE42-NEXT:    pblendw {{.*#+}} xmm5 = xmm8[0,1],xmm5[2,3,4,5,6,7]
1963 ; SSE42-NEXT:    addq $4, %rsi
1964 ; SSE42-NEXT:    testl $2097152, %ecx ## imm = 0x200000
1965 ; SSE42-NEXT:    je LBB8_44
1966 ; SSE42-NEXT:  LBB8_43: ## %cond.load81
1967 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm5 ## xmm5 = xmm5[0],mem[0],xmm5[2,3]
1968 ; SSE42-NEXT:    addq $4, %rsi
1969 ; SSE42-NEXT:    testl $4194304, %ecx ## imm = 0x400000
1970 ; SSE42-NEXT:    je LBB8_46
1971 ; SSE42-NEXT:  LBB8_45: ## %cond.load85
1972 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm5 ## xmm5 = xmm5[0,1],mem[0],xmm5[3]
1973 ; SSE42-NEXT:    addq $4, %rsi
1974 ; SSE42-NEXT:    testl $8388608, %ecx ## imm = 0x800000
1975 ; SSE42-NEXT:    je LBB8_48
1976 ; SSE42-NEXT:  LBB8_47: ## %cond.load89
1977 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm5 ## xmm5 = xmm5[0,1,2],mem[0]
1978 ; SSE42-NEXT:    addq $4, %rsi
1979 ; SSE42-NEXT:    testl $16777216, %ecx ## imm = 0x1000000
1980 ; SSE42-NEXT:    je LBB8_50
1981 ; SSE42-NEXT:  LBB8_49: ## %cond.load93
1982 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1983 ; SSE42-NEXT:    pblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2,3,4,5,6,7]
1984 ; SSE42-NEXT:    addq $4, %rsi
1985 ; SSE42-NEXT:    testl $33554432, %ecx ## imm = 0x2000000
1986 ; SSE42-NEXT:    je LBB8_52
1987 ; SSE42-NEXT:  LBB8_51: ## %cond.load97
1988 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm6 ## xmm6 = xmm6[0],mem[0],xmm6[2,3]
1989 ; SSE42-NEXT:    addq $4, %rsi
1990 ; SSE42-NEXT:    testl $67108864, %ecx ## imm = 0x4000000
1991 ; SSE42-NEXT:    je LBB8_54
1992 ; SSE42-NEXT:  LBB8_53: ## %cond.load101
1993 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm6 ## xmm6 = xmm6[0,1],mem[0],xmm6[3]
1994 ; SSE42-NEXT:    addq $4, %rsi
1995 ; SSE42-NEXT:    testl $134217728, %ecx ## imm = 0x8000000
1996 ; SSE42-NEXT:    je LBB8_56
1997 ; SSE42-NEXT:  LBB8_55: ## %cond.load105
1998 ; SSE42-NEXT:    insertps $48, (%rsi), %xmm6 ## xmm6 = xmm6[0,1,2],mem[0]
1999 ; SSE42-NEXT:    addq $4, %rsi
2000 ; SSE42-NEXT:    testl $268435456, %ecx ## imm = 0x10000000
2001 ; SSE42-NEXT:    je LBB8_58
2002 ; SSE42-NEXT:  LBB8_57: ## %cond.load109
2003 ; SSE42-NEXT:    movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
2004 ; SSE42-NEXT:    pblendw {{.*#+}} xmm7 = xmm8[0,1],xmm7[2,3,4,5,6,7]
2005 ; SSE42-NEXT:    addq $4, %rsi
2006 ; SSE42-NEXT:    testl $536870912, %ecx ## imm = 0x20000000
2007 ; SSE42-NEXT:    je LBB8_60
2008 ; SSE42-NEXT:  LBB8_59: ## %cond.load113
2009 ; SSE42-NEXT:    insertps $16, (%rsi), %xmm7 ## xmm7 = xmm7[0],mem[0],xmm7[2,3]
2010 ; SSE42-NEXT:    addq $4, %rsi
2011 ; SSE42-NEXT:    testl $1073741824, %ecx ## imm = 0x40000000
2012 ; SSE42-NEXT:    je LBB8_62
2013 ; SSE42-NEXT:  LBB8_61: ## %cond.load117
2014 ; SSE42-NEXT:    insertps $32, (%rsi), %xmm7 ## xmm7 = xmm7[0,1],mem[0],xmm7[3]
2015 ; SSE42-NEXT:    addq $4, %rsi
2016 ; SSE42-NEXT:    testl $-2147483648, %ecx ## imm = 0x80000000
2017 ; SSE42-NEXT:    jne LBB8_63
2018 ; SSE42-NEXT:    jmp LBB8_64
2020 ; AVX1-LABEL: expandload_v32f32_v32i32:
2021 ; AVX1:       ## %bb.0:
2022 ; AVX1-NEXT:    vextractf128 $1, %ymm5, %xmm8
2023 ; AVX1-NEXT:    vpxor %xmm9, %xmm9, %xmm9
2024 ; AVX1-NEXT:    vpcmpeqd %xmm9, %xmm8, %xmm8
2025 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm9, %xmm5
2026 ; AVX1-NEXT:    vpackssdw %xmm8, %xmm5, %xmm5
2027 ; AVX1-NEXT:    vextractf128 $1, %ymm4, %xmm8
2028 ; AVX1-NEXT:    vpcmpeqd %xmm9, %xmm8, %xmm8
2029 ; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm9, %xmm4
2030 ; AVX1-NEXT:    vpackssdw %xmm8, %xmm4, %xmm4
2031 ; AVX1-NEXT:    vpacksswb %xmm5, %xmm4, %xmm4
2032 ; AVX1-NEXT:    vpmovmskb %xmm4, %ecx
2033 ; AVX1-NEXT:    vextractf128 $1, %ymm7, %xmm4
2034 ; AVX1-NEXT:    vpcmpeqd %xmm4, %xmm9, %xmm4
2035 ; AVX1-NEXT:    vpcmpeqd %xmm7, %xmm9, %xmm5
2036 ; AVX1-NEXT:    vpackssdw %xmm4, %xmm5, %xmm4
2037 ; AVX1-NEXT:    vextractf128 $1, %ymm6, %xmm5
2038 ; AVX1-NEXT:    vpcmpeqd %xmm5, %xmm9, %xmm5
2039 ; AVX1-NEXT:    vpcmpeqd %xmm6, %xmm9, %xmm6
2040 ; AVX1-NEXT:    vpackssdw %xmm5, %xmm6, %xmm5
2041 ; AVX1-NEXT:    vpacksswb %xmm4, %xmm5, %xmm4
2042 ; AVX1-NEXT:    vpmovmskb %xmm4, %eax
2043 ; AVX1-NEXT:    shll $16, %eax
2044 ; AVX1-NEXT:    orl %ecx, %eax
2045 ; AVX1-NEXT:    testb $1, %al
2046 ; AVX1-NEXT:    jne LBB8_1
2047 ; AVX1-NEXT:  ## %bb.2: ## %else
2048 ; AVX1-NEXT:    testb $2, %al
2049 ; AVX1-NEXT:    jne LBB8_3
2050 ; AVX1-NEXT:  LBB8_4: ## %else2
2051 ; AVX1-NEXT:    testb $4, %al
2052 ; AVX1-NEXT:    jne LBB8_5
2053 ; AVX1-NEXT:  LBB8_6: ## %else6
2054 ; AVX1-NEXT:    testb $8, %al
2055 ; AVX1-NEXT:    jne LBB8_7
2056 ; AVX1-NEXT:  LBB8_8: ## %else10
2057 ; AVX1-NEXT:    testb $16, %al
2058 ; AVX1-NEXT:    jne LBB8_9
2059 ; AVX1-NEXT:  LBB8_10: ## %else14
2060 ; AVX1-NEXT:    testb $32, %al
2061 ; AVX1-NEXT:    jne LBB8_11
2062 ; AVX1-NEXT:  LBB8_12: ## %else18
2063 ; AVX1-NEXT:    testb $64, %al
2064 ; AVX1-NEXT:    jne LBB8_13
2065 ; AVX1-NEXT:  LBB8_14: ## %else22
2066 ; AVX1-NEXT:    testb %al, %al
2067 ; AVX1-NEXT:    js LBB8_15
2068 ; AVX1-NEXT:  LBB8_16: ## %else26
2069 ; AVX1-NEXT:    testl $256, %eax ## imm = 0x100
2070 ; AVX1-NEXT:    jne LBB8_17
2071 ; AVX1-NEXT:  LBB8_18: ## %else30
2072 ; AVX1-NEXT:    testl $512, %eax ## imm = 0x200
2073 ; AVX1-NEXT:    jne LBB8_19
2074 ; AVX1-NEXT:  LBB8_20: ## %else34
2075 ; AVX1-NEXT:    testl $1024, %eax ## imm = 0x400
2076 ; AVX1-NEXT:    jne LBB8_21
2077 ; AVX1-NEXT:  LBB8_22: ## %else38
2078 ; AVX1-NEXT:    testl $2048, %eax ## imm = 0x800
2079 ; AVX1-NEXT:    jne LBB8_23
2080 ; AVX1-NEXT:  LBB8_24: ## %else42
2081 ; AVX1-NEXT:    testl $4096, %eax ## imm = 0x1000
2082 ; AVX1-NEXT:    jne LBB8_25
2083 ; AVX1-NEXT:  LBB8_26: ## %else46
2084 ; AVX1-NEXT:    testl $8192, %eax ## imm = 0x2000
2085 ; AVX1-NEXT:    jne LBB8_27
2086 ; AVX1-NEXT:  LBB8_28: ## %else50
2087 ; AVX1-NEXT:    testl $16384, %eax ## imm = 0x4000
2088 ; AVX1-NEXT:    jne LBB8_29
2089 ; AVX1-NEXT:  LBB8_30: ## %else54
2090 ; AVX1-NEXT:    testw %ax, %ax
2091 ; AVX1-NEXT:    js LBB8_31
2092 ; AVX1-NEXT:  LBB8_32: ## %else58
2093 ; AVX1-NEXT:    testl $65536, %eax ## imm = 0x10000
2094 ; AVX1-NEXT:    jne LBB8_33
2095 ; AVX1-NEXT:  LBB8_34: ## %else62
2096 ; AVX1-NEXT:    testl $131072, %eax ## imm = 0x20000
2097 ; AVX1-NEXT:    jne LBB8_35
2098 ; AVX1-NEXT:  LBB8_36: ## %else66
2099 ; AVX1-NEXT:    testl $262144, %eax ## imm = 0x40000
2100 ; AVX1-NEXT:    jne LBB8_37
2101 ; AVX1-NEXT:  LBB8_38: ## %else70
2102 ; AVX1-NEXT:    testl $524288, %eax ## imm = 0x80000
2103 ; AVX1-NEXT:    jne LBB8_39
2104 ; AVX1-NEXT:  LBB8_40: ## %else74
2105 ; AVX1-NEXT:    testl $1048576, %eax ## imm = 0x100000
2106 ; AVX1-NEXT:    jne LBB8_41
2107 ; AVX1-NEXT:  LBB8_42: ## %else78
2108 ; AVX1-NEXT:    testl $2097152, %eax ## imm = 0x200000
2109 ; AVX1-NEXT:    jne LBB8_43
2110 ; AVX1-NEXT:  LBB8_44: ## %else82
2111 ; AVX1-NEXT:    testl $4194304, %eax ## imm = 0x400000
2112 ; AVX1-NEXT:    jne LBB8_45
2113 ; AVX1-NEXT:  LBB8_46: ## %else86
2114 ; AVX1-NEXT:    testl $8388608, %eax ## imm = 0x800000
2115 ; AVX1-NEXT:    jne LBB8_47
2116 ; AVX1-NEXT:  LBB8_48: ## %else90
2117 ; AVX1-NEXT:    testl $16777216, %eax ## imm = 0x1000000
2118 ; AVX1-NEXT:    jne LBB8_49
2119 ; AVX1-NEXT:  LBB8_50: ## %else94
2120 ; AVX1-NEXT:    testl $33554432, %eax ## imm = 0x2000000
2121 ; AVX1-NEXT:    jne LBB8_51
2122 ; AVX1-NEXT:  LBB8_52: ## %else98
2123 ; AVX1-NEXT:    testl $67108864, %eax ## imm = 0x4000000
2124 ; AVX1-NEXT:    jne LBB8_53
2125 ; AVX1-NEXT:  LBB8_54: ## %else102
2126 ; AVX1-NEXT:    testl $134217728, %eax ## imm = 0x8000000
2127 ; AVX1-NEXT:    jne LBB8_55
2128 ; AVX1-NEXT:  LBB8_56: ## %else106
2129 ; AVX1-NEXT:    testl $268435456, %eax ## imm = 0x10000000
2130 ; AVX1-NEXT:    jne LBB8_57
2131 ; AVX1-NEXT:  LBB8_58: ## %else110
2132 ; AVX1-NEXT:    testl $536870912, %eax ## imm = 0x20000000
2133 ; AVX1-NEXT:    jne LBB8_59
2134 ; AVX1-NEXT:  LBB8_60: ## %else114
2135 ; AVX1-NEXT:    testl $1073741824, %eax ## imm = 0x40000000
2136 ; AVX1-NEXT:    jne LBB8_61
2137 ; AVX1-NEXT:  LBB8_62: ## %else118
2138 ; AVX1-NEXT:    testl $-2147483648, %eax ## imm = 0x80000000
2139 ; AVX1-NEXT:    jne LBB8_63
2140 ; AVX1-NEXT:  LBB8_64: ## %else122
2141 ; AVX1-NEXT:    retq
2142 ; AVX1-NEXT:  LBB8_1: ## %cond.load
2143 ; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2144 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0],ymm0[1,2,3,4,5,6,7]
2145 ; AVX1-NEXT:    addq $4, %rdi
2146 ; AVX1-NEXT:    testb $2, %al
2147 ; AVX1-NEXT:    je LBB8_4
2148 ; AVX1-NEXT:  LBB8_3: ## %cond.load1
2149 ; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0],mem[0],xmm0[2,3]
2150 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2151 ; AVX1-NEXT:    addq $4, %rdi
2152 ; AVX1-NEXT:    testb $4, %al
2153 ; AVX1-NEXT:    je LBB8_6
2154 ; AVX1-NEXT:  LBB8_5: ## %cond.load5
2155 ; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0],xmm0[3]
2156 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2157 ; AVX1-NEXT:    addq $4, %rdi
2158 ; AVX1-NEXT:    testb $8, %al
2159 ; AVX1-NEXT:    je LBB8_8
2160 ; AVX1-NEXT:  LBB8_7: ## %cond.load9
2161 ; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1,2],mem[0]
2162 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2163 ; AVX1-NEXT:    addq $4, %rdi
2164 ; AVX1-NEXT:    testb $16, %al
2165 ; AVX1-NEXT:    je LBB8_10
2166 ; AVX1-NEXT:  LBB8_9: ## %cond.load13
2167 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2168 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4],ymm0[5,6,7]
2169 ; AVX1-NEXT:    addq $4, %rdi
2170 ; AVX1-NEXT:    testb $32, %al
2171 ; AVX1-NEXT:    je LBB8_12
2172 ; AVX1-NEXT:  LBB8_11: ## %cond.load17
2173 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2174 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm4[5],ymm0[6,7]
2175 ; AVX1-NEXT:    addq $4, %rdi
2176 ; AVX1-NEXT:    testb $64, %al
2177 ; AVX1-NEXT:    je LBB8_14
2178 ; AVX1-NEXT:  LBB8_13: ## %cond.load21
2179 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2180 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6],ymm0[7]
2181 ; AVX1-NEXT:    addq $4, %rdi
2182 ; AVX1-NEXT:    testb %al, %al
2183 ; AVX1-NEXT:    jns LBB8_16
2184 ; AVX1-NEXT:  LBB8_15: ## %cond.load25
2185 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2186 ; AVX1-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm4[7]
2187 ; AVX1-NEXT:    addq $4, %rdi
2188 ; AVX1-NEXT:    testl $256, %eax ## imm = 0x100
2189 ; AVX1-NEXT:    je LBB8_18
2190 ; AVX1-NEXT:  LBB8_17: ## %cond.load29
2191 ; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2192 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0],ymm1[1,2,3,4,5,6,7]
2193 ; AVX1-NEXT:    addq $4, %rdi
2194 ; AVX1-NEXT:    testl $512, %eax ## imm = 0x200
2195 ; AVX1-NEXT:    je LBB8_20
2196 ; AVX1-NEXT:  LBB8_19: ## %cond.load33
2197 ; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0],mem[0],xmm1[2,3]
2198 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
2199 ; AVX1-NEXT:    addq $4, %rdi
2200 ; AVX1-NEXT:    testl $1024, %eax ## imm = 0x400
2201 ; AVX1-NEXT:    je LBB8_22
2202 ; AVX1-NEXT:  LBB8_21: ## %cond.load37
2203 ; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0],xmm1[3]
2204 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
2205 ; AVX1-NEXT:    addq $4, %rdi
2206 ; AVX1-NEXT:    testl $2048, %eax ## imm = 0x800
2207 ; AVX1-NEXT:    je LBB8_24
2208 ; AVX1-NEXT:  LBB8_23: ## %cond.load41
2209 ; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1,2],mem[0]
2210 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
2211 ; AVX1-NEXT:    addq $4, %rdi
2212 ; AVX1-NEXT:    testl $4096, %eax ## imm = 0x1000
2213 ; AVX1-NEXT:    je LBB8_26
2214 ; AVX1-NEXT:  LBB8_25: ## %cond.load45
2215 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2216 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4],ymm1[5,6,7]
2217 ; AVX1-NEXT:    addq $4, %rdi
2218 ; AVX1-NEXT:    testl $8192, %eax ## imm = 0x2000
2219 ; AVX1-NEXT:    je LBB8_28
2220 ; AVX1-NEXT:  LBB8_27: ## %cond.load49
2221 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2222 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm4[5],ymm1[6,7]
2223 ; AVX1-NEXT:    addq $4, %rdi
2224 ; AVX1-NEXT:    testl $16384, %eax ## imm = 0x4000
2225 ; AVX1-NEXT:    je LBB8_30
2226 ; AVX1-NEXT:  LBB8_29: ## %cond.load53
2227 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2228 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6],ymm1[7]
2229 ; AVX1-NEXT:    addq $4, %rdi
2230 ; AVX1-NEXT:    testw %ax, %ax
2231 ; AVX1-NEXT:    jns LBB8_32
2232 ; AVX1-NEXT:  LBB8_31: ## %cond.load57
2233 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2234 ; AVX1-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm4[7]
2235 ; AVX1-NEXT:    addq $4, %rdi
2236 ; AVX1-NEXT:    testl $65536, %eax ## imm = 0x10000
2237 ; AVX1-NEXT:    je LBB8_34
2238 ; AVX1-NEXT:  LBB8_33: ## %cond.load61
2239 ; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2240 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0],ymm2[1,2,3,4,5,6,7]
2241 ; AVX1-NEXT:    addq $4, %rdi
2242 ; AVX1-NEXT:    testl $131072, %eax ## imm = 0x20000
2243 ; AVX1-NEXT:    je LBB8_36
2244 ; AVX1-NEXT:  LBB8_35: ## %cond.load65
2245 ; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0],mem[0],xmm2[2,3]
2246 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
2247 ; AVX1-NEXT:    addq $4, %rdi
2248 ; AVX1-NEXT:    testl $262144, %eax ## imm = 0x40000
2249 ; AVX1-NEXT:    je LBB8_38
2250 ; AVX1-NEXT:  LBB8_37: ## %cond.load69
2251 ; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0],xmm2[3]
2252 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
2253 ; AVX1-NEXT:    addq $4, %rdi
2254 ; AVX1-NEXT:    testl $524288, %eax ## imm = 0x80000
2255 ; AVX1-NEXT:    je LBB8_40
2256 ; AVX1-NEXT:  LBB8_39: ## %cond.load73
2257 ; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1,2],mem[0]
2258 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
2259 ; AVX1-NEXT:    addq $4, %rdi
2260 ; AVX1-NEXT:    testl $1048576, %eax ## imm = 0x100000
2261 ; AVX1-NEXT:    je LBB8_42
2262 ; AVX1-NEXT:  LBB8_41: ## %cond.load77
2263 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2264 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4],ymm2[5,6,7]
2265 ; AVX1-NEXT:    addq $4, %rdi
2266 ; AVX1-NEXT:    testl $2097152, %eax ## imm = 0x200000
2267 ; AVX1-NEXT:    je LBB8_44
2268 ; AVX1-NEXT:  LBB8_43: ## %cond.load81
2269 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2270 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm4[5],ymm2[6,7]
2271 ; AVX1-NEXT:    addq $4, %rdi
2272 ; AVX1-NEXT:    testl $4194304, %eax ## imm = 0x400000
2273 ; AVX1-NEXT:    je LBB8_46
2274 ; AVX1-NEXT:  LBB8_45: ## %cond.load85
2275 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2276 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6],ymm2[7]
2277 ; AVX1-NEXT:    addq $4, %rdi
2278 ; AVX1-NEXT:    testl $8388608, %eax ## imm = 0x800000
2279 ; AVX1-NEXT:    je LBB8_48
2280 ; AVX1-NEXT:  LBB8_47: ## %cond.load89
2281 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2282 ; AVX1-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm4[7]
2283 ; AVX1-NEXT:    addq $4, %rdi
2284 ; AVX1-NEXT:    testl $16777216, %eax ## imm = 0x1000000
2285 ; AVX1-NEXT:    je LBB8_50
2286 ; AVX1-NEXT:  LBB8_49: ## %cond.load93
2287 ; AVX1-NEXT:    vmovss (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2288 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0],ymm3[1,2,3,4,5,6,7]
2289 ; AVX1-NEXT:    addq $4, %rdi
2290 ; AVX1-NEXT:    testl $33554432, %eax ## imm = 0x2000000
2291 ; AVX1-NEXT:    je LBB8_52
2292 ; AVX1-NEXT:  LBB8_51: ## %cond.load97
2293 ; AVX1-NEXT:    vinsertps $16, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0],mem[0],xmm3[2,3]
2294 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
2295 ; AVX1-NEXT:    addq $4, %rdi
2296 ; AVX1-NEXT:    testl $67108864, %eax ## imm = 0x4000000
2297 ; AVX1-NEXT:    je LBB8_54
2298 ; AVX1-NEXT:  LBB8_53: ## %cond.load101
2299 ; AVX1-NEXT:    vinsertps $32, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0],xmm3[3]
2300 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
2301 ; AVX1-NEXT:    addq $4, %rdi
2302 ; AVX1-NEXT:    testl $134217728, %eax ## imm = 0x8000000
2303 ; AVX1-NEXT:    je LBB8_56
2304 ; AVX1-NEXT:  LBB8_55: ## %cond.load105
2305 ; AVX1-NEXT:    vinsertps $48, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1,2],mem[0]
2306 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
2307 ; AVX1-NEXT:    addq $4, %rdi
2308 ; AVX1-NEXT:    testl $268435456, %eax ## imm = 0x10000000
2309 ; AVX1-NEXT:    je LBB8_58
2310 ; AVX1-NEXT:  LBB8_57: ## %cond.load109
2311 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2312 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6,7]
2313 ; AVX1-NEXT:    addq $4, %rdi
2314 ; AVX1-NEXT:    testl $536870912, %eax ## imm = 0x20000000
2315 ; AVX1-NEXT:    je LBB8_60
2316 ; AVX1-NEXT:  LBB8_59: ## %cond.load113
2317 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2318 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm4[5],ymm3[6,7]
2319 ; AVX1-NEXT:    addq $4, %rdi
2320 ; AVX1-NEXT:    testl $1073741824, %eax ## imm = 0x40000000
2321 ; AVX1-NEXT:    je LBB8_62
2322 ; AVX1-NEXT:  LBB8_61: ## %cond.load117
2323 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2324 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6],ymm3[7]
2325 ; AVX1-NEXT:    addq $4, %rdi
2326 ; AVX1-NEXT:    testl $-2147483648, %eax ## imm = 0x80000000
2327 ; AVX1-NEXT:    je LBB8_64
2328 ; AVX1-NEXT:  LBB8_63: ## %cond.load121
2329 ; AVX1-NEXT:    vbroadcastss (%rdi), %ymm4
2330 ; AVX1-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm4[7]
2331 ; AVX1-NEXT:    retq
2333 ; AVX2-LABEL: expandload_v32f32_v32i32:
2334 ; AVX2:       ## %bb.0:
2335 ; AVX2-NEXT:    vpxor %xmm8, %xmm8, %xmm8
2336 ; AVX2-NEXT:    vpcmpeqd %ymm7, %ymm8, %ymm7
2337 ; AVX2-NEXT:    vpcmpeqd %ymm6, %ymm8, %ymm6
2338 ; AVX2-NEXT:    vpackssdw %ymm7, %ymm6, %ymm6
2339 ; AVX2-NEXT:    vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3]
2340 ; AVX2-NEXT:    vpcmpeqd %ymm5, %ymm8, %ymm5
2341 ; AVX2-NEXT:    vpcmpeqd %ymm4, %ymm8, %ymm4
2342 ; AVX2-NEXT:    vpackssdw %ymm5, %ymm4, %ymm4
2343 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]
2344 ; AVX2-NEXT:    vpacksswb %ymm6, %ymm4, %ymm4
2345 ; AVX2-NEXT:    vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3]
2346 ; AVX2-NEXT:    vpmovmskb %ymm4, %eax
2347 ; AVX2-NEXT:    testb $1, %al
2348 ; AVX2-NEXT:    jne LBB8_1
2349 ; AVX2-NEXT:  ## %bb.2: ## %else
2350 ; AVX2-NEXT:    testb $2, %al
2351 ; AVX2-NEXT:    jne LBB8_3
2352 ; AVX2-NEXT:  LBB8_4: ## %else2
2353 ; AVX2-NEXT:    testb $4, %al
2354 ; AVX2-NEXT:    jne LBB8_5
2355 ; AVX2-NEXT:  LBB8_6: ## %else6
2356 ; AVX2-NEXT:    testb $8, %al
2357 ; AVX2-NEXT:    jne LBB8_7
2358 ; AVX2-NEXT:  LBB8_8: ## %else10
2359 ; AVX2-NEXT:    testb $16, %al
2360 ; AVX2-NEXT:    jne LBB8_9
2361 ; AVX2-NEXT:  LBB8_10: ## %else14
2362 ; AVX2-NEXT:    testb $32, %al
2363 ; AVX2-NEXT:    jne LBB8_11
2364 ; AVX2-NEXT:  LBB8_12: ## %else18
2365 ; AVX2-NEXT:    testb $64, %al
2366 ; AVX2-NEXT:    jne LBB8_13
2367 ; AVX2-NEXT:  LBB8_14: ## %else22
2368 ; AVX2-NEXT:    testb %al, %al
2369 ; AVX2-NEXT:    js LBB8_15
2370 ; AVX2-NEXT:  LBB8_16: ## %else26
2371 ; AVX2-NEXT:    testl $256, %eax ## imm = 0x100
2372 ; AVX2-NEXT:    jne LBB8_17
2373 ; AVX2-NEXT:  LBB8_18: ## %else30
2374 ; AVX2-NEXT:    testl $512, %eax ## imm = 0x200
2375 ; AVX2-NEXT:    jne LBB8_19
2376 ; AVX2-NEXT:  LBB8_20: ## %else34
2377 ; AVX2-NEXT:    testl $1024, %eax ## imm = 0x400
2378 ; AVX2-NEXT:    jne LBB8_21
2379 ; AVX2-NEXT:  LBB8_22: ## %else38
2380 ; AVX2-NEXT:    testl $2048, %eax ## imm = 0x800
2381 ; AVX2-NEXT:    jne LBB8_23
2382 ; AVX2-NEXT:  LBB8_24: ## %else42
2383 ; AVX2-NEXT:    testl $4096, %eax ## imm = 0x1000
2384 ; AVX2-NEXT:    jne LBB8_25
2385 ; AVX2-NEXT:  LBB8_26: ## %else46
2386 ; AVX2-NEXT:    testl $8192, %eax ## imm = 0x2000
2387 ; AVX2-NEXT:    jne LBB8_27
2388 ; AVX2-NEXT:  LBB8_28: ## %else50
2389 ; AVX2-NEXT:    testl $16384, %eax ## imm = 0x4000
2390 ; AVX2-NEXT:    jne LBB8_29
2391 ; AVX2-NEXT:  LBB8_30: ## %else54
2392 ; AVX2-NEXT:    testw %ax, %ax
2393 ; AVX2-NEXT:    js LBB8_31
2394 ; AVX2-NEXT:  LBB8_32: ## %else58
2395 ; AVX2-NEXT:    testl $65536, %eax ## imm = 0x10000
2396 ; AVX2-NEXT:    jne LBB8_33
2397 ; AVX2-NEXT:  LBB8_34: ## %else62
2398 ; AVX2-NEXT:    testl $131072, %eax ## imm = 0x20000
2399 ; AVX2-NEXT:    jne LBB8_35
2400 ; AVX2-NEXT:  LBB8_36: ## %else66
2401 ; AVX2-NEXT:    testl $262144, %eax ## imm = 0x40000
2402 ; AVX2-NEXT:    jne LBB8_37
2403 ; AVX2-NEXT:  LBB8_38: ## %else70
2404 ; AVX2-NEXT:    testl $524288, %eax ## imm = 0x80000
2405 ; AVX2-NEXT:    jne LBB8_39
2406 ; AVX2-NEXT:  LBB8_40: ## %else74
2407 ; AVX2-NEXT:    testl $1048576, %eax ## imm = 0x100000
2408 ; AVX2-NEXT:    jne LBB8_41
2409 ; AVX2-NEXT:  LBB8_42: ## %else78
2410 ; AVX2-NEXT:    testl $2097152, %eax ## imm = 0x200000
2411 ; AVX2-NEXT:    jne LBB8_43
2412 ; AVX2-NEXT:  LBB8_44: ## %else82
2413 ; AVX2-NEXT:    testl $4194304, %eax ## imm = 0x400000
2414 ; AVX2-NEXT:    jne LBB8_45
2415 ; AVX2-NEXT:  LBB8_46: ## %else86
2416 ; AVX2-NEXT:    testl $8388608, %eax ## imm = 0x800000
2417 ; AVX2-NEXT:    jne LBB8_47
2418 ; AVX2-NEXT:  LBB8_48: ## %else90
2419 ; AVX2-NEXT:    testl $16777216, %eax ## imm = 0x1000000
2420 ; AVX2-NEXT:    jne LBB8_49
2421 ; AVX2-NEXT:  LBB8_50: ## %else94
2422 ; AVX2-NEXT:    testl $33554432, %eax ## imm = 0x2000000
2423 ; AVX2-NEXT:    jne LBB8_51
2424 ; AVX2-NEXT:  LBB8_52: ## %else98
2425 ; AVX2-NEXT:    testl $67108864, %eax ## imm = 0x4000000
2426 ; AVX2-NEXT:    jne LBB8_53
2427 ; AVX2-NEXT:  LBB8_54: ## %else102
2428 ; AVX2-NEXT:    testl $134217728, %eax ## imm = 0x8000000
2429 ; AVX2-NEXT:    jne LBB8_55
2430 ; AVX2-NEXT:  LBB8_56: ## %else106
2431 ; AVX2-NEXT:    testl $268435456, %eax ## imm = 0x10000000
2432 ; AVX2-NEXT:    jne LBB8_57
2433 ; AVX2-NEXT:  LBB8_58: ## %else110
2434 ; AVX2-NEXT:    testl $536870912, %eax ## imm = 0x20000000
2435 ; AVX2-NEXT:    jne LBB8_59
2436 ; AVX2-NEXT:  LBB8_60: ## %else114
2437 ; AVX2-NEXT:    testl $1073741824, %eax ## imm = 0x40000000
2438 ; AVX2-NEXT:    jne LBB8_61
2439 ; AVX2-NEXT:  LBB8_62: ## %else118
2440 ; AVX2-NEXT:    testl $-2147483648, %eax ## imm = 0x80000000
2441 ; AVX2-NEXT:    jne LBB8_63
2442 ; AVX2-NEXT:  LBB8_64: ## %else122
2443 ; AVX2-NEXT:    retq
2444 ; AVX2-NEXT:  LBB8_1: ## %cond.load
2445 ; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2446 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm0 = ymm4[0],ymm0[1,2,3,4,5,6,7]
2447 ; AVX2-NEXT:    addq $4, %rdi
2448 ; AVX2-NEXT:    testb $2, %al
2449 ; AVX2-NEXT:    je LBB8_4
2450 ; AVX2-NEXT:  LBB8_3: ## %cond.load1
2451 ; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0],mem[0],xmm0[2,3]
2452 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2453 ; AVX2-NEXT:    addq $4, %rdi
2454 ; AVX2-NEXT:    testb $4, %al
2455 ; AVX2-NEXT:    je LBB8_6
2456 ; AVX2-NEXT:  LBB8_5: ## %cond.load5
2457 ; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1],mem[0],xmm0[3]
2458 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2459 ; AVX2-NEXT:    addq $4, %rdi
2460 ; AVX2-NEXT:    testb $8, %al
2461 ; AVX2-NEXT:    je LBB8_8
2462 ; AVX2-NEXT:  LBB8_7: ## %cond.load9
2463 ; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm0, %xmm4 ## xmm4 = xmm0[0,1,2],mem[0]
2464 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm4[0,1,2,3],ymm0[4,5,6,7]
2465 ; AVX2-NEXT:    addq $4, %rdi
2466 ; AVX2-NEXT:    testb $16, %al
2467 ; AVX2-NEXT:    je LBB8_10
2468 ; AVX2-NEXT:  LBB8_9: ## %cond.load13
2469 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2470 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm4[4],ymm0[5,6,7]
2471 ; AVX2-NEXT:    addq $4, %rdi
2472 ; AVX2-NEXT:    testb $32, %al
2473 ; AVX2-NEXT:    je LBB8_12
2474 ; AVX2-NEXT:  LBB8_11: ## %cond.load17
2475 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2476 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4],ymm4[5],ymm0[6,7]
2477 ; AVX2-NEXT:    addq $4, %rdi
2478 ; AVX2-NEXT:    testb $64, %al
2479 ; AVX2-NEXT:    je LBB8_14
2480 ; AVX2-NEXT:  LBB8_13: ## %cond.load21
2481 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2482 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm4[6],ymm0[7]
2483 ; AVX2-NEXT:    addq $4, %rdi
2484 ; AVX2-NEXT:    testb %al, %al
2485 ; AVX2-NEXT:    jns LBB8_16
2486 ; AVX2-NEXT:  LBB8_15: ## %cond.load25
2487 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2488 ; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5,6],ymm4[7]
2489 ; AVX2-NEXT:    addq $4, %rdi
2490 ; AVX2-NEXT:    testl $256, %eax ## imm = 0x100
2491 ; AVX2-NEXT:    je LBB8_18
2492 ; AVX2-NEXT:  LBB8_17: ## %cond.load29
2493 ; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2494 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm1 = ymm4[0],ymm1[1,2,3,4,5,6,7]
2495 ; AVX2-NEXT:    addq $4, %rdi
2496 ; AVX2-NEXT:    testl $512, %eax ## imm = 0x200
2497 ; AVX2-NEXT:    je LBB8_20
2498 ; AVX2-NEXT:  LBB8_19: ## %cond.load33
2499 ; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0],mem[0],xmm1[2,3]
2500 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
2501 ; AVX2-NEXT:    addq $4, %rdi
2502 ; AVX2-NEXT:    testl $1024, %eax ## imm = 0x400
2503 ; AVX2-NEXT:    je LBB8_22
2504 ; AVX2-NEXT:  LBB8_21: ## %cond.load37
2505 ; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1],mem[0],xmm1[3]
2506 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
2507 ; AVX2-NEXT:    addq $4, %rdi
2508 ; AVX2-NEXT:    testl $2048, %eax ## imm = 0x800
2509 ; AVX2-NEXT:    je LBB8_24
2510 ; AVX2-NEXT:  LBB8_23: ## %cond.load41
2511 ; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm1, %xmm4 ## xmm4 = xmm1[0,1,2],mem[0]
2512 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm4[0,1,2,3],ymm1[4,5,6,7]
2513 ; AVX2-NEXT:    addq $4, %rdi
2514 ; AVX2-NEXT:    testl $4096, %eax ## imm = 0x1000
2515 ; AVX2-NEXT:    je LBB8_26
2516 ; AVX2-NEXT:  LBB8_25: ## %cond.load45
2517 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2518 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm4[4],ymm1[5,6,7]
2519 ; AVX2-NEXT:    addq $4, %rdi
2520 ; AVX2-NEXT:    testl $8192, %eax ## imm = 0x2000
2521 ; AVX2-NEXT:    je LBB8_28
2522 ; AVX2-NEXT:  LBB8_27: ## %cond.load49
2523 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2524 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4],ymm4[5],ymm1[6,7]
2525 ; AVX2-NEXT:    addq $4, %rdi
2526 ; AVX2-NEXT:    testl $16384, %eax ## imm = 0x4000
2527 ; AVX2-NEXT:    je LBB8_30
2528 ; AVX2-NEXT:  LBB8_29: ## %cond.load53
2529 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2530 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5],ymm4[6],ymm1[7]
2531 ; AVX2-NEXT:    addq $4, %rdi
2532 ; AVX2-NEXT:    testw %ax, %ax
2533 ; AVX2-NEXT:    jns LBB8_32
2534 ; AVX2-NEXT:  LBB8_31: ## %cond.load57
2535 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2536 ; AVX2-NEXT:    vblendps {{.*#+}} ymm1 = ymm1[0,1,2,3,4,5,6],ymm4[7]
2537 ; AVX2-NEXT:    addq $4, %rdi
2538 ; AVX2-NEXT:    testl $65536, %eax ## imm = 0x10000
2539 ; AVX2-NEXT:    je LBB8_34
2540 ; AVX2-NEXT:  LBB8_33: ## %cond.load61
2541 ; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2542 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm2 = ymm4[0],ymm2[1,2,3,4,5,6,7]
2543 ; AVX2-NEXT:    addq $4, %rdi
2544 ; AVX2-NEXT:    testl $131072, %eax ## imm = 0x20000
2545 ; AVX2-NEXT:    je LBB8_36
2546 ; AVX2-NEXT:  LBB8_35: ## %cond.load65
2547 ; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0],mem[0],xmm2[2,3]
2548 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
2549 ; AVX2-NEXT:    addq $4, %rdi
2550 ; AVX2-NEXT:    testl $262144, %eax ## imm = 0x40000
2551 ; AVX2-NEXT:    je LBB8_38
2552 ; AVX2-NEXT:  LBB8_37: ## %cond.load69
2553 ; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1],mem[0],xmm2[3]
2554 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
2555 ; AVX2-NEXT:    addq $4, %rdi
2556 ; AVX2-NEXT:    testl $524288, %eax ## imm = 0x80000
2557 ; AVX2-NEXT:    je LBB8_40
2558 ; AVX2-NEXT:  LBB8_39: ## %cond.load73
2559 ; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm2, %xmm4 ## xmm4 = xmm2[0,1,2],mem[0]
2560 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm4[0,1,2,3],ymm2[4,5,6,7]
2561 ; AVX2-NEXT:    addq $4, %rdi
2562 ; AVX2-NEXT:    testl $1048576, %eax ## imm = 0x100000
2563 ; AVX2-NEXT:    je LBB8_42
2564 ; AVX2-NEXT:  LBB8_41: ## %cond.load77
2565 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2566 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3],ymm4[4],ymm2[5,6,7]
2567 ; AVX2-NEXT:    addq $4, %rdi
2568 ; AVX2-NEXT:    testl $2097152, %eax ## imm = 0x200000
2569 ; AVX2-NEXT:    je LBB8_44
2570 ; AVX2-NEXT:  LBB8_43: ## %cond.load81
2571 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2572 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4],ymm4[5],ymm2[6,7]
2573 ; AVX2-NEXT:    addq $4, %rdi
2574 ; AVX2-NEXT:    testl $4194304, %eax ## imm = 0x400000
2575 ; AVX2-NEXT:    je LBB8_46
2576 ; AVX2-NEXT:  LBB8_45: ## %cond.load85
2577 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2578 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5],ymm4[6],ymm2[7]
2579 ; AVX2-NEXT:    addq $4, %rdi
2580 ; AVX2-NEXT:    testl $8388608, %eax ## imm = 0x800000
2581 ; AVX2-NEXT:    je LBB8_48
2582 ; AVX2-NEXT:  LBB8_47: ## %cond.load89
2583 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2584 ; AVX2-NEXT:    vblendps {{.*#+}} ymm2 = ymm2[0,1,2,3,4,5,6],ymm4[7]
2585 ; AVX2-NEXT:    addq $4, %rdi
2586 ; AVX2-NEXT:    testl $16777216, %eax ## imm = 0x1000000
2587 ; AVX2-NEXT:    je LBB8_50
2588 ; AVX2-NEXT:  LBB8_49: ## %cond.load93
2589 ; AVX2-NEXT:    vmovd (%rdi), %xmm4 ## xmm4 = mem[0],zero,zero,zero
2590 ; AVX2-NEXT:    vpblendd {{.*#+}} ymm3 = ymm4[0],ymm3[1,2,3,4,5,6,7]
2591 ; AVX2-NEXT:    addq $4, %rdi
2592 ; AVX2-NEXT:    testl $33554432, %eax ## imm = 0x2000000
2593 ; AVX2-NEXT:    je LBB8_52
2594 ; AVX2-NEXT:  LBB8_51: ## %cond.load97
2595 ; AVX2-NEXT:    vinsertps $16, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0],mem[0],xmm3[2,3]
2596 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
2597 ; AVX2-NEXT:    addq $4, %rdi
2598 ; AVX2-NEXT:    testl $67108864, %eax ## imm = 0x4000000
2599 ; AVX2-NEXT:    je LBB8_54
2600 ; AVX2-NEXT:  LBB8_53: ## %cond.load101
2601 ; AVX2-NEXT:    vinsertps $32, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1],mem[0],xmm3[3]
2602 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
2603 ; AVX2-NEXT:    addq $4, %rdi
2604 ; AVX2-NEXT:    testl $134217728, %eax ## imm = 0x8000000
2605 ; AVX2-NEXT:    je LBB8_56
2606 ; AVX2-NEXT:  LBB8_55: ## %cond.load105
2607 ; AVX2-NEXT:    vinsertps $48, (%rdi), %xmm3, %xmm4 ## xmm4 = xmm3[0,1,2],mem[0]
2608 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
2609 ; AVX2-NEXT:    addq $4, %rdi
2610 ; AVX2-NEXT:    testl $268435456, %eax ## imm = 0x10000000
2611 ; AVX2-NEXT:    je LBB8_58
2612 ; AVX2-NEXT:  LBB8_57: ## %cond.load109
2613 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2614 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm4[4],ymm3[5,6,7]
2615 ; AVX2-NEXT:    addq $4, %rdi
2616 ; AVX2-NEXT:    testl $536870912, %eax ## imm = 0x20000000
2617 ; AVX2-NEXT:    je LBB8_60
2618 ; AVX2-NEXT:  LBB8_59: ## %cond.load113
2619 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2620 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4],ymm4[5],ymm3[6,7]
2621 ; AVX2-NEXT:    addq $4, %rdi
2622 ; AVX2-NEXT:    testl $1073741824, %eax ## imm = 0x40000000
2623 ; AVX2-NEXT:    je LBB8_62
2624 ; AVX2-NEXT:  LBB8_61: ## %cond.load117
2625 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2626 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5],ymm4[6],ymm3[7]
2627 ; AVX2-NEXT:    addq $4, %rdi
2628 ; AVX2-NEXT:    testl $-2147483648, %eax ## imm = 0x80000000
2629 ; AVX2-NEXT:    je LBB8_64
2630 ; AVX2-NEXT:  LBB8_63: ## %cond.load121
2631 ; AVX2-NEXT:    vbroadcastss (%rdi), %ymm4
2632 ; AVX2-NEXT:    vblendps {{.*#+}} ymm3 = ymm3[0,1,2,3,4,5,6],ymm4[7]
2633 ; AVX2-NEXT:    retq
2635 ; AVX512-LABEL: expandload_v32f32_v32i32:
2636 ; AVX512:       ## %bb.0:
2637 ; AVX512-NEXT:    vptestnmd %zmm3, %zmm3, %k2
2638 ; AVX512-NEXT:    vptestnmd %zmm2, %zmm2, %k1
2639 ; AVX512-NEXT:    kmovw %k1, %eax
2640 ; AVX512-NEXT:    movl %eax, %ecx
2641 ; AVX512-NEXT:    shrl %ecx
2642 ; AVX512-NEXT:    andl $21845, %ecx ## imm = 0x5555
2643 ; AVX512-NEXT:    subl %ecx, %eax
2644 ; AVX512-NEXT:    movl %eax, %ecx
2645 ; AVX512-NEXT:    andl $858993459, %ecx ## imm = 0x33333333
2646 ; AVX512-NEXT:    shrl $2, %eax
2647 ; AVX512-NEXT:    andl $858993459, %eax ## imm = 0x33333333
2648 ; AVX512-NEXT:    addl %ecx, %eax
2649 ; AVX512-NEXT:    movl %eax, %ecx
2650 ; AVX512-NEXT:    shrl $4, %ecx
2651 ; AVX512-NEXT:    addl %eax, %ecx
2652 ; AVX512-NEXT:    andl $252645135, %ecx ## imm = 0xF0F0F0F
2653 ; AVX512-NEXT:    imull $16843009, %ecx, %eax ## imm = 0x1010101
2654 ; AVX512-NEXT:    shrl $24, %eax
2655 ; AVX512-NEXT:    vexpandps (%rdi,%rax,4), %zmm1 {%k2}
2656 ; AVX512-NEXT:    vexpandps (%rdi), %zmm0 {%k1}
2657 ; AVX512-NEXT:    retq
2658   %mask = icmp eq <32 x i32> %trigger, zeroinitializer
2659   %res = call <32 x float> @llvm.masked.expandload.v32f32(ptr %base, <32 x i1> %mask, <32 x float> %src0)
2660   ret <32 x float> %res
2664 ; vXi64
2667 define <2 x i64> @expandload_v2i64_const(ptr %base, <2 x i64> %src0) {
2668 ; SSE2-LABEL: expandload_v2i64_const:
2669 ; SSE2:       ## %bb.0:
2670 ; SSE2-NEXT:    movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
2671 ; SSE2-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]
2672 ; SSE2-NEXT:    retq
2674 ; SSE42-LABEL: expandload_v2i64_const:
2675 ; SSE42:       ## %bb.0:
2676 ; SSE42-NEXT:    pinsrq $1, (%rdi), %xmm0
2677 ; SSE42-NEXT:    retq
2679 ; AVX1OR2-LABEL: expandload_v2i64_const:
2680 ; AVX1OR2:       ## %bb.0:
2681 ; AVX1OR2-NEXT:    vpinsrq $1, (%rdi), %xmm0, %xmm0
2682 ; AVX1OR2-NEXT:    retq
2684 ; AVX512F-LABEL: expandload_v2i64_const:
2685 ; AVX512F:       ## %bb.0:
2686 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0
2687 ; AVX512F-NEXT:    movb $2, %al
2688 ; AVX512F-NEXT:    kmovw %eax, %k1
2689 ; AVX512F-NEXT:    vpexpandq (%rdi), %zmm0 {%k1}
2690 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm0
2691 ; AVX512F-NEXT:    vzeroupper
2692 ; AVX512F-NEXT:    retq
2694 ; AVX512VLDQ-LABEL: expandload_v2i64_const:
2695 ; AVX512VLDQ:       ## %bb.0:
2696 ; AVX512VLDQ-NEXT:    movb $2, %al
2697 ; AVX512VLDQ-NEXT:    kmovw %eax, %k1
2698 ; AVX512VLDQ-NEXT:    vpexpandq (%rdi), %xmm0 {%k1}
2699 ; AVX512VLDQ-NEXT:    retq
2701 ; AVX512VLBW-LABEL: expandload_v2i64_const:
2702 ; AVX512VLBW:       ## %bb.0:
2703 ; AVX512VLBW-NEXT:    movb $2, %al
2704 ; AVX512VLBW-NEXT:    kmovd %eax, %k1
2705 ; AVX512VLBW-NEXT:    vpexpandq (%rdi), %xmm0 {%k1}
2706 ; AVX512VLBW-NEXT:    retq
2707   %res = call <2 x i64> @llvm.masked.expandload.v2i64(ptr %base, <2 x i1> <i1 false, i1 true>, <2 x i64> %src0)
2708   ret <2 x i64>%res
2712 ; vXi32
2715 define <4 x i32> @expandload_v4i32_v4i32(ptr %base, <4 x i32> %src0, <4 x i32> %trigger) {
2716 ; SSE2-LABEL: expandload_v4i32_v4i32:
2717 ; SSE2:       ## %bb.0:
2718 ; SSE2-NEXT:    pxor %xmm2, %xmm2
2719 ; SSE2-NEXT:    pcmpeqd %xmm1, %xmm2
2720 ; SSE2-NEXT:    movmskps %xmm2, %eax
2721 ; SSE2-NEXT:    testb $1, %al
2722 ; SSE2-NEXT:    jne LBB10_1
2723 ; SSE2-NEXT:  ## %bb.2: ## %else
2724 ; SSE2-NEXT:    testb $2, %al
2725 ; SSE2-NEXT:    jne LBB10_3
2726 ; SSE2-NEXT:  LBB10_4: ## %else2
2727 ; SSE2-NEXT:    testb $4, %al
2728 ; SSE2-NEXT:    jne LBB10_5
2729 ; SSE2-NEXT:  LBB10_6: ## %else6
2730 ; SSE2-NEXT:    testb $8, %al
2731 ; SSE2-NEXT:    jne LBB10_7
2732 ; SSE2-NEXT:  LBB10_8: ## %else10
2733 ; SSE2-NEXT:    retq
2734 ; SSE2-NEXT:  LBB10_1: ## %cond.load
2735 ; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
2736 ; SSE2-NEXT:    movss {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
2737 ; SSE2-NEXT:    addq $4, %rdi
2738 ; SSE2-NEXT:    testb $2, %al
2739 ; SSE2-NEXT:    je LBB10_4
2740 ; SSE2-NEXT:  LBB10_3: ## %cond.load1
2741 ; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
2742 ; SSE2-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
2743 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,0],xmm0[2,3]
2744 ; SSE2-NEXT:    addq $4, %rdi
2745 ; SSE2-NEXT:    movaps %xmm1, %xmm0
2746 ; SSE2-NEXT:    testb $4, %al
2747 ; SSE2-NEXT:    je LBB10_6
2748 ; SSE2-NEXT:  LBB10_5: ## %cond.load5
2749 ; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
2750 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0]
2751 ; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2]
2752 ; SSE2-NEXT:    addq $4, %rdi
2753 ; SSE2-NEXT:    testb $8, %al
2754 ; SSE2-NEXT:    je LBB10_8
2755 ; SSE2-NEXT:  LBB10_7: ## %cond.load9
2756 ; SSE2-NEXT:    movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
2757 ; SSE2-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,3]
2758 ; SSE2-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,0]
2759 ; SSE2-NEXT:    retq
2761 ; SSE42-LABEL: expandload_v4i32_v4i32:
2762 ; SSE42:       ## %bb.0:
2763 ; SSE42-NEXT:    pxor %xmm2, %xmm2
2764 ; SSE42-NEXT:    pcmpeqd %xmm1, %xmm2
2765 ; SSE42-NEXT:    movmskps %xmm2, %eax
2766 ; SSE42-NEXT:    testb $1, %al
2767 ; SSE42-NEXT:    jne LBB10_1
2768 ; SSE42-NEXT:  ## %bb.2: ## %else
2769 ; SSE42-NEXT:    testb $2, %al
2770 ; SSE42-NEXT:    jne LBB10_3
2771 ; SSE42-NEXT:  LBB10_4: ## %else2
2772 ; SSE42-NEXT:    testb $4, %al
2773 ; SSE42-NEXT:    jne LBB10_5
2774 ; SSE42-NEXT:  LBB10_6: ## %else6
2775 ; SSE42-NEXT:    testb $8, %al
2776 ; SSE42-NEXT:    jne LBB10_7
2777 ; SSE42-NEXT:  LBB10_8: ## %else10
2778 ; SSE42-NEXT:    retq
2779 ; SSE42-NEXT:  LBB10_1: ## %cond.load
2780 ; SSE42-NEXT:    pinsrd $0, (%rdi), %xmm0
2781 ; SSE42-NEXT:    addq $4, %rdi
2782 ; SSE42-NEXT:    testb $2, %al
2783 ; SSE42-NEXT:    je LBB10_4
2784 ; SSE42-NEXT:  LBB10_3: ## %cond.load1
2785 ; SSE42-NEXT:    pinsrd $1, (%rdi), %xmm0
2786 ; SSE42-NEXT:    addq $4, %rdi
2787 ; SSE42-NEXT:    testb $4, %al
2788 ; SSE42-NEXT:    je LBB10_6
2789 ; SSE42-NEXT:  LBB10_5: ## %cond.load5
2790 ; SSE42-NEXT:    pinsrd $2, (%rdi), %xmm0
2791 ; SSE42-NEXT:    addq $4, %rdi
2792 ; SSE42-NEXT:    testb $8, %al
2793 ; SSE42-NEXT:    je LBB10_8
2794 ; SSE42-NEXT:  LBB10_7: ## %cond.load9
2795 ; SSE42-NEXT:    pinsrd $3, (%rdi), %xmm0
2796 ; SSE42-NEXT:    retq
2798 ; AVX1OR2-LABEL: expandload_v4i32_v4i32:
2799 ; AVX1OR2:       ## %bb.0:
2800 ; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
2801 ; AVX1OR2-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm1
2802 ; AVX1OR2-NEXT:    vmovmskps %xmm1, %eax
2803 ; AVX1OR2-NEXT:    testb $1, %al
2804 ; AVX1OR2-NEXT:    jne LBB10_1
2805 ; AVX1OR2-NEXT:  ## %bb.2: ## %else
2806 ; AVX1OR2-NEXT:    testb $2, %al
2807 ; AVX1OR2-NEXT:    jne LBB10_3
2808 ; AVX1OR2-NEXT:  LBB10_4: ## %else2
2809 ; AVX1OR2-NEXT:    testb $4, %al
2810 ; AVX1OR2-NEXT:    jne LBB10_5
2811 ; AVX1OR2-NEXT:  LBB10_6: ## %else6
2812 ; AVX1OR2-NEXT:    testb $8, %al
2813 ; AVX1OR2-NEXT:    jne LBB10_7
2814 ; AVX1OR2-NEXT:  LBB10_8: ## %else10
2815 ; AVX1OR2-NEXT:    retq
2816 ; AVX1OR2-NEXT:  LBB10_1: ## %cond.load
2817 ; AVX1OR2-NEXT:    vpinsrd $0, (%rdi), %xmm0, %xmm0
2818 ; AVX1OR2-NEXT:    addq $4, %rdi
2819 ; AVX1OR2-NEXT:    testb $2, %al
2820 ; AVX1OR2-NEXT:    je LBB10_4
2821 ; AVX1OR2-NEXT:  LBB10_3: ## %cond.load1
2822 ; AVX1OR2-NEXT:    vpinsrd $1, (%rdi), %xmm0, %xmm0
2823 ; AVX1OR2-NEXT:    addq $4, %rdi
2824 ; AVX1OR2-NEXT:    testb $4, %al
2825 ; AVX1OR2-NEXT:    je LBB10_6
2826 ; AVX1OR2-NEXT:  LBB10_5: ## %cond.load5
2827 ; AVX1OR2-NEXT:    vpinsrd $2, (%rdi), %xmm0, %xmm0
2828 ; AVX1OR2-NEXT:    addq $4, %rdi
2829 ; AVX1OR2-NEXT:    testb $8, %al
2830 ; AVX1OR2-NEXT:    je LBB10_8
2831 ; AVX1OR2-NEXT:  LBB10_7: ## %cond.load9
2832 ; AVX1OR2-NEXT:    vpinsrd $3, (%rdi), %xmm0, %xmm0
2833 ; AVX1OR2-NEXT:    retq
2835 ; AVX512F-LABEL: expandload_v4i32_v4i32:
2836 ; AVX512F:       ## %bb.0:
2837 ; AVX512F-NEXT:    ## kill: def $xmm1 killed $xmm1 def $zmm1
2838 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 def $zmm0
2839 ; AVX512F-NEXT:    vptestnmd %zmm1, %zmm1, %k0
2840 ; AVX512F-NEXT:    kshiftlw $12, %k0, %k0
2841 ; AVX512F-NEXT:    kshiftrw $12, %k0, %k1
2842 ; AVX512F-NEXT:    vpexpandd (%rdi), %zmm0 {%k1}
2843 ; AVX512F-NEXT:    ## kill: def $xmm0 killed $xmm0 killed $zmm0
2844 ; AVX512F-NEXT:    vzeroupper
2845 ; AVX512F-NEXT:    retq
2847 ; AVX512VL-LABEL: expandload_v4i32_v4i32:
2848 ; AVX512VL:       ## %bb.0:
2849 ; AVX512VL-NEXT:    vptestnmd %xmm1, %xmm1, %k1
2850 ; AVX512VL-NEXT:    vpexpandd (%rdi), %xmm0 {%k1}
2851 ; AVX512VL-NEXT:    retq
2852   %mask = icmp eq <4 x i32> %trigger, zeroinitializer
2853   %res = call <4 x i32> @llvm.masked.expandload.v4i32(ptr %base, <4 x i1> %mask, <4 x i32> %src0)
2854   ret <4 x i32>%res
2858 ; vXi16
2861 define <8 x i16> @expandload_v8i16_v8i16(ptr %base, <8 x i16> %src0, <8 x i16> %trigger) {
2862 ; SSE-LABEL: expandload_v8i16_v8i16:
2863 ; SSE:       ## %bb.0:
2864 ; SSE-NEXT:    pxor %xmm2, %xmm2
2865 ; SSE-NEXT:    pcmpeqw %xmm1, %xmm2
2866 ; SSE-NEXT:    packsswb %xmm2, %xmm2
2867 ; SSE-NEXT:    pmovmskb %xmm2, %eax
2868 ; SSE-NEXT:    testb $1, %al
2869 ; SSE-NEXT:    jne LBB11_1
2870 ; SSE-NEXT:  ## %bb.2: ## %else
2871 ; SSE-NEXT:    testb $2, %al
2872 ; SSE-NEXT:    jne LBB11_3
2873 ; SSE-NEXT:  LBB11_4: ## %else2
2874 ; SSE-NEXT:    testb $4, %al
2875 ; SSE-NEXT:    jne LBB11_5
2876 ; SSE-NEXT:  LBB11_6: ## %else6
2877 ; SSE-NEXT:    testb $8, %al
2878 ; SSE-NEXT:    jne LBB11_7
2879 ; SSE-NEXT:  LBB11_8: ## %else10
2880 ; SSE-NEXT:    testb $16, %al
2881 ; SSE-NEXT:    jne LBB11_9
2882 ; SSE-NEXT:  LBB11_10: ## %else14
2883 ; SSE-NEXT:    testb $32, %al
2884 ; SSE-NEXT:    jne LBB11_11
2885 ; SSE-NEXT:  LBB11_12: ## %else18
2886 ; SSE-NEXT:    testb $64, %al
2887 ; SSE-NEXT:    jne LBB11_13
2888 ; SSE-NEXT:  LBB11_14: ## %else22
2889 ; SSE-NEXT:    testb $-128, %al
2890 ; SSE-NEXT:    jne LBB11_15
2891 ; SSE-NEXT:  LBB11_16: ## %else26
2892 ; SSE-NEXT:    retq
2893 ; SSE-NEXT:  LBB11_1: ## %cond.load
2894 ; SSE-NEXT:    pinsrw $0, (%rdi), %xmm0
2895 ; SSE-NEXT:    addq $2, %rdi
2896 ; SSE-NEXT:    testb $2, %al
2897 ; SSE-NEXT:    je LBB11_4
2898 ; SSE-NEXT:  LBB11_3: ## %cond.load1
2899 ; SSE-NEXT:    pinsrw $1, (%rdi), %xmm0
2900 ; SSE-NEXT:    addq $2, %rdi
2901 ; SSE-NEXT:    testb $4, %al
2902 ; SSE-NEXT:    je LBB11_6
2903 ; SSE-NEXT:  LBB11_5: ## %cond.load5
2904 ; SSE-NEXT:    pinsrw $2, (%rdi), %xmm0
2905 ; SSE-NEXT:    addq $2, %rdi
2906 ; SSE-NEXT:    testb $8, %al
2907 ; SSE-NEXT:    je LBB11_8
2908 ; SSE-NEXT:  LBB11_7: ## %cond.load9
2909 ; SSE-NEXT:    pinsrw $3, (%rdi), %xmm0
2910 ; SSE-NEXT:    addq $2, %rdi
2911 ; SSE-NEXT:    testb $16, %al
2912 ; SSE-NEXT:    je LBB11_10
2913 ; SSE-NEXT:  LBB11_9: ## %cond.load13
2914 ; SSE-NEXT:    pinsrw $4, (%rdi), %xmm0
2915 ; SSE-NEXT:    addq $2, %rdi
2916 ; SSE-NEXT:    testb $32, %al
2917 ; SSE-NEXT:    je LBB11_12
2918 ; SSE-NEXT:  LBB11_11: ## %cond.load17
2919 ; SSE-NEXT:    pinsrw $5, (%rdi), %xmm0
2920 ; SSE-NEXT:    addq $2, %rdi
2921 ; SSE-NEXT:    testb $64, %al
2922 ; SSE-NEXT:    je LBB11_14
2923 ; SSE-NEXT:  LBB11_13: ## %cond.load21
2924 ; SSE-NEXT:    pinsrw $6, (%rdi), %xmm0
2925 ; SSE-NEXT:    addq $2, %rdi
2926 ; SSE-NEXT:    testb $-128, %al
2927 ; SSE-NEXT:    je LBB11_16
2928 ; SSE-NEXT:  LBB11_15: ## %cond.load25
2929 ; SSE-NEXT:    pinsrw $7, (%rdi), %xmm0
2930 ; SSE-NEXT:    retq
2932 ; AVX1OR2-LABEL: expandload_v8i16_v8i16:
2933 ; AVX1OR2:       ## %bb.0:
2934 ; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
2935 ; AVX1OR2-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm1
2936 ; AVX1OR2-NEXT:    vpacksswb %xmm1, %xmm1, %xmm1
2937 ; AVX1OR2-NEXT:    vpmovmskb %xmm1, %eax
2938 ; AVX1OR2-NEXT:    testb $1, %al
2939 ; AVX1OR2-NEXT:    jne LBB11_1
2940 ; AVX1OR2-NEXT:  ## %bb.2: ## %else
2941 ; AVX1OR2-NEXT:    testb $2, %al
2942 ; AVX1OR2-NEXT:    jne LBB11_3
2943 ; AVX1OR2-NEXT:  LBB11_4: ## %else2
2944 ; AVX1OR2-NEXT:    testb $4, %al
2945 ; AVX1OR2-NEXT:    jne LBB11_5
2946 ; AVX1OR2-NEXT:  LBB11_6: ## %else6
2947 ; AVX1OR2-NEXT:    testb $8, %al
2948 ; AVX1OR2-NEXT:    jne LBB11_7
2949 ; AVX1OR2-NEXT:  LBB11_8: ## %else10
2950 ; AVX1OR2-NEXT:    testb $16, %al
2951 ; AVX1OR2-NEXT:    jne LBB11_9
2952 ; AVX1OR2-NEXT:  LBB11_10: ## %else14
2953 ; AVX1OR2-NEXT:    testb $32, %al
2954 ; AVX1OR2-NEXT:    jne LBB11_11
2955 ; AVX1OR2-NEXT:  LBB11_12: ## %else18
2956 ; AVX1OR2-NEXT:    testb $64, %al
2957 ; AVX1OR2-NEXT:    jne LBB11_13
2958 ; AVX1OR2-NEXT:  LBB11_14: ## %else22
2959 ; AVX1OR2-NEXT:    testb $-128, %al
2960 ; AVX1OR2-NEXT:    jne LBB11_15
2961 ; AVX1OR2-NEXT:  LBB11_16: ## %else26
2962 ; AVX1OR2-NEXT:    retq
2963 ; AVX1OR2-NEXT:  LBB11_1: ## %cond.load
2964 ; AVX1OR2-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm0
2965 ; AVX1OR2-NEXT:    addq $2, %rdi
2966 ; AVX1OR2-NEXT:    testb $2, %al
2967 ; AVX1OR2-NEXT:    je LBB11_4
2968 ; AVX1OR2-NEXT:  LBB11_3: ## %cond.load1
2969 ; AVX1OR2-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm0
2970 ; AVX1OR2-NEXT:    addq $2, %rdi
2971 ; AVX1OR2-NEXT:    testb $4, %al
2972 ; AVX1OR2-NEXT:    je LBB11_6
2973 ; AVX1OR2-NEXT:  LBB11_5: ## %cond.load5
2974 ; AVX1OR2-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm0
2975 ; AVX1OR2-NEXT:    addq $2, %rdi
2976 ; AVX1OR2-NEXT:    testb $8, %al
2977 ; AVX1OR2-NEXT:    je LBB11_8
2978 ; AVX1OR2-NEXT:  LBB11_7: ## %cond.load9
2979 ; AVX1OR2-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm0
2980 ; AVX1OR2-NEXT:    addq $2, %rdi
2981 ; AVX1OR2-NEXT:    testb $16, %al
2982 ; AVX1OR2-NEXT:    je LBB11_10
2983 ; AVX1OR2-NEXT:  LBB11_9: ## %cond.load13
2984 ; AVX1OR2-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm0
2985 ; AVX1OR2-NEXT:    addq $2, %rdi
2986 ; AVX1OR2-NEXT:    testb $32, %al
2987 ; AVX1OR2-NEXT:    je LBB11_12
2988 ; AVX1OR2-NEXT:  LBB11_11: ## %cond.load17
2989 ; AVX1OR2-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm0
2990 ; AVX1OR2-NEXT:    addq $2, %rdi
2991 ; AVX1OR2-NEXT:    testb $64, %al
2992 ; AVX1OR2-NEXT:    je LBB11_14
2993 ; AVX1OR2-NEXT:  LBB11_13: ## %cond.load21
2994 ; AVX1OR2-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm0
2995 ; AVX1OR2-NEXT:    addq $2, %rdi
2996 ; AVX1OR2-NEXT:    testb $-128, %al
2997 ; AVX1OR2-NEXT:    je LBB11_16
2998 ; AVX1OR2-NEXT:  LBB11_15: ## %cond.load25
2999 ; AVX1OR2-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm0
3000 ; AVX1OR2-NEXT:    retq
3002 ; AVX512F-LABEL: expandload_v8i16_v8i16:
3003 ; AVX512F:       ## %bb.0:
3004 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
3005 ; AVX512F-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm1
3006 ; AVX512F-NEXT:    vpmovsxwq %xmm1, %zmm1
3007 ; AVX512F-NEXT:    vptestmq %zmm1, %zmm1, %k0
3008 ; AVX512F-NEXT:    kmovw %k0, %eax
3009 ; AVX512F-NEXT:    testb $1, %al
3010 ; AVX512F-NEXT:    jne LBB11_1
3011 ; AVX512F-NEXT:  ## %bb.2: ## %else
3012 ; AVX512F-NEXT:    testb $2, %al
3013 ; AVX512F-NEXT:    jne LBB11_3
3014 ; AVX512F-NEXT:  LBB11_4: ## %else2
3015 ; AVX512F-NEXT:    testb $4, %al
3016 ; AVX512F-NEXT:    jne LBB11_5
3017 ; AVX512F-NEXT:  LBB11_6: ## %else6
3018 ; AVX512F-NEXT:    testb $8, %al
3019 ; AVX512F-NEXT:    jne LBB11_7
3020 ; AVX512F-NEXT:  LBB11_8: ## %else10
3021 ; AVX512F-NEXT:    testb $16, %al
3022 ; AVX512F-NEXT:    jne LBB11_9
3023 ; AVX512F-NEXT:  LBB11_10: ## %else14
3024 ; AVX512F-NEXT:    testb $32, %al
3025 ; AVX512F-NEXT:    jne LBB11_11
3026 ; AVX512F-NEXT:  LBB11_12: ## %else18
3027 ; AVX512F-NEXT:    testb $64, %al
3028 ; AVX512F-NEXT:    jne LBB11_13
3029 ; AVX512F-NEXT:  LBB11_14: ## %else22
3030 ; AVX512F-NEXT:    testb $-128, %al
3031 ; AVX512F-NEXT:    jne LBB11_15
3032 ; AVX512F-NEXT:  LBB11_16: ## %else26
3033 ; AVX512F-NEXT:    vzeroupper
3034 ; AVX512F-NEXT:    retq
3035 ; AVX512F-NEXT:  LBB11_1: ## %cond.load
3036 ; AVX512F-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm0
3037 ; AVX512F-NEXT:    addq $2, %rdi
3038 ; AVX512F-NEXT:    testb $2, %al
3039 ; AVX512F-NEXT:    je LBB11_4
3040 ; AVX512F-NEXT:  LBB11_3: ## %cond.load1
3041 ; AVX512F-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm0
3042 ; AVX512F-NEXT:    addq $2, %rdi
3043 ; AVX512F-NEXT:    testb $4, %al
3044 ; AVX512F-NEXT:    je LBB11_6
3045 ; AVX512F-NEXT:  LBB11_5: ## %cond.load5
3046 ; AVX512F-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm0
3047 ; AVX512F-NEXT:    addq $2, %rdi
3048 ; AVX512F-NEXT:    testb $8, %al
3049 ; AVX512F-NEXT:    je LBB11_8
3050 ; AVX512F-NEXT:  LBB11_7: ## %cond.load9
3051 ; AVX512F-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm0
3052 ; AVX512F-NEXT:    addq $2, %rdi
3053 ; AVX512F-NEXT:    testb $16, %al
3054 ; AVX512F-NEXT:    je LBB11_10
3055 ; AVX512F-NEXT:  LBB11_9: ## %cond.load13
3056 ; AVX512F-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm0
3057 ; AVX512F-NEXT:    addq $2, %rdi
3058 ; AVX512F-NEXT:    testb $32, %al
3059 ; AVX512F-NEXT:    je LBB11_12
3060 ; AVX512F-NEXT:  LBB11_11: ## %cond.load17
3061 ; AVX512F-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm0
3062 ; AVX512F-NEXT:    addq $2, %rdi
3063 ; AVX512F-NEXT:    testb $64, %al
3064 ; AVX512F-NEXT:    je LBB11_14
3065 ; AVX512F-NEXT:  LBB11_13: ## %cond.load21
3066 ; AVX512F-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm0
3067 ; AVX512F-NEXT:    addq $2, %rdi
3068 ; AVX512F-NEXT:    testb $-128, %al
3069 ; AVX512F-NEXT:    je LBB11_16
3070 ; AVX512F-NEXT:  LBB11_15: ## %cond.load25
3071 ; AVX512F-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm0
3072 ; AVX512F-NEXT:    vzeroupper
3073 ; AVX512F-NEXT:    retq
3075 ; AVX512VLDQ-LABEL: expandload_v8i16_v8i16:
3076 ; AVX512VLDQ:       ## %bb.0:
3077 ; AVX512VLDQ-NEXT:    vpxor %xmm2, %xmm2, %xmm2
3078 ; AVX512VLDQ-NEXT:    vpcmpeqw %xmm2, %xmm1, %xmm1
3079 ; AVX512VLDQ-NEXT:    vpmovsxwd %xmm1, %ymm1
3080 ; AVX512VLDQ-NEXT:    vpmovd2m %ymm1, %k0
3081 ; AVX512VLDQ-NEXT:    kmovw %k0, %eax
3082 ; AVX512VLDQ-NEXT:    testb $1, %al
3083 ; AVX512VLDQ-NEXT:    jne LBB11_1
3084 ; AVX512VLDQ-NEXT:  ## %bb.2: ## %else
3085 ; AVX512VLDQ-NEXT:    testb $2, %al
3086 ; AVX512VLDQ-NEXT:    jne LBB11_3
3087 ; AVX512VLDQ-NEXT:  LBB11_4: ## %else2
3088 ; AVX512VLDQ-NEXT:    testb $4, %al
3089 ; AVX512VLDQ-NEXT:    jne LBB11_5
3090 ; AVX512VLDQ-NEXT:  LBB11_6: ## %else6
3091 ; AVX512VLDQ-NEXT:    testb $8, %al
3092 ; AVX512VLDQ-NEXT:    jne LBB11_7
3093 ; AVX512VLDQ-NEXT:  LBB11_8: ## %else10
3094 ; AVX512VLDQ-NEXT:    testb $16, %al
3095 ; AVX512VLDQ-NEXT:    jne LBB11_9
3096 ; AVX512VLDQ-NEXT:  LBB11_10: ## %else14
3097 ; AVX512VLDQ-NEXT:    testb $32, %al
3098 ; AVX512VLDQ-NEXT:    jne LBB11_11
3099 ; AVX512VLDQ-NEXT:  LBB11_12: ## %else18
3100 ; AVX512VLDQ-NEXT:    testb $64, %al
3101 ; AVX512VLDQ-NEXT:    jne LBB11_13
3102 ; AVX512VLDQ-NEXT:  LBB11_14: ## %else22
3103 ; AVX512VLDQ-NEXT:    testb $-128, %al
3104 ; AVX512VLDQ-NEXT:    jne LBB11_15
3105 ; AVX512VLDQ-NEXT:  LBB11_16: ## %else26
3106 ; AVX512VLDQ-NEXT:    vzeroupper
3107 ; AVX512VLDQ-NEXT:    retq
3108 ; AVX512VLDQ-NEXT:  LBB11_1: ## %cond.load
3109 ; AVX512VLDQ-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm0
3110 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3111 ; AVX512VLDQ-NEXT:    testb $2, %al
3112 ; AVX512VLDQ-NEXT:    je LBB11_4
3113 ; AVX512VLDQ-NEXT:  LBB11_3: ## %cond.load1
3114 ; AVX512VLDQ-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm0
3115 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3116 ; AVX512VLDQ-NEXT:    testb $4, %al
3117 ; AVX512VLDQ-NEXT:    je LBB11_6
3118 ; AVX512VLDQ-NEXT:  LBB11_5: ## %cond.load5
3119 ; AVX512VLDQ-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm0
3120 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3121 ; AVX512VLDQ-NEXT:    testb $8, %al
3122 ; AVX512VLDQ-NEXT:    je LBB11_8
3123 ; AVX512VLDQ-NEXT:  LBB11_7: ## %cond.load9
3124 ; AVX512VLDQ-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm0
3125 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3126 ; AVX512VLDQ-NEXT:    testb $16, %al
3127 ; AVX512VLDQ-NEXT:    je LBB11_10
3128 ; AVX512VLDQ-NEXT:  LBB11_9: ## %cond.load13
3129 ; AVX512VLDQ-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm0
3130 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3131 ; AVX512VLDQ-NEXT:    testb $32, %al
3132 ; AVX512VLDQ-NEXT:    je LBB11_12
3133 ; AVX512VLDQ-NEXT:  LBB11_11: ## %cond.load17
3134 ; AVX512VLDQ-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm0
3135 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3136 ; AVX512VLDQ-NEXT:    testb $64, %al
3137 ; AVX512VLDQ-NEXT:    je LBB11_14
3138 ; AVX512VLDQ-NEXT:  LBB11_13: ## %cond.load21
3139 ; AVX512VLDQ-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm0
3140 ; AVX512VLDQ-NEXT:    addq $2, %rdi
3141 ; AVX512VLDQ-NEXT:    testb $-128, %al
3142 ; AVX512VLDQ-NEXT:    je LBB11_16
3143 ; AVX512VLDQ-NEXT:  LBB11_15: ## %cond.load25
3144 ; AVX512VLDQ-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm0
3145 ; AVX512VLDQ-NEXT:    vzeroupper
3146 ; AVX512VLDQ-NEXT:    retq
3148 ; AVX512VLBW-LABEL: expandload_v8i16_v8i16:
3149 ; AVX512VLBW:       ## %bb.0:
3150 ; AVX512VLBW-NEXT:    vptestnmw %xmm1, %xmm1, %k0
3151 ; AVX512VLBW-NEXT:    kmovd %k0, %eax
3152 ; AVX512VLBW-NEXT:    testb $1, %al
3153 ; AVX512VLBW-NEXT:    jne LBB11_1
3154 ; AVX512VLBW-NEXT:  ## %bb.2: ## %else
3155 ; AVX512VLBW-NEXT:    testb $2, %al
3156 ; AVX512VLBW-NEXT:    jne LBB11_3
3157 ; AVX512VLBW-NEXT:  LBB11_4: ## %else2
3158 ; AVX512VLBW-NEXT:    testb $4, %al
3159 ; AVX512VLBW-NEXT:    jne LBB11_5
3160 ; AVX512VLBW-NEXT:  LBB11_6: ## %else6
3161 ; AVX512VLBW-NEXT:    testb $8, %al
3162 ; AVX512VLBW-NEXT:    jne LBB11_7
3163 ; AVX512VLBW-NEXT:  LBB11_8: ## %else10
3164 ; AVX512VLBW-NEXT:    testb $16, %al
3165 ; AVX512VLBW-NEXT:    jne LBB11_9
3166 ; AVX512VLBW-NEXT:  LBB11_10: ## %else14
3167 ; AVX512VLBW-NEXT:    testb $32, %al
3168 ; AVX512VLBW-NEXT:    jne LBB11_11
3169 ; AVX512VLBW-NEXT:  LBB11_12: ## %else18
3170 ; AVX512VLBW-NEXT:    testb $64, %al
3171 ; AVX512VLBW-NEXT:    jne LBB11_13
3172 ; AVX512VLBW-NEXT:  LBB11_14: ## %else22
3173 ; AVX512VLBW-NEXT:    testb $-128, %al
3174 ; AVX512VLBW-NEXT:    jne LBB11_15
3175 ; AVX512VLBW-NEXT:  LBB11_16: ## %else26
3176 ; AVX512VLBW-NEXT:    retq
3177 ; AVX512VLBW-NEXT:  LBB11_1: ## %cond.load
3178 ; AVX512VLBW-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm0
3179 ; AVX512VLBW-NEXT:    addq $2, %rdi
3180 ; AVX512VLBW-NEXT:    testb $2, %al
3181 ; AVX512VLBW-NEXT:    je LBB11_4
3182 ; AVX512VLBW-NEXT:  LBB11_3: ## %cond.load1
3183 ; AVX512VLBW-NEXT:    vpinsrw $1, (%rdi), %xmm0, %xmm0
3184 ; AVX512VLBW-NEXT:    addq $2, %rdi
3185 ; AVX512VLBW-NEXT:    testb $4, %al
3186 ; AVX512VLBW-NEXT:    je LBB11_6
3187 ; AVX512VLBW-NEXT:  LBB11_5: ## %cond.load5
3188 ; AVX512VLBW-NEXT:    vpinsrw $2, (%rdi), %xmm0, %xmm0
3189 ; AVX512VLBW-NEXT:    addq $2, %rdi
3190 ; AVX512VLBW-NEXT:    testb $8, %al
3191 ; AVX512VLBW-NEXT:    je LBB11_8
3192 ; AVX512VLBW-NEXT:  LBB11_7: ## %cond.load9
3193 ; AVX512VLBW-NEXT:    vpinsrw $3, (%rdi), %xmm0, %xmm0
3194 ; AVX512VLBW-NEXT:    addq $2, %rdi
3195 ; AVX512VLBW-NEXT:    testb $16, %al
3196 ; AVX512VLBW-NEXT:    je LBB11_10
3197 ; AVX512VLBW-NEXT:  LBB11_9: ## %cond.load13
3198 ; AVX512VLBW-NEXT:    vpinsrw $4, (%rdi), %xmm0, %xmm0
3199 ; AVX512VLBW-NEXT:    addq $2, %rdi
3200 ; AVX512VLBW-NEXT:    testb $32, %al
3201 ; AVX512VLBW-NEXT:    je LBB11_12
3202 ; AVX512VLBW-NEXT:  LBB11_11: ## %cond.load17
3203 ; AVX512VLBW-NEXT:    vpinsrw $5, (%rdi), %xmm0, %xmm0
3204 ; AVX512VLBW-NEXT:    addq $2, %rdi
3205 ; AVX512VLBW-NEXT:    testb $64, %al
3206 ; AVX512VLBW-NEXT:    je LBB11_14
3207 ; AVX512VLBW-NEXT:  LBB11_13: ## %cond.load21
3208 ; AVX512VLBW-NEXT:    vpinsrw $6, (%rdi), %xmm0, %xmm0
3209 ; AVX512VLBW-NEXT:    addq $2, %rdi
3210 ; AVX512VLBW-NEXT:    testb $-128, %al
3211 ; AVX512VLBW-NEXT:    je LBB11_16
3212 ; AVX512VLBW-NEXT:  LBB11_15: ## %cond.load25
3213 ; AVX512VLBW-NEXT:    vpinsrw $7, (%rdi), %xmm0, %xmm0
3214 ; AVX512VLBW-NEXT:    retq
3215   %mask = icmp eq <8 x i16> %trigger, zeroinitializer
3216   %res = call <8 x i16> @llvm.masked.expandload.v8i16(ptr %base, <8 x i1> %mask, <8 x i16> %src0)
3217   ret <8 x i16>%res
3221 ; vXi8
3224 define <16 x i8> @expandload_v16i8_v16i8(ptr %base, <16 x i8> %src0, <16 x i8> %trigger) {
3225 ; SSE2-LABEL: expandload_v16i8_v16i8:
3226 ; SSE2:       ## %bb.0:
3227 ; SSE2-NEXT:    pxor %xmm2, %xmm2
3228 ; SSE2-NEXT:    pcmpeqb %xmm1, %xmm2
3229 ; SSE2-NEXT:    pmovmskb %xmm2, %eax
3230 ; SSE2-NEXT:    testb $1, %al
3231 ; SSE2-NEXT:    jne LBB12_1
3232 ; SSE2-NEXT:  ## %bb.2: ## %else
3233 ; SSE2-NEXT:    testb $2, %al
3234 ; SSE2-NEXT:    jne LBB12_3
3235 ; SSE2-NEXT:  LBB12_4: ## %else2
3236 ; SSE2-NEXT:    testb $4, %al
3237 ; SSE2-NEXT:    jne LBB12_5
3238 ; SSE2-NEXT:  LBB12_6: ## %else6
3239 ; SSE2-NEXT:    testb $8, %al
3240 ; SSE2-NEXT:    jne LBB12_7
3241 ; SSE2-NEXT:  LBB12_8: ## %else10
3242 ; SSE2-NEXT:    testb $16, %al
3243 ; SSE2-NEXT:    jne LBB12_9
3244 ; SSE2-NEXT:  LBB12_10: ## %else14
3245 ; SSE2-NEXT:    testb $32, %al
3246 ; SSE2-NEXT:    jne LBB12_11
3247 ; SSE2-NEXT:  LBB12_12: ## %else18
3248 ; SSE2-NEXT:    testb $64, %al
3249 ; SSE2-NEXT:    jne LBB12_13
3250 ; SSE2-NEXT:  LBB12_14: ## %else22
3251 ; SSE2-NEXT:    testb %al, %al
3252 ; SSE2-NEXT:    js LBB12_15
3253 ; SSE2-NEXT:  LBB12_16: ## %else26
3254 ; SSE2-NEXT:    testl $256, %eax ## imm = 0x100
3255 ; SSE2-NEXT:    jne LBB12_17
3256 ; SSE2-NEXT:  LBB12_18: ## %else30
3257 ; SSE2-NEXT:    testl $512, %eax ## imm = 0x200
3258 ; SSE2-NEXT:    jne LBB12_19
3259 ; SSE2-NEXT:  LBB12_20: ## %else34
3260 ; SSE2-NEXT:    testl $1024, %eax ## imm = 0x400
3261 ; SSE2-NEXT:    jne LBB12_21
3262 ; SSE2-NEXT:  LBB12_22: ## %else38
3263 ; SSE2-NEXT:    testl $2048, %eax ## imm = 0x800
3264 ; SSE2-NEXT:    jne LBB12_23
3265 ; SSE2-NEXT:  LBB12_24: ## %else42
3266 ; SSE2-NEXT:    testl $4096, %eax ## imm = 0x1000
3267 ; SSE2-NEXT:    jne LBB12_25
3268 ; SSE2-NEXT:  LBB12_26: ## %else46
3269 ; SSE2-NEXT:    testl $8192, %eax ## imm = 0x2000
3270 ; SSE2-NEXT:    jne LBB12_27
3271 ; SSE2-NEXT:  LBB12_28: ## %else50
3272 ; SSE2-NEXT:    testl $16384, %eax ## imm = 0x4000
3273 ; SSE2-NEXT:    jne LBB12_29
3274 ; SSE2-NEXT:  LBB12_30: ## %else54
3275 ; SSE2-NEXT:    testl $32768, %eax ## imm = 0x8000
3276 ; SSE2-NEXT:    jne LBB12_31
3277 ; SSE2-NEXT:  LBB12_32: ## %else58
3278 ; SSE2-NEXT:    retq
3279 ; SSE2-NEXT:  LBB12_1: ## %cond.load
3280 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
3281 ; SSE2-NEXT:    pand %xmm1, %xmm0
3282 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3283 ; SSE2-NEXT:    movd %ecx, %xmm2
3284 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3285 ; SSE2-NEXT:    por %xmm1, %xmm0
3286 ; SSE2-NEXT:    incq %rdi
3287 ; SSE2-NEXT:    testb $2, %al
3288 ; SSE2-NEXT:    je LBB12_4
3289 ; SSE2-NEXT:  LBB12_3: ## %cond.load1
3290 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255]
3291 ; SSE2-NEXT:    pand %xmm1, %xmm0
3292 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3293 ; SSE2-NEXT:    movd %ecx, %xmm2
3294 ; SSE2-NEXT:    psllw $8, %xmm2
3295 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3296 ; SSE2-NEXT:    por %xmm1, %xmm0
3297 ; SSE2-NEXT:    incq %rdi
3298 ; SSE2-NEXT:    testb $4, %al
3299 ; SSE2-NEXT:    je LBB12_6
3300 ; SSE2-NEXT:  LBB12_5: ## %cond.load5
3301 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255]
3302 ; SSE2-NEXT:    pand %xmm1, %xmm0
3303 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3304 ; SSE2-NEXT:    movd %ecx, %xmm2
3305 ; SSE2-NEXT:    pslld $16, %xmm2
3306 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3307 ; SSE2-NEXT:    por %xmm1, %xmm0
3308 ; SSE2-NEXT:    incq %rdi
3309 ; SSE2-NEXT:    testb $8, %al
3310 ; SSE2-NEXT:    je LBB12_8
3311 ; SSE2-NEXT:  LBB12_7: ## %cond.load9
3312 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255]
3313 ; SSE2-NEXT:    pand %xmm1, %xmm0
3314 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3315 ; SSE2-NEXT:    movd %ecx, %xmm2
3316 ; SSE2-NEXT:    pslld $24, %xmm2
3317 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3318 ; SSE2-NEXT:    por %xmm1, %xmm0
3319 ; SSE2-NEXT:    incq %rdi
3320 ; SSE2-NEXT:    testb $16, %al
3321 ; SSE2-NEXT:    je LBB12_10
3322 ; SSE2-NEXT:  LBB12_9: ## %cond.load13
3323 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255]
3324 ; SSE2-NEXT:    pand %xmm1, %xmm0
3325 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3326 ; SSE2-NEXT:    movd %ecx, %xmm2
3327 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
3328 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3329 ; SSE2-NEXT:    por %xmm1, %xmm0
3330 ; SSE2-NEXT:    incq %rdi
3331 ; SSE2-NEXT:    testb $32, %al
3332 ; SSE2-NEXT:    je LBB12_12
3333 ; SSE2-NEXT:  LBB12_11: ## %cond.load17
3334 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255]
3335 ; SSE2-NEXT:    pand %xmm1, %xmm0
3336 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3337 ; SSE2-NEXT:    movd %ecx, %xmm2
3338 ; SSE2-NEXT:    psllq $40, %xmm2
3339 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3340 ; SSE2-NEXT:    por %xmm1, %xmm0
3341 ; SSE2-NEXT:    incq %rdi
3342 ; SSE2-NEXT:    testb $64, %al
3343 ; SSE2-NEXT:    je LBB12_14
3344 ; SSE2-NEXT:  LBB12_13: ## %cond.load21
3345 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255]
3346 ; SSE2-NEXT:    pand %xmm1, %xmm0
3347 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3348 ; SSE2-NEXT:    movd %ecx, %xmm2
3349 ; SSE2-NEXT:    psllq $48, %xmm2
3350 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3351 ; SSE2-NEXT:    por %xmm1, %xmm0
3352 ; SSE2-NEXT:    incq %rdi
3353 ; SSE2-NEXT:    testb %al, %al
3354 ; SSE2-NEXT:    jns LBB12_16
3355 ; SSE2-NEXT:  LBB12_15: ## %cond.load25
3356 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255]
3357 ; SSE2-NEXT:    pand %xmm1, %xmm0
3358 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3359 ; SSE2-NEXT:    movd %ecx, %xmm2
3360 ; SSE2-NEXT:    psllq $56, %xmm2
3361 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3362 ; SSE2-NEXT:    por %xmm1, %xmm0
3363 ; SSE2-NEXT:    incq %rdi
3364 ; SSE2-NEXT:    testl $256, %eax ## imm = 0x100
3365 ; SSE2-NEXT:    je LBB12_18
3366 ; SSE2-NEXT:  LBB12_17: ## %cond.load29
3367 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255]
3368 ; SSE2-NEXT:    pand %xmm1, %xmm0
3369 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3370 ; SSE2-NEXT:    movd %ecx, %xmm2
3371 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,1,0,1]
3372 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3373 ; SSE2-NEXT:    por %xmm1, %xmm0
3374 ; SSE2-NEXT:    incq %rdi
3375 ; SSE2-NEXT:    testl $512, %eax ## imm = 0x200
3376 ; SSE2-NEXT:    je LBB12_20
3377 ; SSE2-NEXT:  LBB12_19: ## %cond.load33
3378 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255]
3379 ; SSE2-NEXT:    pand %xmm1, %xmm0
3380 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3381 ; SSE2-NEXT:    movd %ecx, %xmm2
3382 ; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5,6]
3383 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3384 ; SSE2-NEXT:    por %xmm1, %xmm0
3385 ; SSE2-NEXT:    incq %rdi
3386 ; SSE2-NEXT:    testl $1024, %eax ## imm = 0x400
3387 ; SSE2-NEXT:    je LBB12_22
3388 ; SSE2-NEXT:  LBB12_21: ## %cond.load37
3389 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255]
3390 ; SSE2-NEXT:    pand %xmm1, %xmm0
3391 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3392 ; SSE2-NEXT:    movd %ecx, %xmm2
3393 ; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4,5]
3394 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3395 ; SSE2-NEXT:    por %xmm1, %xmm0
3396 ; SSE2-NEXT:    incq %rdi
3397 ; SSE2-NEXT:    testl $2048, %eax ## imm = 0x800
3398 ; SSE2-NEXT:    je LBB12_24
3399 ; SSE2-NEXT:  LBB12_23: ## %cond.load41
3400 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255]
3401 ; SSE2-NEXT:    pand %xmm1, %xmm0
3402 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3403 ; SSE2-NEXT:    movd %ecx, %xmm2
3404 ; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2,3,4]
3405 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3406 ; SSE2-NEXT:    por %xmm1, %xmm0
3407 ; SSE2-NEXT:    incq %rdi
3408 ; SSE2-NEXT:    testl $4096, %eax ## imm = 0x1000
3409 ; SSE2-NEXT:    je LBB12_26
3410 ; SSE2-NEXT:  LBB12_25: ## %cond.load45
3411 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255]
3412 ; SSE2-NEXT:    pand %xmm1, %xmm0
3413 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3414 ; SSE2-NEXT:    movd %ecx, %xmm2
3415 ; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,0,0,0]
3416 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3417 ; SSE2-NEXT:    por %xmm1, %xmm0
3418 ; SSE2-NEXT:    incq %rdi
3419 ; SSE2-NEXT:    testl $8192, %eax ## imm = 0x2000
3420 ; SSE2-NEXT:    je LBB12_28
3421 ; SSE2-NEXT:  LBB12_27: ## %cond.load49
3422 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255]
3423 ; SSE2-NEXT:    pand %xmm1, %xmm0
3424 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3425 ; SSE2-NEXT:    movd %ecx, %xmm2
3426 ; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1,2]
3427 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3428 ; SSE2-NEXT:    por %xmm1, %xmm0
3429 ; SSE2-NEXT:    incq %rdi
3430 ; SSE2-NEXT:    testl $16384, %eax ## imm = 0x4000
3431 ; SSE2-NEXT:    je LBB12_30
3432 ; SSE2-NEXT:  LBB12_29: ## %cond.load53
3433 ; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255]
3434 ; SSE2-NEXT:    pand %xmm1, %xmm0
3435 ; SSE2-NEXT:    movzbl (%rdi), %ecx
3436 ; SSE2-NEXT:    movd %ecx, %xmm2
3437 ; SSE2-NEXT:    pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0,1]
3438 ; SSE2-NEXT:    pandn %xmm2, %xmm1
3439 ; SSE2-NEXT:    por %xmm1, %xmm0
3440 ; SSE2-NEXT:    incq %rdi
3441 ; SSE2-NEXT:    testl $32768, %eax ## imm = 0x8000
3442 ; SSE2-NEXT:    je LBB12_32
3443 ; SSE2-NEXT:  LBB12_31: ## %cond.load57
3444 ; SSE2-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
3445 ; SSE2-NEXT:    movzbl (%rdi), %eax
3446 ; SSE2-NEXT:    movd %eax, %xmm1
3447 ; SSE2-NEXT:    pslldq {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0]
3448 ; SSE2-NEXT:    por %xmm1, %xmm0
3449 ; SSE2-NEXT:    retq
3451 ; SSE42-LABEL: expandload_v16i8_v16i8:
3452 ; SSE42:       ## %bb.0:
3453 ; SSE42-NEXT:    pxor %xmm2, %xmm2
3454 ; SSE42-NEXT:    pcmpeqb %xmm1, %xmm2
3455 ; SSE42-NEXT:    pmovmskb %xmm2, %eax
3456 ; SSE42-NEXT:    testb $1, %al
3457 ; SSE42-NEXT:    jne LBB12_1
3458 ; SSE42-NEXT:  ## %bb.2: ## %else
3459 ; SSE42-NEXT:    testb $2, %al
3460 ; SSE42-NEXT:    jne LBB12_3
3461 ; SSE42-NEXT:  LBB12_4: ## %else2
3462 ; SSE42-NEXT:    testb $4, %al
3463 ; SSE42-NEXT:    jne LBB12_5
3464 ; SSE42-NEXT:  LBB12_6: ## %else6
3465 ; SSE42-NEXT:    testb $8, %al
3466 ; SSE42-NEXT:    jne LBB12_7
3467 ; SSE42-NEXT:  LBB12_8: ## %else10
3468 ; SSE42-NEXT:    testb $16, %al
3469 ; SSE42-NEXT:    jne LBB12_9
3470 ; SSE42-NEXT:  LBB12_10: ## %else14
3471 ; SSE42-NEXT:    testb $32, %al
3472 ; SSE42-NEXT:    jne LBB12_11
3473 ; SSE42-NEXT:  LBB12_12: ## %else18
3474 ; SSE42-NEXT:    testb $64, %al
3475 ; SSE42-NEXT:    jne LBB12_13
3476 ; SSE42-NEXT:  LBB12_14: ## %else22
3477 ; SSE42-NEXT:    testb %al, %al
3478 ; SSE42-NEXT:    js LBB12_15
3479 ; SSE42-NEXT:  LBB12_16: ## %else26
3480 ; SSE42-NEXT:    testl $256, %eax ## imm = 0x100
3481 ; SSE42-NEXT:    jne LBB12_17
3482 ; SSE42-NEXT:  LBB12_18: ## %else30
3483 ; SSE42-NEXT:    testl $512, %eax ## imm = 0x200
3484 ; SSE42-NEXT:    jne LBB12_19
3485 ; SSE42-NEXT:  LBB12_20: ## %else34
3486 ; SSE42-NEXT:    testl $1024, %eax ## imm = 0x400
3487 ; SSE42-NEXT:    jne LBB12_21
3488 ; SSE42-NEXT:  LBB12_22: ## %else38
3489 ; SSE42-NEXT:    testl $2048, %eax ## imm = 0x800
3490 ; SSE42-NEXT:    jne LBB12_23
3491 ; SSE42-NEXT:  LBB12_24: ## %else42
3492 ; SSE42-NEXT:    testl $4096, %eax ## imm = 0x1000
3493 ; SSE42-NEXT:    jne LBB12_25
3494 ; SSE42-NEXT:  LBB12_26: ## %else46
3495 ; SSE42-NEXT:    testl $8192, %eax ## imm = 0x2000
3496 ; SSE42-NEXT:    jne LBB12_27
3497 ; SSE42-NEXT:  LBB12_28: ## %else50
3498 ; SSE42-NEXT:    testl $16384, %eax ## imm = 0x4000
3499 ; SSE42-NEXT:    jne LBB12_29
3500 ; SSE42-NEXT:  LBB12_30: ## %else54
3501 ; SSE42-NEXT:    testl $32768, %eax ## imm = 0x8000
3502 ; SSE42-NEXT:    jne LBB12_31
3503 ; SSE42-NEXT:  LBB12_32: ## %else58
3504 ; SSE42-NEXT:    retq
3505 ; SSE42-NEXT:  LBB12_1: ## %cond.load
3506 ; SSE42-NEXT:    pinsrb $0, (%rdi), %xmm0
3507 ; SSE42-NEXT:    incq %rdi
3508 ; SSE42-NEXT:    testb $2, %al
3509 ; SSE42-NEXT:    je LBB12_4
3510 ; SSE42-NEXT:  LBB12_3: ## %cond.load1
3511 ; SSE42-NEXT:    pinsrb $1, (%rdi), %xmm0
3512 ; SSE42-NEXT:    incq %rdi
3513 ; SSE42-NEXT:    testb $4, %al
3514 ; SSE42-NEXT:    je LBB12_6
3515 ; SSE42-NEXT:  LBB12_5: ## %cond.load5
3516 ; SSE42-NEXT:    pinsrb $2, (%rdi), %xmm0
3517 ; SSE42-NEXT:    incq %rdi
3518 ; SSE42-NEXT:    testb $8, %al
3519 ; SSE42-NEXT:    je LBB12_8
3520 ; SSE42-NEXT:  LBB12_7: ## %cond.load9
3521 ; SSE42-NEXT:    pinsrb $3, (%rdi), %xmm0
3522 ; SSE42-NEXT:    incq %rdi
3523 ; SSE42-NEXT:    testb $16, %al
3524 ; SSE42-NEXT:    je LBB12_10
3525 ; SSE42-NEXT:  LBB12_9: ## %cond.load13
3526 ; SSE42-NEXT:    pinsrb $4, (%rdi), %xmm0
3527 ; SSE42-NEXT:    incq %rdi
3528 ; SSE42-NEXT:    testb $32, %al
3529 ; SSE42-NEXT:    je LBB12_12
3530 ; SSE42-NEXT:  LBB12_11: ## %cond.load17
3531 ; SSE42-NEXT:    pinsrb $5, (%rdi), %xmm0
3532 ; SSE42-NEXT:    incq %rdi
3533 ; SSE42-NEXT:    testb $64, %al
3534 ; SSE42-NEXT:    je LBB12_14
3535 ; SSE42-NEXT:  LBB12_13: ## %cond.load21
3536 ; SSE42-NEXT:    pinsrb $6, (%rdi), %xmm0
3537 ; SSE42-NEXT:    incq %rdi
3538 ; SSE42-NEXT:    testb %al, %al
3539 ; SSE42-NEXT:    jns LBB12_16
3540 ; SSE42-NEXT:  LBB12_15: ## %cond.load25
3541 ; SSE42-NEXT:    pinsrb $7, (%rdi), %xmm0
3542 ; SSE42-NEXT:    incq %rdi
3543 ; SSE42-NEXT:    testl $256, %eax ## imm = 0x100
3544 ; SSE42-NEXT:    je LBB12_18
3545 ; SSE42-NEXT:  LBB12_17: ## %cond.load29
3546 ; SSE42-NEXT:    pinsrb $8, (%rdi), %xmm0
3547 ; SSE42-NEXT:    incq %rdi
3548 ; SSE42-NEXT:    testl $512, %eax ## imm = 0x200
3549 ; SSE42-NEXT:    je LBB12_20
3550 ; SSE42-NEXT:  LBB12_19: ## %cond.load33
3551 ; SSE42-NEXT:    pinsrb $9, (%rdi), %xmm0
3552 ; SSE42-NEXT:    incq %rdi
3553 ; SSE42-NEXT:    testl $1024, %eax ## imm = 0x400
3554 ; SSE42-NEXT:    je LBB12_22
3555 ; SSE42-NEXT:  LBB12_21: ## %cond.load37
3556 ; SSE42-NEXT:    pinsrb $10, (%rdi), %xmm0
3557 ; SSE42-NEXT:    incq %rdi
3558 ; SSE42-NEXT:    testl $2048, %eax ## imm = 0x800
3559 ; SSE42-NEXT:    je LBB12_24
3560 ; SSE42-NEXT:  LBB12_23: ## %cond.load41
3561 ; SSE42-NEXT:    pinsrb $11, (%rdi), %xmm0
3562 ; SSE42-NEXT:    incq %rdi
3563 ; SSE42-NEXT:    testl $4096, %eax ## imm = 0x1000
3564 ; SSE42-NEXT:    je LBB12_26
3565 ; SSE42-NEXT:  LBB12_25: ## %cond.load45
3566 ; SSE42-NEXT:    pinsrb $12, (%rdi), %xmm0
3567 ; SSE42-NEXT:    incq %rdi
3568 ; SSE42-NEXT:    testl $8192, %eax ## imm = 0x2000
3569 ; SSE42-NEXT:    je LBB12_28
3570 ; SSE42-NEXT:  LBB12_27: ## %cond.load49
3571 ; SSE42-NEXT:    pinsrb $13, (%rdi), %xmm0
3572 ; SSE42-NEXT:    incq %rdi
3573 ; SSE42-NEXT:    testl $16384, %eax ## imm = 0x4000
3574 ; SSE42-NEXT:    je LBB12_30
3575 ; SSE42-NEXT:  LBB12_29: ## %cond.load53
3576 ; SSE42-NEXT:    pinsrb $14, (%rdi), %xmm0
3577 ; SSE42-NEXT:    incq %rdi
3578 ; SSE42-NEXT:    testl $32768, %eax ## imm = 0x8000
3579 ; SSE42-NEXT:    je LBB12_32
3580 ; SSE42-NEXT:  LBB12_31: ## %cond.load57
3581 ; SSE42-NEXT:    pinsrb $15, (%rdi), %xmm0
3582 ; SSE42-NEXT:    retq
3584 ; AVX1OR2-LABEL: expandload_v16i8_v16i8:
3585 ; AVX1OR2:       ## %bb.0:
3586 ; AVX1OR2-NEXT:    vpxor %xmm2, %xmm2, %xmm2
3587 ; AVX1OR2-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm1
3588 ; AVX1OR2-NEXT:    vpmovmskb %xmm1, %eax
3589 ; AVX1OR2-NEXT:    testb $1, %al
3590 ; AVX1OR2-NEXT:    jne LBB12_1
3591 ; AVX1OR2-NEXT:  ## %bb.2: ## %else
3592 ; AVX1OR2-NEXT:    testb $2, %al
3593 ; AVX1OR2-NEXT:    jne LBB12_3
3594 ; AVX1OR2-NEXT:  LBB12_4: ## %else2
3595 ; AVX1OR2-NEXT:    testb $4, %al
3596 ; AVX1OR2-NEXT:    jne LBB12_5
3597 ; AVX1OR2-NEXT:  LBB12_6: ## %else6
3598 ; AVX1OR2-NEXT:    testb $8, %al
3599 ; AVX1OR2-NEXT:    jne LBB12_7
3600 ; AVX1OR2-NEXT:  LBB12_8: ## %else10
3601 ; AVX1OR2-NEXT:    testb $16, %al
3602 ; AVX1OR2-NEXT:    jne LBB12_9
3603 ; AVX1OR2-NEXT:  LBB12_10: ## %else14
3604 ; AVX1OR2-NEXT:    testb $32, %al
3605 ; AVX1OR2-NEXT:    jne LBB12_11
3606 ; AVX1OR2-NEXT:  LBB12_12: ## %else18
3607 ; AVX1OR2-NEXT:    testb $64, %al
3608 ; AVX1OR2-NEXT:    jne LBB12_13
3609 ; AVX1OR2-NEXT:  LBB12_14: ## %else22
3610 ; AVX1OR2-NEXT:    testb %al, %al
3611 ; AVX1OR2-NEXT:    js LBB12_15
3612 ; AVX1OR2-NEXT:  LBB12_16: ## %else26
3613 ; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x100
3614 ; AVX1OR2-NEXT:    jne LBB12_17
3615 ; AVX1OR2-NEXT:  LBB12_18: ## %else30
3616 ; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x200
3617 ; AVX1OR2-NEXT:    jne LBB12_19
3618 ; AVX1OR2-NEXT:  LBB12_20: ## %else34
3619 ; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x400
3620 ; AVX1OR2-NEXT:    jne LBB12_21
3621 ; AVX1OR2-NEXT:  LBB12_22: ## %else38
3622 ; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x800
3623 ; AVX1OR2-NEXT:    jne LBB12_23
3624 ; AVX1OR2-NEXT:  LBB12_24: ## %else42
3625 ; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x1000
3626 ; AVX1OR2-NEXT:    jne LBB12_25
3627 ; AVX1OR2-NEXT:  LBB12_26: ## %else46
3628 ; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x2000
3629 ; AVX1OR2-NEXT:    jne LBB12_27
3630 ; AVX1OR2-NEXT:  LBB12_28: ## %else50
3631 ; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x4000
3632 ; AVX1OR2-NEXT:    jne LBB12_29
3633 ; AVX1OR2-NEXT:  LBB12_30: ## %else54
3634 ; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x8000
3635 ; AVX1OR2-NEXT:    jne LBB12_31
3636 ; AVX1OR2-NEXT:  LBB12_32: ## %else58
3637 ; AVX1OR2-NEXT:    retq
3638 ; AVX1OR2-NEXT:  LBB12_1: ## %cond.load
3639 ; AVX1OR2-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm0
3640 ; AVX1OR2-NEXT:    incq %rdi
3641 ; AVX1OR2-NEXT:    testb $2, %al
3642 ; AVX1OR2-NEXT:    je LBB12_4
3643 ; AVX1OR2-NEXT:  LBB12_3: ## %cond.load1
3644 ; AVX1OR2-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm0
3645 ; AVX1OR2-NEXT:    incq %rdi
3646 ; AVX1OR2-NEXT:    testb $4, %al
3647 ; AVX1OR2-NEXT:    je LBB12_6
3648 ; AVX1OR2-NEXT:  LBB12_5: ## %cond.load5
3649 ; AVX1OR2-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm0
3650 ; AVX1OR2-NEXT:    incq %rdi
3651 ; AVX1OR2-NEXT:    testb $8, %al
3652 ; AVX1OR2-NEXT:    je LBB12_8
3653 ; AVX1OR2-NEXT:  LBB12_7: ## %cond.load9
3654 ; AVX1OR2-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm0
3655 ; AVX1OR2-NEXT:    incq %rdi
3656 ; AVX1OR2-NEXT:    testb $16, %al
3657 ; AVX1OR2-NEXT:    je LBB12_10
3658 ; AVX1OR2-NEXT:  LBB12_9: ## %cond.load13
3659 ; AVX1OR2-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm0
3660 ; AVX1OR2-NEXT:    incq %rdi
3661 ; AVX1OR2-NEXT:    testb $32, %al
3662 ; AVX1OR2-NEXT:    je LBB12_12
3663 ; AVX1OR2-NEXT:  LBB12_11: ## %cond.load17
3664 ; AVX1OR2-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm0
3665 ; AVX1OR2-NEXT:    incq %rdi
3666 ; AVX1OR2-NEXT:    testb $64, %al
3667 ; AVX1OR2-NEXT:    je LBB12_14
3668 ; AVX1OR2-NEXT:  LBB12_13: ## %cond.load21
3669 ; AVX1OR2-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm0
3670 ; AVX1OR2-NEXT:    incq %rdi
3671 ; AVX1OR2-NEXT:    testb %al, %al
3672 ; AVX1OR2-NEXT:    jns LBB12_16
3673 ; AVX1OR2-NEXT:  LBB12_15: ## %cond.load25
3674 ; AVX1OR2-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm0
3675 ; AVX1OR2-NEXT:    incq %rdi
3676 ; AVX1OR2-NEXT:    testl $256, %eax ## imm = 0x100
3677 ; AVX1OR2-NEXT:    je LBB12_18
3678 ; AVX1OR2-NEXT:  LBB12_17: ## %cond.load29
3679 ; AVX1OR2-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm0
3680 ; AVX1OR2-NEXT:    incq %rdi
3681 ; AVX1OR2-NEXT:    testl $512, %eax ## imm = 0x200
3682 ; AVX1OR2-NEXT:    je LBB12_20
3683 ; AVX1OR2-NEXT:  LBB12_19: ## %cond.load33
3684 ; AVX1OR2-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm0
3685 ; AVX1OR2-NEXT:    incq %rdi
3686 ; AVX1OR2-NEXT:    testl $1024, %eax ## imm = 0x400
3687 ; AVX1OR2-NEXT:    je LBB12_22
3688 ; AVX1OR2-NEXT:  LBB12_21: ## %cond.load37
3689 ; AVX1OR2-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm0
3690 ; AVX1OR2-NEXT:    incq %rdi
3691 ; AVX1OR2-NEXT:    testl $2048, %eax ## imm = 0x800
3692 ; AVX1OR2-NEXT:    je LBB12_24
3693 ; AVX1OR2-NEXT:  LBB12_23: ## %cond.load41
3694 ; AVX1OR2-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm0
3695 ; AVX1OR2-NEXT:    incq %rdi
3696 ; AVX1OR2-NEXT:    testl $4096, %eax ## imm = 0x1000
3697 ; AVX1OR2-NEXT:    je LBB12_26
3698 ; AVX1OR2-NEXT:  LBB12_25: ## %cond.load45
3699 ; AVX1OR2-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm0
3700 ; AVX1OR2-NEXT:    incq %rdi
3701 ; AVX1OR2-NEXT:    testl $8192, %eax ## imm = 0x2000
3702 ; AVX1OR2-NEXT:    je LBB12_28
3703 ; AVX1OR2-NEXT:  LBB12_27: ## %cond.load49
3704 ; AVX1OR2-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm0
3705 ; AVX1OR2-NEXT:    incq %rdi
3706 ; AVX1OR2-NEXT:    testl $16384, %eax ## imm = 0x4000
3707 ; AVX1OR2-NEXT:    je LBB12_30
3708 ; AVX1OR2-NEXT:  LBB12_29: ## %cond.load53
3709 ; AVX1OR2-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm0
3710 ; AVX1OR2-NEXT:    incq %rdi
3711 ; AVX1OR2-NEXT:    testl $32768, %eax ## imm = 0x8000
3712 ; AVX1OR2-NEXT:    je LBB12_32
3713 ; AVX1OR2-NEXT:  LBB12_31: ## %cond.load57
3714 ; AVX1OR2-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm0
3715 ; AVX1OR2-NEXT:    retq
3717 ; AVX512F-LABEL: expandload_v16i8_v16i8:
3718 ; AVX512F:       ## %bb.0:
3719 ; AVX512F-NEXT:    vpxor %xmm2, %xmm2, %xmm2
3720 ; AVX512F-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm1
3721 ; AVX512F-NEXT:    vpmovmskb %xmm1, %eax
3722 ; AVX512F-NEXT:    testb $1, %al
3723 ; AVX512F-NEXT:    jne LBB12_1
3724 ; AVX512F-NEXT:  ## %bb.2: ## %else
3725 ; AVX512F-NEXT:    testb $2, %al
3726 ; AVX512F-NEXT:    jne LBB12_3
3727 ; AVX512F-NEXT:  LBB12_4: ## %else2
3728 ; AVX512F-NEXT:    testb $4, %al
3729 ; AVX512F-NEXT:    jne LBB12_5
3730 ; AVX512F-NEXT:  LBB12_6: ## %else6
3731 ; AVX512F-NEXT:    testb $8, %al
3732 ; AVX512F-NEXT:    jne LBB12_7
3733 ; AVX512F-NEXT:  LBB12_8: ## %else10
3734 ; AVX512F-NEXT:    testb $16, %al
3735 ; AVX512F-NEXT:    jne LBB12_9
3736 ; AVX512F-NEXT:  LBB12_10: ## %else14
3737 ; AVX512F-NEXT:    testb $32, %al
3738 ; AVX512F-NEXT:    jne LBB12_11
3739 ; AVX512F-NEXT:  LBB12_12: ## %else18
3740 ; AVX512F-NEXT:    testb $64, %al
3741 ; AVX512F-NEXT:    jne LBB12_13
3742 ; AVX512F-NEXT:  LBB12_14: ## %else22
3743 ; AVX512F-NEXT:    testb %al, %al
3744 ; AVX512F-NEXT:    js LBB12_15
3745 ; AVX512F-NEXT:  LBB12_16: ## %else26
3746 ; AVX512F-NEXT:    testl $256, %eax ## imm = 0x100
3747 ; AVX512F-NEXT:    jne LBB12_17
3748 ; AVX512F-NEXT:  LBB12_18: ## %else30
3749 ; AVX512F-NEXT:    testl $512, %eax ## imm = 0x200
3750 ; AVX512F-NEXT:    jne LBB12_19
3751 ; AVX512F-NEXT:  LBB12_20: ## %else34
3752 ; AVX512F-NEXT:    testl $1024, %eax ## imm = 0x400
3753 ; AVX512F-NEXT:    jne LBB12_21
3754 ; AVX512F-NEXT:  LBB12_22: ## %else38
3755 ; AVX512F-NEXT:    testl $2048, %eax ## imm = 0x800
3756 ; AVX512F-NEXT:    jne LBB12_23
3757 ; AVX512F-NEXT:  LBB12_24: ## %else42
3758 ; AVX512F-NEXT:    testl $4096, %eax ## imm = 0x1000
3759 ; AVX512F-NEXT:    jne LBB12_25
3760 ; AVX512F-NEXT:  LBB12_26: ## %else46
3761 ; AVX512F-NEXT:    testl $8192, %eax ## imm = 0x2000
3762 ; AVX512F-NEXT:    jne LBB12_27
3763 ; AVX512F-NEXT:  LBB12_28: ## %else50
3764 ; AVX512F-NEXT:    testl $16384, %eax ## imm = 0x4000
3765 ; AVX512F-NEXT:    jne LBB12_29
3766 ; AVX512F-NEXT:  LBB12_30: ## %else54
3767 ; AVX512F-NEXT:    testl $32768, %eax ## imm = 0x8000
3768 ; AVX512F-NEXT:    jne LBB12_31
3769 ; AVX512F-NEXT:  LBB12_32: ## %else58
3770 ; AVX512F-NEXT:    retq
3771 ; AVX512F-NEXT:  LBB12_1: ## %cond.load
3772 ; AVX512F-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm0
3773 ; AVX512F-NEXT:    incq %rdi
3774 ; AVX512F-NEXT:    testb $2, %al
3775 ; AVX512F-NEXT:    je LBB12_4
3776 ; AVX512F-NEXT:  LBB12_3: ## %cond.load1
3777 ; AVX512F-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm0
3778 ; AVX512F-NEXT:    incq %rdi
3779 ; AVX512F-NEXT:    testb $4, %al
3780 ; AVX512F-NEXT:    je LBB12_6
3781 ; AVX512F-NEXT:  LBB12_5: ## %cond.load5
3782 ; AVX512F-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm0
3783 ; AVX512F-NEXT:    incq %rdi
3784 ; AVX512F-NEXT:    testb $8, %al
3785 ; AVX512F-NEXT:    je LBB12_8
3786 ; AVX512F-NEXT:  LBB12_7: ## %cond.load9
3787 ; AVX512F-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm0
3788 ; AVX512F-NEXT:    incq %rdi
3789 ; AVX512F-NEXT:    testb $16, %al
3790 ; AVX512F-NEXT:    je LBB12_10
3791 ; AVX512F-NEXT:  LBB12_9: ## %cond.load13
3792 ; AVX512F-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm0
3793 ; AVX512F-NEXT:    incq %rdi
3794 ; AVX512F-NEXT:    testb $32, %al
3795 ; AVX512F-NEXT:    je LBB12_12
3796 ; AVX512F-NEXT:  LBB12_11: ## %cond.load17
3797 ; AVX512F-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm0
3798 ; AVX512F-NEXT:    incq %rdi
3799 ; AVX512F-NEXT:    testb $64, %al
3800 ; AVX512F-NEXT:    je LBB12_14
3801 ; AVX512F-NEXT:  LBB12_13: ## %cond.load21
3802 ; AVX512F-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm0
3803 ; AVX512F-NEXT:    incq %rdi
3804 ; AVX512F-NEXT:    testb %al, %al
3805 ; AVX512F-NEXT:    jns LBB12_16
3806 ; AVX512F-NEXT:  LBB12_15: ## %cond.load25
3807 ; AVX512F-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm0
3808 ; AVX512F-NEXT:    incq %rdi
3809 ; AVX512F-NEXT:    testl $256, %eax ## imm = 0x100
3810 ; AVX512F-NEXT:    je LBB12_18
3811 ; AVX512F-NEXT:  LBB12_17: ## %cond.load29
3812 ; AVX512F-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm0
3813 ; AVX512F-NEXT:    incq %rdi
3814 ; AVX512F-NEXT:    testl $512, %eax ## imm = 0x200
3815 ; AVX512F-NEXT:    je LBB12_20
3816 ; AVX512F-NEXT:  LBB12_19: ## %cond.load33
3817 ; AVX512F-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm0
3818 ; AVX512F-NEXT:    incq %rdi
3819 ; AVX512F-NEXT:    testl $1024, %eax ## imm = 0x400
3820 ; AVX512F-NEXT:    je LBB12_22
3821 ; AVX512F-NEXT:  LBB12_21: ## %cond.load37
3822 ; AVX512F-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm0
3823 ; AVX512F-NEXT:    incq %rdi
3824 ; AVX512F-NEXT:    testl $2048, %eax ## imm = 0x800
3825 ; AVX512F-NEXT:    je LBB12_24
3826 ; AVX512F-NEXT:  LBB12_23: ## %cond.load41
3827 ; AVX512F-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm0
3828 ; AVX512F-NEXT:    incq %rdi
3829 ; AVX512F-NEXT:    testl $4096, %eax ## imm = 0x1000
3830 ; AVX512F-NEXT:    je LBB12_26
3831 ; AVX512F-NEXT:  LBB12_25: ## %cond.load45
3832 ; AVX512F-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm0
3833 ; AVX512F-NEXT:    incq %rdi
3834 ; AVX512F-NEXT:    testl $8192, %eax ## imm = 0x2000
3835 ; AVX512F-NEXT:    je LBB12_28
3836 ; AVX512F-NEXT:  LBB12_27: ## %cond.load49
3837 ; AVX512F-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm0
3838 ; AVX512F-NEXT:    incq %rdi
3839 ; AVX512F-NEXT:    testl $16384, %eax ## imm = 0x4000
3840 ; AVX512F-NEXT:    je LBB12_30
3841 ; AVX512F-NEXT:  LBB12_29: ## %cond.load53
3842 ; AVX512F-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm0
3843 ; AVX512F-NEXT:    incq %rdi
3844 ; AVX512F-NEXT:    testl $32768, %eax ## imm = 0x8000
3845 ; AVX512F-NEXT:    je LBB12_32
3846 ; AVX512F-NEXT:  LBB12_31: ## %cond.load57
3847 ; AVX512F-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm0
3848 ; AVX512F-NEXT:    retq
3850 ; AVX512VLDQ-LABEL: expandload_v16i8_v16i8:
3851 ; AVX512VLDQ:       ## %bb.0:
3852 ; AVX512VLDQ-NEXT:    vpxor %xmm2, %xmm2, %xmm2
3853 ; AVX512VLDQ-NEXT:    vpcmpeqb %xmm2, %xmm1, %xmm1
3854 ; AVX512VLDQ-NEXT:    vpmovmskb %xmm1, %eax
3855 ; AVX512VLDQ-NEXT:    testb $1, %al
3856 ; AVX512VLDQ-NEXT:    jne LBB12_1
3857 ; AVX512VLDQ-NEXT:  ## %bb.2: ## %else
3858 ; AVX512VLDQ-NEXT:    testb $2, %al
3859 ; AVX512VLDQ-NEXT:    jne LBB12_3
3860 ; AVX512VLDQ-NEXT:  LBB12_4: ## %else2
3861 ; AVX512VLDQ-NEXT:    testb $4, %al
3862 ; AVX512VLDQ-NEXT:    jne LBB12_5
3863 ; AVX512VLDQ-NEXT:  LBB12_6: ## %else6
3864 ; AVX512VLDQ-NEXT:    testb $8, %al
3865 ; AVX512VLDQ-NEXT:    jne LBB12_7
3866 ; AVX512VLDQ-NEXT:  LBB12_8: ## %else10
3867 ; AVX512VLDQ-NEXT:    testb $16, %al
3868 ; AVX512VLDQ-NEXT:    jne LBB12_9
3869 ; AVX512VLDQ-NEXT:  LBB12_10: ## %else14
3870 ; AVX512VLDQ-NEXT:    testb $32, %al
3871 ; AVX512VLDQ-NEXT:    jne LBB12_11
3872 ; AVX512VLDQ-NEXT:  LBB12_12: ## %else18
3873 ; AVX512VLDQ-NEXT:    testb $64, %al
3874 ; AVX512VLDQ-NEXT:    jne LBB12_13
3875 ; AVX512VLDQ-NEXT:  LBB12_14: ## %else22
3876 ; AVX512VLDQ-NEXT:    testb %al, %al
3877 ; AVX512VLDQ-NEXT:    js LBB12_15
3878 ; AVX512VLDQ-NEXT:  LBB12_16: ## %else26
3879 ; AVX512VLDQ-NEXT:    testl $256, %eax ## imm = 0x100
3880 ; AVX512VLDQ-NEXT:    jne LBB12_17
3881 ; AVX512VLDQ-NEXT:  LBB12_18: ## %else30
3882 ; AVX512VLDQ-NEXT:    testl $512, %eax ## imm = 0x200
3883 ; AVX512VLDQ-NEXT:    jne LBB12_19
3884 ; AVX512VLDQ-NEXT:  LBB12_20: ## %else34
3885 ; AVX512VLDQ-NEXT:    testl $1024, %eax ## imm = 0x400
3886 ; AVX512VLDQ-NEXT:    jne LBB12_21
3887 ; AVX512VLDQ-NEXT:  LBB12_22: ## %else38
3888 ; AVX512VLDQ-NEXT:    testl $2048, %eax ## imm = 0x800
3889 ; AVX512VLDQ-NEXT:    jne LBB12_23
3890 ; AVX512VLDQ-NEXT:  LBB12_24: ## %else42
3891 ; AVX512VLDQ-NEXT:    testl $4096, %eax ## imm = 0x1000
3892 ; AVX512VLDQ-NEXT:    jne LBB12_25
3893 ; AVX512VLDQ-NEXT:  LBB12_26: ## %else46
3894 ; AVX512VLDQ-NEXT:    testl $8192, %eax ## imm = 0x2000
3895 ; AVX512VLDQ-NEXT:    jne LBB12_27
3896 ; AVX512VLDQ-NEXT:  LBB12_28: ## %else50
3897 ; AVX512VLDQ-NEXT:    testl $16384, %eax ## imm = 0x4000
3898 ; AVX512VLDQ-NEXT:    jne LBB12_29
3899 ; AVX512VLDQ-NEXT:  LBB12_30: ## %else54
3900 ; AVX512VLDQ-NEXT:    testl $32768, %eax ## imm = 0x8000
3901 ; AVX512VLDQ-NEXT:    jne LBB12_31
3902 ; AVX512VLDQ-NEXT:  LBB12_32: ## %else58
3903 ; AVX512VLDQ-NEXT:    retq
3904 ; AVX512VLDQ-NEXT:  LBB12_1: ## %cond.load
3905 ; AVX512VLDQ-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm0
3906 ; AVX512VLDQ-NEXT:    incq %rdi
3907 ; AVX512VLDQ-NEXT:    testb $2, %al
3908 ; AVX512VLDQ-NEXT:    je LBB12_4
3909 ; AVX512VLDQ-NEXT:  LBB12_3: ## %cond.load1
3910 ; AVX512VLDQ-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm0
3911 ; AVX512VLDQ-NEXT:    incq %rdi
3912 ; AVX512VLDQ-NEXT:    testb $4, %al
3913 ; AVX512VLDQ-NEXT:    je LBB12_6
3914 ; AVX512VLDQ-NEXT:  LBB12_5: ## %cond.load5
3915 ; AVX512VLDQ-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm0
3916 ; AVX512VLDQ-NEXT:    incq %rdi
3917 ; AVX512VLDQ-NEXT:    testb $8, %al
3918 ; AVX512VLDQ-NEXT:    je LBB12_8
3919 ; AVX512VLDQ-NEXT:  LBB12_7: ## %cond.load9
3920 ; AVX512VLDQ-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm0
3921 ; AVX512VLDQ-NEXT:    incq %rdi
3922 ; AVX512VLDQ-NEXT:    testb $16, %al
3923 ; AVX512VLDQ-NEXT:    je LBB12_10
3924 ; AVX512VLDQ-NEXT:  LBB12_9: ## %cond.load13
3925 ; AVX512VLDQ-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm0
3926 ; AVX512VLDQ-NEXT:    incq %rdi
3927 ; AVX512VLDQ-NEXT:    testb $32, %al
3928 ; AVX512VLDQ-NEXT:    je LBB12_12
3929 ; AVX512VLDQ-NEXT:  LBB12_11: ## %cond.load17
3930 ; AVX512VLDQ-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm0
3931 ; AVX512VLDQ-NEXT:    incq %rdi
3932 ; AVX512VLDQ-NEXT:    testb $64, %al
3933 ; AVX512VLDQ-NEXT:    je LBB12_14
3934 ; AVX512VLDQ-NEXT:  LBB12_13: ## %cond.load21
3935 ; AVX512VLDQ-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm0
3936 ; AVX512VLDQ-NEXT:    incq %rdi
3937 ; AVX512VLDQ-NEXT:    testb %al, %al
3938 ; AVX512VLDQ-NEXT:    jns LBB12_16
3939 ; AVX512VLDQ-NEXT:  LBB12_15: ## %cond.load25
3940 ; AVX512VLDQ-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm0
3941 ; AVX512VLDQ-NEXT:    incq %rdi
3942 ; AVX512VLDQ-NEXT:    testl $256, %eax ## imm = 0x100
3943 ; AVX512VLDQ-NEXT:    je LBB12_18
3944 ; AVX512VLDQ-NEXT:  LBB12_17: ## %cond.load29
3945 ; AVX512VLDQ-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm0
3946 ; AVX512VLDQ-NEXT:    incq %rdi
3947 ; AVX512VLDQ-NEXT:    testl $512, %eax ## imm = 0x200
3948 ; AVX512VLDQ-NEXT:    je LBB12_20
3949 ; AVX512VLDQ-NEXT:  LBB12_19: ## %cond.load33
3950 ; AVX512VLDQ-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm0
3951 ; AVX512VLDQ-NEXT:    incq %rdi
3952 ; AVX512VLDQ-NEXT:    testl $1024, %eax ## imm = 0x400
3953 ; AVX512VLDQ-NEXT:    je LBB12_22
3954 ; AVX512VLDQ-NEXT:  LBB12_21: ## %cond.load37
3955 ; AVX512VLDQ-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm0
3956 ; AVX512VLDQ-NEXT:    incq %rdi
3957 ; AVX512VLDQ-NEXT:    testl $2048, %eax ## imm = 0x800
3958 ; AVX512VLDQ-NEXT:    je LBB12_24
3959 ; AVX512VLDQ-NEXT:  LBB12_23: ## %cond.load41
3960 ; AVX512VLDQ-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm0
3961 ; AVX512VLDQ-NEXT:    incq %rdi
3962 ; AVX512VLDQ-NEXT:    testl $4096, %eax ## imm = 0x1000
3963 ; AVX512VLDQ-NEXT:    je LBB12_26
3964 ; AVX512VLDQ-NEXT:  LBB12_25: ## %cond.load45
3965 ; AVX512VLDQ-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm0
3966 ; AVX512VLDQ-NEXT:    incq %rdi
3967 ; AVX512VLDQ-NEXT:    testl $8192, %eax ## imm = 0x2000
3968 ; AVX512VLDQ-NEXT:    je LBB12_28
3969 ; AVX512VLDQ-NEXT:  LBB12_27: ## %cond.load49
3970 ; AVX512VLDQ-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm0
3971 ; AVX512VLDQ-NEXT:    incq %rdi
3972 ; AVX512VLDQ-NEXT:    testl $16384, %eax ## imm = 0x4000
3973 ; AVX512VLDQ-NEXT:    je LBB12_30
3974 ; AVX512VLDQ-NEXT:  LBB12_29: ## %cond.load53
3975 ; AVX512VLDQ-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm0
3976 ; AVX512VLDQ-NEXT:    incq %rdi
3977 ; AVX512VLDQ-NEXT:    testl $32768, %eax ## imm = 0x8000
3978 ; AVX512VLDQ-NEXT:    je LBB12_32
3979 ; AVX512VLDQ-NEXT:  LBB12_31: ## %cond.load57
3980 ; AVX512VLDQ-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm0
3981 ; AVX512VLDQ-NEXT:    retq
3983 ; AVX512VLBW-LABEL: expandload_v16i8_v16i8:
3984 ; AVX512VLBW:       ## %bb.0:
3985 ; AVX512VLBW-NEXT:    vptestnmb %xmm1, %xmm1, %k0
3986 ; AVX512VLBW-NEXT:    kmovd %k0, %eax
3987 ; AVX512VLBW-NEXT:    testb $1, %al
3988 ; AVX512VLBW-NEXT:    jne LBB12_1
3989 ; AVX512VLBW-NEXT:  ## %bb.2: ## %else
3990 ; AVX512VLBW-NEXT:    testb $2, %al
3991 ; AVX512VLBW-NEXT:    jne LBB12_3
3992 ; AVX512VLBW-NEXT:  LBB12_4: ## %else2
3993 ; AVX512VLBW-NEXT:    testb $4, %al
3994 ; AVX512VLBW-NEXT:    jne LBB12_5
3995 ; AVX512VLBW-NEXT:  LBB12_6: ## %else6
3996 ; AVX512VLBW-NEXT:    testb $8, %al
3997 ; AVX512VLBW-NEXT:    jne LBB12_7
3998 ; AVX512VLBW-NEXT:  LBB12_8: ## %else10
3999 ; AVX512VLBW-NEXT:    testb $16, %al
4000 ; AVX512VLBW-NEXT:    jne LBB12_9
4001 ; AVX512VLBW-NEXT:  LBB12_10: ## %else14
4002 ; AVX512VLBW-NEXT:    testb $32, %al
4003 ; AVX512VLBW-NEXT:    jne LBB12_11
4004 ; AVX512VLBW-NEXT:  LBB12_12: ## %else18
4005 ; AVX512VLBW-NEXT:    testb $64, %al
4006 ; AVX512VLBW-NEXT:    jne LBB12_13
4007 ; AVX512VLBW-NEXT:  LBB12_14: ## %else22
4008 ; AVX512VLBW-NEXT:    testb %al, %al
4009 ; AVX512VLBW-NEXT:    js LBB12_15
4010 ; AVX512VLBW-NEXT:  LBB12_16: ## %else26
4011 ; AVX512VLBW-NEXT:    testl $256, %eax ## imm = 0x100
4012 ; AVX512VLBW-NEXT:    jne LBB12_17
4013 ; AVX512VLBW-NEXT:  LBB12_18: ## %else30
4014 ; AVX512VLBW-NEXT:    testl $512, %eax ## imm = 0x200
4015 ; AVX512VLBW-NEXT:    jne LBB12_19
4016 ; AVX512VLBW-NEXT:  LBB12_20: ## %else34
4017 ; AVX512VLBW-NEXT:    testl $1024, %eax ## imm = 0x400
4018 ; AVX512VLBW-NEXT:    jne LBB12_21
4019 ; AVX512VLBW-NEXT:  LBB12_22: ## %else38
4020 ; AVX512VLBW-NEXT:    testl $2048, %eax ## imm = 0x800
4021 ; AVX512VLBW-NEXT:    jne LBB12_23
4022 ; AVX512VLBW-NEXT:  LBB12_24: ## %else42
4023 ; AVX512VLBW-NEXT:    testl $4096, %eax ## imm = 0x1000
4024 ; AVX512VLBW-NEXT:    jne LBB12_25
4025 ; AVX512VLBW-NEXT:  LBB12_26: ## %else46
4026 ; AVX512VLBW-NEXT:    testl $8192, %eax ## imm = 0x2000
4027 ; AVX512VLBW-NEXT:    jne LBB12_27
4028 ; AVX512VLBW-NEXT:  LBB12_28: ## %else50
4029 ; AVX512VLBW-NEXT:    testl $16384, %eax ## imm = 0x4000
4030 ; AVX512VLBW-NEXT:    jne LBB12_29
4031 ; AVX512VLBW-NEXT:  LBB12_30: ## %else54
4032 ; AVX512VLBW-NEXT:    testl $32768, %eax ## imm = 0x8000
4033 ; AVX512VLBW-NEXT:    jne LBB12_31
4034 ; AVX512VLBW-NEXT:  LBB12_32: ## %else58
4035 ; AVX512VLBW-NEXT:    retq
4036 ; AVX512VLBW-NEXT:  LBB12_1: ## %cond.load
4037 ; AVX512VLBW-NEXT:    vpinsrb $0, (%rdi), %xmm0, %xmm0
4038 ; AVX512VLBW-NEXT:    incq %rdi
4039 ; AVX512VLBW-NEXT:    testb $2, %al
4040 ; AVX512VLBW-NEXT:    je LBB12_4
4041 ; AVX512VLBW-NEXT:  LBB12_3: ## %cond.load1
4042 ; AVX512VLBW-NEXT:    vpinsrb $1, (%rdi), %xmm0, %xmm0
4043 ; AVX512VLBW-NEXT:    incq %rdi
4044 ; AVX512VLBW-NEXT:    testb $4, %al
4045 ; AVX512VLBW-NEXT:    je LBB12_6
4046 ; AVX512VLBW-NEXT:  LBB12_5: ## %cond.load5
4047 ; AVX512VLBW-NEXT:    vpinsrb $2, (%rdi), %xmm0, %xmm0
4048 ; AVX512VLBW-NEXT:    incq %rdi
4049 ; AVX512VLBW-NEXT:    testb $8, %al
4050 ; AVX512VLBW-NEXT:    je LBB12_8
4051 ; AVX512VLBW-NEXT:  LBB12_7: ## %cond.load9
4052 ; AVX512VLBW-NEXT:    vpinsrb $3, (%rdi), %xmm0, %xmm0
4053 ; AVX512VLBW-NEXT:    incq %rdi
4054 ; AVX512VLBW-NEXT:    testb $16, %al
4055 ; AVX512VLBW-NEXT:    je LBB12_10
4056 ; AVX512VLBW-NEXT:  LBB12_9: ## %cond.load13
4057 ; AVX512VLBW-NEXT:    vpinsrb $4, (%rdi), %xmm0, %xmm0
4058 ; AVX512VLBW-NEXT:    incq %rdi
4059 ; AVX512VLBW-NEXT:    testb $32, %al
4060 ; AVX512VLBW-NEXT:    je LBB12_12
4061 ; AVX512VLBW-NEXT:  LBB12_11: ## %cond.load17
4062 ; AVX512VLBW-NEXT:    vpinsrb $5, (%rdi), %xmm0, %xmm0
4063 ; AVX512VLBW-NEXT:    incq %rdi
4064 ; AVX512VLBW-NEXT:    testb $64, %al
4065 ; AVX512VLBW-NEXT:    je LBB12_14
4066 ; AVX512VLBW-NEXT:  LBB12_13: ## %cond.load21
4067 ; AVX512VLBW-NEXT:    vpinsrb $6, (%rdi), %xmm0, %xmm0
4068 ; AVX512VLBW-NEXT:    incq %rdi
4069 ; AVX512VLBW-NEXT:    testb %al, %al
4070 ; AVX512VLBW-NEXT:    jns LBB12_16
4071 ; AVX512VLBW-NEXT:  LBB12_15: ## %cond.load25
4072 ; AVX512VLBW-NEXT:    vpinsrb $7, (%rdi), %xmm0, %xmm0
4073 ; AVX512VLBW-NEXT:    incq %rdi
4074 ; AVX512VLBW-NEXT:    testl $256, %eax ## imm = 0x100
4075 ; AVX512VLBW-NEXT:    je LBB12_18
4076 ; AVX512VLBW-NEXT:  LBB12_17: ## %cond.load29
4077 ; AVX512VLBW-NEXT:    vpinsrb $8, (%rdi), %xmm0, %xmm0
4078 ; AVX512VLBW-NEXT:    incq %rdi
4079 ; AVX512VLBW-NEXT:    testl $512, %eax ## imm = 0x200
4080 ; AVX512VLBW-NEXT:    je LBB12_20
4081 ; AVX512VLBW-NEXT:  LBB12_19: ## %cond.load33
4082 ; AVX512VLBW-NEXT:    vpinsrb $9, (%rdi), %xmm0, %xmm0
4083 ; AVX512VLBW-NEXT:    incq %rdi
4084 ; AVX512VLBW-NEXT:    testl $1024, %eax ## imm = 0x400
4085 ; AVX512VLBW-NEXT:    je LBB12_22
4086 ; AVX512VLBW-NEXT:  LBB12_21: ## %cond.load37
4087 ; AVX512VLBW-NEXT:    vpinsrb $10, (%rdi), %xmm0, %xmm0
4088 ; AVX512VLBW-NEXT:    incq %rdi
4089 ; AVX512VLBW-NEXT:    testl $2048, %eax ## imm = 0x800
4090 ; AVX512VLBW-NEXT:    je LBB12_24
4091 ; AVX512VLBW-NEXT:  LBB12_23: ## %cond.load41
4092 ; AVX512VLBW-NEXT:    vpinsrb $11, (%rdi), %xmm0, %xmm0
4093 ; AVX512VLBW-NEXT:    incq %rdi
4094 ; AVX512VLBW-NEXT:    testl $4096, %eax ## imm = 0x1000
4095 ; AVX512VLBW-NEXT:    je LBB12_26
4096 ; AVX512VLBW-NEXT:  LBB12_25: ## %cond.load45
4097 ; AVX512VLBW-NEXT:    vpinsrb $12, (%rdi), %xmm0, %xmm0
4098 ; AVX512VLBW-NEXT:    incq %rdi
4099 ; AVX512VLBW-NEXT:    testl $8192, %eax ## imm = 0x2000
4100 ; AVX512VLBW-NEXT:    je LBB12_28
4101 ; AVX512VLBW-NEXT:  LBB12_27: ## %cond.load49
4102 ; AVX512VLBW-NEXT:    vpinsrb $13, (%rdi), %xmm0, %xmm0
4103 ; AVX512VLBW-NEXT:    incq %rdi
4104 ; AVX512VLBW-NEXT:    testl $16384, %eax ## imm = 0x4000
4105 ; AVX512VLBW-NEXT:    je LBB12_30
4106 ; AVX512VLBW-NEXT:  LBB12_29: ## %cond.load53
4107 ; AVX512VLBW-NEXT:    vpinsrb $14, (%rdi), %xmm0, %xmm0
4108 ; AVX512VLBW-NEXT:    incq %rdi
4109 ; AVX512VLBW-NEXT:    testl $32768, %eax ## imm = 0x8000
4110 ; AVX512VLBW-NEXT:    je LBB12_32
4111 ; AVX512VLBW-NEXT:  LBB12_31: ## %cond.load57
4112 ; AVX512VLBW-NEXT:    vpinsrb $15, (%rdi), %xmm0, %xmm0
4113 ; AVX512VLBW-NEXT:    retq
4114   %mask = icmp eq <16 x i8> %trigger, zeroinitializer
4115   %res = call <16 x i8> @llvm.masked.expandload.v16i8(ptr %base, <16 x i1> %mask, <16 x i8> %src0)
4116   ret <16 x i8>%res
4119 declare <16 x double> @llvm.masked.expandload.v16f64(ptr, <16 x i1>, <16 x double>)
4120 declare <8 x double> @llvm.masked.expandload.v8f64(ptr, <8 x i1>, <8 x double>)
4121 declare <4 x double> @llvm.masked.expandload.v4f64(ptr, <4 x i1>, <4 x double>)
4122 declare <2 x double> @llvm.masked.expandload.v2f64(ptr, <2 x i1>, <2 x double>)
4123 declare <1 x double> @llvm.masked.expandload.v1f64(ptr, <1 x i1>, <1 x double>)
4125 declare <32 x float> @llvm.masked.expandload.v32f32(ptr, <32 x i1>, <32 x float>)
4126 declare <16 x float> @llvm.masked.expandload.v16f32(ptr, <16 x i1>, <16 x float>)
4127 declare <8 x float> @llvm.masked.expandload.v8f32(ptr, <8 x i1>, <8 x float>)
4128 declare <4 x float> @llvm.masked.expandload.v4f32(ptr, <4 x i1>, <4 x float>)
4129 declare <2 x float> @llvm.masked.expandload.v2f32(ptr, <2 x i1>, <2 x float>)
4131 declare <8 x i64> @llvm.masked.expandload.v8i64(ptr, <8 x i1>, <8 x i64>)
4132 declare <4 x i64> @llvm.masked.expandload.v4i64(ptr, <4 x i1>, <4 x i64>)
4133 declare <2 x i64> @llvm.masked.expandload.v2i64(ptr, <2 x i1>, <2 x i64>)
4134 declare <1 x i64> @llvm.masked.expandload.v1i64(ptr, <1 x i1>, <1 x i64>)
4136 declare <16 x i32> @llvm.masked.expandload.v16i32(ptr, <16 x i1>, <16 x i32>)
4137 declare <8 x i32> @llvm.masked.expandload.v8i32(ptr, <8 x i1>, <8 x i32>)
4138 declare <4 x i32> @llvm.masked.expandload.v4i32(ptr, <4 x i1>, <4 x i32>)
4139 declare <2 x i32> @llvm.masked.expandload.v2i32(ptr, <2 x i1>, <2 x i32>)
4141 declare <32 x i16> @llvm.masked.expandload.v32i16(ptr, <32 x i1>, <32 x i16>)
4142 declare <16 x i16> @llvm.masked.expandload.v16i16(ptr, <16 x i1>, <16 x i16>)
4143 declare <8 x i16> @llvm.masked.expandload.v8i16(ptr, <8 x i1>, <8 x i16>)
4144 declare <4 x i16> @llvm.masked.expandload.v4i16(ptr, <4 x i1>, <4 x i16>)
4146 declare <64 x i8> @llvm.masked.expandload.v64i8(ptr, <64 x i1>, <64 x i8>)
4147 declare <32 x i8> @llvm.masked.expandload.v32i8(ptr, <32 x i1>, <32 x i8>)
4148 declare <16 x i8> @llvm.masked.expandload.v16i8(ptr, <16 x i1>, <16 x i8>)
4149 declare <8 x i8> @llvm.masked.expandload.v8i8(ptr, <8 x i1>, <8 x i8>)