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