; Test loads of symbolic addresses when generating medium- and
; large-model non-PIC.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -code-model=medium | FileCheck %s
; RUN: llc < %s -mtriple=s390x-linux-gnu -code-model=large | FileCheck %s

@ev = external global i32
@dv = global i32 0
@pv = protected global i32 0
@hv = hidden global i32 0

declare void @ef()
define void @df() {
  ret void
}
define protected void @pf() {
  ret void
}
define hidden void @hf() {
  ret void
}

; Test loads of external variables.  There is no guarantee that the
; variable will be in range of LARL.
define i32 *@f1() {
; CHECK: f1:
; CHECK: lgrl %r2, ev@GOT
; CHECK: br %r14
  ret i32 *@ev
}

; ...likewise locally-defined normal-visibility variables.
define i32 *@f2() {
; CHECK: f2:
; CHECK: lgrl %r2, dv@GOT
; CHECK: br %r14
  ret i32 *@dv
}

; ...likewise protected variables.
define i32 *@f3() {
; CHECK: f3:
; CHECK: lgrl %r2, pv@GOT
; CHECK: br %r14
  ret i32 *@pv
}

; ...likewise hidden variables.
define i32 *@f4() {
; CHECK: f4:
; CHECK: lgrl %r2, hv@GOT
; CHECK: br %r14
  ret i32 *@hv
}

; Check loads of external functions.  This could use LARL, but we don't have
; code to detect that yet.
define void() *@f5() {
; CHECK: f5:
; CHECK: lgrl %r2, ef@GOT
; CHECK: br %r14
  ret void() *@ef
}

; ...likewise locally-defined normal-visibility functions.
define void() *@f6() {
; CHECK: f6:
; CHECK: lgrl %r2, df@GOT
; CHECK: br %r14
  ret void() *@df
}

; ...likewise protected functions.
define void() *@f7() {
; CHECK: f7:
; CHECK: lgrl %r2, pf@GOT
; CHECK: br %r14
  ret void() *@pf
}

; ...likewise hidden functions.
define void() *@f8() {
; CHECK: f8:
; CHECK: lgrl %r2, hf@GOT
; CHECK: br %r14
  ret void() *@hf
}
