[llvm] cca4f54 - [InstCombine][X86] Avoid repeated getType() calls when folding blendv->select. NFC.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 26 04:45:14 PDT 2024
Author: Simon Pilgrim
Date: 2024-06-26T12:44:52+01:00
New Revision: cca4f549bddd28742f370571296b46054c98d27b
URL: https://github.com/llvm/llvm-project/commit/cca4f549bddd28742f370571296b46054c98d27b
DIFF: https://github.com/llvm/llvm-project/commit/cca4f549bddd28742f370571296b46054c98d27b.diff
LOG: [InstCombine][X86] Avoid repeated getType() calls when folding blendv->select. NFC.
Cleanup prep work for #58895
Added:
Modified:
llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp b/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
index 8e75e185f0f66..8cf502d820e90 100644
--- a/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
+++ b/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
@@ -2701,14 +2701,14 @@ X86TTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const {
if (match(Mask, PatternMatch::m_SExt(PatternMatch::m_Value(BoolVec))) &&
BoolVec->getType()->isVectorTy() &&
BoolVec->getType()->getScalarSizeInBits() == 1) {
- assert(Mask->getType()->getPrimitiveSizeInBits() ==
- II.getType()->getPrimitiveSizeInBits() &&
+ auto *MaskTy = cast<FixedVectorType>(Mask->getType());
+ auto *OpTy = cast<FixedVectorType>(II.getType());
+ assert(MaskTy->getPrimitiveSizeInBits() ==
+ OpTy->getPrimitiveSizeInBits() &&
"Not expecting mask and operands with
diff erent sizes");
+ unsigned NumMaskElts = MaskTy->getNumElements();
+ unsigned NumOperandElts = OpTy->getNumElements();
- unsigned NumMaskElts =
- cast<FixedVectorType>(Mask->getType())->getNumElements();
- unsigned NumOperandElts =
- cast<FixedVectorType>(II.getType())->getNumElements();
if (NumMaskElts == NumOperandElts) {
return SelectInst::Create(BoolVec, Op1, Op0);
}
@@ -2716,8 +2716,8 @@ X86TTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const {
// If the mask has less elements than the operands, each mask bit maps to
// multiple elements of the operands. Bitcast back and forth.
if (NumMaskElts < NumOperandElts) {
- Value *CastOp0 = IC.Builder.CreateBitCast(Op0, Mask->getType());
- Value *CastOp1 = IC.Builder.CreateBitCast(Op1, Mask->getType());
+ Value *CastOp0 = IC.Builder.CreateBitCast(Op0, MaskTy);
+ Value *CastOp1 = IC.Builder.CreateBitCast(Op1, MaskTy);
Value *Sel = IC.Builder.CreateSelect(BoolVec, CastOp1, CastOp0);
return new BitCastInst(Sel, II.getType());
}
More information about the llvm-commits
mailing list