[llvm] [RISCV] Macro-fusion support for veyron-v1 CPU. (PR #70012)
Mikhail Gudim via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 24 23:50:01 PDT 2023
================
@@ -27,29 +111,18 @@ static bool isLUIADDI(const MachineInstr *FirstMI,
if (SecondMI.getOpcode() != RISCV::ADDI &&
SecondMI.getOpcode() != RISCV::ADDIW)
return false;
-
// Assume the 1st instr to be a wildcard if it is unspecified.
if (!FirstMI)
return true;
if (FirstMI->getOpcode() != RISCV::LUI)
return false;
- Register FirstDest = FirstMI->getOperand(0).getReg();
-
- // Destination of LUI should be the ADDI(W) source register.
- if (SecondMI.getOperand(1).getReg() != FirstDest)
+ // The first operand of ADDI might be a frame index.
----------------
mgudim wrote:
oh, sorry I didn't realize that by the time we call `shouldScheduleAdjacent` we know that there is a data dependency. Ok, I looked at `MacroFusion.cpp : 177` - we only consider pairs of vertices connected by an edge of a schedule dag. But now I am starting to wonder: can we guarantee that an edge always implies data dependency? What if some other mutation creates an artificial edge without data dependency for example?
https://github.com/llvm/llvm-project/pull/70012
More information about the llvm-commits
mailing list