[llvm] [AArch64][GlobalISel] Add `G_FMODF` instruction (PR #160061)

Ryan Cowan via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 24 07:21:22 PDT 2025


================
@@ -3331,6 +3383,24 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) {
     widenScalarDst(MI, WideTy, 0, TargetOpcode::G_FPTRUNC);
     Observer.changedInstr(MI);
     return Legalized;
+  case TargetOpcode::G_FMODF: {
+    widenScalarSrc(MI, WideTy, 2, TargetOpcode::G_FPEXT);
+
+    Register DstFrac = MI.getOperand(0).getReg();
+    Register DstInt = MI.getOperand(1).getReg();
+
+    Register DstFracWide = MRI.createGenericVirtualRegister(WideTy);
+    Register DstIntWide = MRI.createGenericVirtualRegister(WideTy);
+    Register SrcWide = MI.getOperand(2).getReg();
+
+    MIRBuilder.buildInstr(TargetOpcode::G_FMODF, {DstFracWide, DstIntWide},
----------------
HolyMolyCowMan wrote:

I don't think so, I attempted a few times but I get the following error:
```
Use of %2 does not have a corresponding definition on every path:
160r $h0 = COPY %2:fpr16
LLVM ERROR: Use not jointly dominated by defs.
```

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


More information about the llvm-commits mailing list