@@ -554,6 +554,7 @@ class RISCVVPseudo {
554
554
Instruction BaseInstr = !cast<Instruction>(PseudoToVInst<NAME>.VInst);
555
555
// SEW = 0 is used to denote that the Pseudo is not SEW specific (or unknown).
556
556
bits<8> SEW = 0;
557
+ bit IncludeInInversePseudoTable = 1;
557
558
}
558
559
559
560
// The actual table.
@@ -568,6 +569,7 @@ def RISCVVPseudosTable : GenericTable {
568
569
569
570
def RISCVVInversePseudosTable : GenericTable {
570
571
let FilterClass = "RISCVVPseudo";
572
+ let FilterClassField = "IncludeInInversePseudoTable";
571
573
let CppTypeName = "PseudoInfo";
572
574
let Fields = [ "Pseudo", "BaseInstr", "VLMul", "SEW"];
573
575
let PrimaryKey = [ "BaseInstr", "VLMul", "SEW"];
@@ -810,6 +812,7 @@ class VPseudoUSLoadMask<VReg RetClass,
810
812
let HasSEWOp = 1;
811
813
let HasVecPolicyOp = 1;
812
814
let UsesMaskPolicy = 1;
815
+ let IncludeInInversePseudoTable = 0;
813
816
}
814
817
815
818
class VPseudoUSLoadFFNoMask<VReg RetClass,
@@ -844,6 +847,7 @@ class VPseudoUSLoadFFMask<VReg RetClass,
844
847
let HasSEWOp = 1;
845
848
let HasVecPolicyOp = 1;
846
849
let UsesMaskPolicy = 1;
850
+ let IncludeInInversePseudoTable = 0;
847
851
}
848
852
849
853
class VPseudoSLoadNoMask<VReg RetClass,
@@ -878,6 +882,7 @@ class VPseudoSLoadMask<VReg RetClass,
878
882
let HasSEWOp = 1;
879
883
let HasVecPolicyOp = 1;
880
884
let UsesMaskPolicy = 1;
885
+ let IncludeInInversePseudoTable = 0;
881
886
}
882
887
883
888
class VPseudoILoadNoMask<VReg RetClass,
@@ -924,6 +929,7 @@ class VPseudoILoadMask<VReg RetClass,
924
929
let HasSEWOp = 1;
925
930
let HasVecPolicyOp = 1;
926
931
let UsesMaskPolicy = 1;
932
+ let IncludeInInversePseudoTable = 0;
927
933
}
928
934
929
935
class VPseudoUSStoreNoMask<VReg StClass,
@@ -952,6 +958,7 @@ class VPseudoUSStoreMask<VReg StClass,
952
958
let hasSideEffects = 0;
953
959
let HasVLOp = 1;
954
960
let HasSEWOp = 1;
961
+ let IncludeInInversePseudoTable = 0;
955
962
}
956
963
957
964
class VPseudoSStoreNoMask<VReg StClass,
@@ -980,6 +987,7 @@ class VPseudoSStoreMask<VReg StClass,
980
987
let hasSideEffects = 0;
981
988
let HasVLOp = 1;
982
989
let HasSEWOp = 1;
990
+ let IncludeInInversePseudoTable = 0;
983
991
}
984
992
985
993
class VPseudoNullaryNoMask<VReg RegClass> :
@@ -1009,6 +1017,7 @@ class VPseudoNullaryMask<VReg RegClass> :
1009
1017
let HasSEWOp = 1;
1010
1018
let UsesMaskPolicy = 1;
1011
1019
let HasVecPolicyOp = 1;
1020
+ let IncludeInInversePseudoTable = 0;
1012
1021
}
1013
1022
1014
1023
// Nullary for pseudo instructions. They are expanded in
@@ -1022,6 +1031,7 @@ class VPseudoNullaryPseudoM<string BaseInst> :
1022
1031
let HasVLOp = 1;
1023
1032
let HasSEWOp = 1;
1024
1033
let BaseInstr = !cast<Instruction>(BaseInst);
1034
+ let IncludeInInversePseudoTable = 0;
1025
1035
}
1026
1036
1027
1037
class VPseudoUnaryNoMask<DAGOperand RetClass,
@@ -1097,6 +1107,7 @@ class VPseudoUnaryMask<VReg RetClass,
1097
1107
let HasSEWOp = 1;
1098
1108
let HasVecPolicyOp = 1;
1099
1109
let UsesMaskPolicy = 1;
1110
+ let IncludeInInversePseudoTable = 0;
1100
1111
}
1101
1112
1102
1113
class VPseudoUnaryMaskRoundingMode<VReg RetClass,
@@ -1120,6 +1131,7 @@ class VPseudoUnaryMaskRoundingMode<VReg RetClass,
1120
1131
let HasRoundModeOp = 1;
1121
1132
let UsesVXRM = 0;
1122
1133
let hasPostISelHook = 1;
1134
+ let IncludeInInversePseudoTable = 0;
1123
1135
}
1124
1136
1125
1137
class VPseudoUnaryMask_NoExcept<VReg RetClass,
@@ -1159,6 +1171,7 @@ class VPseudoUnaryMaskGPROut :
1159
1171
let hasSideEffects = 0;
1160
1172
let HasVLOp = 1;
1161
1173
let HasSEWOp = 1;
1174
+ let IncludeInInversePseudoTable = 0;
1162
1175
}
1163
1176
1164
1177
// Mask can be V0~V31
@@ -1258,6 +1271,7 @@ class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
1258
1271
let HasRoundModeOp = 1;
1259
1272
let UsesVXRM = UsesVXRM_;
1260
1273
let hasPostISelHook = !not(UsesVXRM_);
1274
+ let IncludeInInversePseudoTable = 0;
1261
1275
}
1262
1276
1263
1277
// Special version of VPseudoBinaryNoMask where we pretend the first source is
@@ -1281,6 +1295,7 @@ class VPseudoTiedBinaryNoMask<VReg RetClass,
1281
1295
let HasVecPolicyOp = 1;
1282
1296
let isConvertibleToThreeAddress = 1;
1283
1297
let IsTiedPseudo = 1;
1298
+ let IncludeInInversePseudoTable = 0;
1284
1299
}
1285
1300
1286
1301
class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
@@ -1306,6 +1321,7 @@ class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
1306
1321
let HasRoundModeOp = 1;
1307
1322
let UsesVXRM = 0;
1308
1323
let hasPostISelHook = 1;
1324
+ let IncludeInInversePseudoTable = 0;
1309
1325
}
1310
1326
1311
1327
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,
1334
1350
let hasSideEffects = 0;
1335
1351
let HasVLOp = 1;
1336
1352
let HasSEWOp = 1;
1353
+ let IncludeInInversePseudoTable = 0;
1337
1354
}
1338
1355
1339
1356
class VPseudoBinaryMaskPolicy<VReg RetClass,
@@ -1355,6 +1372,7 @@ class VPseudoBinaryMaskPolicy<VReg RetClass,
1355
1372
let HasSEWOp = 1;
1356
1373
let HasVecPolicyOp = 1;
1357
1374
let UsesMaskPolicy = 1;
1375
+ let IncludeInInversePseudoTable = 0;
1358
1376
}
1359
1377
1360
1378
class VPseudoTernaryMaskPolicy<VReg RetClass,
@@ -1372,6 +1390,7 @@ class VPseudoTernaryMaskPolicy<VReg RetClass,
1372
1390
let HasVLOp = 1;
1373
1391
let HasSEWOp = 1;
1374
1392
let HasVecPolicyOp = 1;
1393
+ let IncludeInInversePseudoTable = 0;
1375
1394
}
1376
1395
1377
1396
class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
@@ -1394,6 +1413,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
1394
1413
let HasRoundModeOp = 1;
1395
1414
let UsesVXRM = 0;
1396
1415
let hasPostISelHook = 1;
1416
+ let IncludeInInversePseudoTable = 0;
1397
1417
}
1398
1418
1399
1419
// Like VPseudoBinaryMaskPolicy, but output can be V0.
@@ -1416,6 +1436,7 @@ class VPseudoBinaryMOutMask<VReg RetClass,
1416
1436
let HasSEWOp = 1;
1417
1437
let HasVecPolicyOp = 1;
1418
1438
let UsesMaskPolicy = 1;
1439
+ let IncludeInInversePseudoTable = 0;
1419
1440
}
1420
1441
1421
1442
// Special version of VPseudoBinaryMaskPolicy where we pretend the first source
@@ -1440,6 +1461,7 @@ class VPseudoTiedBinaryMask<VReg RetClass,
1440
1461
let HasVecPolicyOp = 1;
1441
1462
let UsesMaskPolicy = 1;
1442
1463
let IsTiedPseudo = 1;
1464
+ let IncludeInInversePseudoTable = 0;
1443
1465
}
1444
1466
1445
1467
class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
@@ -1466,6 +1488,7 @@ class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
1466
1488
let HasRoundModeOp = 1;
1467
1489
let UsesVXRM = 0;
1468
1490
let hasPostISelHook = 1;
1491
+ let IncludeInInversePseudoTable = 0;
1469
1492
}
1470
1493
1471
1494
class VPseudoBinaryCarry<VReg RetClass,
@@ -1602,6 +1625,7 @@ class VPseudoUSSegLoadMask<VReg RetClass,
1602
1625
let HasSEWOp = 1;
1603
1626
let HasVecPolicyOp = 1;
1604
1627
let UsesMaskPolicy = 1;
1628
+ let IncludeInInversePseudoTable = 0;
1605
1629
}
1606
1630
1607
1631
class VPseudoUSSegLoadFFNoMask<VReg RetClass,
@@ -1637,6 +1661,7 @@ class VPseudoUSSegLoadFFMask<VReg RetClass,
1637
1661
let HasSEWOp = 1;
1638
1662
let HasVecPolicyOp = 1;
1639
1663
let UsesMaskPolicy = 1;
1664
+ let IncludeInInversePseudoTable = 0;
1640
1665
}
1641
1666
1642
1667
class VPseudoSSegLoadNoMask<VReg RetClass,
@@ -1673,6 +1698,7 @@ class VPseudoSSegLoadMask<VReg RetClass,
1673
1698
let HasSEWOp = 1;
1674
1699
let HasVecPolicyOp = 1;
1675
1700
let UsesMaskPolicy = 1;
1701
+ let IncludeInInversePseudoTable = 0;
1676
1702
}
1677
1703
1678
1704
class VPseudoISegLoadNoMask<VReg RetClass,
@@ -1719,6 +1745,7 @@ class VPseudoISegLoadMask<VReg RetClass,
1719
1745
let HasSEWOp = 1;
1720
1746
let HasVecPolicyOp = 1;
1721
1747
let UsesMaskPolicy = 1;
1748
+ let IncludeInInversePseudoTable = 0;
1722
1749
}
1723
1750
1724
1751
class VPseudoUSSegStoreNoMask<VReg ValClass,
@@ -1748,6 +1775,7 @@ class VPseudoUSSegStoreMask<VReg ValClass,
1748
1775
let hasSideEffects = 0;
1749
1776
let HasVLOp = 1;
1750
1777
let HasSEWOp = 1;
1778
+ let IncludeInInversePseudoTable = 0;
1751
1779
}
1752
1780
1753
1781
class VPseudoSSegStoreNoMask<VReg ValClass,
@@ -1778,6 +1806,7 @@ class VPseudoSSegStoreMask<VReg ValClass,
1778
1806
let hasSideEffects = 0;
1779
1807
let HasVLOp = 1;
1780
1808
let HasSEWOp = 1;
1809
+ let IncludeInInversePseudoTable = 0;
1781
1810
}
1782
1811
1783
1812
class VPseudoISegStoreNoMask<VReg ValClass,
@@ -1814,6 +1843,7 @@ class VPseudoISegStoreMask<VReg ValClass,
1814
1843
let hasSideEffects = 0;
1815
1844
let HasVLOp = 1;
1816
1845
let HasSEWOp = 1;
1846
+ let IncludeInInversePseudoTable = 0;
1817
1847
}
1818
1848
1819
1849
multiclass VPseudoUSLoad {
0 commit comments