aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorJF Bastien <jfbastien@apple.com>2018-09-06 16:03:32 +0000
committerJF Bastien <jfbastien@apple.com>2018-09-06 16:03:32 +0000
commit29200611055f49a0d37243caa5f8bba1df9d57a6 (patch)
treece84c79f58ff029187b4eb2eea291d65f71742a0 /clang/lib/CodeGen/CodeGenModule.cpp
parent99d732052ff2282e3c7b3e5c7f29c217ff4f7316 (diff)
downloadllvm-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