[llvm] 872931e - [RISCV] Use multiclass inheritance where possible for the VPat* multiclasses in RISVInstrInfoVPseudos. NFCI
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 8 15:16:32 PDT 2021
Author: Craig Topper
Date: 2021-04-08T15:14:06-07:00
New Revision: 872931e5d8572aadd3827c6e746ff2043f083d2e
URL: https://github.com/llvm/llvm-project/commit/872931e5d8572aadd3827c6e746ff2043f083d2e
DIFF: https://github.com/llvm/llvm-project/commit/872931e5d8572aadd3827c6e746ff2043f083d2e.diff
LOG: [RISCV] Use multiclass inheritance where possible for the VPat* multiclasses in RISVInstrInfoVPseudos. NFCI
Instead of instantiating multiclasses inside multiclasses, just
inherit from them.
We can do the same for the VPseudo* multiclasses, but that may
interfere with the scheduler class work.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
index 05b3bf717ad1..d3178fb15844 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
@@ -2751,86 +2751,62 @@ multiclass VPatBinaryM_VI<string intrinsic, string instruction,
multiclass VPatBinaryV_VV_VX_VI<string intrinsic, string instruction,
list<VTypeInfo> vtilist, Operand ImmType = simm5>
-{
- defm "" : VPatBinaryV_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryV_VX<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryV_VI<intrinsic, instruction, vtilist, ImmType>;
-}
+ : VPatBinaryV_VV<intrinsic, instruction, vtilist>,
+ VPatBinaryV_VX<intrinsic, instruction, vtilist>,
+ VPatBinaryV_VI<intrinsic, instruction, vtilist, ImmType>;
multiclass VPatBinaryV_VV_VX<string intrinsic, string instruction,
list<VTypeInfo> vtilist>
-{
- defm "" : VPatBinaryV_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryV_VX<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryV_VV<intrinsic, instruction, vtilist>,
+ VPatBinaryV_VX<intrinsic, instruction, vtilist>;
multiclass VPatBinaryV_VX_VI<string intrinsic, string instruction,
list<VTypeInfo> vtilist>
-{
- defm "" : VPatBinaryV_VX<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryV_VI<intrinsic, instruction, vtilist, simm5>;
-}
+ : VPatBinaryV_VX<intrinsic, instruction, vtilist>,
+ VPatBinaryV_VI<intrinsic, instruction, vtilist, simm5>;
multiclass VPatBinaryW_VV_VX<string intrinsic, string instruction,
list<VTypeInfoToWide> vtilist>
-{
- defm "" : VPatBinaryW_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryW_VX<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryW_VV<intrinsic, instruction, vtilist>,
+ VPatBinaryW_VX<intrinsic, instruction, vtilist>;
multiclass VPatBinaryW_WV_WX<string intrinsic, string instruction,
list<VTypeInfoToWide> vtilist>
-{
- defm "" : VPatBinaryW_WV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryW_WX<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryW_WV<intrinsic, instruction, vtilist>,
+ VPatBinaryW_WX<intrinsic, instruction, vtilist>;
multiclass VPatBinaryV_WV_WX_WI<string intrinsic, string instruction,
list<VTypeInfoToWide> vtilist>
-{
- defm "" : VPatBinaryV_WV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryV_WX<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryV_WI<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryV_WV<intrinsic, instruction, vtilist>,
+ VPatBinaryV_WX<intrinsic, instruction, vtilist>,
+ VPatBinaryV_WI<intrinsic, instruction, vtilist>;
multiclass VPatBinaryV_VM_XM_IM<string intrinsic, string instruction>
-{
- defm "" : VPatBinaryV_VM<intrinsic, instruction>;
- defm "" : VPatBinaryV_XM<intrinsic, instruction>;
- defm "" : VPatBinaryV_IM<intrinsic, instruction>;
-}
+ : VPatBinaryV_VM<intrinsic, instruction>,
+ VPatBinaryV_XM<intrinsic, instruction>,
+ VPatBinaryV_IM<intrinsic, instruction>;
multiclass VPatBinaryM_VM_XM_IM<string intrinsic, string instruction>
-{
- defm "" : VPatBinaryV_VM<intrinsic, instruction, /*CarryOut=*/1>;
- defm "" : VPatBinaryV_XM<intrinsic, instruction, /*CarryOut=*/1>;
- defm "" : VPatBinaryV_IM<intrinsic, instruction, /*CarryOut=*/1>;
-}
+ : VPatBinaryV_VM<intrinsic, instruction, /*CarryOut=*/1>,
+ VPatBinaryV_XM<intrinsic, instruction, /*CarryOut=*/1>,
+ VPatBinaryV_IM<intrinsic, instruction, /*CarryOut=*/1>;
multiclass VPatBinaryM_V_X_I<string intrinsic, string instruction>
-{
- defm "" : VPatBinaryV_V<intrinsic, instruction>;
- defm "" : VPatBinaryV_X<intrinsic, instruction>;
- defm "" : VPatBinaryV_I<intrinsic, instruction>;
-}
+ : VPatBinaryV_V<intrinsic, instruction>,
+ VPatBinaryV_X<intrinsic, instruction>,
+ VPatBinaryV_I<intrinsic, instruction>;
multiclass VPatBinaryV_VM_XM<string intrinsic, string instruction>
-{
- defm "" : VPatBinaryV_VM<intrinsic, instruction>;
- defm "" : VPatBinaryV_XM<intrinsic, instruction>;
-}
+ : VPatBinaryV_VM<intrinsic, instruction>,
+ VPatBinaryV_XM<intrinsic, instruction>;
multiclass VPatBinaryM_VM_XM<string intrinsic, string instruction>
-{
- defm "" : VPatBinaryV_VM<intrinsic, instruction, /*CarryOut=*/1>;
- defm "" : VPatBinaryV_XM<intrinsic, instruction, /*CarryOut=*/1>;
-}
+ : VPatBinaryV_VM<intrinsic, instruction, /*CarryOut=*/1>,
+ VPatBinaryV_XM<intrinsic, instruction, /*CarryOut=*/1>;
multiclass VPatBinaryM_V_X<string intrinsic, string instruction>
-{
- defm "" : VPatBinaryV_V<intrinsic, instruction>;
- defm "" : VPatBinaryV_X<intrinsic, instruction>;
-}
+ : VPatBinaryV_V<intrinsic, instruction>,
+ VPatBinaryV_X<intrinsic, instruction>;
multiclass VPatTernary<string intrinsic,
string inst,
@@ -2915,52 +2891,41 @@ multiclass VPatTernaryW_VX<string intrinsic, string instruction,
}
multiclass VPatTernaryV_VV_VX_AAXA<string intrinsic, string instruction,
- list<VTypeInfo> vtilist> {
- defm "" : VPatTernaryV_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatTernaryV_VX_AAXA<intrinsic, instruction, vtilist>;
-}
+ list<VTypeInfo> vtilist>
+ : VPatTernaryV_VV<intrinsic, instruction, vtilist>,
+ VPatTernaryV_VX_AAXA<intrinsic, instruction, vtilist>;
multiclass VPatTernaryV_VX_VI<string intrinsic, string instruction,
- list<VTypeInfo> vtilist, Operand Imm_type = simm5> {
- defm "" : VPatTernaryV_VX<intrinsic, instruction, vtilist>;
- defm "" : VPatTernaryV_VI<intrinsic, instruction, vtilist, Imm_type>;
-}
+ list<VTypeInfo> vtilist, Operand Imm_type = simm5>
+ : VPatTernaryV_VX<intrinsic, instruction, vtilist>,
+ VPatTernaryV_VI<intrinsic, instruction, vtilist, Imm_type>;
multiclass VPatBinaryM_VV_VX_VI<string intrinsic, string instruction,
list<VTypeInfo> vtilist>
-{
- defm "" : VPatBinaryM_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryM_VX<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryM_VI<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryM_VV<intrinsic, instruction, vtilist>,
+ VPatBinaryM_VX<intrinsic, instruction, vtilist>,
+ VPatBinaryM_VI<intrinsic, instruction, vtilist>;
multiclass VPatTernaryW_VV_VX<string intrinsic, string instruction,
- list<VTypeInfoToWide> vtilist> {
- defm "" : VPatTernaryW_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatTernaryW_VX<intrinsic, instruction, vtilist>;
-}
+ list<VTypeInfoToWide> vtilist>
+ : VPatTernaryW_VV<intrinsic, instruction, vtilist>,
+ VPatTernaryW_VX<intrinsic, instruction, vtilist>;
multiclass VPatBinaryM_VV_VX<string intrinsic, string instruction,
list<VTypeInfo> vtilist>
-{
- defm "" : VPatBinaryM_VV<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryM_VX<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryM_VV<intrinsic, instruction, vtilist>,
+ VPatBinaryM_VX<intrinsic, instruction, vtilist>;
multiclass VPatBinaryM_VX_VI<string intrinsic, string instruction,
list<VTypeInfo> vtilist>
-{
- defm "" : VPatBinaryM_VX<intrinsic, instruction, vtilist>;
- defm "" : VPatBinaryM_VI<intrinsic, instruction, vtilist>;
-}
+ : VPatBinaryM_VX<intrinsic, instruction, vtilist>,
+ VPatBinaryM_VI<intrinsic, instruction, vtilist>;
multiclass VPatBinaryV_VV_VX_VI_INT<string intrinsic, string instruction,
list<VTypeInfo> vtilist, Operand ImmType = simm5>
-{
- defm "" : VPatBinaryV_VV_INT<intrinsic#"_vv", instruction, vtilist>;
- defm "" : VPatBinaryV_VX_INT<intrinsic#"_vx", instruction, vtilist>;
- defm "" : VPatBinaryV_VI<intrinsic#"_vx", instruction, vtilist, ImmType>;
-}
+ : VPatBinaryV_VV_INT<intrinsic#"_vv", instruction, vtilist>,
+ VPatBinaryV_VX_INT<intrinsic#"_vx", instruction, vtilist>,
+ VPatBinaryV_VI<intrinsic#"_vx", instruction, vtilist, ImmType>;
multiclass VPatReductionV_VS<string intrinsic, string instruction, bit IsFloat = 0> {
foreach vti = !if(IsFloat, NoGroupFloatVectors, NoGroupIntegerVectors) in
More information about the llvm-commits
mailing list