[llvm] r315818 - Pull out repeated calls to VT.getVectorNumElements(). NFCI.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 14 10:37:43 PDT 2017
Author: rksimon
Date: Sat Oct 14 10:37:42 2017
New Revision: 315818
URL: http://llvm.org/viewvc/llvm-project?rev=315818&view=rev
Log:
Pull out repeated calls to VT.getVectorNumElements(). NFCI.
Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=315818&r1=315817&r2=315818&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sat Oct 14 10:37:42 2017
@@ -31475,15 +31475,16 @@ static SDValue reduceVMULWidth(SDNode *N
SDValue N0 = N->getOperand(0);
SDValue N1 = N->getOperand(1);
EVT VT = N->getOperand(0).getValueType();
+ unsigned NumElts = VT.getVectorNumElements();
unsigned RegSize = 128;
MVT OpsVT = MVT::getVectorVT(MVT::i16, RegSize / 16);
- EVT ReducedVT =
- EVT::getVectorVT(*DAG.getContext(), MVT::i16, VT.getVectorNumElements());
+ EVT ReducedVT = EVT::getVectorVT(*DAG.getContext(), MVT::i16, NumElts);
+
// Shrink the operands of mul.
SDValue NewN0 = DAG.getNode(ISD::TRUNCATE, DL, ReducedVT, N0);
SDValue NewN1 = DAG.getNode(ISD::TRUNCATE, DL, ReducedVT, N1);
- if (VT.getVectorNumElements() >= OpsVT.getVectorNumElements()) {
+ if (NumElts >= OpsVT.getVectorNumElements()) {
// Generate the lower part of mul: pmullw. For MULU8/MULS8, only the
// lower part is needed.
SDValue MulLo = DAG.getNode(ISD::MUL, DL, ReducedVT, NewN0, NewN1);
@@ -31491,7 +31492,7 @@ static SDValue reduceVMULWidth(SDNode *N
return DAG.getNode((Mode == MULU8) ? ISD::ZERO_EXTEND : ISD::SIGN_EXTEND,
DL, VT, MulLo);
} else {
- MVT ResVT = MVT::getVectorVT(MVT::i32, VT.getVectorNumElements() / 2);
+ MVT ResVT = MVT::getVectorVT(MVT::i32, NumElts / 2);
// Generate the higher part of mul: pmulhw/pmulhuw. For MULU16/MULS16,
// the higher part is also needed.
SDValue MulHi = DAG.getNode(Mode == MULS16 ? ISD::MULHS : ISD::MULHU, DL,
@@ -31500,18 +31501,18 @@ static SDValue reduceVMULWidth(SDNode *N
// Repack the lower part and higher part result of mul into a wider
// result.
// Generate shuffle functioning as punpcklwd.
- SmallVector<int, 16> ShuffleMask(VT.getVectorNumElements());
- for (unsigned i = 0; i < VT.getVectorNumElements() / 2; i++) {
+ SmallVector<int, 16> ShuffleMask(NumElts);
+ for (unsigned i = 0, e = NumElts/ 2; i < e; i++) {
ShuffleMask[2 * i] = i;
- ShuffleMask[2 * i + 1] = i + VT.getVectorNumElements();
+ ShuffleMask[2 * i + 1] = i + NumElts;
}
SDValue ResLo =
DAG.getVectorShuffle(ReducedVT, DL, MulLo, MulHi, ShuffleMask);
ResLo = DAG.getBitcast(ResVT, ResLo);
// Generate shuffle functioning as punpckhwd.
- for (unsigned i = 0; i < VT.getVectorNumElements() / 2; i++) {
- ShuffleMask[2 * i] = i + VT.getVectorNumElements() / 2;
- ShuffleMask[2 * i + 1] = i + VT.getVectorNumElements() * 3 / 2;
+ for (unsigned i = 0, e = NumElts / 2; i < e; i++) {
+ ShuffleMask[2 * i] = i + NumElts / 2;
+ ShuffleMask[2 * i + 1] = i + NumElts * 3 / 2;
}
SDValue ResHi =
DAG.getVectorShuffle(ReducedVT, DL, MulLo, MulHi, ShuffleMask);
More information about the llvm-commits
mailing list