[llvm] [RISCV] Handle recurrences in RISCVVLOptimizer (PR #151285)
Pengcheng Wang via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 2 23:48:40 PDT 2025
================
@@ -30,6 +40,27 @@ using namespace llvm;
namespace {
+/// Wrapper around MachineOperand that defaults to immediate 0.
+struct DemandedVL {
+ MachineOperand VL;
+ DemandedVL() : VL(MachineOperand::CreateImm(0)) {}
+ DemandedVL(MachineOperand VL) : VL(VL) {}
+ static DemandedVL vlmax() {
+ return DemandedVL(MachineOperand::CreateImm(RISCV::VLMaxSentinel));
+ }
+ bool operator!=(const DemandedVL &Other) const {
+ return !VL.isIdenticalTo(Other.VL);
+ }
+};
+
+static DemandedVL max(const DemandedVL &LHS, const DemandedVL &RHS) {
+ if (RISCV::isVLKnownLE(LHS.VL, RHS.VL))
+ return RHS;
+ if (RISCV::isVLKnownLE(RHS.VL, LHS.VL))
+ return LHS;
+ return DemandedVL::vlmax();
----------------
wangpc-pp wrote:
In which case we will go into this code path?
https://github.com/llvm/llvm-project/pull/151285
More information about the llvm-commits
mailing list