@@ -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,
@@ -1226,6 +1228,7 @@ class VPseudoBinaryNoMaskRoundingMode<VReg RetClass,
1226
1228
let HasVecPolicyOp = 1;
1227
1229
let HasRoundModeOp = 1;
1228
1230
let UsesVXRM = UsesVXRM_;
1231
+ let hasPostISelHook = !not(UsesVXRM_);
1229
1232
}
1230
1233
1231
1234
class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
@@ -1250,6 +1253,7 @@ class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
1250
1253
let UsesMaskPolicy = 1;
1251
1254
let HasRoundModeOp = 1;
1252
1255
let UsesVXRM = UsesVXRM_;
1256
+ let hasPostISelHook = !not(UsesVXRM_);
1253
1257
}
1254
1258
1255
1259
// Special version of VPseudoBinaryNoMask where we pretend the first source is
@@ -1297,6 +1301,7 @@ class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
1297
1301
let IsTiedPseudo = 1;
1298
1302
let HasRoundModeOp = 1;
1299
1303
let UsesVXRM = 0;
1304
+ let hasPostISelHook = 1;
1300
1305
}
1301
1306
1302
1307
class VPseudoIStoreNoMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
@@ -1384,6 +1389,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
1384
1389
let HasVecPolicyOp = 1;
1385
1390
let HasRoundModeOp = 1;
1386
1391
let UsesVXRM = 0;
1392
+ let hasPostISelHook = 1;
1387
1393
}
1388
1394
1389
1395
// Like VPseudoBinaryMaskPolicy, but output can be V0 and there is no policy.
@@ -1454,6 +1460,7 @@ class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
1454
1460
let IsTiedPseudo = 1;
1455
1461
let HasRoundModeOp = 1;
1456
1462
let UsesVXRM = 0;
1463
+ let hasPostISelHook = 1;
1457
1464
}
1458
1465
1459
1466
class VPseudoBinaryCarry<VReg RetClass,
@@ -1554,6 +1561,7 @@ class VPseudoTernaryNoMaskWithPolicyRoundingMode<VReg RetClass,
1554
1561
let HasSEWOp = 1;
1555
1562
let HasRoundModeOp = 1;
1556
1563
let UsesVXRM = 0;
1564
+ let hasPostISelHook = 1;
1557
1565
}
1558
1566
1559
1567
class VPseudoUSSegLoadNoMask<VReg RetClass,
@@ -6352,7 +6360,7 @@ let Predicates = [HasVInstructionsAnyF] in {
6352
6360
//===----------------------------------------------------------------------===//
6353
6361
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
6354
6362
//===----------------------------------------------------------------------===//
6355
- let mayRaiseFPException = true, hasPostISelHook = 1 in {
6363
+ let mayRaiseFPException = true in {
6356
6364
defm PseudoVFADD : VPseudoVALU_VV_VF_RM;
6357
6365
defm PseudoVFSUB : VPseudoVALU_VV_VF_RM;
6358
6366
defm PseudoVFRSUB : VPseudoVALU_VF_RM;
@@ -6361,7 +6369,7 @@ defm PseudoVFRSUB : VPseudoVALU_VF_RM;
6361
6369
//===----------------------------------------------------------------------===//
6362
6370
// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
6363
6371
//===----------------------------------------------------------------------===//
6364
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6372
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6365
6373
defm PseudoVFWADD : VPseudoVFWALU_VV_VF_RM;
6366
6374
defm PseudoVFWSUB : VPseudoVFWALU_VV_VF_RM;
6367
6375
defm PseudoVFWADD : VPseudoVFWALU_WV_WF_RM;
@@ -6371,7 +6379,7 @@ defm PseudoVFWSUB : VPseudoVFWALU_WV_WF_RM;
6371
6379
//===----------------------------------------------------------------------===//
6372
6380
// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
6373
6381
//===----------------------------------------------------------------------===//
6374
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6382
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6375
6383
defm PseudoVFMUL : VPseudoVFMUL_VV_VF_RM;
6376
6384
defm PseudoVFDIV : VPseudoVFDIV_VV_VF_RM;
6377
6385
defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
@@ -6380,14 +6388,14 @@ defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
6380
6388
//===----------------------------------------------------------------------===//
6381
6389
// 13.5. Vector Widening Floating-Point Multiply
6382
6390
//===----------------------------------------------------------------------===//
6383
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6391
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6384
6392
defm PseudoVFWMUL : VPseudoVWMUL_VV_VF_RM;
6385
6393
}
6386
6394
6387
6395
//===----------------------------------------------------------------------===//
6388
6396
// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
6389
6397
//===----------------------------------------------------------------------===//
6390
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6398
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6391
6399
defm PseudoVFMACC : VPseudoVMAC_VV_VF_AAXA_RM;
6392
6400
defm PseudoVFNMACC : VPseudoVMAC_VV_VF_AAXA_RM;
6393
6401
defm PseudoVFMSAC : VPseudoVMAC_VV_VF_AAXA_RM;
@@ -6401,7 +6409,7 @@ defm PseudoVFNMSUB : VPseudoVMAC_VV_VF_AAXA_RM;
6401
6409
//===----------------------------------------------------------------------===//
6402
6410
// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
6403
6411
//===----------------------------------------------------------------------===//
6404
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6412
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6405
6413
defm PseudoVFWMACC : VPseudoVWMAC_VV_VF_RM;
6406
6414
defm PseudoVFWNMACC : VPseudoVWMAC_VV_VF_RM;
6407
6415
defm PseudoVFWMSAC : VPseudoVWMAC_VV_VF_RM;
@@ -6413,7 +6421,7 @@ defm PseudoVFWMACCBF16 : VPseudoVWMAC_VV_VF_BF_RM;
6413
6421
//===----------------------------------------------------------------------===//
6414
6422
// 13.8. Vector Floating-Point Square-Root Instruction
6415
6423
//===----------------------------------------------------------------------===//
6416
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6424
+ let mayRaiseFPException = true, hasSideEffects = 0 in
6417
6425
defm PseudoVFSQRT : VPseudoVSQR_V_RM;
6418
6426
6419
6427
//===----------------------------------------------------------------------===//
@@ -6425,7 +6433,7 @@ defm PseudoVFRSQRT7 : VPseudoVRCP_V;
6425
6433
//===----------------------------------------------------------------------===//
6426
6434
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
6427
6435
//===----------------------------------------------------------------------===//
6428
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6436
+ let mayRaiseFPException = true, hasSideEffects = 0 in
6429
6437
defm PseudoVFREC7 : VPseudoVRCP_V_RM;
6430
6438
6431
6439
//===----------------------------------------------------------------------===//
@@ -6475,7 +6483,7 @@ defm PseudoVFMV_V : VPseudoVMV_F;
6475
6483
// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
6476
6484
//===----------------------------------------------------------------------===//
6477
6485
let mayRaiseFPException = true in {
6478
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6486
+ let hasSideEffects = 0 in {
6479
6487
defm PseudoVFCVT_XU_F : VPseudoVCVTI_V_RM;
6480
6488
defm PseudoVFCVT_X_F : VPseudoVCVTI_V_RM;
6481
6489
}
@@ -6484,7 +6492,7 @@ defm PseudoVFCVT_RTZ_XU_F : VPseudoVCVTI_V;
6484
6492
defm PseudoVFCVT_RTZ_X_F : VPseudoVCVTI_V;
6485
6493
6486
6494
defm PseudoVFROUND_NOEXCEPT : VPseudoVFROUND_NOEXCEPT_V;
6487
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6495
+ let hasSideEffects = 0 in {
6488
6496
defm PseudoVFCVT_F_XU : VPseudoVCVTF_V_RM;
6489
6497
defm PseudoVFCVT_F_X : VPseudoVCVTF_V_RM;
6490
6498
}
@@ -6494,7 +6502,7 @@ defm PseudoVFCVT_F_X : VPseudoVCVTF_V_RM;
6494
6502
// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
6495
6503
//===----------------------------------------------------------------------===//
6496
6504
let mayRaiseFPException = true in {
6497
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6505
+ let hasSideEffects = 0 in {
6498
6506
defm PseudoVFWCVT_XU_F : VPseudoVWCVTI_V_RM;
6499
6507
defm PseudoVFWCVT_X_F : VPseudoVWCVTI_V_RM;
6500
6508
}
@@ -6513,20 +6521,20 @@ defm PseudoVFWCVTBF16_F_F : VPseudoVWCVTD_V;
6513
6521
// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
6514
6522
//===----------------------------------------------------------------------===//
6515
6523
let mayRaiseFPException = true in {
6516
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6524
+ let hasSideEffects = 0 in {
6517
6525
defm PseudoVFNCVT_XU_F : VPseudoVNCVTI_W_RM;
6518
6526
defm PseudoVFNCVT_X_F : VPseudoVNCVTI_W_RM;
6519
6527
}
6520
6528
6521
6529
defm PseudoVFNCVT_RTZ_XU_F : VPseudoVNCVTI_W;
6522
6530
defm PseudoVFNCVT_RTZ_X_F : VPseudoVNCVTI_W;
6523
6531
6524
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6532
+ let hasSideEffects = 0 in {
6525
6533
defm PseudoVFNCVT_F_XU : VPseudoVNCVTF_W_RM;
6526
6534
defm PseudoVFNCVT_F_X : VPseudoVNCVTF_W_RM;
6527
6535
}
6528
6536
6529
- let hasSideEffects = 0, hasPostISelHook = 1 in {
6537
+ let hasSideEffects = 0 in {
6530
6538
defm PseudoVFNCVT_F_F : VPseudoVNCVTD_W_RM;
6531
6539
defm PseudoVFNCVTBF16_F_F : VPseudoVNCVTD_W_RM;
6532
6540
}
@@ -6565,7 +6573,7 @@ let Predicates = [HasVInstructionsAnyF] in {
6565
6573
//===----------------------------------------------------------------------===//
6566
6574
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
6567
6575
//===----------------------------------------------------------------------===//
6568
- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6576
+ let mayRaiseFPException = true, hasSideEffects = 0 in {
6569
6577
defm PseudoVFREDOSUM : VPseudoVFREDO_VS_RM;
6570
6578
defm PseudoVFREDUSUM : VPseudoVFRED_VS_RM;
6571
6579
}
@@ -6577,8 +6585,7 @@ defm PseudoVFREDMAX : VPseudoVFREDMINMAX_VS;
6577
6585
//===----------------------------------------------------------------------===//
6578
6586
// 14.4. Vector Widening Floating-Point Reduction Instructions
6579
6587
//===----------------------------------------------------------------------===//
6580
- let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true,
6581
- hasPostISelHook = 1 in {
6588
+ let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true in {
6582
6589
defm PseudoVFWREDUSUM : VPseudoVFWRED_VS_RM;
6583
6590
defm PseudoVFWREDOSUM : VPseudoVFWREDO_VS_RM;
6584
6591
}
0 commit comments