[llvm] [RISCV] Minimally modify incoming state in transferBefore (PR #72352)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 19 21:24:54 PST 2023
================
@@ -1013,73 +1015,76 @@ bool RISCVInsertVSETVLI::needVSETVLI(const MachineInstr &MI,
return true;
}
-// Given an incoming state reaching MI, modifies that state so that it is minimally
-// compatible with MI. The resulting state is guaranteed to be semantically legal
-// for MI, but may not be the state requested by MI.
+// Given an incoming state reaching MI, minimally modifies that state so that it
+// is compatible with MI. The resulting state is guaranteed to be semantically
+// legal for MI, but may not be the state requested by MI.
void RISCVInsertVSETVLI::transferBefore(VSETVLIInfo &Info,
const MachineInstr &MI) const {
uint64_t TSFlags = MI.getDesc().TSFlags;
if (!RISCVII::hasSEWOp(TSFlags))
return;
- const VSETVLIInfo NewInfo = computeInfoForInstr(MI, TSFlags, MRI);
+ VSETVLIInfo NewInfo = computeInfoForInstr(MI, TSFlags, MRI);
if (Info.isValid() && !needVSETVLI(MI, NewInfo, Info))
return;
- const VSETVLIInfo PrevInfo = Info;
- Info = NewInfo;
+ if (Info.hasSEWLMULRatioOnly() || !Info.isValid() || Info.isUnknown())
+ Info = NewInfo;
- if (!RISCVII::hasVLOp(TSFlags))
- return;
+ DemandedFields Demanded = getDemanded(MI, MRI, ST);
// If we don't use LMUL or the SEW/LMUL ratio, then adjust LMUL so that we
// maintain the SEW/LMUL ratio. This allows us to eliminate VL toggles in more
// places.
- DemandedFields Demanded = getDemanded(MI, MRI, ST);
if (!Demanded.LMUL && !Demanded.SEWLMULRatio && Info.isValid() &&
----------------
lukel97 wrote:
Done in 933dd03386df3c0cfedf4fe6bc984d776f1298ca
https://github.com/llvm/llvm-project/pull/72352
More information about the llvm-commits
mailing list