|
15 | 15 | #include "MCTargetDesc/NVPTXBaseInfo.h" |
16 | 16 | #include "NVPTX.h" |
17 | 17 | #include "NVPTXISelDAGToDAG.h" |
| 18 | +#include "NVPTXSelectionDAGInfo.h" |
18 | 19 | #include "NVPTXSubtarget.h" |
19 | 20 | #include "NVPTXTargetMachine.h" |
20 | 21 | #include "NVPTXTargetObjectFile.h" |
@@ -1107,97 +1108,6 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM, |
1107 | 1108 | {MVT::i32, MVT::i128, MVT::v4f32, MVT::Other}, Custom); |
1108 | 1109 | } |
1109 | 1110 |
|
1110 | | -const char *NVPTXTargetLowering::getTargetNodeName(unsigned Opcode) const { |
1111 | | - |
1112 | | -#define MAKE_CASE(V) \ |
1113 | | - case V: \ |
1114 | | - return #V; |
1115 | | - |
1116 | | - switch ((NVPTXISD::NodeType)Opcode) { |
1117 | | - case NVPTXISD::FIRST_NUMBER: |
1118 | | - break; |
1119 | | - |
1120 | | - MAKE_CASE(NVPTXISD::ATOMIC_CMP_SWAP_B128) |
1121 | | - MAKE_CASE(NVPTXISD::ATOMIC_SWAP_B128) |
1122 | | - MAKE_CASE(NVPTXISD::RET_GLUE) |
1123 | | - MAKE_CASE(NVPTXISD::DeclareArrayParam) |
1124 | | - MAKE_CASE(NVPTXISD::DeclareScalarParam) |
1125 | | - MAKE_CASE(NVPTXISD::CALL) |
1126 | | - MAKE_CASE(NVPTXISD::MoveParam) |
1127 | | - MAKE_CASE(NVPTXISD::UNPACK_VECTOR) |
1128 | | - MAKE_CASE(NVPTXISD::BUILD_VECTOR) |
1129 | | - MAKE_CASE(NVPTXISD::CallPrototype) |
1130 | | - MAKE_CASE(NVPTXISD::ProxyReg) |
1131 | | - MAKE_CASE(NVPTXISD::LoadV2) |
1132 | | - MAKE_CASE(NVPTXISD::LoadV4) |
1133 | | - MAKE_CASE(NVPTXISD::LoadV8) |
1134 | | - MAKE_CASE(NVPTXISD::LDUV2) |
1135 | | - MAKE_CASE(NVPTXISD::LDUV4) |
1136 | | - MAKE_CASE(NVPTXISD::StoreV2) |
1137 | | - MAKE_CASE(NVPTXISD::StoreV4) |
1138 | | - MAKE_CASE(NVPTXISD::StoreV8) |
1139 | | - MAKE_CASE(NVPTXISD::FSHL_CLAMP) |
1140 | | - MAKE_CASE(NVPTXISD::FSHR_CLAMP) |
1141 | | - MAKE_CASE(NVPTXISD::BFI) |
1142 | | - MAKE_CASE(NVPTXISD::PRMT) |
1143 | | - MAKE_CASE(NVPTXISD::FCOPYSIGN) |
1144 | | - MAKE_CASE(NVPTXISD::FMAXNUM3) |
1145 | | - MAKE_CASE(NVPTXISD::FMINNUM3) |
1146 | | - MAKE_CASE(NVPTXISD::FMAXIMUM3) |
1147 | | - MAKE_CASE(NVPTXISD::FMINIMUM3) |
1148 | | - MAKE_CASE(NVPTXISD::DYNAMIC_STACKALLOC) |
1149 | | - MAKE_CASE(NVPTXISD::STACKRESTORE) |
1150 | | - MAKE_CASE(NVPTXISD::STACKSAVE) |
1151 | | - MAKE_CASE(NVPTXISD::SETP_F16X2) |
1152 | | - MAKE_CASE(NVPTXISD::SETP_BF16X2) |
1153 | | - MAKE_CASE(NVPTXISD::MUL_WIDE_SIGNED) |
1154 | | - MAKE_CASE(NVPTXISD::MUL_WIDE_UNSIGNED) |
1155 | | - MAKE_CASE(NVPTXISD::BrxEnd) |
1156 | | - MAKE_CASE(NVPTXISD::BrxItem) |
1157 | | - MAKE_CASE(NVPTXISD::BrxStart) |
1158 | | - MAKE_CASE(NVPTXISD::CLUSTERLAUNCHCONTROL_QUERY_CANCEL_IS_CANCELED) |
1159 | | - MAKE_CASE(NVPTXISD::CLUSTERLAUNCHCONTROL_QUERY_CANCEL_GET_FIRST_CTAID_X) |
1160 | | - MAKE_CASE(NVPTXISD::CLUSTERLAUNCHCONTROL_QUERY_CANCEL_GET_FIRST_CTAID_Y) |
1161 | | - MAKE_CASE(NVPTXISD::CLUSTERLAUNCHCONTROL_QUERY_CANCEL_GET_FIRST_CTAID_Z) |
1162 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SHARED_DISABLE_OUTPUT_LANE_CG1) |
1163 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SHARED_DISABLE_OUTPUT_LANE_CG2) |
1164 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SHARED_SCALE_D_DISABLE_OUTPUT_LANE_CG1) |
1165 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SHARED_SCALE_D_DISABLE_OUTPUT_LANE_CG2) |
1166 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_TENSOR_DISABLE_OUTPUT_LANE_CG1) |
1167 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_TENSOR_DISABLE_OUTPUT_LANE_CG2) |
1168 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG1) |
1169 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG2) |
1170 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_TENSOR_DISABLE_OUTPUT_LANE_CG1_ASHIFT) |
1171 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_TENSOR_DISABLE_OUTPUT_LANE_CG2_ASHIFT) |
1172 | | - MAKE_CASE( |
1173 | | - NVPTXISD::TCGEN05_MMA_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG1_ASHIFT) |
1174 | | - MAKE_CASE( |
1175 | | - NVPTXISD::TCGEN05_MMA_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG2_ASHIFT) |
1176 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_SHARED_DISABLE_OUTPUT_LANE_CG1) |
1177 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_SHARED_DISABLE_OUTPUT_LANE_CG2) |
1178 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_SHARED_SCALE_D_DISABLE_OUTPUT_LANE_CG1) |
1179 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_SHARED_SCALE_D_DISABLE_OUTPUT_LANE_CG2) |
1180 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_TENSOR_DISABLE_OUTPUT_LANE_CG1) |
1181 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_TENSOR_DISABLE_OUTPUT_LANE_CG2) |
1182 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_TENSOR_DISABLE_OUTPUT_LANE_CG1_ASHIFT) |
1183 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_TENSOR_DISABLE_OUTPUT_LANE_CG2_ASHIFT) |
1184 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG1) |
1185 | | - MAKE_CASE(NVPTXISD::TCGEN05_MMA_SP_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG2) |
1186 | | - MAKE_CASE( |
1187 | | - NVPTXISD::TCGEN05_MMA_SP_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG1_ASHIFT) |
1188 | | - MAKE_CASE( |
1189 | | - NVPTXISD::TCGEN05_MMA_SP_TENSOR_SCALE_D_DISABLE_OUTPUT_LANE_CG2_ASHIFT) |
1190 | | - MAKE_CASE(NVPTXISD::CVT_E4M3X4_F32X4_RS_SF) |
1191 | | - MAKE_CASE(NVPTXISD::CVT_E5M2X4_F32X4_RS_SF) |
1192 | | - MAKE_CASE(NVPTXISD::CVT_E2M3X4_F32X4_RS_SF) |
1193 | | - MAKE_CASE(NVPTXISD::CVT_E3M2X4_F32X4_RS_SF) |
1194 | | - MAKE_CASE(NVPTXISD::CVT_E2M1X4_F32X4_RS_SF) |
1195 | | - } |
1196 | | - return nullptr; |
1197 | | - |
1198 | | -#undef MAKE_CASE |
1199 | | -} |
1200 | | - |
1201 | 1111 | TargetLoweringBase::LegalizeTypeAction |
1202 | 1112 | NVPTXTargetLowering::getPreferredVectorAction(MVT VT) const { |
1203 | 1113 | if (!VT.isScalableVector() && VT.getVectorNumElements() != 1 && |
@@ -2032,7 +1942,7 @@ static ISD::NodeType getScalarOpcodeForReduction(unsigned ReductionOpcode) { |
2032 | 1942 | } |
2033 | 1943 |
|
2034 | 1944 | /// Get 3-input scalar reduction opcode |
2035 | | -static std::optional<NVPTXISD::NodeType> |
| 1945 | +static std::optional<unsigned> |
2036 | 1946 | getScalar3OpcodeForReduction(unsigned ReductionOpcode) { |
2037 | 1947 | switch (ReductionOpcode) { |
2038 | 1948 | case ISD::VECREDUCE_FMAX: |
@@ -2931,7 +2841,7 @@ static SDValue lowerCvtRSIntrinsics(SDValue Op, SelectionDAG &DAG) { |
2931 | 2841 | using NVPTX::PTXCvtMode::CvtMode; |
2932 | 2842 |
|
2933 | 2843 | auto [OpCode, RetTy, CvtModeFlag] = |
2934 | | - [&]() -> std::tuple<NVPTXISD::NodeType, MVT::SimpleValueType, uint32_t> { |
| 2844 | + [&]() -> std::tuple<unsigned, MVT::SimpleValueType, uint32_t> { |
2935 | 2845 | switch (IntrinsicID) { |
2936 | 2846 | case Intrinsic::nvvm_f32x4_to_e4m3x4_rs_relu_satfinite: |
2937 | 2847 | return {NVPTXISD::CVT_E4M3X4_F32X4_RS_SF, MVT::v4i8, |
@@ -3314,7 +3224,7 @@ SDValue NVPTXTargetLowering::LowerBR_JT(SDValue Op, SelectionDAG &DAG) const { |
3314 | 3224 | // Generate BrxEnd nodes |
3315 | 3225 | SDValue EndOps[] = {Chain.getValue(0), DAG.getBasicBlock(MBBs.back()), Index, |
3316 | 3226 | IdV, Chain.getValue(1)}; |
3317 | | - SDValue BrxEnd = DAG.getNode(NVPTXISD::BrxEnd, DL, VTs, EndOps); |
| 3227 | + SDValue BrxEnd = DAG.getNode(NVPTXISD::BrxEnd, DL, MVT::Other, EndOps); |
3318 | 3228 |
|
3319 | 3229 | return BrxEnd; |
3320 | 3230 | } |
@@ -5457,7 +5367,7 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) { |
5457 | 5367 | SDLoc DL(LD); |
5458 | 5368 |
|
5459 | 5369 | // the new opcode after we double the number of operands |
5460 | | - NVPTXISD::NodeType Opcode; |
| 5370 | + unsigned Opcode; |
5461 | 5371 | SmallVector<SDValue> Operands(LD->ops()); |
5462 | 5372 | unsigned OldNumOutputs; // non-glue, non-chain outputs |
5463 | 5373 | switch (LD->getOpcode()) { |
@@ -5540,7 +5450,7 @@ static SDValue combinePackingMovIntoStore(SDNode *N, |
5540 | 5450 | auto *ST = cast<MemSDNode>(N); |
5541 | 5451 |
|
5542 | 5452 | // The new opcode after we double the number of operands. |
5543 | | - NVPTXISD::NodeType Opcode; |
| 5453 | + unsigned Opcode; |
5544 | 5454 | switch (N->getOpcode()) { |
5545 | 5455 | case ISD::STORE: |
5546 | 5456 | // Any packed type is legal, so the legalizer will not have lowered |
@@ -5675,7 +5585,7 @@ static SDValue PerformFADDCombine(SDNode *N, |
5675 | 5585 | } |
5676 | 5586 |
|
5677 | 5587 | /// Get 3-input version of a 2-input min/max opcode |
5678 | | -static NVPTXISD::NodeType getMinMax3Opcode(unsigned MinMax2Opcode) { |
| 5588 | +static unsigned getMinMax3Opcode(unsigned MinMax2Opcode) { |
5679 | 5589 | switch (MinMax2Opcode) { |
5680 | 5590 | case ISD::FMAXNUM: |
5681 | 5591 | case ISD::FMAXIMUMNUM: |
@@ -5706,7 +5616,7 @@ static SDValue PerformFMinMaxCombine(SDNode *N, |
5706 | 5616 | SDValue Op0 = N->getOperand(0); |
5707 | 5617 | SDValue Op1 = N->getOperand(1); |
5708 | 5618 | unsigned MinMaxOp2 = N->getOpcode(); |
5709 | | - NVPTXISD::NodeType MinMaxOp3 = getMinMax3Opcode(MinMaxOp2); |
| 5619 | + unsigned MinMaxOp3 = getMinMax3Opcode(MinMaxOp2); |
5710 | 5620 |
|
5711 | 5621 | if (Op0.getOpcode() == MinMaxOp2 && Op0.hasOneUse()) { |
5712 | 5622 | // (maxnum (maxnum a, b), c) -> (maxnum3 a, b, c) |
|
0 commit comments