@@ -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