[llvm] [RISCV] Add Xsfmm vlte and vste intrinsics to getTgtMemIntrinsics. (PR #171747)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 10 17:11:38 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
Remove dyn_cast that should never fail now.
---
Full diff: https://github.com/llvm/llvm-project/pull/171747.diff
2 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp (+2-2)
- (modified) llvm/lib/Target/RISCV/RISCVISelLowering.cpp (+54)
``````````diff
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;
}
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/171747
More information about the llvm-commits
mailing list