[PATCH] D127871: [RISCV] Optimize 2x SELECT for floating-point types

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 18 12:02:53 PDT 2022


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:9630
+  auto FirstCC = static_cast<RISCVCC::CondCode>(First.getOperand(3).getImm());
+  Register fLHS = First.getOperand(1).getReg();
+  Register fRHS = First.getOperand(2).getReg();
----------------
Variable names should start with a capital letter


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:9637
+      .addMBB(SinkMBB);
+  BuildMI(ThisMBB, DL, TII.get(RISCV::PseudoBR)).addMBB(FirstMBB);
+
----------------
Why do we need an explicit PseudoBR? Can't we let it fallthrough?


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:9709
+  MachineBasicBlock::iterator NextMIIt = MachineBasicBlock::iterator(MI);
+  ++NextMIIt;
+  if (MI.getOpcode() != RISCV::Select_GPR_Using_CC_GPR &&
----------------
Should this use `next_nodbg` to increment?


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:9711
+  if (MI.getOpcode() != RISCV::Select_GPR_Using_CC_GPR &&
+      NextMIIt->getOpcode() == MI.getOpcode() && NextMIIt != BB->end() &&
+      NextMIIt->getOperand(5).getReg() == MI.getOperand(0).getReg() &&
----------------
Shouldn't we be checking `NextMIIt != BB->end()` before checking the opcode of `NextMIIt`?


================
Comment at: llvm/test/CodeGen/RISCV/select-optimize-multiple.ll:537
+
+define dso_local float @CascadedSelect(float noundef %a) local_unnamed_addr #0 {
+; RV32I-LABEL: CascadedSelect:
----------------
Drop dso_local and local_unnamed_addr and `#0`


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127871



More information about the llvm-commits mailing list