Skip to content

Commit a0be17d

Browse files
authored
[RISCV] Remove unnecessary entries from RISCVVInversePseudosTable. NFC (#128376)
The inverse pseudos table contained entries that map back to the unmasked and masked pseudo, but the lookup only returns the first one. Add a new FilterClassField to remove the unnecessary entries. This reduces the size of the llvm-mca binary by ~32KB.
1 parent 7f6f186 commit a0be17d

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

569570
def 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

815818
class 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

849853
class 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

883888
class 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

929935
class 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

957964
class 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

985993
class 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

10271037
class 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

11021113
class 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

11251137
class 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

12861301
class 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

13111327
class 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

13391356
class 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

13601378
class 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

13771396
class 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

14451467
class 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

14711494
class 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

16071631
class 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

16421667
class 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

16781704
class 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

17241751
class 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

17531781
class 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

17831812
class 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

18191849
multiclass VPseudoUSLoad {

0 commit comments

Comments
 (0)