[llvm] [RISCV] Add 32 bit GPR sub-register for Zfinx. (PR #108336)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 28 00:58:51 PDT 2024


================
@@ -723,6 +772,17 @@ bool llvm::CC_RISCV_GHC(unsigned ValNo, MVT ValVT, MVT LocVT,
     }
   }
 
+  if (LocVT == MVT::f32 && Subtarget.hasStdExtZfinx()) {
+    static const MCPhysReg GPR32List[] = {
+        RISCV::X9_W,  RISCV::X18_W, RISCV::X19_W, RISCV::X20_W,
+        RISCV::X21_W, RISCV::X22_W, RISCV::X23_W, RISCV::X24_W,
+        RISCV::X25_W, RISCV::X26_W, RISCV::X27_W};
+    if (MCRegister Reg = State.AllocateReg(GPR32List)) {
+      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
+      return false;
+    }
+  }
+
   if ((LocVT == MVT::f32 && Subtarget.hasStdExtZfinx()) ||
       (LocVT == MVT::f64 && Subtarget.hasStdExtZdinx() &&
----------------
dtcxzyw wrote:

```suggestion
  if ((LocVT == MVT::f64 && Subtarget.hasStdExtZdinx() &&
```

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


More information about the llvm-commits mailing list