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(Node)) - CurDAG->setNodeMemRefs(Load, {MemOp->getMemOperand()}); + CurDAG->setNodeMemRefs(Load, {cast(Node)->getMemOperand()}); ReplaceNode(Node, Load); return; @@ -2487,8 +2486,7 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) { IsMasked, IsStrided, Log2SEW, static_cast(LMUL)); MachineSDNode *Store = CurDAG->getMachineNode(P->Pseudo, DL, Node->getVTList(), Operands); - if (auto *MemOp = dyn_cast(Node)) - CurDAG->setNodeMemRefs(Store, {MemOp->getMemOperand()}); + CurDAG->setNodeMemRefs(Store, {cast(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,