@@ -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
10791080class 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
11201122class VPseudoUnaryMask_NoExcept<VReg RetClass,
@@ -1226,6 +1228,7 @@ class VPseudoBinaryNoMaskRoundingMode<VReg RetClass,
12261228 let HasVecPolicyOp = 1;
12271229 let HasRoundModeOp = 1;
12281230 let UsesVXRM = UsesVXRM_;
1231+ let hasPostISelHook = !not(UsesVXRM_);
12291232}
12301233
12311234class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
@@ -1250,6 +1253,7 @@ class VPseudoBinaryMaskPolicyRoundingMode<VReg RetClass,
12501253 let UsesMaskPolicy = 1;
12511254 let HasRoundModeOp = 1;
12521255 let UsesVXRM = UsesVXRM_;
1256+ let hasPostISelHook = !not(UsesVXRM_);
12531257}
12541258
12551259// Special version of VPseudoBinaryNoMask where we pretend the first source is
@@ -1297,6 +1301,7 @@ class VPseudoTiedBinaryNoMaskRoundingMode<VReg RetClass,
12971301 let IsTiedPseudo = 1;
12981302 let HasRoundModeOp = 1;
12991303 let UsesVXRM = 0;
1304+ let hasPostISelHook = 1;
13001305}
13011306
13021307class VPseudoIStoreNoMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
@@ -1384,6 +1389,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
13841389 let HasVecPolicyOp = 1;
13851390 let HasRoundModeOp = 1;
13861391 let UsesVXRM = 0;
1392+ let hasPostISelHook = 1;
13871393}
13881394
13891395// Like VPseudoBinaryMaskPolicy, but output can be V0 and there is no policy.
@@ -1454,6 +1460,7 @@ class VPseudoTiedBinaryMaskRoundingMode<VReg RetClass,
14541460 let IsTiedPseudo = 1;
14551461 let HasRoundModeOp = 1;
14561462 let UsesVXRM = 0;
1463+ let hasPostISelHook = 1;
14571464}
14581465
14591466class VPseudoBinaryCarry<VReg RetClass,
@@ -1554,6 +1561,7 @@ class VPseudoTernaryNoMaskWithPolicyRoundingMode<VReg RetClass,
15541561 let HasSEWOp = 1;
15551562 let HasRoundModeOp = 1;
15561563 let UsesVXRM = 0;
1564+ let hasPostISelHook = 1;
15571565}
15581566
15591567class VPseudoUSSegLoadNoMask<VReg RetClass,
@@ -6352,7 +6360,7 @@ let Predicates = [HasVInstructionsAnyF] in {
63526360//===----------------------------------------------------------------------===//
63536361// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
63546362//===----------------------------------------------------------------------===//
6355- let mayRaiseFPException = true, hasPostISelHook = 1 in {
6363+ let mayRaiseFPException = true in {
63566364defm PseudoVFADD : VPseudoVALU_VV_VF_RM;
63576365defm PseudoVFSUB : VPseudoVALU_VV_VF_RM;
63586366defm PseudoVFRSUB : VPseudoVALU_VF_RM;
@@ -6361,7 +6369,7 @@ defm PseudoVFRSUB : VPseudoVALU_VF_RM;
63616369//===----------------------------------------------------------------------===//
63626370// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
63636371//===----------------------------------------------------------------------===//
6364- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6372+ let mayRaiseFPException = true, hasSideEffects = 0 in {
63656373defm PseudoVFWADD : VPseudoVFWALU_VV_VF_RM;
63666374defm PseudoVFWSUB : VPseudoVFWALU_VV_VF_RM;
63676375defm PseudoVFWADD : VPseudoVFWALU_WV_WF_RM;
@@ -6371,7 +6379,7 @@ defm PseudoVFWSUB : VPseudoVFWALU_WV_WF_RM;
63716379//===----------------------------------------------------------------------===//
63726380// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
63736381//===----------------------------------------------------------------------===//
6374- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6382+ let mayRaiseFPException = true, hasSideEffects = 0 in {
63756383defm PseudoVFMUL : VPseudoVFMUL_VV_VF_RM;
63766384defm PseudoVFDIV : VPseudoVFDIV_VV_VF_RM;
63776385defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
@@ -6380,14 +6388,14 @@ defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
63806388//===----------------------------------------------------------------------===//
63816389// 13.5. Vector Widening Floating-Point Multiply
63826390//===----------------------------------------------------------------------===//
6383- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6391+ let mayRaiseFPException = true, hasSideEffects = 0 in {
63846392defm PseudoVFWMUL : VPseudoVWMUL_VV_VF_RM;
63856393}
63866394
63876395//===----------------------------------------------------------------------===//
63886396// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
63896397//===----------------------------------------------------------------------===//
6390- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6398+ let mayRaiseFPException = true, hasSideEffects = 0 in {
63916399defm PseudoVFMACC : VPseudoVMAC_VV_VF_AAXA_RM;
63926400defm PseudoVFNMACC : VPseudoVMAC_VV_VF_AAXA_RM;
63936401defm PseudoVFMSAC : VPseudoVMAC_VV_VF_AAXA_RM;
@@ -6401,7 +6409,7 @@ defm PseudoVFNMSUB : VPseudoVMAC_VV_VF_AAXA_RM;
64016409//===----------------------------------------------------------------------===//
64026410// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
64036411//===----------------------------------------------------------------------===//
6404- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6412+ let mayRaiseFPException = true, hasSideEffects = 0 in {
64056413defm PseudoVFWMACC : VPseudoVWMAC_VV_VF_RM;
64066414defm PseudoVFWNMACC : VPseudoVWMAC_VV_VF_RM;
64076415defm PseudoVFWMSAC : VPseudoVWMAC_VV_VF_RM;
@@ -6413,7 +6421,7 @@ defm PseudoVFWMACCBF16 : VPseudoVWMAC_VV_VF_BF_RM;
64136421//===----------------------------------------------------------------------===//
64146422// 13.8. Vector Floating-Point Square-Root Instruction
64156423//===----------------------------------------------------------------------===//
6416- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6424+ let mayRaiseFPException = true, hasSideEffects = 0 in
64176425defm PseudoVFSQRT : VPseudoVSQR_V_RM;
64186426
64196427//===----------------------------------------------------------------------===//
@@ -6425,7 +6433,7 @@ defm PseudoVFRSQRT7 : VPseudoVRCP_V;
64256433//===----------------------------------------------------------------------===//
64266434// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
64276435//===----------------------------------------------------------------------===//
6428- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
6436+ let mayRaiseFPException = true, hasSideEffects = 0 in
64296437defm PseudoVFREC7 : VPseudoVRCP_V_RM;
64306438
64316439//===----------------------------------------------------------------------===//
@@ -6475,7 +6483,7 @@ defm PseudoVFMV_V : VPseudoVMV_F;
64756483// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
64766484//===----------------------------------------------------------------------===//
64776485let mayRaiseFPException = true in {
6478- let hasSideEffects = 0, hasPostISelHook = 1 in {
6486+ let hasSideEffects = 0 in {
64796487defm PseudoVFCVT_XU_F : VPseudoVCVTI_V_RM;
64806488defm PseudoVFCVT_X_F : VPseudoVCVTI_V_RM;
64816489}
@@ -6484,7 +6492,7 @@ defm PseudoVFCVT_RTZ_XU_F : VPseudoVCVTI_V;
64846492defm PseudoVFCVT_RTZ_X_F : VPseudoVCVTI_V;
64856493
64866494defm PseudoVFROUND_NOEXCEPT : VPseudoVFROUND_NOEXCEPT_V;
6487- let hasSideEffects = 0, hasPostISelHook = 1 in {
6495+ let hasSideEffects = 0 in {
64886496defm PseudoVFCVT_F_XU : VPseudoVCVTF_V_RM;
64896497defm PseudoVFCVT_F_X : VPseudoVCVTF_V_RM;
64906498}
@@ -6494,7 +6502,7 @@ defm PseudoVFCVT_F_X : VPseudoVCVTF_V_RM;
64946502// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
64956503//===----------------------------------------------------------------------===//
64966504let mayRaiseFPException = true in {
6497- let hasSideEffects = 0, hasPostISelHook = 1 in {
6505+ let hasSideEffects = 0 in {
64986506defm PseudoVFWCVT_XU_F : VPseudoVWCVTI_V_RM;
64996507defm PseudoVFWCVT_X_F : VPseudoVWCVTI_V_RM;
65006508}
@@ -6513,20 +6521,20 @@ defm PseudoVFWCVTBF16_F_F : VPseudoVWCVTD_V;
65136521// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
65146522//===----------------------------------------------------------------------===//
65156523let mayRaiseFPException = true in {
6516- let hasSideEffects = 0, hasPostISelHook = 1 in {
6524+ let hasSideEffects = 0 in {
65176525defm PseudoVFNCVT_XU_F : VPseudoVNCVTI_W_RM;
65186526defm PseudoVFNCVT_X_F : VPseudoVNCVTI_W_RM;
65196527}
65206528
65216529defm PseudoVFNCVT_RTZ_XU_F : VPseudoVNCVTI_W;
65226530defm PseudoVFNCVT_RTZ_X_F : VPseudoVNCVTI_W;
65236531
6524- let hasSideEffects = 0, hasPostISelHook = 1 in {
6532+ let hasSideEffects = 0 in {
65256533defm PseudoVFNCVT_F_XU : VPseudoVNCVTF_W_RM;
65266534defm PseudoVFNCVT_F_X : VPseudoVNCVTF_W_RM;
65276535}
65286536
6529- let hasSideEffects = 0, hasPostISelHook = 1 in {
6537+ let hasSideEffects = 0 in {
65306538defm PseudoVFNCVT_F_F : VPseudoVNCVTD_W_RM;
65316539defm PseudoVFNCVTBF16_F_F : VPseudoVNCVTD_W_RM;
65326540}
@@ -6565,7 +6573,7 @@ let Predicates = [HasVInstructionsAnyF] in {
65656573//===----------------------------------------------------------------------===//
65666574// 14.3. Vector Single-Width Floating-Point Reduction Instructions
65676575//===----------------------------------------------------------------------===//
6568- let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
6576+ let mayRaiseFPException = true, hasSideEffects = 0 in {
65696577defm PseudoVFREDOSUM : VPseudoVFREDO_VS_RM;
65706578defm PseudoVFREDUSUM : VPseudoVFRED_VS_RM;
65716579}
@@ -6577,8 +6585,7 @@ defm PseudoVFREDMAX : VPseudoVFREDMINMAX_VS;
65776585//===----------------------------------------------------------------------===//
65786586// 14.4. Vector Widening Floating-Point Reduction Instructions
65796587//===----------------------------------------------------------------------===//
6580- let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true,
6581- hasPostISelHook = 1 in {
6588+ let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true in {
65826589defm PseudoVFWREDUSUM : VPseudoVFWRED_VS_RM;
65836590defm PseudoVFWREDOSUM : VPseudoVFWREDO_VS_RM;
65846591}
0 commit comments