[llvm] [RISCV][P-ext] Add packed saturating rounding shift codegen (PR #208630)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 13 12:49:32 PDT 2026
================
@@ -16000,6 +16025,25 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N,
DAG.getVectorIdxConstant(0, DL)));
return;
}
+ case Intrinsic::riscv_pssha:
+ case Intrinsic::riscv_psshar:
+ case Intrinsic::riscv_psshl:
+ case Intrinsic::riscv_psshlr: {
+ MVT VT = N->getSimpleValueType(0);
+ if (!Subtarget.is64Bit() || VT != MVT::v2i16)
+ return;
+
+ MVT WideVT = MVT::v4i16;
+ SDValue Op0 = DAG.getNode(ISD::CONCAT_VECTORS, DL, WideVT,
+ N->getOperand(1), DAG.getUNDEF(VT));
+ SDValue ShAmt = N->getOperand(2);
+ ShAmt = DAG.getAnyExtOrTrunc(ShAmt, DL, Subtarget.getXLenVT());
+ SDValue Res =
+ DAG.getNode(getRVPShiftOpcode(IntNo), DL, WideVT, Op0, ShAmt);
+ Results.push_back(DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, VT, Res,
----------------
topperc wrote:
Use DAG.getExtractSubvector
https://github.com/llvm/llvm-project/pull/208630
More information about the llvm-commits
mailing list