@@ -145,11 +145,10 @@ define <32 x i16> @concat_trunc_packssdw_512(<16 x i32> %a0, <16 x i32> %a1) nou
145
145
; AVX512-NEXT: vpsrad $23, %zmm1, %zmm1
146
146
; AVX512-NEXT: vpmovdw %zmm0, %ymm0
147
147
; AVX512-NEXT: vpmovdw %zmm1, %ymm1
148
- ; AVX512-NEXT: vmovdqa {{.*#+}} ymm2 = [2,6,3,7]
149
- ; AVX512-NEXT: vpermi2q %ymm1, %ymm0, %ymm2
150
- ; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [0,4,1,5]
151
- ; AVX512-NEXT: vpermi2q %ymm1, %ymm0, %ymm3
152
- ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm0
148
+ ; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm1, %zmm1
149
+ ; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm2
150
+ ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,8,1,9,6,14,7,15]
151
+ ; AVX512-NEXT: vpermi2q %zmm1, %zmm2, %zmm0
153
152
; AVX512-NEXT: retq
154
153
%1 = ashr <16 x i32 > %a0 , <i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 >
155
154
%2 = ashr <16 x i32 > %a1 , <i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 >
@@ -166,11 +165,10 @@ define <32 x i16> @concat_trunc_packusdw_512(<16 x i32> %a0, <16 x i32> %a1) nou
166
165
; AVX512-NEXT: vpsrld $23, %zmm1, %zmm1
167
166
; AVX512-NEXT: vpmovdw %zmm0, %ymm0
168
167
; AVX512-NEXT: vpmovdw %zmm1, %ymm1
169
- ; AVX512-NEXT: vmovdqa {{.*#+}} ymm2 = [2,6,3,7]
170
- ; AVX512-NEXT: vpermi2q %ymm1, %ymm0, %ymm2
171
- ; AVX512-NEXT: vmovdqa {{.*#+}} ymm3 = [0,4,1,5]
172
- ; AVX512-NEXT: vpermi2q %ymm1, %ymm0, %ymm3
173
- ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm0
168
+ ; AVX512-NEXT: vinserti64x4 $1, %ymm1, %zmm1, %zmm1
169
+ ; AVX512-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm2
170
+ ; AVX512-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,8,1,9,6,14,7,15]
171
+ ; AVX512-NEXT: vpermi2q %zmm1, %zmm2, %zmm0
174
172
; AVX512-NEXT: retq
175
173
%1 = lshr <16 x i32 > %a0 , <i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 >
176
174
%2 = lshr <16 x i32 > %a1 , <i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 , i32 23 >
@@ -183,26 +181,25 @@ define <32 x i16> @concat_trunc_packusdw_512(<16 x i32> %a0, <16 x i32> %a1) nou
183
181
define <64 x i8 > @concat_trunc_packsswb_512 (<32 x i16 > %a0 , <32 x i16 > %a1 ) nounwind {
184
182
; AVX512F-LABEL: concat_trunc_packsswb_512:
185
183
; AVX512F: # %bb.0:
186
- ; AVX512F-NEXT: vextracti64x4 $1 , %zmm0 , %ymm2
187
- ; AVX512F-NEXT: vpsraw $15 , %ymm2 , %ymm2
184
+ ; AVX512F-NEXT: vpsraw $15 , %ymm0 , %ymm2
185
+ ; AVX512F-NEXT: vextracti64x4 $1 , %zmm0 , %ymm0
188
186
; AVX512F-NEXT: vpsraw $15, %ymm0, %ymm0
189
187
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
190
188
; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
189
+ ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
191
190
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm2 = ymm2[0],zero,ymm2[1],zero,ymm2[2],zero,ymm2[3],zero,ymm2[4],zero,ymm2[5],zero,ymm2[6],zero,ymm2[7],zero,ymm2[8],zero,ymm2[9],zero,ymm2[10],zero,ymm2[11],zero,ymm2[12],zero,ymm2[13],zero,ymm2[14],zero,ymm2[15],zero
192
191
; AVX512F-NEXT: vpmovdb %zmm2, %xmm2
193
- ; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0
194
- ; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm2 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
195
- ; AVX512F-NEXT: vpmovdb %zmm2, %xmm2
192
+ ; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm3 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
193
+ ; AVX512F-NEXT: vpmovdb %zmm3, %xmm3
196
194
; AVX512F-NEXT: vextracti64x4 $1, %zmm1, %ymm1
197
195
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm1 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
198
196
; AVX512F-NEXT: vpmovdb %zmm1, %xmm1
199
- ; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm2 , %ymm1
197
+ ; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm3 , %ymm1
200
198
; AVX512F-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
201
- ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm2 = [2,6,3,7]
202
- ; AVX512F-NEXT: vpermi2q %ymm1, %ymm0, %ymm2
203
- ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm3 = [0,4,1,5]
204
- ; AVX512F-NEXT: vpermi2q %ymm1, %ymm0, %ymm3
205
- ; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm0
199
+ ; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm2
200
+ ; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm1, %zmm1
201
+ ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,8,1,9,6,14,7,15]
202
+ ; AVX512F-NEXT: vpermi2q %zmm1, %zmm2, %zmm0
206
203
; AVX512F-NEXT: retq
207
204
;
208
205
; AVX512BW-LABEL: concat_trunc_packsswb_512:
@@ -211,11 +208,10 @@ define <64 x i8> @concat_trunc_packsswb_512(<32 x i16> %a0, <32 x i16> %a1) noun
211
208
; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0
212
209
; AVX512BW-NEXT: vpmovwb %zmm1, %ymm1
213
210
; AVX512BW-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
214
- ; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm2 = [2,6,3,7]
215
- ; AVX512BW-NEXT: vpermi2q %ymm1, %ymm0, %ymm2
216
- ; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm3 = [0,4,1,5]
217
- ; AVX512BW-NEXT: vpermi2q %ymm1, %ymm0, %ymm3
218
- ; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm0
211
+ ; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm1, %zmm1
212
+ ; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm2
213
+ ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,8,1,9,6,14,7,15]
214
+ ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm2, %zmm0
219
215
; AVX512BW-NEXT: retq
220
216
%1 = ashr <32 x i16 > %a0 , <i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 >
221
217
%2 = and <32 x i16 > %a1 , <i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 >
@@ -228,26 +224,25 @@ define <64 x i8> @concat_trunc_packsswb_512(<32 x i16> %a0, <32 x i16> %a1) noun
228
224
define <64 x i8 > @concat_trunc_packuswb_512 (<32 x i16 > %a0 , <32 x i16 > %a1 ) nounwind {
229
225
; AVX512F-LABEL: concat_trunc_packuswb_512:
230
226
; AVX512F: # %bb.0:
231
- ; AVX512F-NEXT: vextracti64x4 $1 , %zmm0 , %ymm2
232
- ; AVX512F-NEXT: vpsrlw $15 , %ymm2 , %ymm2
227
+ ; AVX512F-NEXT: vpsrlw $15 , %ymm0 , %ymm2
228
+ ; AVX512F-NEXT: vextracti64x4 $1 , %zmm0 , %ymm0
233
229
; AVX512F-NEXT: vpsrlw $15, %ymm0, %ymm0
234
230
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
235
231
; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
232
+ ; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
236
233
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm2 = ymm2[0],zero,ymm2[1],zero,ymm2[2],zero,ymm2[3],zero,ymm2[4],zero,ymm2[5],zero,ymm2[6],zero,ymm2[7],zero,ymm2[8],zero,ymm2[9],zero,ymm2[10],zero,ymm2[11],zero,ymm2[12],zero,ymm2[13],zero,ymm2[14],zero,ymm2[15],zero
237
234
; AVX512F-NEXT: vpmovdb %zmm2, %xmm2
238
- ; AVX512F-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0
239
- ; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm2 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
240
- ; AVX512F-NEXT: vpmovdb %zmm2, %xmm2
235
+ ; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm3 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
236
+ ; AVX512F-NEXT: vpmovdb %zmm3, %xmm3
241
237
; AVX512F-NEXT: vextracti64x4 $1, %zmm1, %ymm1
242
238
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm1 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
243
239
; AVX512F-NEXT: vpmovdb %zmm1, %xmm1
244
- ; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm2 , %ymm1
240
+ ; AVX512F-NEXT: vinserti128 $1, %xmm1, %ymm3 , %ymm1
245
241
; AVX512F-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
246
- ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm2 = [2,6,3,7]
247
- ; AVX512F-NEXT: vpermi2q %ymm1, %ymm0, %ymm2
248
- ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm3 = [0,4,1,5]
249
- ; AVX512F-NEXT: vpermi2q %ymm1, %ymm0, %ymm3
250
- ; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm0
242
+ ; AVX512F-NEXT: vinserti64x4 $1, %ymm0, %zmm2, %zmm2
243
+ ; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm1, %zmm1
244
+ ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,8,1,9,6,14,7,15]
245
+ ; AVX512F-NEXT: vpermi2q %zmm1, %zmm2, %zmm0
251
246
; AVX512F-NEXT: retq
252
247
;
253
248
; AVX512BW-LABEL: concat_trunc_packuswb_512:
@@ -256,11 +251,10 @@ define <64 x i8> @concat_trunc_packuswb_512(<32 x i16> %a0, <32 x i16> %a1) noun
256
251
; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0
257
252
; AVX512BW-NEXT: vpmovwb %zmm1, %ymm1
258
253
; AVX512BW-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
259
- ; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm2 = [2,6,3,7]
260
- ; AVX512BW-NEXT: vpermi2q %ymm1, %ymm0, %ymm2
261
- ; AVX512BW-NEXT: vmovdqa {{.*#+}} ymm3 = [0,4,1,5]
262
- ; AVX512BW-NEXT: vpermi2q %ymm1, %ymm0, %ymm3
263
- ; AVX512BW-NEXT: vinserti64x4 $1, %ymm2, %zmm3, %zmm0
254
+ ; AVX512BW-NEXT: vinserti64x4 $1, %ymm1, %zmm1, %zmm1
255
+ ; AVX512BW-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm2
256
+ ; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm0 = [0,8,1,9,6,14,7,15]
257
+ ; AVX512BW-NEXT: vpermi2q %zmm1, %zmm2, %zmm0
264
258
; AVX512BW-NEXT: retq
265
259
%1 = lshr <32 x i16 > %a0 , <i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 , i16 15 >
266
260
%2 = and <32 x i16 > %a1 , <i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 , i16 1 >
0 commit comments