aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/ExpandVectorPredication.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2025-09-09 15:56:28 -0700
committerGitHub <noreply@github.com>2025-09-09 15:56:28 -0700
commit2422686e4799040cf423ecb3610ce4368d5c7111 (patch)
tree5c8f59232f4d6dc0597150fc5d78569a1023d377 /llvm/lib/CodeGen/ExpandVectorPredication.cpp
parente320d9bdd32e6c53bef05304fceb98f62c61bde3 (diff)
downloadllvm-2422686e4799040cf423ecb3610ce4368d5c7111.zip
llvm-2422686e4799040cf423ecb3610ce4368d5c7111.tar.gz
llvm-2422686e4799040cf423ecb3610ce4368d5c7111.tar.bz2
[ExpandVectorPredication] Add vp.select to foldEVLIntoMask. (#157720)
Diffstat (limited to 'llvm/lib/CodeGen/ExpandVectorPredication.cpp')
-rw-r--r--llvm/lib/CodeGen/ExpandVectorPredication.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/ExpandVectorPredication.cpp b/llvm/lib/CodeGen/ExpandVectorPredication.cpp
index 673c4f7..75e8fe4 100644
--- a/llvm/lib/CodeGen/ExpandVectorPredication.cpp
+++ b/llvm/lib/CodeGen/ExpandVectorPredication.cpp
@@ -521,7 +521,8 @@ bool CachingVPExpander::foldEVLIntoMask(VPIntrinsic &VPI) {
// Only VP intrinsics can have an %evl parameter.
Value *OldMaskParam = VPI.getMaskParam();
if (!OldMaskParam) {
- assert(VPI.getIntrinsicID() == Intrinsic::vp_merge &&
+ assert((VPI.getIntrinsicID() == Intrinsic::vp_merge ||
+ VPI.getIntrinsicID() == Intrinsic::vp_select) &&
"Unexpected VP intrinsic without mask operand");
OldMaskParam = VPI.getArgOperand(0);
}
@@ -537,7 +538,8 @@ bool CachingVPExpander::foldEVLIntoMask(VPIntrinsic &VPI) {
ElementCount ElemCount = VPI.getStaticVectorLength();
Value *VLMask = convertEVLToMask(Builder, OldEVLParam, ElemCount);
Value *NewMaskParam = Builder.CreateAnd(VLMask, OldMaskParam);
- if (VPI.getIntrinsicID() == Intrinsic::vp_merge)
+ if (VPI.getIntrinsicID() == Intrinsic::vp_merge ||
+ VPI.getIntrinsicID() == Intrinsic::vp_select)
VPI.setArgOperand(0, NewMaskParam);
else
VPI.setMaskParam(NewMaskParam);