Skip to content

Commit 2fc0d8c

Browse files
authored
[X86] combineConcatVectorOps - add handling for ISD::SMIN/SMAX/UMIN/UMAX vector ops (llvm#172667)
1 parent a452be5 commit 2fc0d8c

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59632,6 +59632,10 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
5963259632
case ISD::ADD:
5963359633
case ISD::SUB:
5963459634
case ISD::MUL:
59635+
case ISD::SMIN:
59636+
case ISD::SMAX:
59637+
case ISD::UMIN:
59638+
case ISD::UMAX:
5963559639
// TODO: Add more integer binops?
5963659640
if (!IsSplat && ((VT.is256BitVector() && Subtarget.hasInt256()) ||
5963759641
(VT.is512BitVector() && Subtarget.useAVX512Regs() &&

llvm/test/CodeGen/X86/combine-icmp.ll

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -532,18 +532,16 @@ define i64 @concat_icmp_v64i8_v16i8(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2,
532532
;
533533
; AVX2-LABEL: concat_icmp_v64i8_v16i8:
534534
; AVX2: # %bb.0:
535-
; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm4 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]
536-
; AVX2-NEXT: vpmaxub %xmm4, %xmm0, %xmm5
537-
; AVX2-NEXT: vpcmpeqb %xmm5, %xmm0, %xmm0
538-
; AVX2-NEXT: vpmaxub %xmm4, %xmm1, %xmm5
539-
; AVX2-NEXT: vpcmpeqb %xmm5, %xmm1, %xmm1
540-
; AVX2-NEXT: vpmaxub %xmm4, %xmm2, %xmm5
541-
; AVX2-NEXT: vpcmpeqb %xmm5, %xmm2, %xmm2
542-
; AVX2-NEXT: vpmaxub %xmm4, %xmm3, %xmm4
543-
; AVX2-NEXT: vpcmpeqb %xmm4, %xmm3, %xmm3
535+
; AVX2-NEXT: # kill: def $xmm2 killed $xmm2 def $ymm2
536+
; AVX2-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0
544537
; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
538+
; AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]
539+
; AVX2-NEXT: vpmaxub %ymm1, %ymm0, %ymm4
540+
; AVX2-NEXT: vpcmpeqb %ymm4, %ymm0, %ymm0
545541
; AVX2-NEXT: vpmovmskb %ymm0, %ecx
546542
; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm0
543+
; AVX2-NEXT: vpmaxub %ymm1, %ymm0, %ymm1
544+
; AVX2-NEXT: vpcmpeqb %ymm1, %ymm0, %ymm0
547545
; AVX2-NEXT: vpmovmskb %ymm0, %eax
548546
; AVX2-NEXT: shlq $32, %rax
549547
; AVX2-NEXT: orq %rcx, %rax

0 commit comments

Comments
 (0)