[llvm] [RISCV][GISel] Support G_MERGE_VALUES/G_UNMERGE_VALUES with Zfa. (PR #120379)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 19 21:06:25 PST 2024


================
@@ -23,7 +23,9 @@ def SDT_RISCVSplitF64     : SDTypeProfile<2, 1, [SDTCisVT<0, i32>,
                                                  SDTCisVT<2, f64>]>;
 
 def RISCVBuildPairF64 : SDNode<"RISCVISD::BuildPairF64", SDT_RISCVBuildPairF64>;
+def : GINodeEquiv<G_MERGE_VALUES, RISCVBuildPairF64>;
----------------
topperc wrote:

Looks like the tablegen generated code looks like this

```
      GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,                              
      GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,                             
      GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,                             
      GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,                             
      GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(RISCV::FPR64RegClassID),
      GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(RISCV::GPRRegClassID),
      GIM_RootCheckRegBankForClass, /*Op*/2, /*RC*/GIMT_Encode2(RISCV::GPRRegClassID),
```

That seems disambiguated to the exact number of operands, types and regbank/class.

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


More information about the llvm-commits mailing list