diff options
author | JF Bastien <jfbastien@apple.com> | 2018-09-06 16:03:32 +0000 |
---|---|---|
committer | JF Bastien <jfbastien@apple.com> | 2018-09-06 16:03:32 +0000 |
commit | 29200611055f49a0d37243caa5f8bba1df9d57a6 (patch) | |
tree | ce84c79f58ff029187b4eb2eea291d65f71742a0 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 99d732052ff2282e3c7b3e5c7f29c217ff4f7316 (diff) | |
download | llvm-29200611055f49a0d37243caa5f8bba1df9d57a6.zip llvm-29200611055f49a0d37243caa5f8bba1df9d57a6.tar.gz llvm-29200611055f49a0d37243caa5f8bba1df9d57a6.tar.bz2 |
ARM64: improve non-zero memset isel by ~2x
Summary:
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>
Reviewers: t.p.northover, MatzeB, javed.absar
Subscribers: eraman, kristof.beyls, chrib, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D51706
llvm-svn: 341558
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions