[llvm] 2c8b6f1 - [RISCV] Specify FilterClassField to filter out unneeded pseudos (#65460)

via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 14 22:02:30 PDT 2023


Author: Wang Pengcheng
Date: 2023-09-15T13:02:26+08:00
New Revision: 2c8b6f16a60e99f5a39c55a91fde747e899c5422

URL: https://github.com/llvm/llvm-project/commit/2c8b6f16a60e99f5a39c55a91fde747e899c5422
DIFF: https://github.com/llvm/llvm-project/commit/2c8b6f16a60e99f5a39c55a91fde747e899c5422.diff

LOG: [RISCV] Specify FilterClassField to filter out unneeded pseudos (#65460)

`VMCLR` and `VMSET` will be expanded before MC emitting, so we
don't need them being in RISCVVPseudosTable.

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 c3f2f1035bb7471..233f06ddb479777 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
@@ -527,11 +527,13 @@ class RISCVVPseudo {
   Instruction BaseInstr = !cast<Instruction>(PseudoToVInst<NAME>.VInst);
   // SEW = 0 is used to denote that the Pseudo is not SEW specific (or unknown).
   bits<8> SEW = 0;
+  bit NeedBeInPseudoTable = 1;
 }
 
 // The actual table.
 def RISCVVPseudosTable : GenericTable {
   let FilterClass = "RISCVVPseudo";
+  let FilterClassField = "NeedBeInPseudoTable";
   let CppTypeName = "PseudoInfo";
   let Fields = [ "Pseudo", "BaseInstr" ];
   let PrimaryKey = [ "Pseudo" ];
@@ -998,6 +1000,8 @@ class VPseudoNullaryPseudoM<string BaseInst> :
   // BaseInstr is not used in RISCVExpandPseudoInsts pass.
   // Just fill a corresponding real v-inst to pass tablegen check.
   let BaseInstr = !cast<Instruction>(BaseInst);
+  // We exclude them from RISCVVPseudoTable.
+  let NeedBeInPseudoTable = 0;
 }
 
 class VPseudoUnaryNoMask<DAGOperand RetClass,


        


More information about the llvm-commits mailing list