Files
clang-p2996/llvm/test/CodeGen/SystemZ/la-03.ll
Kai Nacke a1710eb3cd [SystemZ][NFC] Opaque pointer migration.
The LIT test cases were migrated with the script provided by
Nikita Popov.

No manual changes were made. Committed without review since
no functional changes, after consultation with uweigand.
2022-10-11 21:09:43 +00:00

86 lines
1.5 KiB
LLVM

; Test loads of symbolic addresses in PIC code.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -relocation-model=pic | 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, which must go via the GOT.
define ptr@f1() {
; CHECK-LABEL: f1:
; CHECK: lgrl %r2, ev@GOT
; CHECK: br %r14
ret ptr@ev
}
; Check loads of locally-defined normal-visibility variables, which might
; be overridden. The load must go via the GOT.
define ptr@f2() {
; CHECK-LABEL: f2:
; CHECK: lgrl %r2, dv@GOT
; CHECK: br %r14
ret ptr@dv
}
; Check loads of protected variables, which in the small code model
; must be in range of LARL.
define ptr@f3() {
; CHECK-LABEL: f3:
; CHECK: larl %r2, pv
; CHECK: br %r14
ret ptr@pv
}
; ...likewise hidden variables.
define ptr@f4() {
; CHECK-LABEL: f4:
; CHECK: larl %r2, hv
; CHECK: br %r14
ret ptr@hv
}
; Like f1, but for functions.
define ptr@f5() {
; CHECK-LABEL: f5:
; CHECK: lgrl %r2, ef@GOT
; CHECK: br %r14
ret ptr@ef
}
; Like f2, but for functions.
define ptr@f6() {
; CHECK-LABEL: f6:
; CHECK: lgrl %r2, df@GOT
; CHECK: br %r14
ret ptr@df
}
; Like f3, but for functions.
define ptr@f7() {
; CHECK-LABEL: f7:
; CHECK: larl %r2, pf
; CHECK: br %r14
ret ptr@pf
}
; Like f4, but for functions.
define ptr@f8() {
; CHECK-LABEL: f8:
; CHECK: larl %r2, hf
; CHECK: br %r14
ret ptr@hf
}