blob: a6346fb467fbbf3297e444cd385252c174a03c73 [file] [log] [blame]
Tim Northover00ed9962014-03-29 10:18:08 +00001; RUN: llc < %s -mtriple=arm64-apple-ios7.0 | FileCheck %s
2; RUN: llc < %s -mtriple=arm64-linux-gnu | FileCheck %s --check-prefix=CHECK-LINUX
3
4; CHECK-LABEL: main:
Bradley Smith3971d3d2014-04-09 14:43:59 +00005; CHECK: stp x29, x30, [sp, #-16]!
Bradley Smith6f1aa592014-04-09 14:43:50 +00006; CHECK-NEXT: mov x29, sp
Tim Northover00ed9962014-03-29 10:18:08 +00007; CHECK-NEXT: sub sp, sp, #16
Bradley Smith6f1aa592014-04-09 14:43:50 +00008; CHECK-NEXT: stur wzr, [x29, #-4]
Tim Northover00ed9962014-03-29 10:18:08 +00009; CHECK: adrp x0, L_.str@PAGE
10; CHECK: add x0, x0, L_.str@PAGEOFF
11; CHECK-NEXT: bl _puts
Bradley Smith6f1aa592014-04-09 14:43:50 +000012; CHECK-NEXT: mov sp, x29
Bradley Smith3971d3d2014-04-09 14:43:59 +000013; CHECK-NEXT: ldp x29, x30, [sp], #16
Tim Northover00ed9962014-03-29 10:18:08 +000014; CHECK-NEXT: ret
15
16; CHECK-LINUX-LABEL: main:
Bradley Smith3971d3d2014-04-09 14:43:59 +000017; CHECK-LINUX: stp x29, x30, [sp, #-16]!
Bradley Smith6f1aa592014-04-09 14:43:50 +000018; CHECK-LINUX-NEXT: mov x29, sp
Tim Northover00ed9962014-03-29 10:18:08 +000019; CHECK-LINUX-NEXT: sub sp, sp, #16
Bradley Smith6f1aa592014-04-09 14:43:50 +000020; CHECK-LINUX-NEXT: stur wzr, [x29, #-4]
Tim Northover00ed9962014-03-29 10:18:08 +000021; CHECK-LINUX: adrp x0, .L.str
22; CHECK-LINUX: add x0, x0, :lo12:.L.str
23; CHECK-LINUX-NEXT: bl puts
Bradley Smith6f1aa592014-04-09 14:43:50 +000024; CHECK-LINUX-NEXT: mov sp, x29
Bradley Smith3971d3d2014-04-09 14:43:59 +000025; CHECK-LINUX-NEXT: ldp x29, x30, [sp], #16
Tim Northover00ed9962014-03-29 10:18:08 +000026; CHECK-LINUX-NEXT: ret
27
28@.str = private unnamed_addr constant [7 x i8] c"hello\0A\00"
29
30define i32 @main() nounwind ssp {
31entry:
32 %retval = alloca i32, align 4
33 store i32 0, i32* %retval
34 %call = call i32 @puts(i8* getelementptr inbounds ([7 x i8]* @.str, i32 0, i32 0))
35 ret i32 %call
36}
37
38declare i32 @puts(i8*)