1; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
2
3declare i64 @llvm.get.dynamic.area.offset.i64()
4
5declare void @use(i64)
6
7define void @f1() {
8; CHECK-LABEL: f1
9; CHECK: la %r2, 160
10; CHECK: brasl %r14, use
11; CHECK: br %r14
12  %tmp = alloca i64, align 32
13  %dynamic_area_offset = call i64 @llvm.get.dynamic.area.offset.i64()
14  call void @use(i64 %dynamic_area_offset)
15  ret void
16}
17
18define void @f2(i64 %arg) {
19; CHECK-LABEL: f2
20; CHECK: la %r2, 160(%r2)
21; CHECK: brasl %r14, use
22; CHECK: br %r14
23  %tmp = alloca i64, align 32
24  %dynamic_area_offset = call i64 @llvm.get.dynamic.area.offset.i64()
25  %param = add i64 %dynamic_area_offset, %arg
26  call void @use(i64 %param)
27  ret void
28}
29
30declare void @eatsalot(i64, i64, i64, i64, i64, i64)
31
32define void @f3() {
33; CHECK-LABEL: f3
34; CHECK: la %r2, 168
35; CHECK: brasl %r14, use
36; CHECK: br %r14
37  %tmp = alloca i64, align 32
38  call void @eatsalot(i64 0, i64 0, i64 0, i64 0, i64 0, i64 0)
39  %dynamic_area_offset = call i64 @llvm.get.dynamic.area.offset.i64()
40  call void @use(i64 %dynamic_area_offset)
41  ret void
42}
43