[PATCH] D84324: AMDGPU/GlobalISel: Lower G_FREM

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 6 06:06:38 PDT 2020


foad accepted this revision.
foad added a comment.

Looks OK to me but please wait to hear from @arsenm too.



================
Comment at: llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h:1661-1667
+  /// Build and insert \p Res = G_FDIV \p Op0, \p Op1
+  MachineInstrBuilder buildFDiv(const DstOp &Dst, const SrcOp &Src0,
+                                const SrcOp &Src1,
+                                Optional<unsigned> Flags = None) {
+    return buildInstr(TargetOpcode::G_FDIV, {Dst}, {Src0, Src1}, Flags);
+  }
+
----------------
Maybe put this declaration next to buildFAdd / buildFSub ?


================
Comment at: llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp:703-705
+  getActionDefinitionsBuilder(G_FREM)
+    .customFor({S16, S32, S64})
+    .scalarize(0);
----------------
Does this need to be conditional on ST.has16BitInsts ?


================
Comment at: llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp:1868-1869
+    auto Div = B.buildFDiv(Ty, Src0Reg, Src1Reg, Flags);
+    auto FpTrunc = B.buildInstr(TargetOpcode::G_INTRINSIC_TRUNC, {Ty},
+                                                {Div}, Flags);
+    auto Neg = B.buildFNeg(Ty, FpTrunc, Flags);
----------------
Use buildIntrinsicTrunc?


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

https://reviews.llvm.org/D84324



More information about the llvm-commits mailing list