[all-commits] [llvm/llvm-project] 651f07: [AArch64] Don't combine callee-save and local stac...
David Green via All-commits
all-commits at lists.llvm.org
Fri Oct 18 03:34:38 PDT 2019
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 651f07908a149b8eb861a1b109f98eeb3d4f1517
https://github.com/llvm/llvm-project/commit/651f07908a149b8eb861a1b109f98eeb3d4f1517
Author: David Green <david.green at arm.com>
Date: 2019-10-18 (Fri, 18 Oct 2019)
Changed paths:
M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
A llvm/test/CodeGen/AArch64/arm64-never-combine-csr-local-stack-bump-for-size.ll
Log Message:
-----------
[AArch64] Don't combine callee-save and local stack adjustment when optimizing for size
For arm64, D18619 introduced the ability to combine bumping the stack pointer
upfront in case it needs to be bumped for both the callee-save area as well as
the local stack area.
That diff already remarks that "This change can cause an increase in
instructions", but argues that even when that happens, it should be still be a
performance benefit because the number of micro-ops is reduced.
We have observed that this code-size increase can be significant in practice.
This diff disables combining stack bumping for methods that are marked as
optimize-for-size.
Example of a prologue with the behavior before this diff (combining stack bumping when possible):
sub sp, sp, #0x40
stp d9, d8, [sp, #0x10]
stp x20, x19, [sp, #0x20]
stp x29, x30, [sp, #0x30]
add x29, sp, #0x30
[... compute x8 somehow ...]
stp x0, x8, [sp]
And after this diff, if the method is marked as optimize-for-size:
stp d9, d8, [sp, #-0x30]!
stp x20, x19, [sp, #0x10]
stp x29, x30, [sp, #0x20]
add x29, sp, #0x20
[... compute x8 somehow ...]
stp x0, x8, [sp, #-0x10]!
Note that without combining the stack bump there are two auto-decrements,
nicely folded into the stp instructions, whereas otherwise there is a single
sub sp, ... instruction, but not folded.
Patch by Nikolai Tillmann!
Differential Revision: https://reviews.llvm.org/D68530
llvm-svn: 375217
More information about the All-commits
mailing list