Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / shuffle-half.ll
blob0529ca1a0b82c1d29133c475dc168eb5356f5ca6
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:    vpxor %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:    vpinsrw $0, (%rax), %xmm0, %xmm0
13 ; CHECK-NEXT:    vmovdqa {{.*#+}} xmm1 = [65535,0,0,0]
14 ; CHECK-NEXT:    vpand %ymm0, %ymm1, %ymm0
15 ; CHECK-NEXT:    vpxor %xmm1, %xmm1, %xmm1
16 ; CHECK-NEXT:    vinserti64x4 $0, %ymm0, %zmm1, %zmm0
17 ; CHECK-NEXT:  .LBB0_2: # %else
18 ; CHECK-NEXT:    xorl %eax, %eax
19 ; CHECK-NEXT:    testb %al, %al
20 ; CHECK-NEXT:    jne .LBB0_4
21 ; CHECK-NEXT:  # %bb.3: # %cond.load1
22 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
23 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0],xmm1[1],xmm0[2,3,4,5,6,7]
24 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
25 ; CHECK-NEXT:  .LBB0_4: # %else2
26 ; CHECK-NEXT:    xorl %eax, %eax
27 ; CHECK-NEXT:    testb %al, %al
28 ; CHECK-NEXT:    jne .LBB0_6
29 ; CHECK-NEXT:  # %bb.5: # %cond.load4
30 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
31 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1],xmm1[2],xmm0[3,4,5,6,7]
32 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
33 ; CHECK-NEXT:  .LBB0_6: # %else5
34 ; CHECK-NEXT:    xorl %eax, %eax
35 ; CHECK-NEXT:    testb %al, %al
36 ; CHECK-NEXT:    jne .LBB0_8
37 ; CHECK-NEXT:  # %bb.7: # %cond.load7
38 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
39 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2],xmm1[3],xmm0[4,5,6,7]
40 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
41 ; CHECK-NEXT:  .LBB0_8: # %else8
42 ; CHECK-NEXT:    xorl %eax, %eax
43 ; CHECK-NEXT:    testb %al, %al
44 ; CHECK-NEXT:    jne .LBB0_10
45 ; CHECK-NEXT:  # %bb.9: # %cond.load10
46 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
47 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3],xmm1[4],xmm0[5,6,7]
48 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
49 ; CHECK-NEXT:  .LBB0_10: # %else11
50 ; CHECK-NEXT:    xorl %eax, %eax
51 ; CHECK-NEXT:    testb %al, %al
52 ; CHECK-NEXT:    jne .LBB0_12
53 ; CHECK-NEXT:  # %bb.11: # %cond.load13
54 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
55 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4],xmm1[5],xmm0[6,7]
56 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
57 ; CHECK-NEXT:  .LBB0_12: # %else14
58 ; CHECK-NEXT:    xorl %eax, %eax
59 ; CHECK-NEXT:    testb %al, %al
60 ; CHECK-NEXT:    jne .LBB0_14
61 ; CHECK-NEXT:  # %bb.13: # %cond.load16
62 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
63 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,5],xmm1[6],xmm0[7]
64 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
65 ; CHECK-NEXT:  .LBB0_14: # %else17
66 ; CHECK-NEXT:    xorl %eax, %eax
67 ; CHECK-NEXT:    testb %al, %al
68 ; CHECK-NEXT:    jne .LBB0_16
69 ; CHECK-NEXT:  # %bb.15: # %cond.load19
70 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
71 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4,5,6],xmm1[7]
72 ; CHECK-NEXT:    vinserti32x4 $0, %xmm1, %zmm0, %zmm0
73 ; CHECK-NEXT:  .LBB0_16: # %else20
74 ; CHECK-NEXT:    xorl %eax, %eax
75 ; CHECK-NEXT:    testb %al, %al
76 ; CHECK-NEXT:    jne .LBB0_18
77 ; CHECK-NEXT:  # %bb.17: # %cond.load22
78 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
79 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm0[1,2,3,4,5,6,7],ymm1[8],ymm0[9,10,11,12,13,14,15]
80 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
81 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
82 ; CHECK-NEXT:  .LBB0_18: # %else23
83 ; CHECK-NEXT:    xorl %eax, %eax
84 ; CHECK-NEXT:    testb %al, %al
85 ; CHECK-NEXT:    jne .LBB0_20
86 ; CHECK-NEXT:  # %bb.19: # %cond.load25
87 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
88 ; 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]
89 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
90 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
91 ; CHECK-NEXT:  .LBB0_20: # %else26
92 ; CHECK-NEXT:    xorl %eax, %eax
93 ; CHECK-NEXT:    testb %al, %al
94 ; CHECK-NEXT:    jne .LBB0_22
95 ; CHECK-NEXT:  # %bb.21: # %cond.load28
96 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
97 ; 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]
98 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
99 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
100 ; CHECK-NEXT:  .LBB0_22: # %else29
101 ; CHECK-NEXT:    xorl %eax, %eax
102 ; CHECK-NEXT:    testb %al, %al
103 ; CHECK-NEXT:    jne .LBB0_24
104 ; CHECK-NEXT:  # %bb.23: # %cond.load31
105 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
106 ; 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]
107 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
108 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
109 ; CHECK-NEXT:  .LBB0_24: # %else32
110 ; CHECK-NEXT:    xorl %eax, %eax
111 ; CHECK-NEXT:    testb %al, %al
112 ; CHECK-NEXT:    jne .LBB0_26
113 ; CHECK-NEXT:  # %bb.25: # %cond.load34
114 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
115 ; 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]
116 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
117 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
118 ; CHECK-NEXT:  .LBB0_26: # %else35
119 ; CHECK-NEXT:    xorl %eax, %eax
120 ; CHECK-NEXT:    testb %al, %al
121 ; CHECK-NEXT:    jne .LBB0_28
122 ; CHECK-NEXT:  # %bb.27: # %cond.load37
123 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
124 ; 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]
125 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
126 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
127 ; CHECK-NEXT:  .LBB0_28: # %else38
128 ; CHECK-NEXT:    xorl %eax, %eax
129 ; CHECK-NEXT:    testb %al, %al
130 ; CHECK-NEXT:    jne .LBB0_30
131 ; CHECK-NEXT:  # %bb.29: # %cond.load40
132 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
133 ; 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]
134 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
135 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
136 ; CHECK-NEXT:  .LBB0_30: # %else41
137 ; CHECK-NEXT:    xorl %eax, %eax
138 ; CHECK-NEXT:    testb %al, %al
139 ; CHECK-NEXT:    jne .LBB0_32
140 ; CHECK-NEXT:  # %bb.31: # %cond.load43
141 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
142 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm0[0,1,2,3,4,5,6],ymm1[7],ymm0[8,9,10,11,12,13,14],ymm1[15]
143 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm0[0,1,2,3],ymm1[4,5,6,7]
144 ; CHECK-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm1[0,1,2,3],zmm0[4,5,6,7]
145 ; CHECK-NEXT:  .LBB0_32: # %else44
146 ; CHECK-NEXT:    xorl %eax, %eax
147 ; CHECK-NEXT:    testb %al, %al
148 ; CHECK-NEXT:    jne .LBB0_34
149 ; CHECK-NEXT:  # %bb.33: # %cond.load46
150 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
151 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
152 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0],xmm2[1,2,3,4,5,6,7]
153 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
154 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
155 ; CHECK-NEXT:  .LBB0_34: # %else47
156 ; CHECK-NEXT:    xorl %eax, %eax
157 ; CHECK-NEXT:    testb %al, %al
158 ; CHECK-NEXT:    jne .LBB0_36
159 ; CHECK-NEXT:  # %bb.35: # %cond.load49
160 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
161 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
162 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0],xmm1[1],xmm2[2,3,4,5,6,7]
163 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
164 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
165 ; CHECK-NEXT:  .LBB0_36: # %else50
166 ; CHECK-NEXT:    xorl %eax, %eax
167 ; CHECK-NEXT:    testb %al, %al
168 ; CHECK-NEXT:    jne .LBB0_38
169 ; CHECK-NEXT:  # %bb.37: # %cond.load52
170 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
171 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
172 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1],xmm1[2],xmm2[3,4,5,6,7]
173 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
174 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
175 ; CHECK-NEXT:  .LBB0_38: # %else53
176 ; CHECK-NEXT:    xorl %eax, %eax
177 ; CHECK-NEXT:    testb %al, %al
178 ; CHECK-NEXT:    jne .LBB0_40
179 ; CHECK-NEXT:  # %bb.39: # %cond.load55
180 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
181 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
182 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2],xmm1[3],xmm2[4,5,6,7]
183 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
184 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
185 ; CHECK-NEXT:  .LBB0_40: # %else56
186 ; CHECK-NEXT:    xorl %eax, %eax
187 ; CHECK-NEXT:    testb %al, %al
188 ; CHECK-NEXT:    jne .LBB0_42
189 ; CHECK-NEXT:  # %bb.41: # %cond.load58
190 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
191 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
192 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3],xmm1[4],xmm2[5,6,7]
193 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
194 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
195 ; CHECK-NEXT:  .LBB0_42: # %else59
196 ; CHECK-NEXT:    xorl %eax, %eax
197 ; CHECK-NEXT:    testb %al, %al
198 ; CHECK-NEXT:    jne .LBB0_44
199 ; CHECK-NEXT:  # %bb.43: # %cond.load61
200 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
201 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
202 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4],xmm1[5],xmm2[6,7]
203 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
204 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
205 ; CHECK-NEXT:  .LBB0_44: # %else62
206 ; CHECK-NEXT:    xorl %eax, %eax
207 ; CHECK-NEXT:    testb %al, %al
208 ; CHECK-NEXT:    jne .LBB0_46
209 ; CHECK-NEXT:  # %bb.45: # %cond.load64
210 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
211 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
212 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5],xmm1[6],xmm2[7]
213 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
214 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
215 ; CHECK-NEXT:  .LBB0_46: # %else65
216 ; CHECK-NEXT:    xorl %eax, %eax
217 ; CHECK-NEXT:    testb %al, %al
218 ; CHECK-NEXT:    jne .LBB0_48
219 ; CHECK-NEXT:  # %bb.47: # %cond.load67
220 ; CHECK-NEXT:    vpbroadcastw (%rax), %xmm1
221 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
222 ; CHECK-NEXT:    vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6],xmm1[7]
223 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm1[0,1,2,3],ymm2[4,5,6,7]
224 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
225 ; CHECK-NEXT:  .LBB0_48: # %else68
226 ; CHECK-NEXT:    xorl %eax, %eax
227 ; CHECK-NEXT:    testb %al, %al
228 ; CHECK-NEXT:    jne .LBB0_50
229 ; CHECK-NEXT:  # %bb.49: # %cond.load70
230 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
231 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
232 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm1[0],ymm2[1,2,3,4,5,6,7],ymm1[8],ymm2[9,10,11,12,13,14,15]
233 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
234 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
235 ; CHECK-NEXT:  .LBB0_50: # %else71
236 ; CHECK-NEXT:    xorl %eax, %eax
237 ; CHECK-NEXT:    testb %al, %al
238 ; CHECK-NEXT:    jne .LBB0_52
239 ; CHECK-NEXT:  # %bb.51: # %cond.load73
240 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
241 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
242 ; 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]
243 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
244 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
245 ; CHECK-NEXT:  .LBB0_52: # %else74
246 ; CHECK-NEXT:    xorl %eax, %eax
247 ; CHECK-NEXT:    testb %al, %al
248 ; CHECK-NEXT:    jne .LBB0_54
249 ; CHECK-NEXT:  # %bb.53: # %cond.load76
250 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
251 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
252 ; 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]
253 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
254 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
255 ; CHECK-NEXT:  .LBB0_54: # %else77
256 ; CHECK-NEXT:    xorl %eax, %eax
257 ; CHECK-NEXT:    testb %al, %al
258 ; CHECK-NEXT:    jne .LBB0_56
259 ; CHECK-NEXT:  # %bb.55: # %cond.load79
260 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
261 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
262 ; 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]
263 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
264 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
265 ; CHECK-NEXT:  .LBB0_56: # %else80
266 ; CHECK-NEXT:    xorl %eax, %eax
267 ; CHECK-NEXT:    testb %al, %al
268 ; CHECK-NEXT:    jne .LBB0_58
269 ; CHECK-NEXT:  # %bb.57: # %cond.load82
270 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
271 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
272 ; 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]
273 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
274 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
275 ; CHECK-NEXT:  .LBB0_58: # %else83
276 ; CHECK-NEXT:    xorl %eax, %eax
277 ; CHECK-NEXT:    testb %al, %al
278 ; CHECK-NEXT:    jne .LBB0_60
279 ; CHECK-NEXT:  # %bb.59: # %cond.load85
280 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
281 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
282 ; 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]
283 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
284 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
285 ; CHECK-NEXT:  .LBB0_60: # %else86
286 ; CHECK-NEXT:    xorl %eax, %eax
287 ; CHECK-NEXT:    testb %al, %al
288 ; CHECK-NEXT:    jne .LBB0_62
289 ; CHECK-NEXT:  # %bb.61: # %cond.load88
290 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
291 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
292 ; 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]
293 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
294 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
295 ; CHECK-NEXT:  .LBB0_62: # %else89
296 ; CHECK-NEXT:    xorl %eax, %eax
297 ; CHECK-NEXT:    testb %al, %al
298 ; CHECK-NEXT:    jne .LBB0_64
299 ; CHECK-NEXT:  # %bb.63: # %cond.load91
300 ; CHECK-NEXT:    vpbroadcastw (%rax), %ymm1
301 ; CHECK-NEXT:    vextractf64x4 $1, %zmm0, %ymm2
302 ; CHECK-NEXT:    vpblendw {{.*#+}} ymm1 = ymm2[0,1,2,3,4,5,6],ymm1[7],ymm2[8,9,10,11,12,13,14],ymm1[15]
303 ; CHECK-NEXT:    vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
304 ; CHECK-NEXT:    vinsertf64x4 $1, %ymm1, %zmm0, %zmm0
305 ; CHECK-NEXT:  .LBB0_64: # %else92
306 ; CHECK-NEXT:    retq
307   %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>)
308   ret <32 x half> %1
311 declare <32 x half> @llvm.masked.load.v32f16.p0(ptr, i32, <32 x i1>, <32 x half>)