[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 21:59:34 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:

I think we do need the check `SecondMI.getOperand(1).isReg()`  because later we do `SecondMI.getOperand(1).getReg() != FirstDest` - this may crash, right?

I've put that check as a first line of `checkRegisters`.

https://github.com/llvm/llvm-project/pull/70012


More information about the llvm-commits mailing list