xref: /llvm-project/llvm/test/CodeGen/X86/atom-lea-sp.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
1; RUN: llc < %s -mcpu=atom -mtriple=i686-linux  -no-x86-call-frame-opt | FileCheck -check-prefix=ATOM %s
2; RUN: llc < %s -mcpu=core2 -mtriple=i686-linux -no-x86-call-frame-opt | FileCheck %s
3
4declare void @use_arr(ptr)
5declare void @many_params(i32, i32, i32, i32, i32, i32)
6
7define void @test1() nounwind {
8; ATOM-LABEL: test1:
9; ATOM: leal -1052(%esp), %esp
10; ATOM-NOT: sub
11; ATOM: call
12; ATOM: leal 1052(%esp), %esp
13
14; CHECK-LABEL: test1:
15; CHECK: subl
16; CHECK: call
17; CHECK-NOT: lea
18  %arr = alloca [1024 x i8], align 16
19  call void @use_arr(ptr %arr)
20  ret void
21}
22
23define void @test2() nounwind {
24; ATOM-LABEL: test2:
25; ATOM: leal -28(%esp), %esp
26; ATOM: call
27; ATOM: leal 28(%esp), %esp
28
29; CHECK-LABEL: test2:
30; CHECK-NOT: lea
31  call void @many_params(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6)
32  ret void
33}
34
35define void @test3() nounwind {
36; ATOM-LABEL: test3:
37; ATOM: leal -8(%esp), %esp
38; ATOM: leal 8(%esp), %esp
39
40; CHECK-LABEL: test3:
41; CHECK-NOT: lea
42  %x = alloca i32, align 4
43  %y = alloca i32, align 4
44  store i32 0, ptr %x, align 4
45  ret void
46}
47
48