[PATCH] D93750: [RISCV] Frame handling for RISC-V V extension.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 4 17:17:56 PST 2021


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:620
+
+    unsigned FactorRegister = 0;
+    int ShiftAmount = &Bin - &BinSizes[0];
----------------
unsigned -> Register.

Use RISCV::NoRegister instead of 0


================
Comment at: llvm/lib/Target/RISCV/RISCVFrameLowering.cpp:621
+    unsigned FactorRegister = 0;
+    int ShiftAmount = &Bin - &BinSizes[0];
+    // The maximum LMUL is 8.
----------------
BinSizes.data() might be a little better than "&BinSizes[0]"


================
Comment at: llvm/lib/Target/RISCV/RISCVMCInstLower.cpp:204
+    OutMI.setOpcode(RISCV::CSRRS);
+    OutMI.addOperand(MCOperand::createImm(RISCVCSR::VLENB));
+    OutMI.addOperand(MCOperand::createReg(RISCV::X0));
----------------
Can we use RISCVSysReg::lookupSysRegByName("VLENB")->Encoding here instead of adding a new enum that repeats the addresses?


================
Comment at: llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp:173
+  bool NeedsIndirectAddressing = false;
+  const RISCVVPseudosTable::PseudoInfo *RVV =
+      RISCVVPseudosTable::getPseudoInfo(MI.getOpcode());
----------------
Are we just using RVV as a boolean and not a pointer? Should we do something like?

```
bool IsRVV = RISCVVPseudosTable::getPseudoInfo(MI.getOpcode()) != nullptr;
```


================
Comment at: llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp:192
+    Register RVVBaseReg = MRI.createVirtualRegister(&RISCV::GPRRegClass);
+    auto &Subtarget = MF.getSubtarget<RISCVSubtarget>();
+    unsigned LoadOpcode = Subtarget.is64Bit() ? RISCV::LD : RISCV::LW;
----------------
Add 'const' as the pre-merge check suggests.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93750/new/

https://reviews.llvm.org/D93750



More information about the llvm-commits mailing list