[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / X86 / shuffle-half.ll
blob0aa8c68764f82851cfbfeccdc71d2d42cae6d323
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc < %s -mtriple=x86_64-linux-gnu -mattr=avx512vl | FileCheck %s
4 define <32 x half> @dump_vec() {
5 ; CHECK-LABEL: dump_vec:
6 ; CHECK:       # %bb.0:
7 ; CHECK-NEXT:    vxorps %xmm0, %xmm0, %xmm0
8 ; CHECK-NEXT:    xorl %eax, %eax
9 ; CHECK-NEXT:    testb %al, %al
10 ; CHECK-NEXT:    jne .LBB0_2
11 ; CHECK-NEXT:  # %bb.1: # %cond.load
12 ; CHECK-NEXT:    vmovups (%rax), %zmm0
13 ; CHECK-NEXT:  .LBB0_2:
14 ; CHECK-NEXT:    retq
15   %1 = call <32 x half> @llvm.masked.load.v32f16.p0(ptr poison, i32 2, <32 x i1> poison, <32 x half> <half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0, half 0.0>)
16   ret <32 x half> %1
19 define <32 x half> @build_vec(ptr %p, <32 x i1> %mask) {
20 ; CHECK-LABEL: build_vec:
21 ; CHECK:       # %bb.0:
22 ; CHECK-NEXT:    vpsllw $7, %ymm0, %ymm0
23 ; CHECK-NEXT:    vpmovmskb %ymm0, %eax
24 ; CHECK-NEXT:    testb $1, %al
25 ; CHECK-NEXT:    je .LBB1_1
26 ; CHECK-NEXT:  # %bb.2: # %cond.load
27 ; CHECK-NEXT:    vpinsrw $0, (%rdi), %xmm0, %xmm0
28 ; CHECK-NEXT:    vpbroadcastd {{.*#+}} zmm1 = [2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0]
29 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3,4,5,6,7]
30 ; CHECK-NEXT:    vinserti32x4 $0, %xmm0, %zmm1, %zmm0
31 ; CHECK-NEXT:    testb $2, %al
32 ; CHECK-NEXT:    jne .LBB1_4
33 ; CHECK-NEXT:    jmp .LBB1_5
34 ; CHECK-NEXT:  .LBB1_1:
35 ; CHECK-NEXT:    vpbroadcastw {{.*#+}} ymm0 = [2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0,2.0E+0]
36 ; CHECK-NEXT:    vinserti64x4 $1, %ymm0, %zmm0, %zmm0
37 ; CHECK-NEXT:    testb $2, %al
38 ; CHECK-NEXT:    je .LBB1_5
39 ; CHECK-NEXT:  .LBB1_4: # %cond.load1
40 ; CHECK-NEXT:    vpbroadcastw 2(%rdi), %xmm1
41 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
42 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
43 ; CHECK-NEXT:  .LBB1_5: # %else2
44 ; CHECK-NEXT:    testb $4, %al
45 ; CHECK-NEXT:    jne .LBB1_6
46 ; CHECK-NEXT:  # %bb.7: # %else5
47 ; CHECK-NEXT:    testb $8, %al
48 ; CHECK-NEXT:    jne .LBB1_8
49 ; CHECK-NEXT:  .LBB1_9: # %else8
50 ; CHECK-NEXT:    testb $16, %al
51 ; CHECK-NEXT:    jne .LBB1_10
52 ; CHECK-NEXT:  .LBB1_11: # %else11
53 ; CHECK-NEXT:    testb $32, %al
54 ; CHECK-NEXT:    jne .LBB1_12
55 ; CHECK-NEXT:  .LBB1_13: # %else14
56 ; CHECK-NEXT:    testb $64, %al
57 ; CHECK-NEXT:    jne .LBB1_14
58 ; CHECK-NEXT:  .LBB1_15: # %else17
59 ; CHECK-NEXT:    testb %al, %al
60 ; CHECK-NEXT:    js .LBB1_16
61 ; CHECK-NEXT:  .LBB1_17: # %else20
62 ; CHECK-NEXT:    testl $256, %eax # imm = 0x100
63 ; CHECK-NEXT:    jne .LBB1_18
64 ; CHECK-NEXT:  .LBB1_19: # %else23
65 ; CHECK-NEXT:    testl $512, %eax # imm = 0x200
66 ; CHECK-NEXT:    jne .LBB1_20
67 ; CHECK-NEXT:  .LBB1_21: # %else26
68 ; CHECK-NEXT:    testl $1024, %eax # imm = 0x400
69 ; CHECK-NEXT:    jne .LBB1_22
70 ; CHECK-NEXT:  .LBB1_23: # %else29
71 ; CHECK-NEXT:    testl $2048, %eax # imm = 0x800
72 ; CHECK-NEXT:    jne .LBB1_24
73 ; CHECK-NEXT:  .LBB1_25: # %else32
74 ; CHECK-NEXT:    testl $4096, %eax # imm = 0x1000
75 ; CHECK-NEXT:    jne .LBB1_26
76 ; CHECK-NEXT:  .LBB1_27: # %else35
77 ; CHECK-NEXT:    testl $8192, %eax # imm = 0x2000
78 ; CHECK-NEXT:    jne .LBB1_28
79 ; CHECK-NEXT:  .LBB1_29: # %else38
80 ; CHECK-NEXT:    testl $16384, %eax # imm = 0x4000
81 ; CHECK-NEXT:    jne .LBB1_30
82 ; CHECK-NEXT:  .LBB1_31: # %else41
83 ; CHECK-NEXT:    testw %ax, %ax
84 ; CHECK-NEXT:    js .LBB1_32
85 ; CHECK-NEXT:  .LBB1_33: # %else44
86 ; CHECK-NEXT:    testl $65536, %eax # imm = 0x10000
87 ; CHECK-NEXT:    jne .LBB1_34
88 ; CHECK-NEXT:  .LBB1_35: # %else47
89 ; CHECK-NEXT:    testl $131072, %eax # imm = 0x20000
90 ; CHECK-NEXT:    jne .LBB1_36
91 ; CHECK-NEXT:  .LBB1_37: # %else50
92 ; CHECK-NEXT:    testl $262144, %eax # imm = 0x40000
93 ; CHECK-NEXT:    jne .LBB1_38
94 ; CHECK-NEXT:  .LBB1_39: # %else53
95 ; CHECK-NEXT:    testl $524288, %eax # imm = 0x80000
96 ; CHECK-NEXT:    jne .LBB1_40
97 ; CHECK-NEXT:  .LBB1_41: # %else56
98 ; CHECK-NEXT:    testl $1048576, %eax # imm = 0x100000
99 ; CHECK-NEXT:    jne .LBB1_42
100 ; CHECK-NEXT:  .LBB1_43: # %else59
101 ; CHECK-NEXT:    testl $2097152, %eax # imm = 0x200000
102 ; CHECK-NEXT:    jne .LBB1_44
103 ; CHECK-NEXT:  .LBB1_45: # %else62
104 ; CHECK-NEXT:    testl $4194304, %eax # imm = 0x400000
105 ; CHECK-NEXT:    jne .LBB1_46
106 ; CHECK-NEXT:  .LBB1_47: # %else65
107 ; CHECK-NEXT:    testl $8388608, %eax # imm = 0x800000
108 ; CHECK-NEXT:    jne .LBB1_48
109 ; CHECK-NEXT:  .LBB1_49: # %else68
110 ; CHECK-NEXT:    testl $16777216, %eax # imm = 0x1000000
111 ; CHECK-NEXT:    jne .LBB1_50
112 ; CHECK-NEXT:  .LBB1_51: # %else71
113 ; CHECK-NEXT:    testl $33554432, %eax # imm = 0x2000000
114 ; CHECK-NEXT:    jne .LBB1_52
115 ; CHECK-NEXT:  .LBB1_53: # %else74
116 ; CHECK-NEXT:    testl $67108864, %eax # imm = 0x4000000
117 ; CHECK-NEXT:    jne .LBB1_54
118 ; CHECK-NEXT:  .LBB1_55: # %else77
119 ; CHECK-NEXT:    testl $134217728, %eax # imm = 0x8000000
120 ; CHECK-NEXT:    jne .LBB1_56
121 ; CHECK-NEXT:  .LBB1_57: # %else80
122 ; CHECK-NEXT:    testl $268435456, %eax # imm = 0x10000000
123 ; CHECK-NEXT:    jne .LBB1_58
124 ; CHECK-NEXT:  .LBB1_59: # %else83
125 ; CHECK-NEXT:    testl $536870912, %eax # imm = 0x20000000
126 ; CHECK-NEXT:    jne .LBB1_60
127 ; CHECK-NEXT:  .LBB1_61: # %else86
128 ; CHECK-NEXT:    testl $1073741824, %eax # imm = 0x40000000
129 ; CHECK-NEXT:    jne .LBB1_62
130 ; CHECK-NEXT:  .LBB1_63: # %else89
131 ; CHECK-NEXT:    testl $-2147483648, %eax # imm = 0x80000000
132 ; CHECK-NEXT:    jne .LBB1_64
133 ; CHECK-NEXT:  .LBB1_65: # %else92
134 ; CHECK-NEXT:    retq
135 ; CHECK-NEXT:  .LBB1_6: # %cond.load4
136 ; CHECK-NEXT:    vpbroadcastw 4(%rdi), %xmm1
137 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
138 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
139 ; CHECK-NEXT:    testb $8, %al
140 ; CHECK-NEXT:    je .LBB1_9
141 ; CHECK-NEXT:  .LBB1_8: # %cond.load7
142 ; CHECK-NEXT:    vpbroadcastw 6(%rdi), %xmm1
143 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
144 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
145 ; CHECK-NEXT:    testb $16, %al
146 ; CHECK-NEXT:    je .LBB1_11
147 ; CHECK-NEXT:  .LBB1_10: # %cond.load10
148 ; CHECK-NEXT:    vpbroadcastw 8(%rdi), %xmm1
149 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
150 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
151 ; CHECK-NEXT:    testb $32, %al
152 ; CHECK-NEXT:    je .LBB1_13
153 ; CHECK-NEXT:  .LBB1_12: # %cond.load13
154 ; CHECK-NEXT:    vpbroadcastw 10(%rdi), %xmm1
155 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
156 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
157 ; CHECK-NEXT:    testb $64, %al
158 ; CHECK-NEXT:    je .LBB1_15
159 ; CHECK-NEXT:  .LBB1_14: # %cond.load16
160 ; CHECK-NEXT:    vpbroadcastw 12(%rdi), %xmm1
161 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,5],xmm1[6],xmm0[7]
162 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
163 ; CHECK-NEXT:    testb %al, %al
164 ; CHECK-NEXT:    jns .LBB1_17
165 ; CHECK-NEXT:  .LBB1_16: # %cond.load19
166 ; CHECK-NEXT:    vpbroadcastw 14(%rdi), %xmm1
167 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,5,6],xmm1[7]
168 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
169 ; CHECK-NEXT:    testl $256, %eax # imm = 0x100
170 ; CHECK-NEXT:    je .LBB1_19
171 ; CHECK-NEXT:  .LBB1_18: # %cond.load22
172 ; CHECK-NEXT:    vpbroadcastw 16(%rdi), %ymm1
173 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm0[1,2,3,4,5,6,7],ymm1[8],ymm0[9,10,11,12,13,14,15]
174 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
175 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
176 ; CHECK-NEXT:    testl $512, %eax # imm = 0x200
177 ; CHECK-NEXT:    je .LBB1_21
178 ; CHECK-NEXT:  .LBB1_20: # %cond.load25
179 ; CHECK-NEXT:    vpbroadcastw 18(%rdi), %ymm1
180 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0],ymm1[1],ymm0[2,3,4,5,6,7,8],ymm1[9],ymm0[10,11,12,13,14,15]
181 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
182 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
183 ; CHECK-NEXT:    testl $1024, %eax # imm = 0x400
184 ; CHECK-NEXT:    je .LBB1_23
185 ; CHECK-NEXT:  .LBB1_22: # %cond.load28
186 ; CHECK-NEXT:    vpbroadcastw 20(%rdi), %ymm1
187 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1],ymm1[2],ymm0[3,4,5,6,7,8,9],ymm1[10],ymm0[11,12,13,14,15]
188 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
189 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
190 ; CHECK-NEXT:    testl $2048, %eax # imm = 0x800
191 ; CHECK-NEXT:    je .LBB1_25
192 ; CHECK-NEXT:  .LBB1_24: # %cond.load31
193 ; CHECK-NEXT:    vpbroadcastw 22(%rdi), %ymm1
194 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2],ymm1[3],ymm0[4,5,6,7,8,9,10],ymm1[11],ymm0[12,13,14,15]
195 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
196 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
197 ; CHECK-NEXT:    testl $4096, %eax # imm = 0x1000
198 ; CHECK-NEXT:    je .LBB1_27
199 ; CHECK-NEXT:  .LBB1_26: # %cond.load34
200 ; CHECK-NEXT:    vpbroadcastw 24(%rdi), %ymm1
201 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4],ymm0[5,6,7,8,9,10,11],ymm1[12],ymm0[13,14,15]
202 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
203 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
204 ; CHECK-NEXT:    testl $8192, %eax # imm = 0x2000
205 ; CHECK-NEXT:    je .LBB1_29
206 ; CHECK-NEXT:  .LBB1_28: # %cond.load37
207 ; CHECK-NEXT:    vpbroadcastw 26(%rdi), %ymm1
208 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4],ymm1[5],ymm0[6,7,8,9,10,11,12],ymm1[13],ymm0[14,15]
209 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
210 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
211 ; CHECK-NEXT:    testl $16384, %eax # imm = 0x4000
212 ; CHECK-NEXT:    je .LBB1_31
213 ; CHECK-NEXT:  .LBB1_30: # %cond.load40
214 ; CHECK-NEXT:    vpbroadcastw 28(%rdi), %ymm1
215 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4,5],ymm1[6],ymm0[7,8,9,10,11,12,13],ymm1[14],ymm0[15]
216 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
217 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
218 ; CHECK-NEXT:    testw %ax, %ax
219 ; CHECK-NEXT:    jns .LBB1_33
220 ; CHECK-NEXT:  .LBB1_32: # %cond.load43
221 ; CHECK-NEXT:    vpbroadcastw 30(%rdi), %ymm1
222 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4,5,6],ymm1[7],ymm0[8,9,10,11,12,13,14],ymm1[15]
223 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
224 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
225 ; CHECK-NEXT:    testl $65536, %eax # imm = 0x10000
226 ; CHECK-NEXT:    je .LBB1_35
227 ; CHECK-NEXT:  .LBB1_34: # %cond.load46
228 ; CHECK-NEXT:    vpinsrw $0, 32(%rdi), %xmm0, %xmm1
229 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
230 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3,4,5,6,7]
231 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
232 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
233 ; CHECK-NEXT:    testl $131072, %eax # imm = 0x20000
234 ; CHECK-NEXT:    je .LBB1_37
235 ; CHECK-NEXT:  .LBB1_36: # %cond.load49
236 ; CHECK-NEXT:    vpbroadcastw 34(%rdi), %xmm1
237 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
238 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2,3,4,5,6,7]
239 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
240 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
241 ; CHECK-NEXT:    testl $262144, %eax # imm = 0x40000
242 ; CHECK-NEXT:    je .LBB1_39
243 ; CHECK-NEXT:  .LBB1_38: # %cond.load52
244 ; CHECK-NEXT:    vpbroadcastw 36(%rdi), %xmm1
245 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
246 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm1[2],xmm2[3,4,5,6,7]
247 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
248 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
249 ; CHECK-NEXT:    testl $524288, %eax # imm = 0x80000
250 ; CHECK-NEXT:    je .LBB1_41
251 ; CHECK-NEXT:  .LBB1_40: # %cond.load55
252 ; CHECK-NEXT:    vpbroadcastw 38(%rdi), %xmm1
253 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
254 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3],xmm2[4,5,6,7]
255 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
256 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
257 ; CHECK-NEXT:    testl $1048576, %eax # imm = 0x100000
258 ; CHECK-NEXT:    je .LBB1_43
259 ; CHECK-NEXT:  .LBB1_42: # %cond.load58
260 ; CHECK-NEXT:    vpbroadcastw 40(%rdi), %xmm1
261 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
262 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3],xmm1[4],xmm2[5,6,7]
263 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
264 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
265 ; CHECK-NEXT:    testl $2097152, %eax # imm = 0x200000
266 ; CHECK-NEXT:    je .LBB1_45
267 ; CHECK-NEXT:  .LBB1_44: # %cond.load61
268 ; CHECK-NEXT:    vpbroadcastw 42(%rdi), %xmm1
269 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
270 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5],xmm2[6,7]
271 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
272 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
273 ; CHECK-NEXT:    testl $4194304, %eax # imm = 0x400000
274 ; CHECK-NEXT:    je .LBB1_47
275 ; CHECK-NEXT:  .LBB1_46: # %cond.load64
276 ; CHECK-NEXT:    vpbroadcastw 44(%rdi), %xmm1
277 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
278 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5],xmm1[6],xmm2[7]
279 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
280 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
281 ; CHECK-NEXT:    testl $8388608, %eax # imm = 0x800000
282 ; CHECK-NEXT:    je .LBB1_49
283 ; CHECK-NEXT:  .LBB1_48: # %cond.load67
284 ; CHECK-NEXT:    vpbroadcastw 46(%rdi), %xmm1
285 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
286 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6],xmm1[7]
287 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
288 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
289 ; CHECK-NEXT:    testl $16777216, %eax # imm = 0x1000000
290 ; CHECK-NEXT:    je .LBB1_51
291 ; CHECK-NEXT:  .LBB1_50: # %cond.load70
292 ; CHECK-NEXT:    vpbroadcastw 48(%rdi), %ymm1
293 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
294 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1,2,3,4,5,6,7],ymm1[8],ymm2[9,10,11,12,13,14,15]
295 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
296 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
297 ; CHECK-NEXT:    testl $33554432, %eax # imm = 0x2000000
298 ; CHECK-NEXT:    je .LBB1_53
299 ; CHECK-NEXT:  .LBB1_52: # %cond.load73
300 ; CHECK-NEXT:    vpbroadcastw 50(%rdi), %ymm1
301 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
302 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0],ymm1[1],ymm2[2,3,4,5,6,7,8],ymm1[9],ymm2[10,11,12,13,14,15]
303 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
304 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
305 ; CHECK-NEXT:    testl $67108864, %eax # imm = 0x4000000
306 ; CHECK-NEXT:    je .LBB1_55
307 ; CHECK-NEXT:  .LBB1_54: # %cond.load76
308 ; CHECK-NEXT:    vpbroadcastw 52(%rdi), %ymm1
309 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
310 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1],ymm1[2],ymm2[3,4,5,6,7,8,9],ymm1[10],ymm2[11,12,13,14,15]
311 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
312 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
313 ; CHECK-NEXT:    testl $134217728, %eax # imm = 0x8000000
314 ; CHECK-NEXT:    je .LBB1_57
315 ; CHECK-NEXT:  .LBB1_56: # %cond.load79
316 ; CHECK-NEXT:    vpbroadcastw 54(%rdi), %ymm1
317 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
318 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2],ymm1[3],ymm2[4,5,6,7,8,9,10],ymm1[11],ymm2[12,13,14,15]
319 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
320 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
321 ; CHECK-NEXT:    testl $268435456, %eax # imm = 0x10000000
322 ; CHECK-NEXT:    je .LBB1_59
323 ; CHECK-NEXT:  .LBB1_58: # %cond.load82
324 ; CHECK-NEXT:    vpbroadcastw 56(%rdi), %ymm1
325 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
326 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4],ymm2[5,6,7,8,9,10,11],ymm1[12],ymm2[13,14,15]
327 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
328 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
329 ; CHECK-NEXT:    testl $536870912, %eax # imm = 0x20000000
330 ; CHECK-NEXT:    je .LBB1_61
331 ; CHECK-NEXT:  .LBB1_60: # %cond.load85
332 ; CHECK-NEXT:    vpbroadcastw 58(%rdi), %ymm1
333 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
334 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2,3,4],ymm1[5],ymm2[6,7,8,9,10,11,12],ymm1[13],ymm2[14,15]
335 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
336 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
337 ; CHECK-NEXT:    testl $1073741824, %eax # imm = 0x40000000
338 ; CHECK-NEXT:    je .LBB1_63
339 ; CHECK-NEXT:  .LBB1_62: # %cond.load88
340 ; CHECK-NEXT:    vpbroadcastw 60(%rdi), %ymm1
341 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
342 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5],ymm1[6],ymm2[7,8,9,10,11,12,13],ymm1[14],ymm2[15]
343 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
344 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
345 ; CHECK-NEXT:    testl $-2147483648, %eax # imm = 0x80000000
346 ; CHECK-NEXT:    je .LBB1_65
347 ; CHECK-NEXT:  .LBB1_64: # %cond.load91
348 ; CHECK-NEXT:    vpbroadcastw 62(%rdi), %ymm1
349 ; CHECK-NEXT:    vextracti64x4 $1, %zmm0, %ymm2
350 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5,6],ymm1[7],ymm2[8,9,10,11,12,13,14],ymm1[15]
351 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
352 ; CHECK-NEXT:    vinserti64x4 $1, %ymm1, %zmm0, %zmm0
353 ; CHECK-NEXT:    retq
354   %1 = call <32 x half> @llvm.masked.load.v32f16.p0(ptr %p, i32 2, <32 x i1 > %mask, <32 x half> <half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0, half 2.0>)
355   ret <32 x half> %1
358 declare <32 x half> @llvm.masked.load.v32f16.p0(ptr, i32, <32 x i1>, <32 x half>)