aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineScheduler.cpp
diff options
context:
space:
mode:
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>2021-10-14 20:10:47 +0200
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>2021-12-06 12:10:58 -0600
commitcbf682cb1c99c70fa93eb4e32aa5120e4881ba04 (patch)
treefdab5a265ea7a7793e7909cc79ef829e53228a9a /llvm/lib/CodeGen/MachineScheduler.cpp
parent327d966365d7b34abd25a920e1f7b5aecfa5c70f (diff)
downloadllvm-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