diff options
author | Dan Gohman <gohman@apple.com> | 2010-06-21 22:17:20 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-06-21 22:17:20 +0000 |
commit | 584fedf188e863604f7b946a931c0f40cf9c944e (patch) | |
tree | 124aa24862dceb32621b9fbdefa15e4f42953b0a /test/CodeGen/X86/tailcallstack64.ll | |
parent | b7cc3f6ae6311395080693a14e67105ddc53665c (diff) | |
download | llvm-584fedf188e863604f7b946a931c0f40cf9c944e.tar.gz llvm-584fedf188e863604f7b946a931c0f40cf9c944e.tar.bz2 llvm-584fedf188e863604f7b946a931c0f40cf9c944e.tar.xz |
Teach two-address lowering how to unfold a load to open up commuting
opportunities. For example, this lets it emit this:
movq (%rax), %rcx
addq %rdx, %rcx
instead of this:
movq %rdx, %rcx
addq (%rax), %rcx
in the case where %rdx has subsequent uses. It's the same number
of instructions, and usually the same encoding size on x86, but
it appears faster, and in general, it may allow better scheduling
for the load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106493 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/tailcallstack64.ll')
-rw-r--r-- | test/CodeGen/X86/tailcallstack64.ll | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/test/CodeGen/X86/tailcallstack64.ll b/test/CodeGen/X86/tailcallstack64.ll index d05dff8928..107bdf9de3 100644 --- a/test/CodeGen/X86/tailcallstack64.ll +++ b/test/CodeGen/X86/tailcallstack64.ll @@ -2,9 +2,11 @@ ; Check that lowered arguments on the stack do not overwrite each other. ; Add %in1 %p1 to a different temporary register (%eax). -; CHECK: movl %edi, %eax +; CHECK: movl 32(%rsp), %eax ; Move param %in1 to temp register (%r10d). ; CHECK: movl 40(%rsp), %r10d +; Add %in1 %p1 to a different temporary register (%eax). +; CHECK: addl %edi, %eax ; Move param %in2 to stack. ; CHECK: movl %r10d, 32(%rsp) ; Move result of addition to stack. |