Home | History | Annotate | Download | only in SystemZ
      1 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
      2 
      3 declare i64 @llvm.get.dynamic.area.offset.i64()
      4 
      5 declare void @use(i64)
      6 
      7 define 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 
     18 define 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 
     30 declare void @eatsalot(i64, i64, i64, i64, i64, i64)
     31 
     32 define 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