[PATCH] D93963: [GlobalISel][AMDGPU] Lower G_UMULO/G_SMULO

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 15 14:25:09 PST 2021


arsenm added inline comments.


================
Comment at: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp:1836
+  if (IsSigned) {
+    auto SExtResult = MIRBuilder.buildSExtInReg(WideTy, Mul, SrcBitWidth);
+    MIRBuilder.buildICmp(CmpInst::ICMP_NE, Overflow, Mul, SExtResult);
----------------
Can you copy some of the comments from the DAG version? Stuff like    
// Unsigned overflow occurred if the high part is non-zero.
and    

// Signed overflow occurred if the high part does not sign extend the low.



================
Comment at: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp:3649-3652
+  auto Result = MI.getOperand(0);
+  auto Overflow = MI.getOperand(1);
+  auto LHS = MI.getOperand(2);
+  auto RHS = MI.getOperand(3);
----------------
Should just directly extract the reg here, there's no reason to refer to the MachineOperand. This is also using value copies of MachineOperand, which are generally not a good idea


================
Comment at: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp:3674-3675
+    Register Operand2 = UnmergeRHS->getOperand(I).getReg();
+    Register Result = MRI.createGenericVirtualRegister(ResultTy);
+    Register Overflow = MRI.createGenericVirtualRegister(OverflowTy);
+    MIRBuilder.buildInstr(MI.getOpcode(), {Result, Overflow},
----------------
You can hide the createGenericVirtual register calls with build Instr like buildInstr(Opc, {ResultTy, OverFlowTy}...


================
Comment at: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp:3683-3684
+  LLT ResultLCMTy = buildLCMMergePieces(SrcTy, NarrowTy, GCDTy, ResultParts);
+  LLT OverflowLCMTy =
+      LLT::scalarOrVector(ResultLCMTy.getNumElements(), LLT::scalar(1));
+
----------------
You should preserve the boolean type of the incoming, not hardcode to s1. We also have LLT.changeElementType for this


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D93963



More information about the llvm-commits mailing list