diff options
author | Craig Topper <craig.topper@sifive.com> | 2025-06-24 10:02:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-24 10:02:28 -0700 |
commit | 7150b2c76a7102f089eb8b81d704773f2eb7c307 (patch) | |
tree | a1c0832551fcc71d0c42a25b806935d6711d46b2 /llvm/lib | |
parent | 0e9e1ce146252c1503d9969c4a5fcd433f3c2181 (diff) | |
download | llvm-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.cpp | 9 |
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) { |