@@ -1015,33 +1015,29 @@ void NVPTXDAGToDAGISel::SelectAddrSpaceCast(SDNode *N) {
10151015
10161016// Helper function template to reduce amount of boilerplate code for
10171017// opcode selection.
1018- static std::optional<unsigned > pickOpcodeForVT (
1019- MVT::SimpleValueType VT, std::optional<unsigned > Opcode_i8,
1020- std::optional< unsigned > Opcode_i16, std::optional<unsigned > Opcode_i32 ,
1021- std::optional< unsigned > Opcode_i64, std::optional<unsigned > Opcode_f32 ,
1022- std::optional<unsigned > Opcode_f64 ) {
1018+ static std::optional<unsigned >
1019+ pickOpcodeForVT ( MVT::SimpleValueType VT, std::optional<unsigned > Opcode_i8,
1020+ std::optional<unsigned > Opcode_i16 ,
1021+ std::optional<unsigned > Opcode_i32 ,
1022+ std::optional<unsigned > Opcode_i64 ) {
10231023 switch (VT) {
10241024 case MVT::i1:
10251025 case MVT::i8 :
10261026 return Opcode_i8;
1027- case MVT::i16 :
1028- return Opcode_i16;
1029- case MVT::i32 :
1030- return Opcode_i32;
1031- case MVT::i64 :
1032- return Opcode_i64;
10331027 case MVT::f16 :
1028+ case MVT::i16 :
10341029 case MVT::bf16 :
10351030 return Opcode_i16;
10361031 case MVT::v2f16:
10371032 case MVT::v2bf16:
10381033 case MVT::v2i16:
10391034 case MVT::v4i8:
1040- return Opcode_i32;
1035+ case MVT:: i32 :
10411036 case MVT::f32 :
1042- return Opcode_f32;
1037+ return Opcode_i32;
1038+ case MVT::i64 :
10431039 case MVT::f64 :
1044- return Opcode_f64 ;
1040+ return Opcode_i64 ;
10451041 default :
10461042 return std::nullopt ;
10471043 }
@@ -1101,9 +1097,8 @@ bool NVPTXDAGToDAGISel::tryLoad(SDNode *N) {
11011097 Chain};
11021098
11031099 const MVT::SimpleValueType TargetVT = LD->getSimpleValueType (0 ).SimpleTy ;
1104- const std::optional<unsigned > Opcode =
1105- pickOpcodeForVT (TargetVT, NVPTX::LD_i8, NVPTX::LD_i16, NVPTX::LD_i32,
1106- NVPTX::LD_i64, NVPTX::LD_f32, NVPTX::LD_f64);
1100+ const std::optional<unsigned > Opcode = pickOpcodeForVT (
1101+ TargetVT, NVPTX::LD_i8, NVPTX::LD_i16, NVPTX::LD_i32, NVPTX::LD_i64);
11071102 if (!Opcode)
11081103 return false ;
11091104
@@ -1203,22 +1198,19 @@ bool NVPTXDAGToDAGISel::tryLoadVector(SDNode *N) {
12031198 default :
12041199 return false ;
12051200 case NVPTXISD::LoadV2:
1206- Opcode =
1207- pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::LDV_i8_v2,
1208- NVPTX::LDV_i16_v2, NVPTX::LDV_i32_v2, NVPTX::LDV_i64_v2,
1209- NVPTX::LDV_f32_v2, NVPTX::LDV_f64_v2);
1201+ Opcode = pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::LDV_i8_v2,
1202+ NVPTX::LDV_i16_v2, NVPTX::LDV_i32_v2,
1203+ NVPTX::LDV_i64_v2);
12101204 break ;
12111205 case NVPTXISD::LoadV4:
1212- Opcode =
1213- pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::LDV_i8_v4,
1214- NVPTX::LDV_i16_v4, NVPTX::LDV_i32_v4, NVPTX::LDV_i64_v4,
1215- NVPTX::LDV_f32_v4, NVPTX::LDV_f64_v4);
1206+ Opcode = pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::LDV_i8_v4,
1207+ NVPTX::LDV_i16_v4, NVPTX::LDV_i32_v4,
1208+ NVPTX::LDV_i64_v4);
12161209 break ;
12171210 case NVPTXISD::LoadV8:
12181211 Opcode =
12191212 pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , {/* no v8i8 */ },
1220- {/* no v8i16 */ }, NVPTX::LDV_i32_v8, {/* no v8i64 */ },
1221- NVPTX::LDV_f32_v8, {/* no v8f64 */ });
1213+ {/* no v8i16 */ }, NVPTX::LDV_i32_v8, {/* no v8i64 */ });
12221214 break ;
12231215 }
12241216 if (!Opcode)
@@ -1286,48 +1278,42 @@ bool NVPTXDAGToDAGISel::tryLDGLDU(SDNode *N) {
12861278 Opcode = pickOpcodeForVT (
12871279 EltVT.getSimpleVT ().SimpleTy , NVPTX::INT_PTX_LDG_GLOBAL_i8,
12881280 NVPTX::INT_PTX_LDG_GLOBAL_i16, NVPTX::INT_PTX_LDG_GLOBAL_i32,
1289- NVPTX::INT_PTX_LDG_GLOBAL_i64, NVPTX::INT_PTX_LDG_GLOBAL_f32,
1290- NVPTX::INT_PTX_LDG_GLOBAL_f64);
1281+ NVPTX::INT_PTX_LDG_GLOBAL_i64);
12911282 break ;
12921283 case ISD::INTRINSIC_W_CHAIN:
12931284 Opcode = pickOpcodeForVT (
12941285 EltVT.getSimpleVT ().SimpleTy , NVPTX::INT_PTX_LDU_GLOBAL_i8,
12951286 NVPTX::INT_PTX_LDU_GLOBAL_i16, NVPTX::INT_PTX_LDU_GLOBAL_i32,
1296- NVPTX::INT_PTX_LDU_GLOBAL_i64, NVPTX::INT_PTX_LDU_GLOBAL_f32,
1297- NVPTX::INT_PTX_LDU_GLOBAL_f64);
1287+ NVPTX::INT_PTX_LDU_GLOBAL_i64);
12981288 break ;
12991289 case NVPTXISD::LoadV2:
13001290 Opcode = pickOpcodeForVT (
13011291 EltVT.getSimpleVT ().SimpleTy , NVPTX::INT_PTX_LDG_G_v2i8_ELE,
13021292 NVPTX::INT_PTX_LDG_G_v2i16_ELE, NVPTX::INT_PTX_LDG_G_v2i32_ELE,
1303- NVPTX::INT_PTX_LDG_G_v2i64_ELE, NVPTX::INT_PTX_LDG_G_v2f32_ELE,
1304- NVPTX::INT_PTX_LDG_G_v2f64_ELE);
1293+ NVPTX::INT_PTX_LDG_G_v2i64_ELE);
13051294 break ;
13061295 case NVPTXISD::LDUV2:
13071296 Opcode = pickOpcodeForVT (
13081297 EltVT.getSimpleVT ().SimpleTy , NVPTX::INT_PTX_LDU_G_v2i8_ELE,
13091298 NVPTX::INT_PTX_LDU_G_v2i16_ELE, NVPTX::INT_PTX_LDU_G_v2i32_ELE,
1310- NVPTX::INT_PTX_LDU_G_v2i64_ELE, NVPTX::INT_PTX_LDU_G_v2f32_ELE,
1311- NVPTX::INT_PTX_LDU_G_v2f64_ELE);
1299+ NVPTX::INT_PTX_LDU_G_v2i64_ELE);
13121300 break ;
13131301 case NVPTXISD::LoadV4:
13141302 Opcode = pickOpcodeForVT (
13151303 EltVT.getSimpleVT ().SimpleTy , NVPTX::INT_PTX_LDG_G_v4i8_ELE,
13161304 NVPTX::INT_PTX_LDG_G_v4i16_ELE, NVPTX::INT_PTX_LDG_G_v4i32_ELE,
1317- NVPTX::INT_PTX_LDG_G_v4i64_ELE, NVPTX::INT_PTX_LDG_G_v4f32_ELE,
1318- NVPTX::INT_PTX_LDG_G_v4f64_ELE);
1305+ NVPTX::INT_PTX_LDG_G_v4i64_ELE);
13191306 break ;
13201307 case NVPTXISD::LDUV4:
1321- Opcode = pickOpcodeForVT (
1322- EltVT. getSimpleVT (). SimpleTy , NVPTX::INT_PTX_LDU_G_v4i8_ELE,
1323- NVPTX::INT_PTX_LDU_G_v4i16_ELE, NVPTX::INT_PTX_LDU_G_v4i32_ELE ,
1324- { /* no v4i64 */ }, NVPTX::INT_PTX_LDU_G_v4f32_ELE , {/* no v4f64 */ });
1308+ Opcode = pickOpcodeForVT (EltVT. getSimpleVT (). SimpleTy ,
1309+ NVPTX::INT_PTX_LDU_G_v4i8_ELE,
1310+ NVPTX::INT_PTX_LDU_G_v4i16_ELE ,
1311+ NVPTX::INT_PTX_LDU_G_v4i32_ELE , {/* no v4i64 */ });
13251312 break ;
13261313 case NVPTXISD::LoadV8:
13271314 Opcode = pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , {/* no v8i8 */ },
13281315 {/* no v8i16 */ }, NVPTX::INT_PTX_LDG_G_v8i32_ELE,
1329- {/* no v8i64 */ }, NVPTX::INT_PTX_LDG_G_v8f32_ELE,
1330- {/* no v8f64 */ });
1316+ {/* no v8i64 */ });
13311317 break ;
13321318 }
13331319 if (!Opcode)
@@ -1421,9 +1407,8 @@ bool NVPTXDAGToDAGISel::tryStore(SDNode *N) {
14211407
14221408 const MVT::SimpleValueType SourceVT =
14231409 Value.getNode ()->getSimpleValueType (0 ).SimpleTy ;
1424- const std::optional<unsigned > Opcode =
1425- pickOpcodeForVT (SourceVT, NVPTX::ST_i8, NVPTX::ST_i16, NVPTX::ST_i32,
1426- NVPTX::ST_i64, NVPTX::ST_f32, NVPTX::ST_f64);
1410+ const std::optional<unsigned > Opcode = pickOpcodeForVT (
1411+ SourceVT, NVPTX::ST_i8, NVPTX::ST_i16, NVPTX::ST_i32, NVPTX::ST_i64);
14271412 if (!Opcode)
14281413 return false ;
14291414
@@ -1486,22 +1471,19 @@ bool NVPTXDAGToDAGISel::tryStoreVector(SDNode *N) {
14861471 default :
14871472 return false ;
14881473 case NVPTXISD::StoreV2:
1489- Opcode =
1490- pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::STV_i8_v2,
1491- NVPTX::STV_i16_v2, NVPTX::STV_i32_v2, NVPTX::STV_i64_v2,
1492- NVPTX::STV_f32_v2, NVPTX::STV_f64_v2);
1474+ Opcode = pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::STV_i8_v2,
1475+ NVPTX::STV_i16_v2, NVPTX::STV_i32_v2,
1476+ NVPTX::STV_i64_v2);
14931477 break ;
14941478 case NVPTXISD::StoreV4:
1495- Opcode =
1496- pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::STV_i8_v4,
1497- NVPTX::STV_i16_v4, NVPTX::STV_i32_v4, NVPTX::STV_i64_v4,
1498- NVPTX::STV_f32_v4, NVPTX::STV_f64_v4);
1479+ Opcode = pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , NVPTX::STV_i8_v4,
1480+ NVPTX::STV_i16_v4, NVPTX::STV_i32_v4,
1481+ NVPTX::STV_i64_v4);
14991482 break ;
15001483 case NVPTXISD::StoreV8:
15011484 Opcode =
15021485 pickOpcodeForVT (EltVT.getSimpleVT ().SimpleTy , {/* no v8i8 */ },
1503- {/* no v8i16 */ }, NVPTX::STV_i32_v8, {/* no v8i64 */ },
1504- NVPTX::STV_f32_v8, {/* no v8f64 */ });
1486+ {/* no v8i16 */ }, NVPTX::STV_i32_v8, {/* no v8i64 */ });
15051487 break ;
15061488 }
15071489
@@ -1550,21 +1532,18 @@ bool NVPTXDAGToDAGISel::tryLoadParam(SDNode *Node) {
15501532 case 1 :
15511533 Opcode = pickOpcodeForVT (MemVT.getSimpleVT ().SimpleTy ,
15521534 NVPTX::LoadParamMemI8, NVPTX::LoadParamMemI16,
1553- NVPTX::LoadParamMemI32, NVPTX::LoadParamMemI64,
1554- NVPTX::LoadParamMemF32, NVPTX::LoadParamMemF64);
1535+ NVPTX::LoadParamMemI32, NVPTX::LoadParamMemI64);
15551536 break ;
15561537 case 2 :
15571538 Opcode =
15581539 pickOpcodeForVT (MemVT.getSimpleVT ().SimpleTy , NVPTX::LoadParamMemV2I8,
15591540 NVPTX::LoadParamMemV2I16, NVPTX::LoadParamMemV2I32,
1560- NVPTX::LoadParamMemV2I64, NVPTX::LoadParamMemV2F32,
1561- NVPTX::LoadParamMemV2F64);
1541+ NVPTX::LoadParamMemV2I64);
15621542 break ;
15631543 case 4 :
15641544 Opcode = pickOpcodeForVT (MemVT.getSimpleVT ().SimpleTy ,
15651545 NVPTX::LoadParamMemV4I8, NVPTX::LoadParamMemV4I16,
1566- NVPTX::LoadParamMemV4I32, {/* no v4i64 */ },
1567- NVPTX::LoadParamMemV4F32, {/* no v4f64 */ });
1546+ NVPTX::LoadParamMemV4I32, {/* no v4i64 */ });
15681547 break ;
15691548 }
15701549 if (!Opcode)
@@ -1628,8 +1607,7 @@ bool NVPTXDAGToDAGISel::tryStoreRetval(SDNode *N) {
16281607 case 1 :
16291608 Opcode = pickOpcodeForVT (Mem->getMemoryVT ().getSimpleVT ().SimpleTy ,
16301609 NVPTX::StoreRetvalI8, NVPTX::StoreRetvalI16,
1631- NVPTX::StoreRetvalI32, NVPTX::StoreRetvalI64,
1632- NVPTX::StoreRetvalF32, NVPTX::StoreRetvalF64);
1610+ NVPTX::StoreRetvalI32, NVPTX::StoreRetvalI64);
16331611 if (Opcode == NVPTX::StoreRetvalI8) {
16341612 // Fine tune the opcode depending on the size of the operand.
16351613 // This helps to avoid creating redundant COPY instructions in
@@ -1649,14 +1627,12 @@ bool NVPTXDAGToDAGISel::tryStoreRetval(SDNode *N) {
16491627 case 2 :
16501628 Opcode = pickOpcodeForVT (Mem->getMemoryVT ().getSimpleVT ().SimpleTy ,
16511629 NVPTX::StoreRetvalV2I8, NVPTX::StoreRetvalV2I16,
1652- NVPTX::StoreRetvalV2I32, NVPTX::StoreRetvalV2I64,
1653- NVPTX::StoreRetvalV2F32, NVPTX::StoreRetvalV2F64);
1630+ NVPTX::StoreRetvalV2I32, NVPTX::StoreRetvalV2I64);
16541631 break ;
16551632 case 4 :
16561633 Opcode = pickOpcodeForVT (Mem->getMemoryVT ().getSimpleVT ().SimpleTy ,
16571634 NVPTX::StoreRetvalV4I8, NVPTX::StoreRetvalV4I16,
1658- NVPTX::StoreRetvalV4I32, {/* no v4i64 */ },
1659- NVPTX::StoreRetvalV4F32, {/* no v4f64 */ });
1635+ NVPTX::StoreRetvalV4I32, {/* no v4i64 */ });
16601636 break ;
16611637 }
16621638 if (!Opcode)
@@ -1827,14 +1803,12 @@ bool NVPTXDAGToDAGISel::tryStoreParam(SDNode *N) {
18271803 // Use immediate version of store param
18281804 Opcode = pickOpcodeForVT (MemTy, NVPTX::StoreParamI8_i,
18291805 NVPTX::StoreParamI16_i, NVPTX::StoreParamI32_i,
1830- NVPTX::StoreParamI64_i, NVPTX::StoreParamF32_i,
1831- NVPTX::StoreParamF64_i);
1806+ NVPTX::StoreParamI64_i);
18321807 } else
18331808 Opcode =
18341809 pickOpcodeForVT (Mem->getMemoryVT ().getSimpleVT ().SimpleTy ,
18351810 NVPTX::StoreParamI8_r, NVPTX::StoreParamI16_r,
1836- NVPTX::StoreParamI32_r, NVPTX::StoreParamI64_r,
1837- NVPTX::StoreParamF32_r, NVPTX::StoreParamF64_r);
1811+ NVPTX::StoreParamI32_r, NVPTX::StoreParamI64_r);
18381812 if (Opcode == NVPTX::StoreParamI8_r) {
18391813 // Fine tune the opcode depending on the size of the operand.
18401814 // This helps to avoid creating redundant COPY instructions in
0 commit comments