Home | History | Annotate | Download | only in AArch64
      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 
      6 declare void @use_addr(i8*)
      7 
      8 define 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