[PATCH] D159444: [aarch64][NFC] Remove unneeded work from machine memset
Nathan Sidwell via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 5 05:14:19 PDT 2023
urnathan created this revision.
urnathan added reviewers: t.p.northover, tyb0807.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: All.
urnathan requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
I noticed some unnecessary computation in aarch64.
The memset intrinsics have no source pointer, so don't construct that
operand for them.
https://reviews.llvm.org/D159444
Files:
llvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
Index: llvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
===================================================================
--- llvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
+++ llvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp
@@ -46,21 +46,16 @@
}
}();
- MachineMemOperand::Flags Flags = MachineMemOperand::MOStore;
- if (isVolatile)
- Flags |= MachineMemOperand::MOVolatile;
- if (!IsSet)
- Flags |= MachineMemOperand::MOLoad;
-
MachineFunction &MF = DAG.getMachineFunction();
+ auto Vol =
+ isVolatile ? MachineMemOperand::MOVolatile : MachineMemOperand::MONone;
+ auto DstFlags = MachineMemOperand::MOStore | Vol;
auto *DstOp =
- MF.getMachineMemOperand(DstPtrInfo, Flags, ConstSize, Alignment);
- auto *SrcOp =
- MF.getMachineMemOperand(SrcPtrInfo, Flags, ConstSize, Alignment);
+ MF.getMachineMemOperand(DstPtrInfo, DstFlags, ConstSize, Alignment);
if (IsSet) {
- // Extend value to i64 if required
+ // Extend value to i64, if required.
if (SrcOrValue.getValueType() != MVT::i64)
SrcOrValue = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, SrcOrValue);
SDValue Ops[] = {Dst, Size, SrcOrValue, Chain};
@@ -72,6 +67,10 @@
SDValue Ops[] = {Dst, SrcOrValue, Size, Chain};
const EVT ResultTys[] = {MVT::i64, MVT::i64, MVT::i64, MVT::Other};
MachineSDNode *Node = DAG.getMachineNode(MachineOpcode, DL, ResultTys, Ops);
+
+ auto SrcFlags = MachineMemOperand::MOLoad | Vol;
+ auto *SrcOp =
+ MF.getMachineMemOperand(SrcPtrInfo, SrcFlags, ConstSize, Alignment);
DAG.setNodeMemRefs(Node, {DstOp, SrcOp});
return SDValue(Node, 3);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D159444.555851.patch
Type: text/x-patch
Size: 1656 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230905/e16f56cb/attachment.bin>
More information about the llvm-commits
mailing list