diff options
author | Craig Topper <craig.topper@sifive.com> | 2025-09-09 15:56:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-09 15:56:28 -0700 |
commit | 2422686e4799040cf423ecb3610ce4368d5c7111 (patch) | |
tree | 5c8f59232f4d6dc0597150fc5d78569a1023d377 /llvm/lib/CodeGen/ExpandVectorPredication.cpp | |
parent | e320d9bdd32e6c53bef05304fceb98f62c61bde3 (diff) | |
download | llvm-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.cpp | 6 |
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); |