@@ -1074,6 +1074,7 @@ class VPseudoUnaryNoMaskRoundingMode<DAGOperand RetClass,
1074
1074
let HasVecPolicyOp = 1;
1075
1075
let HasRoundModeOp = 1;
1076
1076
let UsesVXRM = 0;
1077
+ let hasPostISelHook = 1;
1077
1078
}
1078
1079
1079
1080
class VPseudoUnaryMask<VReg RetClass,
@@ -1115,6 +1116,7 @@ class VPseudoUnaryMaskRoundingMode<VReg RetClass,
1115
1116
let UsesMaskPolicy = 1;
1116
1117
let HasRoundModeOp = 1;
1117
1118
let UsesVXRM = 0;
1119
+ let hasPostISelHook = 1;
1118
1120
}
1119
1121
1120
1122
class VPseudoUnaryMask_NoExcept<VReg RetClass,
@@ -1151,6 +1153,7 @@ class VPseudoUnaryNoMask_FRM<VReg RetClass,
1151
1153
let HasSEWOp = 1;
1152
1154
let HasVecPolicyOp = 1;
1153
1155
let HasRoundModeOp = 1;
1156
+ let hasPostISelHook = 1;
1154
1157
}
1155
1158
1156
1159
class VPseudoUnaryMask_FRM<VReg RetClass,
@@ -1172,6 +1175,7 @@ class VPseudoUnaryMask_FRM<VReg RetClass,
1172
1175
let HasVecPolicyOp = 1;
1173
1176
let UsesMaskPolicy = 1;
1174
1177
let HasRoundModeOp = 1;
1178
+ let hasPostISelHook = 1;
1175
1179
}
1176
1180
1177
1181
class VPseudoUnaryNoMaskGPROut :
@@ -1266,6 +1270,7 @@ class VPseudoBinaryNoMaskRoundingMode<VReg RetClass,
1266
1270
let HasVecPolicyOp = 1;
1267
1271
let HasRoundModeOp = 1;
1268
1272
let UsesVXRM = UsesVXRM_;
1273
+ let hasPostISelHook = !not(UsesVXRM_);
1269
1274
}
1270
1275
1271
1276
class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
@@ -1290,6 +1295,7 @@ class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
1290
1295
let UsesMaskPolicy = 1;
1291
1296
let HasRoundModeOp = 1;
1292
1297
let UsesVXRM = UsesVXRM_;
1298
+ let hasPostISelHook = !not(UsesVXRM_);
1293
1299
}
1294
1300
1295
1301
// Special version of VPseudoBinaryNoMask where we pretend the first source is
@@ -1337,6 +1343,7 @@ class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
1337
1343
let IsTiedPseudo = 1;
1338
1344
let HasRoundModeOp = 1;
1339
1345
let UsesVXRM = 0;
1346
+ let hasPostISelHook = 1;
1340
1347
}
1341
1348
1342
1349
class VPseudoIStoreNoMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
@@ -1424,6 +1431,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
1424
1431
let HasVecPolicyOp = 1;
1425
1432
let HasRoundModeOp = 1;
1426
1433
let UsesVXRM = 0;
1434
+ let hasPostISelHook = 1;
1427
1435
}
1428
1436
1429
1437
// Like VPseudoBinaryMaskPolicy, but output can be V0 and there is no policy.
@@ -1494,6 +1502,7 @@ class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
1494
1502
let IsTiedPseudo = 1;
1495
1503
let HasRoundModeOp = 1;
1496
1504
let UsesVXRM = 0;
1505
+ let hasPostISelHook = 1;
1497
1506
}
1498
1507
1499
1508
class VPseudoBinaryCarry<VReg RetClass,
@@ -1594,6 +1603,7 @@ class VPseudoTernaryNoMaskWithPolicyRoundingMode<VReg RetClass,
1594
1603
let HasSEWOp = 1;
1595
1604
let HasRoundModeOp = 1;
1596
1605
let UsesVXRM = 0;
1606
+ let hasPostISelHook = 1;
1597
1607
}
1598
1608
1599
1609
class VPseudoUSSegLoadNoMask<VReg RetClass,
@@ -6455,7 +6465,7 @@ let Predicates = [HasVInstructionsAnyF] in {
6455
6465
//===----------------------------------------------------------------------===//
6456
6466
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
6457
6467
//===----------------------------------------------------------------------===//
6458
- let mayRaiseFPException = true, hasPostISelHook = 1 in {
6468
+ let mayRaiseFPException = true in {
6459
6469
defm PseudoVFADD : VPseudoVALU_VV_VF_RM;
6460
6470
defm PseudoVFSUB : VPseudoVALU_VV_VF_RM;
6461
6471
defm PseudoVFRSUB : VPseudoVALU_VF_RM;
@@ -6464,7 +6474,7 @@ defm PseudoVFRSUB : VPseudoVALU_VF_RM;
6464
6474
//===----------------------------------------------------------------------===//
6465
6475
// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
6466
6476
//===----------------------------------------------------------------------===//
6467
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6477
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6468
6478
defm PseudoVFWADD : VPseudoVFWALU_VV_VF_RM;
6469
6479
defm PseudoVFWSUB : VPseudoVFWALU_VV_VF_RM;
6470
6480
defm PseudoVFWADD : VPseudoVFWALU_WV_WF_RM;
@@ -6474,7 +6484,7 @@ defm PseudoVFWSUB : VPseudoVFWALU_WV_WF_RM;
6474
6484
//===----------------------------------------------------------------------===//
6475
6485
// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
6476
6486
//===----------------------------------------------------------------------===//
6477
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6487
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6478
6488
defm PseudoVFMUL : VPseudoVFMUL_VV_VF_RM;
6479
6489
defm PseudoVFDIV : VPseudoVFDIV_VV_VF_RM;
6480
6490
defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
@@ -6483,14 +6493,14 @@ defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
6483
6493
//===----------------------------------------------------------------------===//
6484
6494
// 13.5. Vector Widening Floating-Point Multiply
6485
6495
//===----------------------------------------------------------------------===//
6486
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6496
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6487
6497
defm PseudoVFWMUL : VPseudoVWMUL_VV_VF_RM;
6488
6498
}
6489
6499
6490
6500
//===----------------------------------------------------------------------===//
6491
6501
// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
6492
6502
//===----------------------------------------------------------------------===//
6493
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6503
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6494
6504
defm PseudoVFMACC : VPseudoVMAC_VV_VF_AAXA_RM;
6495
6505
defm PseudoVFNMACC : VPseudoVMAC_VV_VF_AAXA_RM;
6496
6506
defm PseudoVFMSAC : VPseudoVMAC_VV_VF_AAXA_RM;
@@ -6504,7 +6514,7 @@ defm PseudoVFNMSUB : VPseudoVMAC_VV_VF_AAXA_RM;
6504
6514
//===----------------------------------------------------------------------===//
6505
6515
// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
6506
6516
//===----------------------------------------------------------------------===//
6507
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6517
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6508
6518
defm PseudoVFWMACC : VPseudoVWMAC_VV_VF_RM;
6509
6519
defm PseudoVFWNMACC : VPseudoVWMAC_VV_VF_RM;
6510
6520
defm PseudoVFWMSAC : VPseudoVWMAC_VV_VF_RM;
@@ -6516,7 +6526,7 @@ defm PseudoVFWMACCBF16 : VPseudoVWMAC_VV_VF_BF_RM;
6516
6526
//===----------------------------------------------------------------------===//
6517
6527
// 13.8. Vector Floating-Point Square-Root Instruction
6518
6528
//===----------------------------------------------------------------------===//
6519
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6529
+ let mayRaiseFPException = true, hasSideEffects = 0 in
6520
6530
defm PseudoVFSQRT : VPseudoVSQR_V_RM;
6521
6531
6522
6532
//===----------------------------------------------------------------------===//
@@ -6528,7 +6538,7 @@ defm PseudoVFRSQRT7 : VPseudoVRCP_V;
6528
6538
//===----------------------------------------------------------------------===//
6529
6539
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
6530
6540
//===----------------------------------------------------------------------===//
6531
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6541
+ let mayRaiseFPException = true, hasSideEffects = 0 in
6532
6542
defm PseudoVFREC7 : VPseudoVRCP_V_RM;
6533
6543
6534
6544
//===----------------------------------------------------------------------===//
@@ -6578,7 +6588,7 @@ defm PseudoVFMV_V : VPseudoVMV_F;
6578
6588
// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
6579
6589
//===----------------------------------------------------------------------===//
6580
6590
let mayRaiseFPException = true in {
6581
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6591
+ let hasSideEffects = 0 in {
6582
6592
defm PseudoVFCVT_XU_F : VPseudoVCVTI_V_RM;
6583
6593
defm PseudoVFCVT_X_F : VPseudoVCVTI_V_RM;
6584
6594
}
@@ -6590,7 +6600,7 @@ defm PseudoVFCVT_RTZ_XU_F : VPseudoVCVTI_V;
6590
6600
defm PseudoVFCVT_RTZ_X_F : VPseudoVCVTI_V;
6591
6601
6592
6602
defm PseudoVFROUND_NOEXCEPT : VPseudoVFROUND_NOEXCEPT_V;
6593
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6603
+ let hasSideEffects = 0 in {
6594
6604
defm PseudoVFCVT_F_XU : VPseudoVCVTF_V_RM;
6595
6605
defm PseudoVFCVT_F_X : VPseudoVCVTF_V_RM;
6596
6606
}
@@ -6602,7 +6612,7 @@ defm PseudoVFCVT_RM_F_X : VPseudoVCVTF_RM_V;
6602
6612
// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
6603
6613
//===----------------------------------------------------------------------===//
6604
6614
let mayRaiseFPException = true in {
6605
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6615
+ let hasSideEffects = 0 in {
6606
6616
defm PseudoVFWCVT_XU_F : VPseudoVWCVTI_V_RM;
6607
6617
defm PseudoVFWCVT_X_F : VPseudoVWCVTI_V_RM;
6608
6618
}
@@ -6623,7 +6633,7 @@ defm PseudoVFWCVTBF16_F_F : VPseudoVWCVTD_V;
6623
6633
// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
6624
6634
//===----------------------------------------------------------------------===//
6625
6635
let mayRaiseFPException = true in {
6626
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6636
+ let hasSideEffects = 0 in {
6627
6637
defm PseudoVFNCVT_XU_F : VPseudoVNCVTI_W_RM;
6628
6638
defm PseudoVFNCVT_X_F : VPseudoVNCVTI_W_RM;
6629
6639
}
@@ -6633,14 +6643,14 @@ defm PseudoVFNCVT_RM_X_F : VPseudoVNCVTI_RM_W;
6633
6643
defm PseudoVFNCVT_RTZ_XU_F : VPseudoVNCVTI_W;
6634
6644
defm PseudoVFNCVT_RTZ_X_F : VPseudoVNCVTI_W;
6635
6645
6636
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6646
+ let hasSideEffects = 0 in {
6637
6647
defm PseudoVFNCVT_F_XU : VPseudoVNCVTF_W_RM;
6638
6648
defm PseudoVFNCVT_F_X : VPseudoVNCVTF_W_RM;
6639
6649
}
6640
6650
defm PseudoVFNCVT_RM_F_XU : VPseudoVNCVTF_RM_W;
6641
6651
defm PseudoVFNCVT_RM_F_X : VPseudoVNCVTF_RM_W;
6642
6652
6643
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6653
+ let hasSideEffects = 0 in {
6644
6654
defm PseudoVFNCVT_F_F : VPseudoVNCVTD_W_RM;
6645
6655
defm PseudoVFNCVTBF16_F_F : VPseudoVNCVTD_W_RM;
6646
6656
}
@@ -6679,7 +6689,7 @@ let Predicates = [HasVInstructionsAnyF] in {
6679
6689
//===----------------------------------------------------------------------===//
6680
6690
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
6681
6691
//===----------------------------------------------------------------------===//
6682
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6692
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6683
6693
defm PseudoVFREDOSUM : VPseudoVFREDO_VS_RM;
6684
6694
defm PseudoVFREDUSUM : VPseudoVFRED_VS_RM;
6685
6695
}
@@ -6691,8 +6701,7 @@ defm PseudoVFREDMAX : VPseudoVFREDMINMAX_VS;
6691
6701
//===----------------------------------------------------------------------===//
6692
6702
// 14.4. Vector Widening Floating-Point Reduction Instructions
6693
6703
//===----------------------------------------------------------------------===//
6694
- let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true,
6695
- hasPostISelHook = 1 in {
6704
+ let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true in {
6696
6705
defm PseudoVFWREDUSUM : VPseudoVFWRED_VS_RM;
6697
6706
defm PseudoVFWREDOSUM : VPseudoVFWREDO_VS_RM;
6698
6707
}
0 commit comments