aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2025-06-24 10:02:28 -0700
committerGitHub <noreply@github.com>2025-06-24 10:02:28 -0700
commit7150b2c76a7102f089eb8b81d704773f2eb7c307 (patch)
treea1c0832551fcc71d0c42a25b806935d6711d46b2 /llvm/lib
parent0e9e1ce146252c1503d9969c4a5fcd433f3c2181 (diff)
downloadllvm-7150b2c76a7102f089eb8b81d704773f2eb7c307.zip
llvm-7150b2c76a7102f089eb8b81d704773f2eb7c307.tar.gz
llvm-7150b2c76a7102f089eb8b81d704773f2eb7c307.tar.bz2
[RISCV] Optimize vp.splice with 0 offset. (#145533)
We can skip the slidedown if the offset is 0.
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/RISCV/RISCVISelLowering.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 13ee3ee..2b3f8d1 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -13297,10 +13297,11 @@ RISCVTargetLowering::lowerVPSpliceExperimental(SDValue Op,
DownOffset = DAG.getNode(ISD::SUB, DL, XLenVT, EVL1, UpOffset);
}
- SDValue SlideDown =
- getVSlidedown(DAG, Subtarget, DL, ContainerVT, DAG.getUNDEF(ContainerVT),
- Op1, DownOffset, Mask, UpOffset);
- SDValue Result = getVSlideup(DAG, Subtarget, DL, ContainerVT, SlideDown, Op2,
+ if (ImmValue != 0)
+ Op1 = getVSlidedown(DAG, Subtarget, DL, ContainerVT,
+ DAG.getUNDEF(ContainerVT), Op1, DownOffset, Mask,
+ UpOffset);
+ SDValue Result = getVSlideup(DAG, Subtarget, DL, ContainerVT, Op1, Op2,
UpOffset, Mask, EVL2, RISCVVType::TAIL_AGNOSTIC);
if (IsMaskVector) {