brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 347f777 Raw
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