diff options
author | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2021-10-14 20:10:47 +0200 |
---|---|---|
committer | Jonas Paulsson <paulsson@linux.vnet.ibm.com> | 2021-12-06 12:10:58 -0600 |
commit | cbf682cb1c99c70fa93eb4e32aa5120e4881ba04 (patch) | |
tree | fdab5a265ea7a7793e7909cc79ef829e53228a9a /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | 327d966365d7b34abd25a920e1f7b5aecfa5c70f (diff) | |
download | llvm-cbf682cb1c99c70fa93eb4e32aa5120e4881ba04.zip llvm-cbf682cb1c99c70fa93eb4e32aa5120e4881ba04.tar.gz llvm-cbf682cb1c99c70fa93eb4e32aa5120e4881ba04.tar.bz2 |
[SystemZ] Improve codegen for memset.
Memset with a constant length was implemented with a single store followed by
a series of MVC:s. This patch changes this so that one store of the byte is
emitted for each MVC, which avoids data dependencies between the MVCs. An
MVI/STC + MVC(len-1) is done for each block.
In addition, memset with a variable length is now also handled without a
libcall. Since the byte is first stored and then MVC is used from that
address, a length of two must now be subtracted instead of one for the loop
and EXRL. This requires an extra check for the one-byte case, which is
handled in a special block with just a single MVI/STC (like GCC).
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D112004
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
0 files changed, 0 insertions, 0 deletions