1; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s 2; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -disable-fp-elim < %s | FileCheck %s --check-prefix=CHECK-WITH-FP 3 4@bigspace = global [8 x i64] zeroinitializer 5 6declare void @use_addr(i8*) 7 8define void @test_frame([8 x i64] %val) { 9; CHECK: test_frame: 10; CHECK: .cfi_startproc 11 12 %var = alloca i8, i32 1000000 13; CHECK: sub sp, sp, #[[SP_INIT_ADJ:[0-9]+]] 14; CHECK-NEXT: .Ltmp 15; CHECK-NEXT: .cfi_def_cfa sp, [[SP_INIT_ADJ]] 16 17; Make sure the prologue is reasonably efficient 18; CHECK-NEXT: stp x29, x30, [sp, 19; CHECK-NEXT: stp x25, x26, [sp, 20; CHECK-NEXT: stp x23, x24, [sp, 21; CHECK-NEXT: stp x21, x22, [sp, 22; CHECK-NEXT: stp x19, x20, [sp, 23; CHECK-NEXT: sub sp, sp, #160 24; CHECK-NEXT: sub sp, sp, #244, lsl #12 25; CHECK-NEXT: .Ltmp 26; CHECK-NEXT: .cfi_def_cfa sp, 1000080 27; CHECK-NEXT: .Ltmp 28; CHECK-NEXT: .cfi_offset x30, -8 29; CHECK-NEXT: .Ltmp 30; CHECK-NEXT: .cfi_offset x29, -16 31; [...] 32; CHECK: .cfi_offset x19, -80 33 34; CHECK: bl use_addr 35 call void @use_addr(i8* %var) 36 37 store [8 x i64] %val, [8 x i64]* @bigspace 38 ret void 39; CHECK: ret 40; CHECK: .cfi_endproc 41} 42 43; CHECK-WITH-FP: test_frame: 44 45; CHECK-WITH-FP: sub sp, sp, #[[SP_INIT_ADJ:[0-9]+]] 46; CHECK-WITH-FP-NEXT: .Ltmp 47; CHECK-WITH-FP-NEXT: .cfi_def_cfa sp, [[SP_INIT_ADJ]] 48 49; CHECK-WITH-FP: stp x29, x30, [sp, [[OFFSET:#[0-9]+]]] 50; CHECK-WITH-FP-NEXT: add x29, sp, [[OFFSET]] 51; CHECK-WITH-FP-NEXT: .Ltmp 52; CHECK-WITH-FP-NEXT: .cfi_def_cfa x29, 16 53 54 ; We shouldn't emit any kind of update for the second stack adjustment if the 55 ; FP is in use. 56; CHECK-WITH-FP-NOT: .cfi_def_cfa_offset 57 58; CHECK-WITH-FP: bl use_addr 59