[PATCH] D51706: ARM64: improve non-zero memset isel by ~2x
JF Bastien via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 5 15:50:20 PDT 2018
jfb created this revision.
jfb added reviewers: t.p.northover, MatzeB.
Herald added a reviewer: javed.absar.
Herald added subscribers: llvm-commits, dexonsmith, chrib, kristof.beyls, eraman.
I added a few ARM64 memset codegen tests in r341406 and r341493, and annotated
where the generated code was bad. This patch fixes the majority of the issues by
requesting that a 2xi64 vector be used for memset of 32 bytes and above.
The patch leaves the former request for f128 unchanged, despite f128
materialization being suboptimal: doing otherwise runs into other asserts in
isel and makes this patch too broad.
This patch hides the issue that was present in bzero_40_stack and bzero_72_stack
because the code now generates in a better order which doesn't have the store
offset issue. I'm not aware of that issue appearing elsewhere at the moment.
rdar://problem/44157755
Repository:
rL LLVM
https://reviews.llvm.org/D51706
Files:
lib/Target/AArch64/AArch64ISelLowering.cpp
test/CodeGen/AArch64/arm64-memset-inline.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51706.164119.patch
Type: text/x-patch
Size: 10425 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180905/1d2fe3f2/attachment.bin>
More information about the llvm-commits
mailing list