; Test the allocation of frames in cases where we do not need to save
; registers in the prologue.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s

declare void @foo(i32 *)

; The CFA offset is 160 (the caller-allocated part of the frame) + 168.
define void @f1(i64 %x) {
; CHECK-LABEL: f1:
; CHECK: aghi %r15, -168
; CHECK: .cfi_def_cfa_offset 328
; CHECK: stg %r2, 160(%r15)
; CHECK: aghi %r15, 168
; CHECK: br %r14
  %y = alloca i64, align 8
  store volatile i64 %x, i64* %y
  ret void
}

; Check frames of size 32760, which is the largest size that can be both
; allocated and freed using AGHI.  This size is big enough to require
; two emergency spill slots at 160(%r15), for instructions with unsigned
; 12-bit offsets that end up being out of range.  Fill the remaining
; 32760 - 176 bytes by allocating (32760 - 176) / 8 = 4073 doublewords.
define void @f2(i64 %x) {
; CHECK-LABEL: f2:
; CHECK: aghi %r15, -32760
; CHECK: .cfi_def_cfa_offset 32920
; CHECK: stg %r2, 176(%r15)
; CHECK: aghi %r15, 32760
; CHECK: br %r14
  %y = alloca [4073 x i64], align 8
  %ptr = getelementptr inbounds [4073 x i64], [4073 x i64]* %y, i64 0, i64 0
  store volatile i64 %x, i64* %ptr
  ret void
}

; Allocate one more doubleword.  This is the one frame size that we can
; allocate using AGHI but must free using AGFI.
define void @f3(i64 %x) {
; CHECK-LABEL: f3:
; CHECK: aghi %r15, -32768
; CHECK: .cfi_def_cfa_offset 32928
; CHECK: stg %r2, 176(%r15)
; CHECK: agfi %r15, 32768
; CHECK: br %r14
  %y = alloca [4074 x i64], align 8
  %ptr = getelementptr inbounds [4074 x i64], [4074 x i64]* %y, i64 0, i64 0
  store volatile i64 %x, i64* %ptr
  ret void
}

; Allocate another doubleword on top of that.  The allocation and free
; must both use AGFI.
define void @f4(i64 %x) {
; CHECK-LABEL: f4:
; CHECK: agfi %r15, -32776
; CHECK: .cfi_def_cfa_offset 32936
; CHECK: stg %r2, 176(%r15)
; CHECK: agfi %r15, 32776
; CHECK: br %r14
  %y = alloca [4075 x i64], align 8
  %ptr = getelementptr inbounds [4075 x i64], [4075 x i64]* %y, i64 0, i64 0
  store volatile i64 %x, i64* %ptr
  ret void
}

; The largest size that can be both allocated and freed using AGFI.
; At this point the frame is too big to represent properly in the CFI.
define void @f5(i64 %x) {
; CHECK-LABEL: f5:
; CHECK: agfi %r15, -2147483640
; CHECK: stg %r2, 176(%r15)
; CHECK: agfi %r15, 2147483640
; CHECK: br %r14
  %y = alloca [268435433 x i64], align 8
  %ptr = getelementptr inbounds [268435433 x i64], [268435433 x i64]* %y, i64 0, i64 0
  store volatile i64 %x, i64* %ptr
  ret void
}

; The only frame size that can be allocated using a single AGFI but which
; must be freed using two instructions.
define void @f6(i64 %x) {
; CHECK-LABEL: f6:
; CHECK: agfi %r15, -2147483648
; CHECK: stg %r2, 176(%r15)
; CHECK: agfi %r15, 2147483640
; CHECK: aghi %r15, 8
; CHECK: br %r14
  %y = alloca [268435434 x i64], align 8
  %ptr = getelementptr inbounds [268435434 x i64], [268435434 x i64]* %y, i64 0, i64 0
  store volatile i64 %x, i64* %ptr
  ret void
}

; The smallest frame size that needs two instructions to both allocate
; and free the frame.
define void @f7(i64 %x) {
; CHECK-LABEL: f7:
; CHECK: agfi %r15, -2147483648
; CHECK: aghi %r15, -8
; CHECK: stg %r2, 176(%r15)
; CHECK: agfi %r15, 2147483640
; CHECK: aghi %r15, 16
; CHECK: br %r14
  %y = alloca [268435435 x i64], align 8
  %ptr = getelementptr inbounds [268435435 x i64], [268435435 x i64]* %y, i64 0, i64 0
  store volatile i64 %x, i64* %ptr
  ret void
}

; Make sure that LA can be rematerialized.
define void @f8() {
; CHECK-LABEL: f8:
; CHECK: la %r2, 164(%r15)
; CHECK: brasl %r14, foo@PLT
; CHECK: la %r2, 164(%r15)
; CHECK: brasl %r14, foo@PLT
; CHECK: br %r14
  %ptr = alloca i32
  call void @foo(i32 *%ptr)
  call void @foo(i32 *%ptr)
  ret void
}
