1- ; RUN: llc < %s -mtriple=x86_64-linux-unknown -verify-machineinstrs | FileCheck %s --check-prefix=CHECK-64
2- ; RUN: llc < %s -mtriple=i386-linux-unknown -verify-machineinstrs | FileCheck %s --check-prefix=CHECK-32
1+ ; RUN: llc < %s -mtriple=x86_64-linux-unknown -verify-machineinstrs | FileCheck %s
32
43; Test that a large stack offset uses a single add/sub instruction to
54; adjust the stack pointer.
65
76define void @foo () nounwind {
8- ; CHECK-64-LABEL: foo:
9- ; CHECK-64: movabsq $50000000{{..}}, %rax
10- ; CHECK-64-NEXT: subq %rax, %rsp
11- ; CHECK-64-NOT: subq $2147483647, %rsp
12- ; CHECK-64: movabsq $50000000{{..}}, [[RAX:%r..]]
13- ; CHECK-64-NEXT: addq [[RAX]], %rsp
14-
15- ; CHECK-32-LABEL: foo:
16- ; CHECK-32: movl $50000000{{..}}, %eax
17- ; CHECK-32-NEXT: subl %eax, %esp
18- ; CHECK-32-NOT: subl $2147483647, %esp
19- ; CHECK-32: movl $50000000{{..}}, [[EAX:%e..]]
20- ; CHECK-32-NEXT: addl [[EAX]], %esp
7+ ; CHECK--LABEL: foo:
8+ ; CHECK: movabsq $50000000{{..}}, %rax
9+ ; CHECK-NEXT: subq %rax, %rsp
10+ ; CHECK-NOT: subq $2147483647, %rsp
11+ ; CHECK: movabsq $50000000{{..}}, [[RAX:%r..]]
12+ ; CHECK-NEXT: addq [[RAX]], %rsp
2113 %1 = alloca [5000000000 x i8 ], align 16
2214 call void @bar (ptr %1 )
2315 ret void
@@ -26,13 +18,9 @@ define void @foo() nounwind {
2618; Verify that we do not clobber the return value.
2719
2820define i32 @foo2 () nounwind {
29- ; CHECK-64-LABEL: foo2:
30- ; CHECK-64: movl $10, %eax
31- ; CHECK-64-NOT: movabsq ${{.*}}, %rax
32-
33- ; CHECK-32-LABEL: foo2:
34- ; CHECK-32: movl $10, %eax
35- ; CHECK-32-NOT: movl ${{.*}}, %eax
21+ ; CHECK-LABEL: foo2:
22+ ; CHECK: movl $10, %eax
23+ ; CHECK-NOT: movabsq ${{.*}}, %rax
3624 %1 = alloca [5000000000 x i8 ], align 16
3725 call void @bar (ptr %1 )
3826 ret i32 10
@@ -41,13 +29,9 @@ define i32 @foo2() nounwind {
4129; Verify that we do not clobber EAX when using inreg attribute
4230
4331define i32 @foo3 (i32 inreg %x ) nounwind {
44- ; CHECK-64-LABEL: foo3:
45- ; CHECK-64: movabsq $50000000{{..}}, %rax
46- ; CHECK-64-NEXT: subq %rax, %rsp
47-
48- ; CHECK-32-LABEL: foo3:
49- ; CHECK-32: subl $2147483647, %esp
50- ; CHECK-32-NOT: movl ${{.*}}, %eax
32+ ; CHECK-LABEL: foo3:
33+ ; CHECK: movabsq $50000000{{..}}, %rax
34+ ; CHECK-NEXT: subq %rax, %rsp
5135 %1 = alloca [5000000000 x i8 ], align 16
5236 call void @bar (ptr %1 )
5337 ret i32 %x
0 commit comments