Skip to content

Commit 256786e

Browse files
committed
Pull out repeated calls to VT.getVectorNumElements(). NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315818 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 13c2b5d commit 256786e

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

lib/Target/X86/X86ISelLowering.cpp

+11-10
Original file line numberDiff line numberDiff line change
@@ -31475,23 +31475,24 @@ static SDValue reduceVMULWidth(SDNode *N, SelectionDAG &DAG,
3147531475
SDValue N0 = N->getOperand(0);
3147631476
SDValue N1 = N->getOperand(1);
3147731477
EVT VT = N->getOperand(0).getValueType();
31478+
unsigned NumElts = VT.getVectorNumElements();
3147831479
unsigned RegSize = 128;
3147931480
MVT OpsVT = MVT::getVectorVT(MVT::i16, RegSize / 16);
31480-
EVT ReducedVT =
31481-
EVT::getVectorVT(*DAG.getContext(), MVT::i16, VT.getVectorNumElements());
31481+
EVT ReducedVT = EVT::getVectorVT(*DAG.getContext(), MVT::i16, NumElts);
31482+
3148231483
// Shrink the operands of mul.
3148331484
SDValue NewN0 = DAG.getNode(ISD::TRUNCATE, DL, ReducedVT, N0);
3148431485
SDValue NewN1 = DAG.getNode(ISD::TRUNCATE, DL, ReducedVT, N1);
3148531486

31486-
if (VT.getVectorNumElements() >= OpsVT.getVectorNumElements()) {
31487+
if (NumElts >= OpsVT.getVectorNumElements()) {
3148731488
// Generate the lower part of mul: pmullw. For MULU8/MULS8, only the
3148831489
// lower part is needed.
3148931490
SDValue MulLo = DAG.getNode(ISD::MUL, DL, ReducedVT, NewN0, NewN1);
3149031491
if (Mode == MULU8 || Mode == MULS8) {
3149131492
return DAG.getNode((Mode == MULU8) ? ISD::ZERO_EXTEND : ISD::SIGN_EXTEND,
3149231493
DL, VT, MulLo);
3149331494
} else {
31494-
MVT ResVT = MVT::getVectorVT(MVT::i32, VT.getVectorNumElements() / 2);
31495+
MVT ResVT = MVT::getVectorVT(MVT::i32, NumElts / 2);
3149531496
// Generate the higher part of mul: pmulhw/pmulhuw. For MULU16/MULS16,
3149631497
// the higher part is also needed.
3149731498
SDValue MulHi = DAG.getNode(Mode == MULS16 ? ISD::MULHS : ISD::MULHU, DL,
@@ -31500,18 +31501,18 @@ static SDValue reduceVMULWidth(SDNode *N, SelectionDAG &DAG,
3150031501
// Repack the lower part and higher part result of mul into a wider
3150131502
// result.
3150231503
// Generate shuffle functioning as punpcklwd.
31503-
SmallVector<int, 16> ShuffleMask(VT.getVectorNumElements());
31504-
for (unsigned i = 0; i < VT.getVectorNumElements() / 2; i++) {
31504+
SmallVector<int, 16> ShuffleMask(NumElts);
31505+
for (unsigned i = 0, e = NumElts/ 2; i < e; i++) {
3150531506
ShuffleMask[2 * i] = i;
31506-
ShuffleMask[2 * i + 1] = i + VT.getVectorNumElements();
31507+
ShuffleMask[2 * i + 1] = i + NumElts;
3150731508
}
3150831509
SDValue ResLo =
3150931510
DAG.getVectorShuffle(ReducedVT, DL, MulLo, MulHi, ShuffleMask);
3151031511
ResLo = DAG.getBitcast(ResVT, ResLo);
3151131512
// Generate shuffle functioning as punpckhwd.
31512-
for (unsigned i = 0; i < VT.getVectorNumElements() / 2; i++) {
31513-
ShuffleMask[2 * i] = i + VT.getVectorNumElements() / 2;
31514-
ShuffleMask[2 * i + 1] = i + VT.getVectorNumElements() * 3 / 2;
31513+
for (unsigned i = 0, e = NumElts / 2; i < e; i++) {
31514+
ShuffleMask[2 * i] = i + NumElts / 2;
31515+
ShuffleMask[2 * i + 1] = i + NumElts * 3 / 2;
3151531516
}
3151631517
SDValue ResHi =
3151731518
DAG.getVectorShuffle(ReducedVT, DL, MulLo, MulHi, ShuffleMask);

0 commit comments

Comments
 (0)