[llvm] [RISCV] Add riscv_vlm/vsm to RISCVTargetLowering::getTgtMemIntrinsic. (PR #148265)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 11 10:49:27 PDT 2025
https://github.com/topperc created https://github.com/llvm/llvm-project/pull/148265
None
>From 995ef3ea01d07c033d543736ae7a5424994fa306 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Fri, 11 Jul 2025 10:48:20 -0700
Subject: [PATCH] [RISCV] Add riscv_vlm/vsm to
RISCVTargetLowering::getTgtMemIntrinsic.
---
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp | 6 ++----
llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 8 +++++++-
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
index 11e4b2d8e0899..c97b14a254cdc 100644
--- a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
@@ -2268,8 +2268,7 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) {
MachineSDNode *Load =
CurDAG->getMachineNode(P->Pseudo, DL, Node->getVTList(), Operands);
- if (auto *MemOp = dyn_cast<MemSDNode>(Node))
- CurDAG->setNodeMemRefs(Load, {MemOp->getMemOperand()});
+ CurDAG->setNodeMemRefs(Load, {cast<MemSDNode>(Node)->getMemOperand()});
ReplaceNode(Node, Load);
return;
@@ -2487,8 +2486,7 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) {
IsMasked, IsStrided, Log2SEW, static_cast<unsigned>(LMUL));
MachineSDNode *Store =
CurDAG->getMachineNode(P->Pseudo, DL, Node->getVTList(), Operands);
- if (auto *MemOp = dyn_cast<MemSDNode>(Node))
- CurDAG->setNodeMemRefs(Store, {MemOp->getMemOperand()});
+ CurDAG->setNodeMemRefs(Store, {cast<MemSDNode>(Node)->getMemOperand()});
ReplaceNode(Node, Store);
return;
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 456f3aedbf034..fa2ad68321659 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -1772,7 +1772,7 @@ bool RISCVTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
->getZExtValue());
Info.align = DL.getABITypeAlign(MemTy);
} else {
- Info.align = Align(DL.getTypeSizeInBits(MemTy->getScalarType()) / 8);
+ Info.align = Align(DL.getTypeStoreSize(MemTy->getScalarType()));
}
Info.size = MemoryLocation::UnknownSize;
Info.flags |=
@@ -1824,6 +1824,11 @@ bool RISCVTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
return SetRVVLoadStoreInfo(/*PtrOp*/ I.arg_size() - 3,
/*IsStore*/ true,
/*IsUnitStrided*/ false, /*UsePtrVal*/ true);
+ case Intrinsic::riscv_vlm:
+ return SetRVVLoadStoreInfo(/*PtrOp*/ 0,
+ /*IsStore*/ false,
+ /*IsUnitStrided*/ true,
+ /*UsePtrVal*/ true);
case Intrinsic::riscv_vle:
case Intrinsic::riscv_vle_mask:
case Intrinsic::riscv_vleff:
@@ -1832,6 +1837,7 @@ bool RISCVTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
/*IsStore*/ false,
/*IsUnitStrided*/ true,
/*UsePtrVal*/ true);
+ case Intrinsic::riscv_vsm:
case Intrinsic::riscv_vse:
case Intrinsic::riscv_vse_mask:
return SetRVVLoadStoreInfo(/*PtrOp*/ 1,
More information about the llvm-commits
mailing list