Skip to content

Commit 141bb1f

Browse files
committed
Add +minimize-vl
1 parent f0d5905 commit 141bb1f

File tree

8 files changed

+4572
-2097
lines changed

8 files changed

+4572
-2097
lines changed

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,6 +1695,10 @@ foreach nf = {2-8} in
16951695
"true", "vlseg"#nf#"eN.v and vsseg"#nf#"eN.v are "
16961696
"implemented as a wide memory op and shuffle">;
16971697

1698+
def TuneMinimizeVL
1699+
: SubtargetFeature<"minimize-vl", "MinimizeVL", "true",
1700+
"Prefer reducing vl even it requires more vsetvli instructions">;
1701+
16981702
def Experimental
16991703
: SubtargetFeature<"experimental", "HasExperimental",
17001704
"true", "Experimental intrinsics">;

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12329,9 +12329,9 @@ SDValue RISCVTargetLowering::lowerVECTOR_SPLICE(SDValue Op,
1232912329

1233012330
SDValue TrueMask = getAllOnesMask(VecVT, VLMax, DL, DAG);
1233112331

12332-
SDValue SlideDown =
12333-
getVSlidedown(DAG, Subtarget, DL, VecVT, DAG.getUNDEF(VecVT), V1,
12334-
DownOffset, TrueMask, DAG.getRegister(RISCV::X0, XLenVT));
12332+
SDValue SlideDown = getVSlidedown(
12333+
DAG, Subtarget, DL, VecVT, DAG.getUNDEF(VecVT), V1, DownOffset, TrueMask,
12334+
Subtarget.minimizeVL() ? UpOffset : DAG.getRegister(RISCV::X0, XLenVT));
1233512335
return getVSlideup(DAG, Subtarget, DL, VecVT, SlideDown, V2, UpOffset,
1233612336
TrueMask, DAG.getRegister(RISCV::X0, XLenVT),
1233712337
RISCVVType::TAIL_AGNOSTIC);
@@ -13354,7 +13354,8 @@ RISCVTargetLowering::lowerVPSpliceExperimental(SDValue Op,
1335413354

1335513355
if (ImmValue != 0)
1335613356
Op1 = getVSlidedown(DAG, Subtarget, DL, ContainerVT,
13357-
DAG.getUNDEF(ContainerVT), Op1, DownOffset, Mask, EVL2);
13357+
DAG.getUNDEF(ContainerVT), Op1, DownOffset, Mask,
13358+
Subtarget.minimizeVL() ? UpOffset : EVL2);
1335813359
SDValue Result = getVSlideup(DAG, Subtarget, DL, ContainerVT, Op1, Op2,
1335913360
UpOffset, Mask, EVL2, RISCVVType::TAIL_AGNOSTIC);
1336013361

llvm/lib/Target/RISCV/RISCVProcessors.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ def SIFIVE_U74 : RISCVProcessorModel<"sifive-u74",
274274
defvar SiFiveIntelligenceTuneFeatures = !listconcat(SiFive7TuneFeatures,
275275
[TuneDLenFactor2,
276276
TuneOptimizedZeroStrideLoad,
277-
TuneOptimizedNF2SegmentLoadStore]);
277+
TuneOptimizedNF2SegmentLoadStore,
278+
TuneMinimizeVL]);
278279
def SIFIVE_X280 : RISCVProcessorModel<"sifive-x280", SiFive7Model,
279280
[Feature64Bit,
280281
FeatureStdExtI,

0 commit comments

Comments
 (0)