@@ -259,7 +259,7 @@ define void @blendv_split(ptr %p, <8 x i32> %cond, <8 x i32> %a, <8 x i32> %x, <
259
259
ret void
260
260
}
261
261
262
- ; TODO: Concatenate 128-bit pblendvb back together on AVX2+ targets (hidden by SSE __m128i bitcasts)
262
+ ; Concatenate 128-bit pblendvb back together on AVX2+ targets (hidden by SSE __m128i bitcasts)
263
263
define <4 x i64 > @vselect_concat_split_v16i8 (<4 x i64 > %a , <4 x i64 > %b , <4 x i64 > %c , <4 x i64 > %d ) {
264
264
; AVX1-LABEL: vselect_concat_split_v16i8:
265
265
; AVX1: ## %bb.0:
@@ -277,24 +277,13 @@ define <4 x i64> @vselect_concat_split_v16i8(<4 x i64> %a, <4 x i64> %b, <4 x i6
277
277
; AVX2-LABEL: vselect_concat_split_v16i8:
278
278
; AVX2: ## %bb.0:
279
279
; AVX2-NEXT: vpcmpgtb %ymm2, %ymm3, %ymm2
280
- ; AVX2-NEXT: vpblendvb %xmm2, %xmm1, %xmm0, %xmm3
281
- ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
282
- ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm1
283
- ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm2
284
- ; AVX2-NEXT: vpblendvb %xmm2, %xmm1, %xmm0, %xmm0
285
- ; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm3, %ymm0
280
+ ; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0
286
281
; AVX2-NEXT: retq
287
282
;
288
283
; AVX512-LABEL: vselect_concat_split_v16i8:
289
284
; AVX512: ## %bb.0:
290
285
; AVX512-NEXT: vpcmpgtb %ymm2, %ymm3, %ymm2
291
- ; AVX512-NEXT: vextracti128 $1, %ymm2, %xmm3
292
- ; AVX512-NEXT: vextracti128 $1, %ymm1, %xmm4
293
- ; AVX512-NEXT: ## kill: def $xmm1 killed $xmm1 killed $ymm1 def $ymm1
294
- ; AVX512-NEXT: vpternlogq $226, %xmm0, %xmm2, %xmm1
295
- ; AVX512-NEXT: vextracti128 $1, %ymm0, %xmm0
296
- ; AVX512-NEXT: vpternlogq $226, %xmm0, %xmm3, %xmm4
297
- ; AVX512-NEXT: vinserti128 $1, %xmm4, %ymm1, %ymm0
286
+ ; AVX512-NEXT: vpternlogq $216, %ymm2, %ymm1, %ymm0
298
287
; AVX512-NEXT: retq
299
288
%a.bc = bitcast <4 x i64 > %a to <32 x i8 >
300
289
%b.bc = bitcast <4 x i64 > %b to <32 x i8 >
0 commit comments