[llvm] 58d4470 - [X86] Remove scaleVectorShuffleBlendMask and use APIntOps::ScaleBitMask directly.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 15 05:16:10 PDT 2024
Author: Simon Pilgrim
Date: 2024-04-15T13:15:54+01:00
New Revision: 58d4470fa49443da1477a7d2e43685e91bbd6630
URL: https://github.com/llvm/llvm-project/commit/58d4470fa49443da1477a7d2e43685e91bbd6630
DIFF: https://github.com/llvm/llvm-project/commit/58d4470fa49443da1477a7d2e43685e91bbd6630.diff
LOG: [X86] Remove scaleVectorShuffleBlendMask and use APIntOps::ScaleBitMask directly.
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 0a91e3f554b3d2..f16a751a166d69 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -10589,15 +10589,6 @@ static bool matchShuffleAsBlend(MVT VT, SDValue V1, SDValue V2,
return true;
}
-static uint64_t scaleVectorShuffleBlendMask(uint64_t BlendMask, int Size,
- int Scale) {
- uint64_t ScaledMask = 0;
- for (int i = 0; i != Size; ++i)
- if (BlendMask & (1ull << i))
- ScaledMask |= ((1ull << Scale) - 1) << (i * Scale);
- return ScaledMask;
-}
-
/// Try to emit a blend instruction for a shuffle.
///
/// This doesn't do any checks for the availability of instructions for blending
@@ -40539,14 +40530,15 @@ static SDValue combineTargetShuffle(SDValue N, const SDLoc &DL,
MVT SrcVT = N0.getOperand(0).getSimpleValueType();
if ((VT.getScalarSizeInBits() % SrcVT.getScalarSizeInBits()) == 0 &&
SrcVT.getScalarSizeInBits() >= 32) {
- unsigned BlendMask = N.getConstantOperandVal(2);
unsigned Size = VT.getVectorNumElements();
- unsigned Scale = VT.getScalarSizeInBits() / SrcVT.getScalarSizeInBits();
- BlendMask = scaleVectorShuffleBlendMask(BlendMask, Size, Scale);
+ unsigned NewSize = SrcVT.getVectorNumElements();
+ APInt BlendMask = N.getConstantOperandAPInt(2).zextOrTrunc(Size);
+ APInt NewBlendMask = APIntOps::ScaleBitMask(BlendMask, NewSize);
return DAG.getBitcast(
VT, DAG.getNode(X86ISD::BLENDI, DL, SrcVT, N0.getOperand(0),
N1.getOperand(0),
- DAG.getTargetConstant(BlendMask, DL, MVT::i8)));
+ DAG.getTargetConstant(NewBlendMask.getZExtValue(),
+ DL, MVT::i8)));
}
}
return SDValue();
More information about the llvm-commits
mailing list