Skip to content

Commit 0be0ab9

Browse files
committed
[X86] SimplifyDemandedVectorEltsForTargetNode - add X86ISD::VPMADDUBSW handling
In general terms, this can reuse the X86ISD::VPMADDWD code (num src elts = 2 * num dst elts) and same zero behaviour.
1 parent 2dea00b commit 0be0ab9

File tree

2 files changed

+1
-7
lines changed

2 files changed

+1
-7
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41764,6 +41764,7 @@ bool X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(
4176441764
KnownZero = LHSZero | RHSZero;
4176541765
break;
4176641766
}
41767+
case X86ISD::VPMADDUBSW:
4176741768
case X86ISD::VPMADDWD: {
4176841769
APInt LHSUndef, LHSZero;
4176941770
APInt RHSUndef, RHSZero;

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,28 +155,21 @@ define <16 x i16> @combine_pmaddubsw_concat(<16 x i8> %a0, <16 x i8> %a1, <16 x
155155
ret <16 x i16> %3
156156
}
157157

158-
; TODO: Missing SimplifyDemandedVectorElts support
159158
define <8 x i16> @combine_pmaddubsw_demandedelts(<16 x i8> %a0, <16 x i8> %a1) {
160159
; SSE-LABEL: combine_pmaddubsw_demandedelts:
161160
; SSE: # %bb.0:
162-
; SSE-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,7,8,8,8,8,8,8,8,8]
163-
; SSE-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,7,15,15,15,15,15,15,15,15]
164161
; SSE-NEXT: pmaddubsw %xmm1, %xmm0
165162
; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
166163
; SSE-NEXT: retq
167164
;
168165
; AVX1-LABEL: combine_pmaddubsw_demandedelts:
169166
; AVX1: # %bb.0:
170-
; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,7,8,8,8,8,8,8,8,8]
171-
; AVX1-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,7,15,15,15,15,15,15,15,15]
172167
; AVX1-NEXT: vpmaddubsw %xmm1, %xmm0, %xmm0
173168
; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
174169
; AVX1-NEXT: retq
175170
;
176171
; AVX2-LABEL: combine_pmaddubsw_demandedelts:
177172
; AVX2: # %bb.0:
178-
; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,7,8,8,8,8,8,8,8,8]
179-
; AVX2-NEXT: vpshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,7,15,15,15,15,15,15,15,15]
180173
; AVX2-NEXT: vpmaddubsw %xmm1, %xmm0, %xmm0
181174
; AVX2-NEXT: vpbroadcastd %xmm0, %xmm0
182175
; AVX2-NEXT: retq

0 commit comments

Comments
 (0)