[PATCH] D152948: [RISCV] Refactor how we create separate instructions for F and Zfinx. NFC
Shao-Ce SUN via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 14 14:32:54 PDT 2023
sunshaoce added inline comments.
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoF.td:442-447
multiclass PatSetCC_m<SDPatternOperator OpNode, CondCode Cond,
- RVInst Inst, list<ExtInfo_r> Exts> {
- foreach Ext = Exts in
- let Predicates = Ext.Predicates in
- def Ext.Suffix : PatSetCC<Ext.Reg, OpNode, Cond,
- !cast<RVInst>(Inst#Ext.Suffix)>;
+ RVInst Inst, ExtInfo Ext, DAGOperand Reg> {
+ let Predicates = Ext.Predicates in
+ def Ext.Suffix : PatSetCC<Reg, OpNode, Cond,
+ !cast<RVInst>(Inst#Ext.Suffix)>;
}
----------------
I have a suggestion that may not be entirely accurate.
We can add a `DefaultTy` in the `class ExtInfo`. Then, in `PatSetCC_m`, we can replace `PatSetCC<Reg` with `PatSetCC<Ext.DefaultTy`, so that we don't need to pass `Ext` and `Reg` every time.
This approach could be applied to other classes, especially those that only require passing a single `Reg`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152948/new/
https://reviews.llvm.org/D152948
More information about the llvm-commits
mailing list