Lines Matching +full:0 +full:x3a

13 ; X86-SSE:       ## %bb.0:
14 ; X86-SSE-NEXT: pinsrd $1, {{[0-9]+}}(%esp), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x22,0x44,0x24,0
15 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
18 ; X86-AVX1: ## %bb.0:
19 ; X86-AVX1-NEXT: vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0x…
20 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
23 ; X86-AVX512: ## %bb.0:
24 …-NEXT: vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0x…
25 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
28 ; X64-SSE: ## %bb.0:
29 ; X64-SSE-NEXT: pinsrd $1, %edi, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x22,0xc7,0x01]
30 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
33 ; X64-AVX1: ## %bb.0:
34 ; X64-AVX1-NEXT: vpinsrd $1, %edi, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc7,0x01]
35 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
38 ; X64-AVX512: ## %bb.0:
39 …vpinsrd $1, %edi, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0xc7,0x01]
40 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
47 ; X86-SSE: ## %bb.0:
48 ; X86-SSE-NEXT: pinsrb $1, {{[0-9]+}}(%esp), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x20,0x44,0x24,0
49 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
52 ; X86-AVX1: ## %bb.0:
53 ; X86-AVX1-NEXT: vpinsrb $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x20,0x…
54 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
57 ; X86-AVX512: ## %bb.0:
58 …-NEXT: vpinsrb $1, {{[0-9]+}}(%esp), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0x…
59 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
62 ; X64-SSE: ## %bb.0:
63 ; X64-SSE-NEXT: pinsrb $1, %edi, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x20,0xc7,0x01]
64 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
67 ; X64-AVX1: ## %bb.0:
68 ; X64-AVX1-NEXT: vpinsrb $1, %edi, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x20,0xc7,0x01]
69 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
72 ; X64-AVX512: ## %bb.0:
73 …vpinsrb $1, %edi, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x20,0xc7,0x01]
74 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
81 ; X86-SSE: ## %bb.0: ## %entry
82 ; X86-SSE-NEXT: movl L_g16$non_lazy_ptr, %eax ## encoding: [0xa1,A,A,A,A]
84 ; X86-SSE-NEXT: pmovzxbq (%eax), %xmm0 ## xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1…
85 ; X86-SSE-NEXT: ## encoding: [0x66,0x0f,0x38,0x32,0x00]
86 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
89 ; X86-AVX1: ## %bb.0: ## %entry
90 ; X86-AVX1-NEXT: movl L_g16$non_lazy_ptr, %eax ## encoding: [0xa1,A,A,A,A]
92 ; X86-AVX1-NEXT: vpmovzxbq (%eax), %xmm0 ## xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem…
93 ; X86-AVX1-NEXT: ## encoding: [0xc4,0xe2,0x79,0x32,0x00]
94 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
97 ; X86-AVX512: ## %bb.0: ## %entry
98 ; X86-AVX512-NEXT: movl L_g16$non_lazy_ptr, %eax ## encoding: [0xa1,A,A,A,A]
100 ; X86-AVX512-NEXT: vpmovzxbq (%eax), %xmm0 ## xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,m…
101 ; X86-AVX512-NEXT: ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x32,0x00]
102 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
105 ; X64-SSE: ## %bb.0: ## %entry
106 ; X64-SSE-NEXT: movq _g16@GOTPCREL(%rip), %rax ## encoding: [0x48,0x8b,0x05,A,A,A,A]
108 ; X64-SSE-NEXT: pmovzxbq (%rax), %xmm0 ## xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem[1…
109 ; X64-SSE-NEXT: ## encoding: [0x66,0x0f,0x38,0x32,0x00]
110 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
113 ; X64-AVX1: ## %bb.0: ## %entry
114 ; X64-AVX1-NEXT: movq _g16@GOTPCREL(%rip), %rax ## encoding: [0x48,0x8b,0x05,A,A,A,A]
116 ; X64-AVX1-NEXT: vpmovzxbq (%rax), %xmm0 ## xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,mem…
117 ; X64-AVX1-NEXT: ## encoding: [0xc4,0xe2,0x79,0x32,0x00]
118 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
121 ; X64-AVX512: ## %bb.0: ## %entry
122 ; X64-AVX512-NEXT: movq _g16@GOTPCREL(%rip), %rax ## encoding: [0x48,0x8b,0x05,A,A,A,A]
124 ; X64-AVX512-NEXT: vpmovzxbq (%rax), %xmm0 ## xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero,m…
125 ; X64-AVX512-NEXT: ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x32,0x00]
126 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
128 %0 = load i16, ptr @g16, align 2 ; <i16> [#uses=1]
129 %1 = insertelement <8 x i16> undef, i16 %0, i32 0 ; <<8 x i16>> [#uses=1]
139 ; SSE: ## %bb.0:
140 ; SSE-NEXT: extractps $3, %xmm0, %eax ## encoding: [0x66,0x0f,0x3a,0x17,0xc0,0x03]
141 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
144 ; AVX1: ## %bb.0:
145 ; AVX1-NEXT: vextractps $3, %xmm0, %eax ## encoding: [0xc4,0xe3,0x79,0x17,0xc0,0x03]
146 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
149 ; AVX512: ## %bb.0:
150 … vextractps $3, %xmm0, %eax ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x17,0xc0,0x03]
151 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
158 ; SSE: ## %bb.0:
159 ; SSE-NEXT: extractps $3, %xmm0, %eax ## encoding: [0x66,0x0f,0x3a,0x17,0xc0,0x03]
160 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
163 ; AVX1: ## %bb.0:
164 ; AVX1-NEXT: vextractps $3, %xmm0, %eax ## encoding: [0xc4,0xe3,0x79,0x17,0xc0,0x03]
165 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
168 ; AVX512: ## %bb.0:
169 … vextractps $3, %xmm0, %eax ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x17,0xc0,0x03]
170 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
183 ; X86-SSE: ## %bb.0:
184 ; X86-SSE-NEXT: pushl %eax ## encoding: [0x50]
185 ; X86-SSE-NEXT: shufps $255, %xmm0, %xmm0 ## encoding: [0x0f,0xc6,0xc0,0xff]
187 ; X86-SSE-NEXT: addss {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 ## encoding: [0xf3,0x0f,0x58,0x05,A,A,A,A]
188 ; X86-SSE-NEXT: ## fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}, kind: FK_Data_4
189 ; X86-SSE-NEXT: movss %xmm0, (%esp) ## encoding: [0xf3,0x0f,0x11,0x04,0x24]
190 ; X86-SSE-NEXT: flds (%esp) ## encoding: [0xd9,0x04,0x24]
191 ; X86-SSE-NEXT: popl %eax ## encoding: [0x58]
192 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
195 ; X86-AVX1: ## %bb.0:
196 ; X86-AVX1-NEXT: pushl %eax ## encoding: [0x50]
197 ; X86-AVX1-NEXT: vshufps $255, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
199 ; X86-AVX1-NEXT: vaddss {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x58,0x05…
200 ; X86-AVX1-NEXT: ## fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}, kind: FK_Data_4
201 ; X86-AVX1-NEXT: vmovss %xmm0, (%esp) ## encoding: [0xc5,0xfa,0x11,0x04,0x24]
202 ; X86-AVX1-NEXT: flds (%esp) ## encoding: [0xd9,0x04,0x24]
203 ; X86-AVX1-NEXT: popl %eax ## encoding: [0x58]
204 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
207 ; X86-AVX512: ## %bb.0:
208 ; X86-AVX512-NEXT: pushl %eax ## encoding: [0x50]
209 … vshufps $255, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
211 …6-AVX512-NEXT: vaddss {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0 ## EVEX TO VEX Compression encodin…
212 ; X86-AVX512-NEXT: ## fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}, kind: FK_Data_4
213 …VX512-NEXT: vmovss %xmm0, (%esp) ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x11,0x04,0x24]
214 ; X86-AVX512-NEXT: flds (%esp) ## encoding: [0xd9,0x04,0x24]
215 ; X86-AVX512-NEXT: popl %eax ## encoding: [0x58]
216 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
219 ; X64-SSE: ## %bb.0:
220 ; X64-SSE-NEXT: shufps $255, %xmm0, %xmm0 ## encoding: [0x0f,0xc6,0xc0,0xff]
222 ; X64-SSE-NEXT: addss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 ## encoding: [0xf3,0x0f,0x58,0x05,A,…
223 ; X64-SSE-NEXT: ## fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}-4, kind: reloc_riprel_4b…
224 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
227 ; X64-AVX1: ## %bb.0:
228 ; X64-AVX1-NEXT: vshufps $255, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
230 ; X64-AVX1-NEXT: vaddss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x5…
231 ; X64-AVX1-NEXT: ## fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}-4, kind: reloc_riprel_4…
232 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
235 ; X64-AVX512: ## %bb.0:
236 … vshufps $255, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
238 …VX512-NEXT: vaddss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 ## EVEX TO VEX Compression enco…
239 ; X64-AVX512-NEXT: ## fixup A - offset: 4, value: {{\.?LCPI[0-9]+_[0-9]+}}-4, kind: reloc_riprel…
240 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
248 ; X86-SSE: ## %bb.0:
249 ; X86-SSE-NEXT: pushl %eax ## encoding: [0x50]
250 ; X86-SSE-NEXT: shufps $255, %xmm0, %xmm0 ## encoding: [0x0f,0xc6,0xc0,0xff]
252 ; X86-SSE-NEXT: movss %xmm0, (%esp) ## encoding: [0xf3,0x0f,0x11,0x04,0x24]
253 ; X86-SSE-NEXT: flds (%esp) ## encoding: [0xd9,0x04,0x24]
254 ; X86-SSE-NEXT: popl %eax ## encoding: [0x58]
255 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
258 ; X86-AVX1: ## %bb.0:
259 ; X86-AVX1-NEXT: pushl %eax ## encoding: [0x50]
260 ; X86-AVX1-NEXT: vshufps $255, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
262 ; X86-AVX1-NEXT: vmovss %xmm0, (%esp) ## encoding: [0xc5,0xfa,0x11,0x04,0x24]
263 ; X86-AVX1-NEXT: flds (%esp) ## encoding: [0xd9,0x04,0x24]
264 ; X86-AVX1-NEXT: popl %eax ## encoding: [0x58]
265 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
268 ; X86-AVX512: ## %bb.0:
269 ; X86-AVX512-NEXT: pushl %eax ## encoding: [0x50]
270 … vshufps $255, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
272 …VX512-NEXT: vmovss %xmm0, (%esp) ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x11,0x04,0x24]
273 ; X86-AVX512-NEXT: flds (%esp) ## encoding: [0xd9,0x04,0x24]
274 ; X86-AVX512-NEXT: popl %eax ## encoding: [0x58]
275 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
278 ; X64-SSE: ## %bb.0:
279 ; X64-SSE-NEXT: shufps $255, %xmm0, %xmm0 ## encoding: [0x0f,0xc6,0xc0,0xff]
281 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
284 ; X64-AVX1: ## %bb.0:
285 ; X64-AVX1-NEXT: vshufps $255, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
287 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
290 ; X64-AVX512: ## %bb.0:
291 … vshufps $255, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
293 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
300 ; SSE: ## %bb.0:
301 ; SSE-NEXT: extractps $3, %xmm0, %eax ## encoding: [0x66,0x0f,0x3a,0x17,0xc0,0x03]
302 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
305 ; AVX1: ## %bb.0:
306 ; AVX1-NEXT: vextractps $3, %xmm0, %eax ## encoding: [0xc4,0xe3,0x79,0x17,0xc0,0x03]
307 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
310 ; AVX512: ## %bb.0:
311 … vextractps $3, %xmm0, %eax ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x17,0xc0,0x03]
312 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
319 ; SSE: ## %bb.0:
320 ; SSE-NEXT: insertps $21, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x15]
321 ; SSE-NEXT: ## xmm0 = zero,xmm1[0],zero,xmm0[3]
322 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
325 ; AVX1: ## %bb.0:
326 ; AVX1-NEXT: vinsertps $21, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x15]
327 ; AVX1-NEXT: ## xmm0 = zero,xmm1[0],zero,xmm0[3]
328 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
331 ; AVX512: ## %bb.0:
332 …ertps $21, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x15]
333 ; AVX512-NEXT: ## xmm0 = zero,xmm1[0],zero,xmm0[3]
334 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
345 ; X86-SSE: ## %bb.0:
346 ; X86-SSE-NEXT: movss {{[0-9]+}}(%esp), %xmm1 ## xmm1 = mem[0],zero,zero,zero
347 ; X86-SSE-NEXT: ## encoding: [0xf3,0x0f,0x10,0x4c,0x24,0x04]
348 ; X86-SSE-NEXT: blendps $1, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x01]
349 ; X86-SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
350 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
353 ; X86-AVX1: ## %bb.0:
354 ; X86-AVX1-NEXT: vmovss {{[0-9]+}}(%esp), %xmm1 ## xmm1 = mem[0],zero,zero,zero
355 ; X86-AVX1-NEXT: ## encoding: [0xc5,0xfa,0x10,0x4c,0x24,0x04]
356 ; X86-AVX1-NEXT: vblendps $1, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x01]
357 ; X86-AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
358 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
361 ; X86-AVX512: ## %bb.0:
362 ; X86-AVX512-NEXT: vmovss {{[0-9]+}}(%esp), %xmm1 ## xmm1 = mem[0],zero,zero,zero
363 ; X86-AVX512-NEXT: ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x4c,0x24,0x04]
364 ; X86-AVX512-NEXT: vblendps $1, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x01]
365 ; X86-AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
366 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
369 ; X64-SSE: ## %bb.0:
370 ; X64-SSE-NEXT: blendps $1, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x01]
371 ; X64-SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
372 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
375 ; X64-AVX: ## %bb.0:
376 ; X64-AVX-NEXT: vblendps $1, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x01]
377 ; X64-AVX-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
378 ; X64-AVX-NEXT: retq ## encoding: [0xc3]
379 %tmp1 = insertelement <4 x float> %t1, float %t2, i32 0
388 ; X86-SSE: ## %bb.0:
389 ; X86-SSE-NEXT: movss {{[0-9]+}}(%esp), %xmm1 ## xmm1 = mem[0],zero,zero,zero
390 ; X86-SSE-NEXT: ## encoding: [0xf3,0x0f,0x10,0x4c,0x24,0x04]
391 ; X86-SSE-NEXT: movss %xmm1, %xmm0 ## encoding: [0xf3,0x0f,0x10,0xc1]
392 ; X86-SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
393 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
396 ; X86-AVX1: ## %bb.0:
397 ; X86-AVX1-NEXT: vmovss {{[0-9]+}}(%esp), %xmm1 ## xmm1 = mem[0],zero,zero,zero
398 ; X86-AVX1-NEXT: ## encoding: [0xc5,0xfa,0x10,0x4c,0x24,0x04]
399 ; X86-AVX1-NEXT: vmovss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x10,0xc1]
400 ; X86-AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
401 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
404 ; X86-AVX512: ## %bb.0:
405 ; X86-AVX512-NEXT: vmovss {{[0-9]+}}(%esp), %xmm1 ## xmm1 = mem[0],zero,zero,zero
406 ; X86-AVX512-NEXT: ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x4c,0x24,0x04]
407 …X512-NEXT: vmovss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0xc1]
408 ; X86-AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
409 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
412 ; X64-SSE: ## %bb.0:
413 ; X64-SSE-NEXT: movss %xmm1, %xmm0 ## encoding: [0xf3,0x0f,0x10,0xc1]
414 ; X64-SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
415 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
418 ; X64-AVX1: ## %bb.0:
419 ; X64-AVX1-NEXT: vmovss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x10,0xc1]
420 ; X64-AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
421 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
424 ; X64-AVX512: ## %bb.0:
425 …X512-NEXT: vmovss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0xc1]
426 ; X64-AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
427 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
428 %tmp1 = insertelement <4 x float> %t1, float %t2, i32 0
436 ; SSE: ## %bb.0:
437 ; SSE-NEXT: blendps $1, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x01]
438 ; SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
439 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
442 ; AVX: ## %bb.0:
443 ; AVX-NEXT: vblendps $1, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x01]
444 ; AVX-NEXT: ## xmm0 = xmm1[0],xmm0[1,2,3]
445 ; AVX-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
446 %tmp2 = extractelement <4 x float> %t2, i32 0
447 %tmp1 = insertelement <4 x float> %t1, float %tmp2, i32 0
453 ; SSE: ## %bb.0:
454 ; SSE-NEXT: xorl %eax, %eax ## encoding: [0x31,0xc0]
455 ; SSE-NEXT: ptest %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x38,0x17,0xc1]
456 ; SSE-NEXT: sete %al ## encoding: [0x0f,0x94,0xc0]
457 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
460 ; AVX: ## %bb.0:
461 ; AVX-NEXT: xorl %eax, %eax ## encoding: [0x31,0xc0]
462 ; AVX-NEXT: vptest %xmm1, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x17,0xc1]
463 ; AVX-NEXT: sete %al ## encoding: [0x0f,0x94,0xc0]
464 ; AVX-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
471 ; SSE: ## %bb.0:
472 ; SSE-NEXT: xorl %eax, %eax ## encoding: [0x31,0xc0]
473 ; SSE-NEXT: ptest %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x38,0x17,0xc1]
474 ; SSE-NEXT: setb %al ## encoding: [0x0f,0x92,0xc0]
475 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
478 ; AVX: ## %bb.0:
479 ; AVX-NEXT: xorl %eax, %eax ## encoding: [0x31,0xc0]
480 ; AVX-NEXT: vptest %xmm1, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x17,0xc1]
481 ; AVX-NEXT: setb %al ## encoding: [0x0f,0x92,0xc0]
482 ; AVX-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
489 ; SSE: ## %bb.0:
490 ; SSE-NEXT: xorl %eax, %eax ## encoding: [0x31,0xc0]
491 ; SSE-NEXT: ptest %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x38,0x17,0xc1]
492 ; SSE-NEXT: seta %al ## encoding: [0x0f,0x97,0xc0]
493 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
496 ; AVX: ## %bb.0:
497 ; AVX-NEXT: xorl %eax, %eax ## encoding: [0x31,0xc0]
498 ; AVX-NEXT: vptest %xmm1, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x17,0xc1]
499 ; AVX-NEXT: seta %al ## encoding: [0x0f,0x97,0xc0]
500 ; AVX-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
509 ; This used to compile to insertps $0 + insertps $16. insertps $0 is always
513 ; SSE: ## %bb.0: ## %entry
514 ; SSE-NEXT: movshdup %xmm0, %xmm2 ## encoding: [0xf3,0x0f,0x16,0xd0]
516 ; SSE-NEXT: movshdup %xmm1, %xmm3 ## encoding: [0xf3,0x0f,0x16,0xd9]
518 ; SSE-NEXT: addss %xmm2, %xmm3 ## encoding: [0xf3,0x0f,0x58,0xda]
519 ; SSE-NEXT: addss %xmm1, %xmm0 ## encoding: [0xf3,0x0f,0x58,0xc1]
520 ; SSE-NEXT: insertps $16, %xmm3, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc3,0x10]
521 ; SSE-NEXT: ## xmm0 = xmm0[0],xmm3[0],xmm0[2,3]
522 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
525 ; AVX1: ## %bb.0: ## %entry
526 ; AVX1-NEXT: vmovshdup %xmm0, %xmm2 ## encoding: [0xc5,0xfa,0x16,0xd0]
528 ; AVX1-NEXT: vmovshdup %xmm1, %xmm3 ## encoding: [0xc5,0xfa,0x16,0xd9]
530 ; AVX1-NEXT: vaddss %xmm3, %xmm2, %xmm2 ## encoding: [0xc5,0xea,0x58,0xd3]
531 ; AVX1-NEXT: vaddss %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x58,0xc1]
532 ; AVX1-NEXT: vinsertps $16, %xmm2, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc2,0x10]
533 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm2[0],xmm0[2,3]
534 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
537 ; AVX512: ## %bb.0: ## %entry
538 ; AVX512-NEXT: vmovshdup %xmm0, %xmm2 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x16,0xd0]
540 ; AVX512-NEXT: vmovshdup %xmm1, %xmm3 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x16,0xd9]
542 ; AVX512-NEXT: vaddss %xmm3, %xmm2, %xmm2 ## EVEX TO VEX Compression encoding: [0xc5,0xea,0x58,0
543 ; AVX512-NEXT: vaddss %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x58,0
544 …ertps $16, %xmm2, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc2,0x10]
545 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm2[0],xmm0[2,3]
546 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
548 %tmp7 = extractelement <2 x float> %A, i32 0
550 %tmp3 = extractelement <2 x float> %B, i32 0
554 %tmp11 = insertelement <2 x float> undef, float %add.r, i32 0
561 ; X86-SSE: ## %bb.0: ## %entry
562 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
563 ; X86-SSE-NEXT: movaps (%eax), %xmm1 ## encoding: [0x0f,0x28,0x08]
564 ; X86-SSE-NEXT: insertps $48, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x30]
565 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
566 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
569 ; X86-AVX1: ## %bb.0: ## %entry
570 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
571 ; X86-AVX1-NEXT: vmovaps (%eax), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x08]
572 ; X86-AVX1-NEXT: vinsertps $48, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
573 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
574 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
577 ; X86-AVX512: ## %bb.0: ## %entry
578 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
579 ; X86-AVX512-NEXT: vmovaps (%eax), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
580 …ertps $48, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
581 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
582 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
585 ; X64-SSE: ## %bb.0: ## %entry
586 ; X64-SSE-NEXT: movaps (%rdi), %xmm1 ## encoding: [0x0f,0x28,0x0f]
587 ; X64-SSE-NEXT: insertps $48, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x30]
588 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
589 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
592 ; X64-AVX1: ## %bb.0: ## %entry
593 ; X64-AVX1-NEXT: vmovaps (%rdi), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x0f]
594 ; X64-AVX1-NEXT: vinsertps $48, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
595 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
596 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
599 ; X64-AVX512: ## %bb.0: ## %entry
600 ; X64-AVX512-NEXT: vmovaps (%rdi), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
601 …ertps $48, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
602 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
603 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
605 %0 = load <4 x float>, ptr %pb, align 16
606 %vecinit6 = shufflevector <4 x float> %a, <4 x float> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
612 ; SSE: ## %bb.0: ## %entry
613 ; SSE-NEXT: insertps $96, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x60]
614 ; SSE-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
615 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
618 ; AVX1: ## %bb.0: ## %entry
619 ; AVX1-NEXT: vinsertps $96, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x60]
620 ; AVX1-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
621 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
624 ; AVX512: ## %bb.0: ## %entry
625 …ertps $96, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x60]
626 ; AVX512-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
627 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
629 %vecinit6 = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 5, i32 3>
637 ; X86-SSE: ## %bb.0: ## %entry
638 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
639 ; X86-SSE-NEXT: pshufd $0, (%eax), %xmm1 ## encoding: [0x66,0x0f,0x70,0x08,0x00]
640 ; X86-SSE-NEXT: ## xmm1 = mem[0,0,0,0]
641 ; X86-SSE-NEXT: pblendw $192, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0xc0]
642 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1,2,3,4,5],xmm1[6,7]
643 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
646 ; X86-AVX1: ## %bb.0: ## %entry
647 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
648 ; X86-AVX1-NEXT: vbroadcastss (%eax), %xmm1 ## encoding: [0xc4,0xe2,0x79,0x18,0x08]
649 ; X86-AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
650 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
651 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
654 ; X86-AVX512: ## %bb.0: ## %entry
655 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
656 …NEXT: vbroadcastss (%eax), %xmm1 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0x08]
657 ; X86-AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
658 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
659 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
662 ; X64-SSE: ## %bb.0: ## %entry
663 ; X64-SSE-NEXT: pshufd $0, (%rdi), %xmm1 ## encoding: [0x66,0x0f,0x70,0x0f,0x00]
664 ; X64-SSE-NEXT: ## xmm1 = mem[0,0,0,0]
665 ; X64-SSE-NEXT: pblendw $192, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0xc0]
666 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1,2,3,4,5],xmm1[6,7]
667 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
670 ; X64-AVX1: ## %bb.0: ## %entry
671 ; X64-AVX1-NEXT: vbroadcastss (%rdi), %xmm1 ## encoding: [0xc4,0xe2,0x79,0x18,0x0f]
672 ; X64-AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
673 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
674 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
677 ; X64-AVX512: ## %bb.0: ## %entry
678 …NEXT: vbroadcastss (%rdi), %xmm1 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0x0f]
679 ; X64-AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
680 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
681 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
683 %0 = load <4 x i32>, ptr %pb, align 16
684 %vecinit6 = shufflevector <4 x i32> %a, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
690 ; SSE: ## %bb.0: ## %entry
691 ; SSE-NEXT: pshufd $238, %xmm1, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc9,0xee]
693 ; SSE-NEXT: pblendw $12, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0x0c]
694 ; SSE-NEXT: ## xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6,7]
695 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
698 ; AVX1: ## %bb.0: ## %entry
699 ; AVX1-NEXT: vshufps $238, %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0xc6,0xc9,0xee]
701 ; AVX1-NEXT: vblendps $2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x02]
702 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
703 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
706 ; AVX512: ## %bb.0: ## %entry
707 … vshufps $238, %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0xc6,0xc9,0xee]
709 ; AVX512-NEXT: vblendps $2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x02]
710 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
711 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
713 %vecinit6 = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 7, i32 2, i32 3>
719 ; X86-SSE: ## %bb.0:
720 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
721 ; X86-SSE-NEXT: insertps $16, (%eax), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0x00,0x10]
722 ; X86-SSE-NEXT: ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
723 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
726 ; X86-AVX1: ## %bb.0:
727 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
728 ; X86-AVX1-NEXT: vinsertps $16, (%eax), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0x00,0x10]
729 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
730 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
733 ; X86-AVX512: ## %bb.0:
734 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
735 …rtps $16, (%eax), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0x00,0x10]
736 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
737 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
740 ; X64-SSE: ## %bb.0:
741 ; X64-SSE-NEXT: insertps $16, (%rdi), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0x07,0x10]
742 ; X64-SSE-NEXT: ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
743 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
746 ; X64-AVX1: ## %bb.0:
747 ; X64-AVX1-NEXT: vinsertps $16, (%rdi), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0x07,0x10]
748 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
749 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
752 ; X64-AVX512: ## %bb.0:
753 …rtps $16, (%rdi), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0x07,0x10]
754 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
755 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
757 %2 = insertelement <4 x float> undef, float %1, i32 0
758 %result = shufflevector <4 x float> %a, <4 x float> %2, <4 x i32> <i32 0, i32 4, i32 2, i32 3>
765 ; X86-SSE: ## %bb.0:
766 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
767 ; X86-SSE-NEXT: pinsrd $2, (%eax), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x22,0x00,0x02]
768 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
771 ; X86-AVX1: ## %bb.0:
772 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
773 ; X86-AVX1-NEXT: vpinsrd $2, (%eax), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0x00,0x02]
774 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
777 ; X86-AVX512: ## %bb.0:
778 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
779 …insrd $2, (%eax), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x00,0x02]
780 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
783 ; X64-SSE: ## %bb.0:
784 ; X64-SSE-NEXT: pinsrd $2, (%rdi), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x22,0x07,0x02]
785 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
788 ; X64-AVX1: ## %bb.0:
789 ; X64-AVX1-NEXT: vpinsrd $2, (%rdi), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0x07,0x02]
790 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
793 ; X64-AVX512: ## %bb.0:
794 …insrd $2, (%rdi), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x22,0x07,0x02]
795 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
797 %2 = insertelement <4 x i32> undef, i32 %1, i32 0
798 %result = shufflevector <4 x i32> %a, <4 x i32> %2, <4 x i32> <i32 0, i32 1, i32 4, i32 3>
805 ; SSE: ## %bb.0:
806 ; SSE-NEXT: xorps %xmm1, %xmm1 ## encoding: [0x0f,0x57,0xc9]
807 ; SSE-NEXT: blendps $8, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x08]
808 ; SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
809 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
812 ; AVX1: ## %bb.0:
813 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
814 ; AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
815 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
816 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
819 ; AVX512: ## %bb.0:
820 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
821 ; AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
822 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
823 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
824 %vecext = extractelement <4 x float> %x, i32 0
825 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
836 ; SSE: ## %bb.0:
837 ; SSE-NEXT: movq %xmm0, %xmm0 ## encoding: [0xf3,0x0f,0x7e,0xc0]
838 ; SSE-NEXT: ## xmm0 = xmm0[0],zero
839 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
842 ; AVX1: ## %bb.0:
843 ; AVX1-NEXT: vmovq %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x7e,0xc0]
844 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero
845 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
848 ; AVX512: ## %bb.0:
849 ; AVX512-NEXT: vmovq %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0xc0]
850 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero
851 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
852 %vecext = extractelement <4 x float> %x, i32 0
853 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
863 ; SSE: ## %bb.0:
864 ; SSE-NEXT: insertps $104, %xmm0, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc0,0x68]
865 ; SSE-NEXT: ## xmm0 = xmm0[0,1,1],zero
866 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
869 ; AVX1: ## %bb.0:
870 ; AVX1-NEXT: vinsertps $104, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc0,0x68]
871 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,1],zero
872 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
875 ; AVX512: ## %bb.0:
876 …rtps $104, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc0,0x68]
877 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,1],zero
878 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
879 %vecext = extractelement <4 x float> %x, i32 0
880 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
890 ; SSE: ## %bb.0:
891 ; SSE-NEXT: insertps $232, %xmm0, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc0,0xe8]
892 ; SSE-NEXT: ## xmm0 = xmm0[0,1,3],zero
893 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
896 ; AVX1: ## %bb.0:
897 ; AVX1-NEXT: vinsertps $232, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc0,0xe8]
898 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,3],zero
899 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
902 ; AVX512: ## %bb.0:
903 …rtps $232, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc0,0xe8]
904 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,3],zero
905 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
906 %vecext = extractelement <4 x float> %x, i32 0
907 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
918 ; SSE: ## %bb.0:
919 ; SSE-NEXT: insertps $198, %xmm0, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc0,0xc6]
921 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
924 ; AVX1: ## %bb.0:
925 ; AVX1-NEXT: vinsertps $198, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc0,0xc6]
927 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
930 ; AVX512: ## %bb.0:
931 …rtps $198, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc0,0xc6]
933 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
935 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
944 ; SSE: ## %bb.0:
945 ; SSE-NEXT: insertps $54, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x36]
946 ; SSE-NEXT: ## xmm0 = xmm0[0],zero,zero,xmm1[0]
947 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
950 ; AVX1: ## %bb.0:
951 ; AVX1-NEXT: vinsertps $54, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x36]
952 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero,zero,xmm1[0]
953 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
956 ; AVX512: ## %bb.0:
957 …ertps $54, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x36]
958 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero,zero,xmm1[0]
959 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
960 %vecext = extractelement <4 x float> %x, i32 0
961 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
964 …%vecinit4 = shufflevector <4 x float> %vecinit2, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 2, i…
970 ; SSE: ## %bb.0:
971 ; SSE-NEXT: insertps $54, %xmm0, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc0,0x36]
972 ; SSE-NEXT: ## xmm0 = xmm0[0],zero,zero,xmm0[0]
973 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
976 ; AVX1: ## %bb.0:
977 ; AVX1-NEXT: vinsertps $54, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc0,0x36]
978 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero,zero,xmm0[0]
979 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
982 ; AVX512: ## %bb.0:
983 …ertps $54, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc0,0x36]
984 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero,zero,xmm0[0]
985 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
986 %vecext = extractelement <4 x float> %x, i32 0
987 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
990 …%vecinit4 = shufflevector <4 x float> %vecinit2, <4 x float> %x, <4 x i32> <i32 0, i32 1, i32 2, i…
996 ; SSE: ## %bb.0:
997 ; SSE-NEXT: xorps %xmm2, %xmm2 ## encoding: [0x0f,0x57,0xd2]
998 ; SSE-NEXT: unpcklps %xmm2, %xmm0 ## encoding: [0x0f,0x14,0xc2]
999 ; SSE-NEXT: ## xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1000 ; SSE-NEXT: insertps $176, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xb0]
1001 ; SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[2]
1002 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1005 ; AVX1: ## %bb.0:
1006 ; AVX1-NEXT: vxorps %xmm2, %xmm2, %xmm2 ## encoding: [0xc5,0xe8,0x57,0xd2]
1007 ; AVX1-NEXT: vunpcklps %xmm2, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0x14,0xc2]
1008 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1009 ; AVX1-NEXT: vinsertps $176, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xb0]
1010 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[2]
1011 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1014 ; AVX512: ## %bb.0:
1015 ; AVX512-NEXT: vxorps %xmm2, %xmm2, %xmm2 ## EVEX TO VEX Compression encoding: [0xc5,0xe8,0x57,0
1016 …2-NEXT: vunpcklps %xmm2, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x14,0xc2]
1017 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
1018 …rtps $176, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xb0]
1019 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[2]
1020 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1021 %vecext = extractelement <4 x float> %x, i32 0
1022 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
1024 …%vecinit3 = shufflevector <4 x float> %vecinit1, <4 x float> %x, <4 x i32> <i32 0, i32 1, i32 5, i…
1025 …%vecinit5 = shufflevector <4 x float> %vecinit3, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 2, i…
1031 ; SSE: ## %bb.0:
1032 ; SSE-NEXT: xorps %xmm1, %xmm1 ## encoding: [0x0f,0x57,0xc9]
1033 ; SSE-NEXT: blendps $8, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x08]
1034 ; SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1035 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1038 ; AVX1: ## %bb.0:
1039 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
1040 ; AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1041 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1042 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1045 ; AVX512: ## %bb.0:
1046 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
1047 ; AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1048 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1049 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1050 %vecext = extractelement <4 x i32> %x, i32 0
1051 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1056 %vecinit5 = insertelement <4 x i32> %vecinit4, i32 0, i32 3
1062 ; SSE: ## %bb.0:
1063 ; SSE-NEXT: movq %xmm0, %xmm0 ## encoding: [0xf3,0x0f,0x7e,0xc0]
1064 ; SSE-NEXT: ## xmm0 = xmm0[0],zero
1065 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1068 ; AVX1: ## %bb.0:
1069 ; AVX1-NEXT: vmovq %xmm0, %xmm0 ## encoding: [0xc5,0xfa,0x7e,0xc0]
1070 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero
1071 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1074 ; AVX512: ## %bb.0:
1075 ; AVX512-NEXT: vmovq %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x7e,0xc0]
1076 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero
1077 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1078 %vecext = extractelement <4 x i32> %x, i32 0
1079 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1082 %vecinit3 = insertelement <4 x i32> %vecinit2, i32 0, i32 2
1083 %vecinit4 = insertelement <4 x i32> %vecinit3, i32 0, i32 3
1089 ; SSE: ## %bb.0:
1090 ; SSE-NEXT: pshufd $212, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc8,0xd4]
1091 ; SSE-NEXT: ## xmm1 = xmm0[0,1,1,3]
1092 ; SSE-NEXT: pxor %xmm0, %xmm0 ## encoding: [0x66,0x0f,0xef,0xc0]
1093 ; SSE-NEXT: pblendw $63, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0x3f]
1094 ; SSE-NEXT: ## xmm0 = xmm1[0,1,2,3,4,5],xmm0[6,7]
1095 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1098 ; AVX1: ## %bb.0:
1099 ; AVX1-NEXT: vshufps $212, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xd4]
1100 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,1,3]
1101 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
1102 ; AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1103 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1104 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1107 ; AVX512: ## %bb.0:
1108 … vshufps $212, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xd4]
1109 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,1,3]
1110 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
1111 ; AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1112 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1113 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1114 %vecext = extractelement <4 x i32> %x, i32 0
1115 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1119 %vecinit5 = insertelement <4 x i32> %vecinit4, i32 0, i32 3
1125 ; SSE: ## %bb.0:
1126 ; SSE-NEXT: pshufd $244, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc8,0xf4]
1127 ; SSE-NEXT: ## xmm1 = xmm0[0,1,3,3]
1128 ; SSE-NEXT: pxor %xmm0, %xmm0 ## encoding: [0x66,0x0f,0xef,0xc0]
1129 ; SSE-NEXT: pblendw $63, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0x3f]
1130 ; SSE-NEXT: ## xmm0 = xmm1[0,1,2,3,4,5],xmm0[6,7]
1131 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1134 ; AVX1: ## %bb.0:
1135 ; AVX1-NEXT: vshufps $244, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xf4]
1136 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,3,3]
1137 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
1138 ; AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1139 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1140 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1143 ; AVX512: ## %bb.0:
1144 … vshufps $244, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xf4]
1145 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,3,3]
1146 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
1147 ; AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1148 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1149 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1150 %vecext = extractelement <4 x i32> %x, i32 0
1151 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1156 %vecinit4 = insertelement <4 x i32> %vecinit3, i32 0, i32 3
1162 ; SSE: ## %bb.0:
1163 ; SSE-NEXT: pshufd $255, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc8,0xff]
1165 ; SSE-NEXT: pxor %xmm0, %xmm0 ## encoding: [0x66,0x0f,0xef,0xc0]
1166 ; SSE-NEXT: pblendw $195, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0xc3]
1167 ; SSE-NEXT: ## xmm0 = xmm1[0,1],xmm0[2,3,4,5],xmm1[6,7]
1168 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1171 ; AVX1: ## %bb.0:
1172 ; AVX1-NEXT: vshufps $255, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
1174 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
1175 ; AVX1-NEXT: vblendps $6, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x06]
1176 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[1,2],xmm0[3]
1177 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1180 ; AVX512: ## %bb.0:
1181 … vshufps $255, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0xc6,0xc0,0xff]
1183 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
1184 ; AVX512-NEXT: vblendps $6, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x06]
1185 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[1,2],xmm0[3]
1186 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1188 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1189 %vecinit2 = insertelement <4 x i32> %vecinit, i32 0, i32 1
1190 %vecinit3 = insertelement <4 x i32> %vecinit2, i32 0, i32 2
1197 ; SSE: ## %bb.0:
1198 ; SSE-NEXT: pxor %xmm2, %xmm2 ## encoding: [0x66,0x0f,0xef,0xd2]
1199 ; SSE-NEXT: pblendw $252, %xmm2, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc2,0xfc]
1200 ; SSE-NEXT: ## xmm0 = xmm0[0,1],xmm2[2,3,4,5,6,7]
1201 ; SSE-NEXT: pshufd $0, %xmm1, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc9,0x00]
1202 ; SSE-NEXT: ## xmm1 = xmm1[0,0,0,0]
1203 ; SSE-NEXT: pblendw $192, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0xc0]
1204 ; SSE-NEXT: ## xmm0 = xmm0[0,1,2,3,4,5],xmm1[6,7]
1205 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1208 ; AVX1: ## %bb.0:
1209 ; AVX1-NEXT: vxorps %xmm2, %xmm2, %xmm2 ## encoding: [0xc5,0xe8,0x57,0xd2]
1210 ; AVX1-NEXT: vblendps $1, %xmm0, %xmm2, %xmm0 ## encoding: [0xc4,0xe3,0x69,0x0c,0xc0,0x01]
1211 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm2[1,2,3]
1212 ; AVX1-NEXT: vshufps $0, %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0xc6,0xc9,0x00]
1213 ; AVX1-NEXT: ## xmm1 = xmm1[0,0,0,0]
1214 ; AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1215 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1216 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1219 ; AVX512: ## %bb.0:
1220 ; AVX512-NEXT: vxorps %xmm2, %xmm2, %xmm2 ## encoding: [0xc5,0xe8,0x57,0xd2]
1221 ; AVX512-NEXT: vblendps $1, %xmm0, %xmm2, %xmm0 ## encoding: [0xc4,0xe3,0x69,0x0c,0xc0,0x01]
1222 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm2[1,2,3]
1223 …-NEXT: vbroadcastss %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0xc9]
1224 ; AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x08]
1225 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1226 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1227 %vecext = extractelement <4 x i32> %x, i32 0
1228 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1229 %vecinit1 = insertelement <4 x i32> %vecinit, i32 0, i32 1
1230 %vecinit2 = insertelement <4 x i32> %vecinit1, i32 0, i32 2
1231 …%vecinit4 = shufflevector <4 x i32> %vecinit2, <4 x i32> %a, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
1237 ; SSE: ## %bb.0:
1238 ; SSE-NEXT: pxor %xmm1, %xmm1 ## encoding: [0x66,0x0f,0xef,0xc9]
1239 ; SSE-NEXT: pshufd $0, %xmm0, %xmm0 ## encoding: [0x66,0x0f,0x70,0xc0,0x00]
1240 ; SSE-NEXT: ## xmm0 = xmm0[0,0,0,0]
1241 ; SSE-NEXT: pblendw $60, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc1,0x3c]
1242 ; SSE-NEXT: ## xmm0 = xmm0[0,1],xmm1[2,3,4,5],xmm0[6,7]
1243 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1246 ; AVX1: ## %bb.0:
1247 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
1248 ; AVX1-NEXT: vshufps $0, %xmm0, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0xc6,0xc0,0x00]
1249 ; AVX1-NEXT: ## xmm0 = xmm0[0,0,0,0]
1250 ; AVX1-NEXT: vblendps $6, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x06]
1251 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[1,2],xmm0[3]
1252 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1255 ; AVX512: ## %bb.0:
1256 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
1257 …-NEXT: vbroadcastss %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0xc0]
1258 ; AVX512-NEXT: vblendps $6, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x06]
1259 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[1,2],xmm0[3]
1260 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1261 %vecext = extractelement <4 x i32> %x, i32 0
1262 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1263 %vecinit1 = insertelement <4 x i32> %vecinit, i32 0, i32 1
1264 %vecinit2 = insertelement <4 x i32> %vecinit1, i32 0, i32 2
1265 …%vecinit4 = shufflevector <4 x i32> %vecinit2, <4 x i32> %x, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
1271 ; SSE: ## %bb.0:
1272 ; SSE-NEXT: pmovzxdq %xmm0, %xmm2 ## encoding: [0x66,0x0f,0x38,0x35,0xd0]
1273 ; SSE-NEXT: ## xmm2 = xmm0[0],zero,xmm0[1],zero
1274 ; SSE-NEXT: pshufd $170, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x70,0xc1,0xaa]
1276 ; SSE-NEXT: pblendw $63, %xmm2, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc2,0x3f]
1277 ; SSE-NEXT: ## xmm0 = xmm2[0,1,2,3,4,5],xmm0[6,7]
1278 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1281 ; AVX1: ## %bb.0:
1282 ; AVX1-NEXT: vpmovzxdq %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x35,0xc0]
1283 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero,xmm0[1],zero
1284 ; AVX1-NEXT: vpshufd $170, %xmm1, %xmm1 ## encoding: [0xc5,0xf9,0x70,0xc9,0xaa]
1286 ; AVX1-NEXT: vpblendw $192, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0e,0xc1,0xc0]
1287 ; AVX1-NEXT: ## xmm0 = xmm0[0,1,2,3,4,5],xmm1[6,7]
1288 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1291 ; AVX512: ## %bb.0:
1292 …512-NEXT: vpmovzxdq %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x35,0xc0]
1293 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero,xmm0[1],zero
1294 …NEXT: vpshufd $170, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0x70,0xc9,0xaa]
1296 ; AVX512-NEXT: vpblendd $8, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x02,0xc1,0x08]
1297 ; AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[3]
1298 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1299 %vecext = extractelement <4 x i32> %x, i32 0
1300 %vecinit = insertelement <4 x i32> undef, i32 %vecext, i32 0
1301 %vecinit1 = insertelement <4 x i32> %vecinit, i32 0, i32 1
1302 …%vecinit3 = shufflevector <4 x i32> %vecinit1, <4 x i32> %x, <4 x i32> <i32 0, i32 1, i32 5, i32 u…
1303 …%vecinit5 = shufflevector <4 x i32> %vecinit3, <4 x i32> %a, <4 x i32> <i32 0, i32 1, i32 2, i32 6>
1310 ; SSE: ## %bb.0:
1311 ; SSE-NEXT: xorps %xmm1, %xmm1 ## encoding: [0x0f,0x57,0xc9]
1312 ; SSE-NEXT: blendps $7, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc8,0x07]
1313 ; SSE-NEXT: ## xmm1 = xmm0[0,1,2],xmm1[3]
1314 ; SSE-NEXT: maxps %xmm1, %xmm0 ## encoding: [0x0f,0x5f,0xc1]
1315 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1318 ; AVX1: ## %bb.0:
1319 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
1320 ; AVX1-NEXT: vblendps $8, %xmm1, %xmm0, %xmm1 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc9,0x08]
1321 ; AVX1-NEXT: ## xmm1 = xmm0[0,1,2],xmm1[3]
1322 ; AVX1-NEXT: vmaxps %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0x5f,0xc1]
1323 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1326 ; AVX512: ## %bb.0:
1327 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
1328 ; AVX512-NEXT: vblendps $8, %xmm1, %xmm0, %xmm1 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc9,0x08]
1329 ; AVX512-NEXT: ## xmm1 = xmm0[0,1,2],xmm1[3]
1330 ; AVX512-NEXT: vmaxps %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x5f,0
1331 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1332 %vecext = extractelement <4 x float> %x, i32 0
1333 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
1346 ; SSE: ## %bb.0:
1347 ; SSE-NEXT: psllw $15, %xmm0 ## encoding: [0x66,0x0f,0x71,0xf0,0x0f]
1348 ; SSE-NEXT: psraw $15, %xmm0 ## encoding: [0x66,0x0f,0x71,0xe0,0x0f]
1349 ; SSE-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ## encoding: [0x66,0x0f,0x38,0x10,0xd1]
1350 ; SSE-NEXT: movdqa %xmm2, %xmm0 ## encoding: [0x66,0x0f,0x6f,0xc2]
1351 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1354 ; AVX1: ## %bb.0:
1355 ; AVX1-NEXT: vpsllw $15, %xmm0, %xmm0 ## encoding: [0xc5,0xf9,0x71,0xf0,0x0f]
1356 ; AVX1-NEXT: vpsraw $15, %xmm0, %xmm0 ## encoding: [0xc5,0xf9,0x71,0xe0,0x0f]
1357 ; AVX1-NEXT: vpblendvb %xmm0, %xmm1, %xmm2, %xmm0 ## encoding: [0xc4,0xe3,0x69,0x4c,0xc1,0x00]
1358 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1361 ; AVX512: ## %bb.0:
1362 …2-NEXT: vpsllw $15, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf9,0x71,0xf0,0x0f]
1363 ; AVX512-NEXT: vpmovw2m %xmm0, %k1 ## encoding: [0x62,0xf2,0xfe,0x08,0x29,0xc8]
1364 ; AVX512-NEXT: vpblendmw %xmm1, %xmm2, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x09,0x66,0xc1]
1365 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1373 ; X86-SSE: ## %bb.0:
1374 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1375 ; X86-SSE-NEXT: movaps (%eax), %xmm1 ## encoding: [0x0f,0x28,0x08]
1376 ; X86-SSE-NEXT: insertps $48, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x30]
1377 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1378 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1381 ; X86-AVX1: ## %bb.0:
1382 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1383 ; X86-AVX1-NEXT: vmovaps (%eax), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x08]
1384 ; X86-AVX1-NEXT: vinsertps $48, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
1385 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1386 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1389 ; X86-AVX512: ## %bb.0:
1390 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1391 ; X86-AVX512-NEXT: vmovaps (%eax), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
1392 …ertps $48, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
1393 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1394 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1397 ; X64-SSE: ## %bb.0:
1398 ; X64-SSE-NEXT: movaps (%rdi), %xmm1 ## encoding: [0x0f,0x28,0x0f]
1399 ; X64-SSE-NEXT: insertps $48, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x30]
1400 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1401 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1404 ; X64-AVX1: ## %bb.0:
1405 ; X64-AVX1-NEXT: vmovaps (%rdi), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x0f]
1406 ; X64-AVX1-NEXT: vinsertps $48, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
1407 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1408 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1411 ; X64-AVX512: ## %bb.0:
1412 ; X64-AVX512-NEXT: vmovaps (%rdi), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
1413 …ertps $48, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x30]
1414 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1415 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1425 ; X86-SSE: ## %bb.0:
1426 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1427 ; X86-SSE-NEXT: movaps (%eax), %xmm1 ## encoding: [0x0f,0x28,0x08]
1428 ; X86-SSE-NEXT: insertps $96, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x60]
1429 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
1430 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1433 ; X86-AVX1: ## %bb.0:
1434 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1435 ; X86-AVX1-NEXT: vmovaps (%eax), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x08]
1436 ; X86-AVX1-NEXT: vinsertps $96, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x60]
1437 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
1438 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1441 ; X86-AVX512: ## %bb.0:
1442 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1443 ; X86-AVX512-NEXT: vmovaps (%eax), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
1444 …ertps $96, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x60]
1445 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
1446 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1449 ; X64-SSE: ## %bb.0:
1450 ; X64-SSE-NEXT: movaps (%rdi), %xmm1 ## encoding: [0x0f,0x28,0x0f]
1451 ; X64-SSE-NEXT: insertps $96, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x60]
1452 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
1453 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1456 ; X64-AVX1: ## %bb.0:
1457 ; X64-AVX1-NEXT: vmovaps (%rdi), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x0f]
1458 ; X64-AVX1-NEXT: vinsertps $96, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x60]
1459 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
1460 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1463 ; X64-AVX512: ## %bb.0:
1464 ; X64-AVX512-NEXT: vmovaps (%rdi), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
1465 …ertps $96, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x60]
1466 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1],xmm1[1],xmm0[3]
1467 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1476 ; X86-SSE: ## %bb.0:
1477 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1478 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x08]
1479 ; X86-SSE-NEXT: shll $4, %ecx ## encoding: [0xc1,0xe1,0x04]
1480 ; X86-SSE-NEXT: movaps (%eax,%ecx), %xmm1 ## encoding: [0x0f,0x28,0x0c,0x08]
1481 ; X86-SSE-NEXT: insertps $192, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xc0]
1483 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1486 ; X86-AVX1: ## %bb.0:
1487 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1488 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x08]
1489 ; X86-AVX1-NEXT: shll $4, %ecx ## encoding: [0xc1,0xe1,0x04]
1490 ; X86-AVX1-NEXT: vmovaps (%eax,%ecx), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x0c,0x08]
1491 ; X86-AVX1-NEXT: vinsertps $192, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xc0]
1493 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1496 ; X86-AVX512: ## %bb.0:
1497 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1498 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x08]
1499 ; X86-AVX512-NEXT: shll $4, %ecx ## encoding: [0xc1,0xe1,0x04]
1500 …NEXT: vmovaps (%eax,%ecx), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x0c,0x08]
1501 …rtps $192, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xc0]
1503 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1506 ; X64-SSE: ## %bb.0:
1507 ; X64-SSE-NEXT: shlq $4, %rsi ## encoding: [0x48,0xc1,0xe6,0x04]
1508 ; X64-SSE-NEXT: movaps (%rdi,%rsi), %xmm1 ## encoding: [0x0f,0x28,0x0c,0x37]
1509 ; X64-SSE-NEXT: insertps $192, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xc0]
1511 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1514 ; X64-AVX1: ## %bb.0:
1515 ; X64-AVX1-NEXT: shlq $4, %rsi ## encoding: [0x48,0xc1,0xe6,0x04]
1516 ; X64-AVX1-NEXT: vmovaps (%rdi,%rsi), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x0c,0x37]
1517 ; X64-AVX1-NEXT: vinsertps $192, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xc0]
1519 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1522 ; X64-AVX512: ## %bb.0:
1523 ; X64-AVX512-NEXT: shlq $4, %rsi ## encoding: [0x48,0xc1,0xe6,0x04]
1524 …NEXT: vmovaps (%rdi,%rsi), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x0c,0x37]
1525 …rtps $192, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xc0]
1527 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1536 ; X86-SSE: ## %bb.0:
1537 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
1538 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x04]
1539 ; X86-SSE-NEXT: insertps $48, (%ecx,%eax,4), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0x04,0x81,0
1540 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1541 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1544 ; X86-AVX1: ## %bb.0:
1545 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
1546 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x04]
1547 …XT: vinsertps $48, (%ecx,%eax,4), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0x04,0x81,0x30]
1548 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1549 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1552 ; X86-AVX512: ## %bb.0:
1553 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
1554 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x04]
1555 …ecx,%eax,4), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0x04,0x81,0x30]
1556 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1557 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1560 ; X64-SSE: ## %bb.0:
1561 ; X64-SSE-NEXT: insertps $48, (%rdi,%rsi,4), %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0x04,0xb7,0
1562 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1563 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1566 ; X64-AVX1: ## %bb.0:
1567 …XT: vinsertps $48, (%rdi,%rsi,4), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0x04,0xb7,0x30]
1568 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1569 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1572 ; X64-AVX512: ## %bb.0:
1573 …rdi,%rsi,4), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0x04,0xb7,0x30]
1574 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1575 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1578 %3 = insertelement <4 x float> undef, float %2, i32 0
1588 ; X86-SSE: ## %bb.0:
1589 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1590 ; X86-SSE-NEXT: movups (%eax), %xmm1 ## encoding: [0x0f,0x10,0x08]
1591 ; X86-SSE-NEXT: insertps $48, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x30]
1592 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1593 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1596 ; X86-AVX1: ## %bb.0:
1597 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1598 ; X86-AVX1-NEXT: vinsertps $48, (%eax), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0x00,0x30]
1599 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1600 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1603 ; X86-AVX512: ## %bb.0:
1604 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1605 …rtps $48, (%eax), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0x00,0x30]
1606 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1607 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1610 ; X64-SSE: ## %bb.0:
1611 ; X64-SSE-NEXT: movups (%rdi), %xmm1 ## encoding: [0x0f,0x10,0x0f]
1612 ; X64-SSE-NEXT: insertps $48, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x30]
1613 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm1[0]
1614 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1617 ; X64-AVX1: ## %bb.0:
1618 ; X64-AVX1-NEXT: vinsertps $48, (%rdi), %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0x07,0x30]
1619 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1620 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1623 ; X64-AVX512: ## %bb.0:
1624 …rtps $48, (%rdi), %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0x07,0x30]
1625 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],mem[0]
1626 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1628 %2 = extractelement <4 x float> %1, i32 0
1629 %3 = insertelement <4 x float> undef, float %2, i32 0
1639 ; X86-SSE: ## %bb.0:
1640 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
1641 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x04]
1642 ; X86-SSE-NEXT: movss (%ecx,%eax,4), %xmm4 ## xmm4 = mem[0],zero,zero,zero
1643 ; X86-SSE-NEXT: ## encoding: [0xf3,0x0f,0x10,0x24,0x81]
1644 ; X86-SSE-NEXT: insertps $48, %xmm4, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc4,0x30]
1645 ; X86-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm4[0]
1646 ; X86-SSE-NEXT: insertps $48, %xmm4, %xmm1 ## encoding: [0x66,0x0f,0x3a,0x21,0xcc,0x30]
1647 ; X86-SSE-NEXT: ## xmm1 = xmm1[0,1,2],xmm4[0]
1648 ; X86-SSE-NEXT: addps %xmm1, %xmm0 ## encoding: [0x0f,0x58,0xc1]
1649 ; X86-SSE-NEXT: insertps $48, %xmm4, %xmm2 ## encoding: [0x66,0x0f,0x3a,0x21,0xd4,0x30]
1650 ; X86-SSE-NEXT: ## xmm2 = xmm2[0,1,2],xmm4[0]
1651 ; X86-SSE-NEXT: insertps $48, %xmm4, %xmm3 ## encoding: [0x66,0x0f,0x3a,0x21,0xdc,0x30]
1652 ; X86-SSE-NEXT: ## xmm3 = xmm3[0,1,2],xmm4[0]
1653 ; X86-SSE-NEXT: addps %xmm2, %xmm3 ## encoding: [0x0f,0x58,0xda]
1654 ; X86-SSE-NEXT: addps %xmm3, %xmm0 ## encoding: [0x0f,0x58,0xc3]
1655 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1658 ; X86-AVX1: ## %bb.0:
1659 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
1660 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x04]
1661 ; X86-AVX1-NEXT: vbroadcastss (%ecx,%eax,4), %xmm4 ## encoding: [0xc4,0xe2,0x79,0x18,0x24,0x81]
1662 ; X86-AVX1-NEXT: vblendps $8, %xmm4, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc4,0x08]
1663 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm4[3]
1664 ; X86-AVX1-NEXT: vblendps $8, %xmm4, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x0c,0xcc,0x08]
1665 ; X86-AVX1-NEXT: ## xmm1 = xmm1[0,1,2],xmm4[3]
1666 ; X86-AVX1-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0x58,0xc1]
1667 ; X86-AVX1-NEXT: vblendps $8, %xmm4, %xmm2, %xmm1 ## encoding: [0xc4,0xe3,0x69,0x0c,0xcc,0x08]
1668 ; X86-AVX1-NEXT: ## xmm1 = xmm2[0,1,2],xmm4[3]
1669 ; X86-AVX1-NEXT: vblendps $8, %xmm4, %xmm3, %xmm2 ## encoding: [0xc4,0xe3,0x61,0x0c,0xd4,0x08]
1670 ; X86-AVX1-NEXT: ## xmm2 = xmm3[0,1,2],xmm4[3]
1671 ; X86-AVX1-NEXT: vaddps %xmm2, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x58,0xca]
1672 ; X86-AVX1-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0x58,0xc1]
1673 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1676 ; X86-AVX512: ## %bb.0:
1677 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
1678 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %ecx ## encoding: [0x8b,0x4c,0x24,0x04]
1679 …oadcastss (%ecx,%eax,4), %xmm4 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0x24,0x81]
1680 ; X86-AVX512-NEXT: vblendps $8, %xmm4, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc4,0x08]
1681 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm4[3]
1682 ; X86-AVX512-NEXT: vblendps $8, %xmm4, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x0c,0xcc,0x08]
1683 ; X86-AVX512-NEXT: ## xmm1 = xmm1[0,1,2],xmm4[3]
1684 ; X86-AVX512-NEXT: vblendps $8, %xmm4, %xmm2, %xmm2 ## encoding: [0xc4,0xe3,0x69,0x0c,0xd4,0x08]
1685 ; X86-AVX512-NEXT: ## xmm2 = xmm2[0,1,2],xmm4[3]
1686 ; X86-AVX512-NEXT: vblendps $8, %xmm4, %xmm3, %xmm3 ## encoding: [0xc4,0xe3,0x61,0x0c,0xdc,0x08]
1687 ; X86-AVX512-NEXT: ## xmm3 = xmm3[0,1,2],xmm4[3]
1688 …X512-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x58,0xc1]
1689 …X512-NEXT: vaddps %xmm3, %xmm2, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xe8,0x58,0xcb]
1690 …X512-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x58,0xc1]
1691 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1694 ; X64-SSE: ## %bb.0:
1695 ; X64-SSE-NEXT: movss (%rdi,%rsi,4), %xmm4 ## xmm4 = mem[0],zero,zero,zero
1696 ; X64-SSE-NEXT: ## encoding: [0xf3,0x0f,0x10,0x24,0xb7]
1697 ; X64-SSE-NEXT: insertps $48, %xmm4, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc4,0x30]
1698 ; X64-SSE-NEXT: ## xmm0 = xmm0[0,1,2],xmm4[0]
1699 ; X64-SSE-NEXT: insertps $48, %xmm4, %xmm1 ## encoding: [0x66,0x0f,0x3a,0x21,0xcc,0x30]
1700 ; X64-SSE-NEXT: ## xmm1 = xmm1[0,1,2],xmm4[0]
1701 ; X64-SSE-NEXT: addps %xmm1, %xmm0 ## encoding: [0x0f,0x58,0xc1]
1702 ; X64-SSE-NEXT: insertps $48, %xmm4, %xmm2 ## encoding: [0x66,0x0f,0x3a,0x21,0xd4,0x30]
1703 ; X64-SSE-NEXT: ## xmm2 = xmm2[0,1,2],xmm4[0]
1704 ; X64-SSE-NEXT: insertps $48, %xmm4, %xmm3 ## encoding: [0x66,0x0f,0x3a,0x21,0xdc,0x30]
1705 ; X64-SSE-NEXT: ## xmm3 = xmm3[0,1,2],xmm4[0]
1706 ; X64-SSE-NEXT: addps %xmm2, %xmm3 ## encoding: [0x0f,0x58,0xda]
1707 ; X64-SSE-NEXT: addps %xmm3, %xmm0 ## encoding: [0x0f,0x58,0xc3]
1708 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1711 ; X64-AVX1: ## %bb.0:
1712 ; X64-AVX1-NEXT: vbroadcastss (%rdi,%rsi,4), %xmm4 ## encoding: [0xc4,0xe2,0x79,0x18,0x24,0xb7]
1713 ; X64-AVX1-NEXT: vblendps $8, %xmm4, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc4,0x08]
1714 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0,1,2],xmm4[3]
1715 ; X64-AVX1-NEXT: vblendps $8, %xmm4, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x0c,0xcc,0x08]
1716 ; X64-AVX1-NEXT: ## xmm1 = xmm1[0,1,2],xmm4[3]
1717 ; X64-AVX1-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0x58,0xc1]
1718 ; X64-AVX1-NEXT: vblendps $8, %xmm4, %xmm2, %xmm1 ## encoding: [0xc4,0xe3,0x69,0x0c,0xcc,0x08]
1719 ; X64-AVX1-NEXT: ## xmm1 = xmm2[0,1,2],xmm4[3]
1720 ; X64-AVX1-NEXT: vblendps $8, %xmm4, %xmm3, %xmm2 ## encoding: [0xc4,0xe3,0x61,0x0c,0xd4,0x08]
1721 ; X64-AVX1-NEXT: ## xmm2 = xmm3[0,1,2],xmm4[3]
1722 ; X64-AVX1-NEXT: vaddps %xmm2, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x58,0xca]
1723 ; X64-AVX1-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## encoding: [0xc5,0xf8,0x58,0xc1]
1724 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1727 ; X64-AVX512: ## %bb.0:
1728 …oadcastss (%rdi,%rsi,4), %xmm4 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x79,0x18,0x24,0xb7]
1729 ; X64-AVX512-NEXT: vblendps $8, %xmm4, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc4,0x08]
1730 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0,1,2],xmm4[3]
1731 ; X64-AVX512-NEXT: vblendps $8, %xmm4, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x0c,0xcc,0x08]
1732 ; X64-AVX512-NEXT: ## xmm1 = xmm1[0,1,2],xmm4[3]
1733 ; X64-AVX512-NEXT: vblendps $8, %xmm4, %xmm2, %xmm2 ## encoding: [0xc4,0xe3,0x69,0x0c,0xd4,0x08]
1734 ; X64-AVX512-NEXT: ## xmm2 = xmm2[0,1,2],xmm4[3]
1735 ; X64-AVX512-NEXT: vblendps $8, %xmm4, %xmm3, %xmm3 ## encoding: [0xc4,0xe3,0x61,0x0c,0xdc,0x08]
1736 ; X64-AVX512-NEXT: ## xmm3 = xmm3[0,1,2],xmm4[3]
1737 …X512-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x58,0xc1]
1738 …X512-NEXT: vaddps %xmm3, %xmm2, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xe8,0x58,0xcb]
1739 …X512-NEXT: vaddps %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x58,0xc1]
1740 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1743 %3 = insertelement <4 x float> undef, float %2, i32 0
1759 ; X86-SSE: ## %bb.0:
1760 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1761 ; X86-SSE-NEXT: movss (%eax), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1762 ; X86-SSE-NEXT: ## encoding: [0xf3,0x0f,0x10,0x08]
1763 ; X86-SSE-NEXT: movlhps %xmm0, %xmm1 ## encoding: [0x0f,0x16,0xc8]
1764 ; X86-SSE-NEXT: ## xmm1 = xmm1[0],xmm0[0]
1765 ; X86-SSE-NEXT: movaps %xmm1, %xmm0 ## encoding: [0x0f,0x28,0xc1]
1766 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1769 ; X86-AVX1: ## %bb.0:
1770 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1771 ; X86-AVX1-NEXT: vmovss (%eax), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1772 ; X86-AVX1-NEXT: ## encoding: [0xc5,0xfa,0x10,0x08]
1773 ; X86-AVX1-NEXT: vmovlhps %xmm0, %xmm1, %xmm0 ## encoding: [0xc5,0xf0,0x16,0xc0]
1774 ; X86-AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[0]
1775 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1778 ; X86-AVX512: ## %bb.0:
1779 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1780 ; X86-AVX512-NEXT: vmovss (%eax), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1781 ; X86-AVX512-NEXT: ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x08]
1782 …12-NEXT: vmovlhps %xmm0, %xmm1, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x16,0xc0]
1783 ; X86-AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[0]
1784 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1787 ; X64-SSE: ## %bb.0:
1788 ; X64-SSE-NEXT: movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1789 ; X64-SSE-NEXT: ## encoding: [0xf3,0x0f,0x10,0x0f]
1790 ; X64-SSE-NEXT: movlhps %xmm0, %xmm1 ## encoding: [0x0f,0x16,0xc8]
1791 ; X64-SSE-NEXT: ## xmm1 = xmm1[0],xmm0[0]
1792 ; X64-SSE-NEXT: movaps %xmm1, %xmm0 ## encoding: [0x0f,0x28,0xc1]
1793 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1796 ; X64-AVX1: ## %bb.0:
1797 ; X64-AVX1-NEXT: vmovss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1798 ; X64-AVX1-NEXT: ## encoding: [0xc5,0xfa,0x10,0x0f]
1799 ; X64-AVX1-NEXT: vmovlhps %xmm0, %xmm1, %xmm0 ## encoding: [0xc5,0xf0,0x16,0xc0]
1800 ; X64-AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[0]
1801 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1804 ; X64-AVX512: ## %bb.0:
1805 ; X64-AVX512-NEXT: vmovss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1806 ; X64-AVX512-NEXT: ## EVEX TO VEX Compression encoding: [0xc5,0xfa,0x10,0x0f]
1807 …12-NEXT: vmovlhps %xmm0, %xmm1, %xmm0 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x16,0xc0]
1808 ; X64-AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[0]
1809 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1811 %2 = insertelement <4 x float> undef, float %1, i32 0
1812 %result = shufflevector <4 x float> %a, <4 x float> %2, <4 x i32> <i32 4, i32 undef, i32 0, i32 7>
1820 ; X86-SSE: ## %bb.0:
1821 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1822 ; X86-SSE-NEXT: movaps (%eax), %xmm1 ## encoding: [0x0f,0x28,0x08]
1823 ; X86-SSE-NEXT: insertps $178, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xb2]
1824 ; X86-SSE-NEXT: ## xmm0 = xmm0[0],zero,xmm0[2],xmm1[2]
1825 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1828 ; X86-AVX1: ## %bb.0:
1829 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1830 ; X86-AVX1-NEXT: vmovaps (%eax), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x08]
1831 ; X86-AVX1-NEXT: vinsertps $178, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xb2]
1832 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0],zero,xmm0[2],xmm1[2]
1833 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1836 ; X86-AVX512: ## %bb.0:
1837 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1838 ; X86-AVX512-NEXT: vmovaps (%eax), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
1839 …rtps $178, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xb2]
1840 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0],zero,xmm0[2],xmm1[2]
1841 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1844 ; X64-SSE: ## %bb.0:
1845 ; X64-SSE-NEXT: movaps (%rdi), %xmm1 ## encoding: [0x0f,0x28,0x0f]
1846 ; X64-SSE-NEXT: insertps $178, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xb2]
1847 ; X64-SSE-NEXT: ## xmm0 = xmm0[0],zero,xmm0[2],xmm1[2]
1848 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1851 ; X64-AVX1: ## %bb.0:
1852 ; X64-AVX1-NEXT: vmovaps (%rdi), %xmm1 ## encoding: [0xc5,0xf8,0x28,0x0f]
1853 ; X64-AVX1-NEXT: vinsertps $178, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xb2]
1854 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0],zero,xmm0[2],xmm1[2]
1855 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1858 ; X64-AVX512: ## %bb.0:
1859 ; X64-AVX512-NEXT: vmovaps (%rdi), %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0x…
1860 …rtps $178, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xb2]
1861 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0],zero,xmm0[2],xmm1[2]
1862 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1868 ; Edge case for insertps where we end up with a shuffle with mask=<0, 7, -1, -1>
1871 ; X86-SSE: ## %bb.0:
1872 ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1873 ; X86-SSE-NEXT: pshufd $238, %xmm1, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc9,0xee]
1875 ; X86-SSE-NEXT: pblendw $243, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc8,0xf3]
1876 ; X86-SSE-NEXT: ## xmm1 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6,7]
1877 ; X86-SSE-NEXT: movdqu %xmm1, (%eax) ## encoding: [0xf3,0x0f,0x7f,0x08]
1878 ; X86-SSE-NEXT: retl ## encoding: [0xc3]
1881 ; X86-AVX1: ## %bb.0:
1882 ; X86-AVX1-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1883 ; X86-AVX1-NEXT: vshufps $238, %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0xc6,0xc9,0xee]
1885 ; X86-AVX1-NEXT: vblendps $2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x02]
1886 ; X86-AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
1887 ; X86-AVX1-NEXT: vmovups %xmm0, (%eax) ## encoding: [0xc5,0xf8,0x11,0x00]
1888 ; X86-AVX1-NEXT: retl ## encoding: [0xc3]
1891 ; X86-AVX512: ## %bb.0:
1892 ; X86-AVX512-NEXT: movl {{[0-9]+}}(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x04]
1893 … vshufps $238, %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0xc6,0xc9,0xee]
1895 ; X86-AVX512-NEXT: vblendps $2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x02]
1896 ; X86-AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
1897 ; X86-AVX512-NEXT: vmovups %xmm0, (%eax) ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x11,0x…
1898 ; X86-AVX512-NEXT: retl ## encoding: [0xc3]
1901 ; X64-SSE: ## %bb.0:
1902 ; X64-SSE-NEXT: pshufd $238, %xmm1, %xmm1 ## encoding: [0x66,0x0f,0x70,0xc9,0xee]
1904 ; X64-SSE-NEXT: pblendw $243, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x3a,0x0e,0xc8,0xf3]
1905 ; X64-SSE-NEXT: ## xmm1 = xmm0[0,1],xmm1[2,3],xmm0[4,5,6,7]
1906 ; X64-SSE-NEXT: movdqu %xmm1, (%rdi) ## encoding: [0xf3,0x0f,0x7f,0x0f]
1907 ; X64-SSE-NEXT: retq ## encoding: [0xc3]
1910 ; X64-AVX1: ## %bb.0:
1911 ; X64-AVX1-NEXT: vshufps $238, %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0xc6,0xc9,0xee]
1913 ; X64-AVX1-NEXT: vblendps $2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x02]
1914 ; X64-AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
1915 ; X64-AVX1-NEXT: vmovups %xmm0, (%rdi) ## encoding: [0xc5,0xf8,0x11,0x07]
1916 ; X64-AVX1-NEXT: retq ## encoding: [0xc3]
1919 ; X64-AVX512: ## %bb.0:
1920 … vshufps $238, %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0xc6,0xc9,0xee]
1922 ; X64-AVX512-NEXT: vblendps $2, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x0c,0xc1,0x02]
1923 ; X64-AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[1],xmm0[2,3]
1924 ; X64-AVX512-NEXT: vmovups %xmm0, (%rdi) ## EVEX TO VEX Compression encoding: [0xc5,0xf8,0x11,0x…
1925 ; X64-AVX512-NEXT: retq ## encoding: [0xc3]
1926 …%shuffle117 = shufflevector <4 x i32> %shuffle109, <4 x i32> %shuffle116, <4 x i32> <i32 0, i32 7,…
1933 ; SSE: ## %bb.0:
1934 ; SSE-NEXT: insertps $170, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xaa]
1935 ; SSE-NEXT: ## xmm0 = xmm0[0],zero,xmm1[2],zero
1936 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1939 ; AVX1: ## %bb.0:
1940 ; AVX1-NEXT: vinsertps $170, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xaa]
1941 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero,xmm1[2],zero
1942 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1945 ; AVX512: ## %bb.0:
1946 …rtps $170, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xaa]
1947 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero,xmm1[2],zero
1948 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1949 %vecext = extractelement <4 x float> %A, i32 0
1950 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
1960 ; SSE: ## %bb.0:
1961 ; SSE-NEXT: insertps $92, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x5c]
1962 ; SSE-NEXT: ## xmm0 = xmm0[0],xmm1[1],zero,zero
1963 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1966 ; AVX1: ## %bb.0:
1967 ; AVX1-NEXT: vinsertps $92, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x5c]
1968 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[1],zero,zero
1969 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1972 ; AVX512: ## %bb.0:
1973 …ertps $92, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x5c]
1974 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[1],zero,zero
1975 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1976 %vecext = extractelement <4 x float> %A, i32 0
1977 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
1987 ; SSE: ## %bb.0:
1988 ; SSE-NEXT: insertps $169, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0xa9]
1990 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1993 ; AVX1: ## %bb.0:
1994 ; AVX1-NEXT: vinsertps $169, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xa9]
1996 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
1999 ; AVX512: ## %bb.0:
2000 …rtps $169, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0xa9]
2002 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2013 ; SSE: ## %bb.0:
2014 ; SSE-NEXT: insertps $106, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x6a]
2015 ; SSE-NEXT: ## xmm0 = xmm0[0],zero,xmm1[1],zero
2016 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2019 ; AVX1: ## %bb.0:
2020 ; AVX1-NEXT: vinsertps $106, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x6a]
2021 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero,xmm1[1],zero
2022 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2025 ; AVX512: ## %bb.0:
2026 …rtps $106, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x6a]
2027 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero,xmm1[1],zero
2028 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2029 %vecext = extractelement <4 x float> %A, i32 0
2030 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
2040 ; SSE: ## %bb.0:
2041 ; SSE-NEXT: insertps $28, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc1,0x1c]
2042 ; SSE-NEXT: ## xmm0 = xmm0[0],xmm1[0],zero,zero
2043 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2046 ; AVX1: ## %bb.0:
2047 ; AVX1-NEXT: vinsertps $28, %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x1c]
2048 ; AVX1-NEXT: ## xmm0 = xmm0[0],xmm1[0],zero,zero
2049 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2052 ; AVX512: ## %bb.0:
2053 …ertps $28, %xmm1, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc1,0x1c]
2054 ; AVX512-NEXT: ## xmm0 = xmm0[0],xmm1[0],zero,zero
2055 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2056 %vecext = extractelement <4 x float> %A, i32 0
2057 %vecinit = insertelement <4 x float> undef, float %vecext, i32 0
2058 %vecext1 = extractelement <4 x float> %B, i32 0
2067 ; SSE: ## %bb.0:
2068 ; SSE-NEXT: insertps $25, %xmm0, %xmm1 ## encoding: [0x66,0x0f,0x3a,0x21,0xc8,0x19]
2069 ; SSE-NEXT: ## xmm1 = zero,xmm0[0],xmm1[2],zero
2070 ; SSE-NEXT: movaps %xmm1, %xmm0 ## encoding: [0x0f,0x28,0xc1]
2071 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2074 ; AVX1: ## %bb.0:
2075 ; AVX1-NEXT: vinsertps $25, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x21,0xc0,0x19]
2076 ; AVX1-NEXT: ## xmm0 = zero,xmm0[0],xmm1[2],zero
2077 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2080 ; AVX512: ## %bb.0:
2081 …ertps $25, %xmm0, %xmm1, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x71,0x21,0xc0,0x19]
2082 ; AVX512-NEXT: ## xmm0 = zero,xmm0[0],xmm1[2],zero
2083 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2084 %vecext = extractelement <4 x float> %A, i32 0
2094 ; SSE: ## %bb.0:
2095 ; SSE-NEXT: insertps $42, %xmm0, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x21,0xc0,0x2a]
2096 ; SSE-NEXT: ## xmm0 = xmm0[0],zero,xmm0[0],zero
2097 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2100 ; AVX1: ## %bb.0:
2101 ; AVX1-NEXT: vinsertps $42, %xmm0, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x21,0xc0,0x2a]
2102 ; AVX1-NEXT: ## xmm0 = xmm0[0],zero,xmm0[0],zero
2103 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2106 ; AVX512: ## %bb.0:
2107 …ertps $42, %xmm0, %xmm0, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe3,0x79,0x21,0xc0,0x2a]
2108 ; AVX512-NEXT: ## xmm0 = xmm0[0],zero,xmm0[0],zero
2109 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2110 %vecext = extractelement <4 x float> %A, i32 0
2111 …oat 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %vecext, i32 0
2118 ; SSE: ## %bb.0:
2119 ; SSE-NEXT: xorps %xmm1, %xmm1 ## encoding: [0x0f,0x57,0xc9]
2120 ; SSE-NEXT: blendps $5, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x05]
2121 ; SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1],xmm1[2],xmm0[3]
2122 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2125 ; AVX1: ## %bb.0:
2126 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
2127 ; AVX1-NEXT: vblendps $10, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x0a]
2128 ; AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[1],xmm1[2],xmm0[3]
2129 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2132 ; AVX512: ## %bb.0:
2133 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
2134 ; AVX512-NEXT: vblendps $10, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x0a]
2135 ; AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[1],xmm1[2],xmm0[3]
2136 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2140 …%vecinit3 = shufflevector <4 x float> %vecinit1, <4 x float> %A, <4 x i32> <i32 0, i32 1, i32 2, i…
2146 ; SSE: ## %bb.0:
2147 ; SSE-NEXT: xorps %xmm1, %xmm1 ## encoding: [0x0f,0x57,0xc9]
2148 ; SSE-NEXT: blendps $13, %xmm1, %xmm0 ## encoding: [0x66,0x0f,0x3a,0x0c,0xc1,0x0d]
2149 ; SSE-NEXT: ## xmm0 = xmm1[0],xmm0[1],xmm1[2,3]
2150 ; SSE-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2153 ; AVX1: ## %bb.0:
2154 ; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## encoding: [0xc5,0xf0,0x57,0xc9]
2155 ; AVX1-NEXT: vblendps $2, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x02]
2156 ; AVX1-NEXT: ## xmm0 = xmm1[0],xmm0[1],xmm1[2,3]
2157 ; AVX1-NEXT: ret{{[l|q]}} ## encoding: [0xc3]
2160 ; AVX512: ## %bb.0:
2161 ; AVX512-NEXT: vxorps %xmm1, %xmm1, %xmm1 ## EVEX TO VEX Compression encoding: [0xc5,0xf0,0x57,0
2162 ; AVX512-NEXT: vblendps $2, %xmm0, %xmm1, %xmm0 ## encoding: [0xc4,0xe3,0x71,0x0c,0xc0,0x02]
2163 ; AVX512-NEXT: ## xmm0 = xmm1[0],xmm0[1],xmm1[2,3]
2164 ; AVX512-NEXT: ret{{[l|q]}} ## encoding: [0xc3]