@@ -554,6 +554,7 @@ class RISCVVPseudo {
554554  Instruction BaseInstr = !cast<Instruction>(PseudoToVInst<NAME>.VInst);
555555  // SEW = 0 is used to denote that the Pseudo is not SEW specific (or unknown).
556556  bits<8> SEW = 0;
557+   bit IncludeInInversePseudoTable = 1;
557558}
558559
559560// The actual table.
@@ -568,6 +569,7 @@ def RISCVVPseudosTable : GenericTable {
568569
569570def RISCVVInversePseudosTable : GenericTable {
570571  let FilterClass = "RISCVVPseudo";
572+   let FilterClassField = "IncludeInInversePseudoTable";
571573  let CppTypeName = "PseudoInfo";
572574  let Fields = [ "Pseudo", "BaseInstr", "VLMul", "SEW"];
573575  let PrimaryKey = [ "BaseInstr", "VLMul", "SEW"];
@@ -810,6 +812,7 @@ class VPseudoUSLoadMask<VReg RetClass,
810812  let HasSEWOp = 1;
811813  let HasVecPolicyOp = 1;
812814  let UsesMaskPolicy = 1;
815+   let IncludeInInversePseudoTable = 0;
813816}
814817
815818class VPseudoUSLoadFFNoMask<VReg RetClass,
@@ -844,6 +847,7 @@ class VPseudoUSLoadFFMask<VReg RetClass,
844847  let HasSEWOp = 1;
845848  let HasVecPolicyOp = 1;
846849  let UsesMaskPolicy = 1;
850+   let IncludeInInversePseudoTable = 0;
847851}
848852
849853class VPseudoSLoadNoMask<VReg RetClass,
@@ -878,6 +882,7 @@ class VPseudoSLoadMask<VReg RetClass,
878882  let HasSEWOp = 1;
879883  let HasVecPolicyOp = 1;
880884  let UsesMaskPolicy = 1;
885+   let IncludeInInversePseudoTable = 0;
881886}
882887
883888class VPseudoILoadNoMask<VReg RetClass,
@@ -924,6 +929,7 @@ class VPseudoILoadMask<VReg RetClass,
924929  let HasSEWOp = 1;
925930  let HasVecPolicyOp = 1;
926931  let UsesMaskPolicy = 1;
932+   let IncludeInInversePseudoTable = 0;
927933}
928934
929935class VPseudoUSStoreNoMask<VReg StClass,
@@ -952,6 +958,7 @@ class VPseudoUSStoreMask<VReg StClass,
952958  let hasSideEffects = 0;
953959  let HasVLOp = 1;
954960  let HasSEWOp = 1;
961+   let IncludeInInversePseudoTable = 0;
955962}
956963
957964class VPseudoSStoreNoMask<VReg StClass,
@@ -980,6 +987,7 @@ class VPseudoSStoreMask<VReg StClass,
980987  let hasSideEffects = 0;
981988  let HasVLOp = 1;
982989  let HasSEWOp = 1;
990+   let IncludeInInversePseudoTable = 0;
983991}
984992
985993class VPseudoNullaryNoMask<VReg RegClass> :
@@ -1009,6 +1017,7 @@ class VPseudoNullaryMask<VReg RegClass> :
10091017  let HasSEWOp = 1;
10101018  let UsesMaskPolicy = 1;
10111019  let HasVecPolicyOp = 1;
1020+   let IncludeInInversePseudoTable = 0;
10121021}
10131022
10141023// Nullary for pseudo instructions. They are expanded in
@@ -1022,6 +1031,7 @@ class VPseudoNullaryPseudoM<string BaseInst> :
10221031  let HasVLOp = 1;
10231032  let HasSEWOp = 1;
10241033  let BaseInstr = !cast<Instruction>(BaseInst);
1034+   let IncludeInInversePseudoTable = 0;
10251035}
10261036
10271037class VPseudoUnaryNoMask<DAGOperand RetClass,
@@ -1097,6 +1107,7 @@ class VPseudoUnaryMask<VReg RetClass,
10971107  let HasSEWOp = 1;
10981108  let HasVecPolicyOp = 1;
10991109  let UsesMaskPolicy = 1;
1110+   let IncludeInInversePseudoTable = 0;
11001111}
11011112
11021113class VPseudoUnaryMaskRoundingMode<VReg RetClass,
@@ -1120,6 +1131,7 @@ class VPseudoUnaryMaskRoundingMode<VReg RetClass,
11201131  let HasRoundModeOp = 1;
11211132  let UsesVXRM = 0;
11221133  let hasPostISelHook = 1;
1134+   let IncludeInInversePseudoTable = 0;
11231135}
11241136
11251137class VPseudoUnaryMask_NoExcept<VReg RetClass,
@@ -1159,6 +1171,7 @@ class VPseudoUnaryMaskGPROut :
11591171  let hasSideEffects = 0;
11601172  let HasVLOp = 1;
11611173  let HasSEWOp = 1;
1174+   let IncludeInInversePseudoTable = 0;
11621175}
11631176
11641177// Mask can be V0~V31
@@ -1258,6 +1271,7 @@ class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
12581271  let HasRoundModeOp = 1;
12591272  let UsesVXRM = UsesVXRM_;
12601273  let hasPostISelHook = !not(UsesVXRM_);
1274+   let IncludeInInversePseudoTable = 0;
12611275}
12621276
12631277// Special version of VPseudoBinaryNoMask where we pretend the first source is
@@ -1281,6 +1295,7 @@ class VPseudoTiedBinaryNoMask<VReg RetClass,
12811295  let HasVecPolicyOp = 1;
12821296  let isConvertibleToThreeAddress = 1;
12831297  let IsTiedPseudo = 1;
1298+   let IncludeInInversePseudoTable = 0;
12841299}
12851300
12861301class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
@@ -1306,6 +1321,7 @@ class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
13061321  let HasRoundModeOp = 1;
13071322  let UsesVXRM = 0;
13081323  let hasPostISelHook = 1;
1324+   let IncludeInInversePseudoTable = 0;
13091325}
13101326
13111327class VPseudoIStoreNoMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
@@ -1334,6 +1350,7 @@ class VPseudoIStoreMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
13341350  let hasSideEffects = 0;
13351351  let HasVLOp = 1;
13361352  let HasSEWOp = 1;
1353+   let IncludeInInversePseudoTable = 0;
13371354}
13381355
13391356class VPseudoBinaryMaskPolicy<VReg RetClass,
@@ -1355,6 +1372,7 @@ class VPseudoBinaryMaskPolicy<VReg RetClass,
13551372  let HasSEWOp = 1;
13561373  let HasVecPolicyOp = 1;
13571374  let UsesMaskPolicy = 1;
1375+   let IncludeInInversePseudoTable = 0;
13581376}
13591377
13601378class VPseudoTernaryMaskPolicy<VReg RetClass,
@@ -1372,6 +1390,7 @@ class VPseudoTernaryMaskPolicy<VReg RetClass,
13721390  let HasVLOp = 1;
13731391  let HasSEWOp = 1;
13741392  let HasVecPolicyOp = 1;
1393+   let IncludeInInversePseudoTable = 0;
13751394}
13761395
13771396class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
@@ -1394,6 +1413,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
13941413  let HasRoundModeOp = 1;
13951414  let UsesVXRM = 0;
13961415  let hasPostISelHook = 1;
1416+   let IncludeInInversePseudoTable = 0;
13971417}
13981418
13991419// Like VPseudoBinaryMaskPolicy, but output can be V0.
@@ -1416,6 +1436,7 @@ class VPseudoBinaryMOutMask<VReg RetClass,
14161436  let HasSEWOp = 1;
14171437  let HasVecPolicyOp = 1;
14181438  let UsesMaskPolicy = 1;
1439+   let IncludeInInversePseudoTable = 0;
14191440}
14201441
14211442// Special version of VPseudoBinaryMaskPolicy where we pretend the first source
@@ -1440,6 +1461,7 @@ class VPseudoTiedBinaryMask<VReg RetClass,
14401461  let HasVecPolicyOp = 1;
14411462  let UsesMaskPolicy = 1;
14421463  let IsTiedPseudo = 1;
1464+   let IncludeInInversePseudoTable = 0;
14431465}
14441466
14451467class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
@@ -1466,6 +1488,7 @@ class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
14661488  let HasRoundModeOp = 1;
14671489  let UsesVXRM = 0;
14681490  let hasPostISelHook = 1;
1491+   let IncludeInInversePseudoTable = 0;
14691492}
14701493
14711494class VPseudoBinaryCarry<VReg RetClass,
@@ -1602,6 +1625,7 @@ class VPseudoUSSegLoadMask<VReg RetClass,
16021625  let HasSEWOp = 1;
16031626  let HasVecPolicyOp = 1;
16041627  let UsesMaskPolicy = 1;
1628+   let IncludeInInversePseudoTable = 0;
16051629}
16061630
16071631class VPseudoUSSegLoadFFNoMask<VReg RetClass,
@@ -1637,6 +1661,7 @@ class VPseudoUSSegLoadFFMask<VReg RetClass,
16371661  let HasSEWOp = 1;
16381662  let HasVecPolicyOp = 1;
16391663  let UsesMaskPolicy = 1;
1664+   let IncludeInInversePseudoTable = 0;
16401665}
16411666
16421667class VPseudoSSegLoadNoMask<VReg RetClass,
@@ -1673,6 +1698,7 @@ class VPseudoSSegLoadMask<VReg RetClass,
16731698  let HasSEWOp = 1;
16741699  let HasVecPolicyOp = 1;
16751700  let UsesMaskPolicy = 1;
1701+   let IncludeInInversePseudoTable = 0;
16761702}
16771703
16781704class VPseudoISegLoadNoMask<VReg RetClass,
@@ -1719,6 +1745,7 @@ class VPseudoISegLoadMask<VReg RetClass,
17191745  let HasSEWOp = 1;
17201746  let HasVecPolicyOp = 1;
17211747  let UsesMaskPolicy = 1;
1748+   let IncludeInInversePseudoTable = 0;
17221749}
17231750
17241751class VPseudoUSSegStoreNoMask<VReg ValClass,
@@ -1748,6 +1775,7 @@ class VPseudoUSSegStoreMask<VReg ValClass,
17481775  let hasSideEffects = 0;
17491776  let HasVLOp = 1;
17501777  let HasSEWOp = 1;
1778+   let IncludeInInversePseudoTable = 0;
17511779}
17521780
17531781class VPseudoSSegStoreNoMask<VReg ValClass,
@@ -1778,6 +1806,7 @@ class VPseudoSSegStoreMask<VReg ValClass,
17781806  let hasSideEffects = 0;
17791807  let HasVLOp = 1;
17801808  let HasSEWOp = 1;
1809+   let IncludeInInversePseudoTable = 0;
17811810}
17821811
17831812class VPseudoISegStoreNoMask<VReg ValClass,
@@ -1814,6 +1843,7 @@ class VPseudoISegStoreMask<VReg ValClass,
18141843  let hasSideEffects = 0;
18151844  let HasVLOp = 1;
18161845  let HasSEWOp = 1;
1846+   let IncludeInInversePseudoTable = 0;
18171847}
18181848
18191849multiclass VPseudoUSLoad {
0 commit comments