57 lines · plain
1; RUN: llc -mtriple=aarch64-none-linux-gnu -frame-pointer=none < %s | \2; RUN: FileCheck %s --check-prefixes=CHECK,NONE3; RUN: llc -mtriple=aarch64-none-linux-gnu -frame-pointer=reserved < %s | \4; RUN: FileCheck %s --check-prefixes=CHECK,RESERVED5; RUN: llc -mtriple=aarch64-none-linux-gnu -frame-pointer=all < %s | \6; RUN: FileCheck %s --check-prefixes=CHECK,ALL7 8; By default, Darwin and Windows will reserve x299; RUN: llc -mtriple=aarch64-darwin -frame-pointer=none < %s | \10; RUN: FileCheck %s --check-prefixes=CHECK,RESERVED11; RUN: llc -mtriple=aarch64-darwin -frame-pointer=none < %s | \12; RUN: FileCheck %s --check-prefixes=CHECK,RESERVED13@var = global i32 014 15declare void @bar()16 17define void @test_w29_reserved() {18; CHECK-LABEL: test_w29_reserved:19; ALL: add x29, sp20; NONE-NOT: add x2921; NONE-NOT: mov x2922; RESERVED-NOT: add x2923; RESERVED-NOT: mov x2924 25 %val1 = load volatile i32, ptr @var26 %val2 = load volatile i32, ptr @var27 %val3 = load volatile i32, ptr @var28 %val4 = load volatile i32, ptr @var29 %val5 = load volatile i32, ptr @var30 %val6 = load volatile i32, ptr @var31 %val7 = load volatile i32, ptr @var32 %val8 = load volatile i32, ptr @var33 %val9 = load volatile i32, ptr @var34 %val10 = load volatile i32, ptr @var35 36; NONE: ldr w29,37; ALL-NOT: ldr w29,38; RESERVED-NOT: ldr w29,39 40 ; Call to prevent fp-elim that occurs regardless in leaf functions.41 call void @bar()42 43 store volatile i32 %val1, ptr @var44 store volatile i32 %val2, ptr @var45 store volatile i32 %val3, ptr @var46 store volatile i32 %val4, ptr @var47 store volatile i32 %val5, ptr @var48 store volatile i32 %val6, ptr @var49 store volatile i32 %val7, ptr @var50 store volatile i32 %val8, ptr @var51 store volatile i32 %val9, ptr @var52 store volatile i32 %val10, ptr @var53 54 ret void55; CHECK: ret56}57