[llvm] 3b04094 - [RISCV] Add Xsfmm vlte and vste intrinsics to getTgtMemIntrinsics. (#171747)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 10 20:47:35 PST 2025
Author: Craig Topper
Date: 2025-12-10T20:47:31-08:00
New Revision: 3b04094f36bf224d499e6a289b07ae193937e977
URL: https://github.com/llvm/llvm-project/commit/3b04094f36bf224d499e6a289b07ae193937e977
DIFF: https://github.com/llvm/llvm-project/commit/3b04094f36bf224d499e6a289b07ae193937e977.diff
LOG: [RISCV] Add Xsfmm vlte and vste intrinsics to getTgtMemIntrinsics. (#171747)
Replace dyn_cast with cast. The dyn_cast can never fail now. Previously
it never succeeded.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
index 8bfdbef39708a..b6b716be35c3e 100644
--- a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
@@ -2608,8 +2608,8 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) {
MachineSDNode *TileLoad =
CurDAG->getMachineNode(PseudoInst, DL, Node->getVTList(), Operands);
- if (auto *MemOp = dyn_cast<MemSDNode>(Node))
- CurDAG->setNodeMemRefs(TileLoad, {MemOp->getMemOperand()});
+ CurDAG->setNodeMemRefs(TileLoad,
+ {cast<MemSDNode>(Node)->getMemOperand()});
ReplaceNode(Node, TileLoad);
return;
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 29fc2ddb818b5..a9819c65c2170 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -2196,6 +2196,60 @@ bool RISCVTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
return SetRVVLoadStoreInfo(/*PtrOp*/ I.arg_size() - 5,
/*IsStore*/ true,
/*IsUnitStrided*/ false);
+ case Intrinsic::riscv_sf_vlte8:
+ case Intrinsic::riscv_sf_vlte16:
+ case Intrinsic::riscv_sf_vlte32:
+ case Intrinsic::riscv_sf_vlte64:
+ Info.opc = ISD::INTRINSIC_VOID;
+ Info.ptrVal = I.getArgOperand(1);
+ switch (Intrinsic) {
+ case Intrinsic::riscv_sf_vlte8:
+ Info.memVT = MVT::i8;
+ Info.align = Align(1);
+ break;
+ case Intrinsic::riscv_sf_vlte16:
+ Info.memVT = MVT::i16;
+ Info.align = Align(2);
+ break;
+ case Intrinsic::riscv_sf_vlte32:
+ Info.memVT = MVT::i32;
+ Info.align = Align(4);
+ break;
+ case Intrinsic::riscv_sf_vlte64:
+ Info.memVT = MVT::i64;
+ Info.align = Align(8);
+ break;
+ }
+ Info.size = MemoryLocation::UnknownSize;
+ Info.flags |= MachineMemOperand::MOLoad;
+ return true;
+ case Intrinsic::riscv_sf_vste8:
+ case Intrinsic::riscv_sf_vste16:
+ case Intrinsic::riscv_sf_vste32:
+ case Intrinsic::riscv_sf_vste64:
+ Info.opc = ISD::INTRINSIC_VOID;
+ Info.ptrVal = I.getArgOperand(1);
+ switch (Intrinsic) {
+ case Intrinsic::riscv_sf_vste8:
+ Info.memVT = MVT::i8;
+ Info.align = Align(1);
+ break;
+ case Intrinsic::riscv_sf_vste16:
+ Info.memVT = MVT::i16;
+ Info.align = Align(2);
+ break;
+ case Intrinsic::riscv_sf_vste32:
+ Info.memVT = MVT::i32;
+ Info.align = Align(4);
+ break;
+ case Intrinsic::riscv_sf_vste64:
+ Info.memVT = MVT::i64;
+ Info.align = Align(8);
+ break;
+ }
+ Info.size = MemoryLocation::UnknownSize;
+ Info.flags |= MachineMemOperand::MOStore;
+ return true;
}
}
More information about the llvm-commits
mailing list