Skip to content

Commit 88381ce

Browse files
committed
[RISCV] Hoist some common setOperationActions to a common place. NFC
We always want these actions if the type is legal. We don't need to check the subtarget features. So hoist them to a common point.
1 parent 8f5b144 commit 88381ce

File tree

1 file changed

+20
-30
lines changed

1 file changed

+20
-30
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,22 +1306,29 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
13061306
// expansion to a build_vector of 0s.
13071307
setOperationAction(ISD::UNDEF, VT, Custom);
13081308

1309+
setOperationAction({ISD::CONCAT_VECTORS, ISD::INSERT_SUBVECTOR,
1310+
ISD::EXTRACT_SUBVECTOR},
1311+
VT, Custom);
1312+
1313+
// FIXME: mload, mstore, mgather, mscatter, vp_load/store,
1314+
// vp_stride_load/store, vp_gather/scatter can be hoisted to here.
1315+
setOperationAction({ISD::LOAD, ISD::STORE}, VT, Custom);
1316+
1317+
setOperationAction({ISD::FP_ROUND, ISD::FP_EXTEND}, VT, Custom);
1318+
setOperationAction({ISD::STRICT_FP_ROUND, ISD::STRICT_FP_EXTEND}, VT,
1319+
Custom);
1320+
13091321
if (VT.getVectorElementType() == MVT::f16 &&
13101322
!Subtarget.hasVInstructionsF16()) {
1311-
setOperationAction({ISD::FP_ROUND, ISD::FP_EXTEND}, VT, Custom);
1312-
setOperationAction({ISD::STRICT_FP_ROUND, ISD::STRICT_FP_EXTEND}, VT,
1313-
Custom);
13141323
setOperationAction({ISD::VP_FP_ROUND, ISD::VP_FP_EXTEND}, VT, Custom);
13151324
setOperationAction(
13161325
{ISD::VP_MERGE, ISD::VP_SELECT, ISD::VSELECT, ISD::SELECT}, VT,
13171326
Custom);
13181327
setOperationAction({ISD::SINT_TO_FP, ISD::UINT_TO_FP,
13191328
ISD::VP_SINT_TO_FP, ISD::VP_UINT_TO_FP},
13201329
VT, Custom);
1321-
setOperationAction({ISD::CONCAT_VECTORS, ISD::INSERT_SUBVECTOR,
1322-
ISD::EXTRACT_SUBVECTOR, ISD::VECTOR_SHUFFLE},
1323-
VT, Custom);
1324-
setOperationAction({ISD::LOAD, ISD::STORE}, VT, Custom);
1330+
setOperationAction(ISD::VECTOR_SHUFFLE, VT, Custom);
1331+
// FIXME: We should prefer BUILD_VECTOR over SPLAT_VECTOR.
13251332
setOperationAction(ISD::SPLAT_VECTOR, VT, Custom);
13261333
MVT F32VecVT = MVT::getVectorVT(MVT::f32, VT.getVectorElementCount());
13271334
// Don't promote f16 vector operations to f32 if f32 vector type is
@@ -1335,35 +1342,22 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
13351342
}
13361343

13371344
if (VT.getVectorElementType() == MVT::bf16) {
1338-
setOperationAction({ISD::FP_ROUND, ISD::FP_EXTEND}, VT, Custom);
13391345
setOperationAction({ISD::VP_FP_ROUND, ISD::VP_FP_EXTEND}, VT, Custom);
1340-
setOperationAction({ISD::STRICT_FP_ROUND, ISD::STRICT_FP_EXTEND}, VT,
1341-
Custom);
1342-
setOperationAction({ISD::CONCAT_VECTORS, ISD::INSERT_SUBVECTOR,
1343-
ISD::EXTRACT_SUBVECTOR},
1344-
VT, Custom);
1345-
setOperationAction({ISD::LOAD, ISD::STORE}, VT, Custom);
1346-
if (Subtarget.hasStdExtZfbfmin())
1347-
setOperationAction(ISD::SPLAT_VECTOR, VT, Custom);
1346+
// FIXME: We should prefer BUILD_VECTOR over SPLAT_VECTOR.
1347+
setOperationAction(ISD::SPLAT_VECTOR, VT, Custom);
13481348
setOperationAction(
13491349
{ISD::VP_MERGE, ISD::VP_SELECT, ISD::VSELECT, ISD::SELECT}, VT,
13501350
Custom);
13511351
// TODO: Promote to fp32.
13521352
continue;
13531353
}
13541354

1355-
// We use EXTRACT_SUBVECTOR as a "cast" from scalable to fixed.
1356-
setOperationAction({ISD::INSERT_SUBVECTOR, ISD::EXTRACT_SUBVECTOR}, VT,
1357-
Custom);
1358-
1359-
setOperationAction({ISD::BUILD_VECTOR, ISD::CONCAT_VECTORS,
1360-
ISD::VECTOR_SHUFFLE, ISD::INSERT_VECTOR_ELT,
1361-
ISD::EXTRACT_VECTOR_ELT},
1355+
setOperationAction({ISD::BUILD_VECTOR, ISD::VECTOR_SHUFFLE,
1356+
ISD::INSERT_VECTOR_ELT, ISD::EXTRACT_VECTOR_ELT},
13621357
VT, Custom);
13631358

1364-
setOperationAction({ISD::LOAD, ISD::STORE, ISD::MLOAD, ISD::MSTORE,
1365-
ISD::MGATHER, ISD::MSCATTER},
1366-
VT, Custom);
1359+
setOperationAction(
1360+
{ISD::MLOAD, ISD::MSTORE, ISD::MGATHER, ISD::MSCATTER}, VT, Custom);
13671361

13681362
setOperationAction({ISD::VP_LOAD, ISD::VP_STORE,
13691363
ISD::EXPERIMENTAL_VP_STRIDED_LOAD,
@@ -1377,8 +1371,6 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
13771371
ISD::IS_FPCLASS, ISD::FMAXIMUM, ISD::FMINIMUM},
13781372
VT, Custom);
13791373

1380-
setOperationAction({ISD::FP_ROUND, ISD::FP_EXTEND}, VT, Custom);
1381-
13821374
setOperationAction({ISD::FTRUNC, ISD::FCEIL, ISD::FFLOOR, ISD::FROUND,
13831375
ISD::FROUNDEVEN, ISD::FRINT, ISD::FNEARBYINT},
13841376
VT, Custom);
@@ -1395,8 +1387,6 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
13951387

13961388
setOperationAction(FloatingPointVPOps, VT, Custom);
13971389

1398-
setOperationAction({ISD::STRICT_FP_EXTEND, ISD::STRICT_FP_ROUND}, VT,
1399-
Custom);
14001390
setOperationAction(
14011391
{ISD::STRICT_FADD, ISD::STRICT_FSUB, ISD::STRICT_FMUL,
14021392
ISD::STRICT_FDIV, ISD::STRICT_FSQRT, ISD::STRICT_FMA,

0 commit comments

Comments
 (0)