@@ -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,
@@ -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
11561159class 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
11771181class 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
12711276class 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
13421349class 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
14991508class 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
15991609class 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 {
64596469defm PseudoVFADD : VPseudoVALU_VV_VF_RM;
64606470defm PseudoVFSUB : VPseudoVALU_VV_VF_RM;
64616471defm 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 {
64686478defm PseudoVFWADD : VPseudoVFWALU_VV_VF_RM;
64696479defm PseudoVFWSUB : VPseudoVFWALU_VV_VF_RM;
64706480defm 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 {
64786488defm PseudoVFMUL : VPseudoVFMUL_VV_VF_RM;
64796489defm PseudoVFDIV : VPseudoVFDIV_VV_VF_RM;
64806490defm 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 {
64876497defm 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 {
64946504defm PseudoVFMACC : VPseudoVMAC_VV_VF_AAXA_RM;
64956505defm PseudoVFNMACC : VPseudoVMAC_VV_VF_AAXA_RM;
64966506defm 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 {
65086518defm PseudoVFWMACC : VPseudoVWMAC_VV_VF_RM;
65096519defm PseudoVFWNMACC : VPseudoVWMAC_VV_VF_RM;
65106520defm 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
65206530defm 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
65326542defm 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//===----------------------------------------------------------------------===//
65806590let mayRaiseFPException = true in {
6581- let hasSideEffects = 0, hasPostISelHook = 1 in {
6591+ let hasSideEffects = 0 in {
65826592defm PseudoVFCVT_XU_F : VPseudoVCVTI_V_RM;
65836593defm PseudoVFCVT_X_F : VPseudoVCVTI_V_RM;
65846594}
@@ -6590,7 +6600,7 @@ defm PseudoVFCVT_RTZ_XU_F : VPseudoVCVTI_V;
65906600defm PseudoVFCVT_RTZ_X_F : VPseudoVCVTI_V;
65916601
65926602defm PseudoVFROUND_NOEXCEPT : VPseudoVFROUND_NOEXCEPT_V;
6593- let hasSideEffects = 0, hasPostISelHook = 1 in {
6603+ let hasSideEffects = 0 in {
65946604defm PseudoVFCVT_F_XU : VPseudoVCVTF_V_RM;
65956605defm 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//===----------------------------------------------------------------------===//
66046614let mayRaiseFPException = true in {
6605- let hasSideEffects = 0, hasPostISelHook = 1 in {
6615+ let hasSideEffects = 0 in {
66066616defm PseudoVFWCVT_XU_F : VPseudoVWCVTI_V_RM;
66076617defm 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//===----------------------------------------------------------------------===//
66256635let mayRaiseFPException = true in {
6626- let hasSideEffects = 0, hasPostISelHook = 1 in {
6636+ let hasSideEffects = 0 in {
66276637defm PseudoVFNCVT_XU_F : VPseudoVNCVTI_W_RM;
66286638defm PseudoVFNCVT_X_F : VPseudoVNCVTI_W_RM;
66296639}
@@ -6633,14 +6643,14 @@ defm PseudoVFNCVT_RM_X_F : VPseudoVNCVTI_RM_W;
66336643defm PseudoVFNCVT_RTZ_XU_F : VPseudoVNCVTI_W;
66346644defm PseudoVFNCVT_RTZ_X_F : VPseudoVNCVTI_W;
66356645
6636- let hasSideEffects = 0, hasPostISelHook = 1 in {
6646+ let hasSideEffects = 0 in {
66376647defm PseudoVFNCVT_F_XU : VPseudoVNCVTF_W_RM;
66386648defm PseudoVFNCVT_F_X : VPseudoVNCVTF_W_RM;
66396649}
66406650defm PseudoVFNCVT_RM_F_XU : VPseudoVNCVTF_RM_W;
66416651defm PseudoVFNCVT_RM_F_X : VPseudoVNCVTF_RM_W;
66426652
6643- let hasSideEffects = 0, hasPostISelHook = 1 in {
6653+ let hasSideEffects = 0 in {
66446654defm PseudoVFNCVT_F_F : VPseudoVNCVTD_W_RM;
66456655defm 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 {
66836693defm PseudoVFREDOSUM : VPseudoVFREDO_VS_RM;
66846694defm 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 {
66966705defm PseudoVFWREDUSUM : VPseudoVFWRED_VS_RM;
66976706defm PseudoVFWREDOSUM : VPseudoVFWREDO_VS_RM;
66986707}
0 commit comments