Skip to content

Commit 96af1ff

Browse files
committed
[RISCV] Sink hasPostISelHook = 1 for vector pseudos into the subclasses that set HasRoundModeOp.
I think this is NFC, but right now it does change the flag for the pseudos removed by llvm#114287. The rounding mode for those pseudos should never be DYN so the post isel hook shouldn't do anything, but it will get called.
1 parent 71b6f6b commit 96af1ff

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,6 +1074,7 @@ class VPseudoUnaryNoMaskRoundingMode<DAGOperand RetClass,
10741074
let HasVecPolicyOp = 1;
10751075
let HasRoundModeOp = 1;
10761076
let UsesVXRM = 0;
1077+
let hasPostISelHook = 1;
10771078
}
10781079

10791080
class VPseudoUnaryMask<VReg RetClass,
@@ -1115,6 +1116,7 @@ class VPseudoUnaryMaskRoundingMode<VReg RetClass,
11151116
let UsesMaskPolicy = 1;
11161117
let HasRoundModeOp = 1;
11171118
let UsesVXRM = 0;
1119+
let hasPostISelHook = 1;
11181120
}
11191121

11201122
class VPseudoUnaryMask_NoExcept<VReg RetClass,
@@ -1151,6 +1153,7 @@ class VPseudoUnaryNoMask_FRM<VReg RetClass,
11511153
let HasSEWOp = 1;
11521154
let HasVecPolicyOp = 1;
11531155
let HasRoundModeOp = 1;
1156+
let hasPostISelHook = 1;
11541157
}
11551158

11561159
class VPseudoUnaryMask_FRM<VReg RetClass,
@@ -1172,6 +1175,7 @@ class VPseudoUnaryMask_FRM<VReg RetClass,
11721175
let HasVecPolicyOp = 1;
11731176
let UsesMaskPolicy = 1;
11741177
let HasRoundModeOp = 1;
1178+
let hasPostISelHook = 1;
11751179
}
11761180

11771181
class VPseudoUnaryNoMaskGPROut :
@@ -1266,6 +1270,7 @@ class VPseudoBinaryNoMaskRoundingMode<VReg RetClass,
12661270
let HasVecPolicyOp = 1;
12671271
let HasRoundModeOp = 1;
12681272
let UsesVXRM = UsesVXRM_;
1273+
let hasPostISelHook = !not(UsesVXRM_);
12691274
}
12701275

12711276
class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
@@ -1290,6 +1295,7 @@ class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
12901295
let UsesMaskPolicy = 1;
12911296
let HasRoundModeOp = 1;
12921297
let UsesVXRM = UsesVXRM_;
1298+
let hasPostISelHook = !not(UsesVXRM_);
12931299
}
12941300

12951301
// Special version of VPseudoBinaryNoMask where we pretend the first source is
@@ -1337,6 +1343,7 @@ class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
13371343
let IsTiedPseudo = 1;
13381344
let HasRoundModeOp = 1;
13391345
let UsesVXRM = 0;
1346+
let hasPostISelHook = 1;
13401347
}
13411348

13421349
class VPseudoIStoreNoMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
@@ -1424,6 +1431,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
14241431
let HasVecPolicyOp = 1;
14251432
let HasRoundModeOp = 1;
14261433
let UsesVXRM = 0;
1434+
let hasPostISelHook = 1;
14271435
}
14281436

14291437
// Like VPseudoBinaryMaskPolicy, but output can be V0 and there is no policy.
@@ -1494,6 +1502,7 @@ class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
14941502
let IsTiedPseudo = 1;
14951503
let HasRoundModeOp = 1;
14961504
let UsesVXRM = 0;
1505+
let hasPostISelHook = 1;
14971506
}
14981507

14991508
class VPseudoBinaryCarry<VReg RetClass,
@@ -1594,6 +1603,7 @@ class VPseudoTernaryNoMaskWithPolicyRoundingMode<VReg RetClass,
15941603
let HasSEWOp = 1;
15951604
let HasRoundModeOp = 1;
15961605
let UsesVXRM = 0;
1606+
let hasPostISelHook = 1;
15971607
}
15981608

15991609
class VPseudoUSSegLoadNoMask<VReg RetClass,
@@ -6455,7 +6465,7 @@ let Predicates = [HasVInstructionsAnyF] in {
64556465
//===----------------------------------------------------------------------===//
64566466
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
64576467
//===----------------------------------------------------------------------===//
6458-
let mayRaiseFPException = true, hasPostISelHook = 1 in {
6468+
let mayRaiseFPException = true in {
64596469
defm PseudoVFADD : VPseudoVALU_VV_VF_RM;
64606470
defm PseudoVFSUB : VPseudoVALU_VV_VF_RM;
64616471
defm PseudoVFRSUB : VPseudoVALU_VF_RM;
@@ -6464,7 +6474,7 @@ defm PseudoVFRSUB : VPseudoVALU_VF_RM;
64646474
//===----------------------------------------------------------------------===//
64656475
// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
64666476
//===----------------------------------------------------------------------===//
6467-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6477+
let mayRaiseFPException = true, hasSideEffects = 0 in {
64686478
defm PseudoVFWADD : VPseudoVFWALU_VV_VF_RM;
64696479
defm PseudoVFWSUB : VPseudoVFWALU_VV_VF_RM;
64706480
defm PseudoVFWADD : VPseudoVFWALU_WV_WF_RM;
@@ -6474,7 +6484,7 @@ defm PseudoVFWSUB : VPseudoVFWALU_WV_WF_RM;
64746484
//===----------------------------------------------------------------------===//
64756485
// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
64766486
//===----------------------------------------------------------------------===//
6477-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6487+
let mayRaiseFPException = true, hasSideEffects = 0 in {
64786488
defm PseudoVFMUL : VPseudoVFMUL_VV_VF_RM;
64796489
defm PseudoVFDIV : VPseudoVFDIV_VV_VF_RM;
64806490
defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
@@ -6483,14 +6493,14 @@ defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
64836493
//===----------------------------------------------------------------------===//
64846494
// 13.5. Vector Widening Floating-Point Multiply
64856495
//===----------------------------------------------------------------------===//
6486-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6496+
let mayRaiseFPException = true, hasSideEffects = 0 in {
64876497
defm PseudoVFWMUL : VPseudoVWMUL_VV_VF_RM;
64886498
}
64896499

64906500
//===----------------------------------------------------------------------===//
64916501
// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
64926502
//===----------------------------------------------------------------------===//
6493-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6503+
let mayRaiseFPException = true, hasSideEffects = 0 in {
64946504
defm PseudoVFMACC : VPseudoVMAC_VV_VF_AAXA_RM;
64956505
defm PseudoVFNMACC : VPseudoVMAC_VV_VF_AAXA_RM;
64966506
defm PseudoVFMSAC : VPseudoVMAC_VV_VF_AAXA_RM;
@@ -6504,7 +6514,7 @@ defm PseudoVFNMSUB : VPseudoVMAC_VV_VF_AAXA_RM;
65046514
//===----------------------------------------------------------------------===//
65056515
// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
65066516
//===----------------------------------------------------------------------===//
6507-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6517+
let mayRaiseFPException = true, hasSideEffects = 0 in {
65086518
defm PseudoVFWMACC : VPseudoVWMAC_VV_VF_RM;
65096519
defm PseudoVFWNMACC : VPseudoVWMAC_VV_VF_RM;
65106520
defm PseudoVFWMSAC : VPseudoVWMAC_VV_VF_RM;
@@ -6516,7 +6526,7 @@ defm PseudoVFWMACCBF16 : VPseudoVWMAC_VV_VF_BF_RM;
65166526
//===----------------------------------------------------------------------===//
65176527
// 13.8. Vector Floating-Point Square-Root Instruction
65186528
//===----------------------------------------------------------------------===//
6519-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6529+
let mayRaiseFPException = true, hasSideEffects = 0 in
65206530
defm PseudoVFSQRT : VPseudoVSQR_V_RM;
65216531

65226532
//===----------------------------------------------------------------------===//
@@ -6528,7 +6538,7 @@ defm PseudoVFRSQRT7 : VPseudoVRCP_V;
65286538
//===----------------------------------------------------------------------===//
65296539
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
65306540
//===----------------------------------------------------------------------===//
6531-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6541+
let mayRaiseFPException = true, hasSideEffects = 0 in
65326542
defm PseudoVFREC7 : VPseudoVRCP_V_RM;
65336543

65346544
//===----------------------------------------------------------------------===//
@@ -6578,7 +6588,7 @@ defm PseudoVFMV_V : VPseudoVMV_F;
65786588
// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
65796589
//===----------------------------------------------------------------------===//
65806590
let mayRaiseFPException = true in {
6581-
let hasSideEffects = 0, hasPostISelHook = 1 in {
6591+
let hasSideEffects = 0 in {
65826592
defm PseudoVFCVT_XU_F : VPseudoVCVTI_V_RM;
65836593
defm PseudoVFCVT_X_F : VPseudoVCVTI_V_RM;
65846594
}
@@ -6590,7 +6600,7 @@ defm PseudoVFCVT_RTZ_XU_F : VPseudoVCVTI_V;
65906600
defm PseudoVFCVT_RTZ_X_F : VPseudoVCVTI_V;
65916601

65926602
defm PseudoVFROUND_NOEXCEPT : VPseudoVFROUND_NOEXCEPT_V;
6593-
let hasSideEffects = 0, hasPostISelHook = 1 in {
6603+
let hasSideEffects = 0 in {
65946604
defm PseudoVFCVT_F_XU : VPseudoVCVTF_V_RM;
65956605
defm PseudoVFCVT_F_X : VPseudoVCVTF_V_RM;
65966606
}
@@ -6602,7 +6612,7 @@ defm PseudoVFCVT_RM_F_X : VPseudoVCVTF_RM_V;
66026612
// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
66036613
//===----------------------------------------------------------------------===//
66046614
let mayRaiseFPException = true in {
6605-
let hasSideEffects = 0, hasPostISelHook = 1 in {
6615+
let hasSideEffects = 0 in {
66066616
defm PseudoVFWCVT_XU_F : VPseudoVWCVTI_V_RM;
66076617
defm PseudoVFWCVT_X_F : VPseudoVWCVTI_V_RM;
66086618
}
@@ -6623,7 +6633,7 @@ defm PseudoVFWCVTBF16_F_F : VPseudoVWCVTD_V;
66236633
// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
66246634
//===----------------------------------------------------------------------===//
66256635
let mayRaiseFPException = true in {
6626-
let hasSideEffects = 0, hasPostISelHook = 1 in {
6636+
let hasSideEffects = 0 in {
66276637
defm PseudoVFNCVT_XU_F : VPseudoVNCVTI_W_RM;
66286638
defm PseudoVFNCVT_X_F : VPseudoVNCVTI_W_RM;
66296639
}
@@ -6633,14 +6643,14 @@ defm PseudoVFNCVT_RM_X_F : VPseudoVNCVTI_RM_W;
66336643
defm PseudoVFNCVT_RTZ_XU_F : VPseudoVNCVTI_W;
66346644
defm PseudoVFNCVT_RTZ_X_F : VPseudoVNCVTI_W;
66356645

6636-
let hasSideEffects = 0, hasPostISelHook = 1 in {
6646+
let hasSideEffects = 0 in {
66376647
defm PseudoVFNCVT_F_XU : VPseudoVNCVTF_W_RM;
66386648
defm PseudoVFNCVT_F_X : VPseudoVNCVTF_W_RM;
66396649
}
66406650
defm PseudoVFNCVT_RM_F_XU : VPseudoVNCVTF_RM_W;
66416651
defm PseudoVFNCVT_RM_F_X : VPseudoVNCVTF_RM_W;
66426652

6643-
let hasSideEffects = 0, hasPostISelHook = 1 in {
6653+
let hasSideEffects = 0 in {
66446654
defm PseudoVFNCVT_F_F : VPseudoVNCVTD_W_RM;
66456655
defm PseudoVFNCVTBF16_F_F : VPseudoVNCVTD_W_RM;
66466656
}
@@ -6679,7 +6689,7 @@ let Predicates = [HasVInstructionsAnyF] in {
66796689
//===----------------------------------------------------------------------===//
66806690
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
66816691
//===----------------------------------------------------------------------===//
6682-
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6692+
let mayRaiseFPException = true, hasSideEffects = 0 in {
66836693
defm PseudoVFREDOSUM : VPseudoVFREDO_VS_RM;
66846694
defm PseudoVFREDUSUM : VPseudoVFRED_VS_RM;
66856695
}
@@ -6691,8 +6701,7 @@ defm PseudoVFREDMAX : VPseudoVFREDMINMAX_VS;
66916701
//===----------------------------------------------------------------------===//
66926702
// 14.4. Vector Widening Floating-Point Reduction Instructions
66936703
//===----------------------------------------------------------------------===//
6694-
let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true,
6695-
hasPostISelHook = 1 in {
6704+
let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true in {
66966705
defm PseudoVFWREDUSUM : VPseudoVFWRED_VS_RM;
66976706
defm PseudoVFWREDOSUM : VPseudoVFWREDO_VS_RM;
66986707
}

0 commit comments

Comments
 (0)