[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / SystemZ / la-02.ll
blobd7362d67e3bf61162851ed5de687d0ade58be0da
1 ; Test loads of symbolic addresses when generating medium- and
2 ; large-model non-PIC.
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu -code-model=medium | FileCheck %s
5 ; RUN: llc < %s -mtriple=s390x-linux-gnu -code-model=large | FileCheck %s
7 @ev = external global i32
8 @dv = global i32 0
9 @pv = protected global i32 0
10 @hv = hidden global i32 0
12 declare void @ef()
13 define void @df() {
14   ret void
16 define protected void @pf() {
17   ret void
19 define hidden void @hf() {
20   ret void
23 ; Test loads of external variables.  There is no guarantee that the
24 ; variable will be in range of LARL.
25 define i32 *@f1() {
26 ; CHECK-LABEL: f1:
27 ; CHECK: lgrl %r2, ev@GOT
28 ; CHECK: br %r14
29   ret i32 *@ev
32 ; ...likewise locally-defined normal-visibility variables.
33 define i32 *@f2() {
34 ; CHECK-LABEL: f2:
35 ; CHECK: lgrl %r2, dv@GOT
36 ; CHECK: br %r14
37   ret i32 *@dv
40 ; ...likewise protected variables.
41 define i32 *@f3() {
42 ; CHECK-LABEL: f3:
43 ; CHECK: lgrl %r2, pv@GOT
44 ; CHECK: br %r14
45   ret i32 *@pv
48 ; ...likewise hidden variables.
49 define i32 *@f4() {
50 ; CHECK-LABEL: f4:
51 ; CHECK: lgrl %r2, hv@GOT
52 ; CHECK: br %r14
53   ret i32 *@hv
56 ; Check loads of external functions.  This could use LARL, but we don't have
57 ; code to detect that yet.
58 define void() *@f5() {
59 ; CHECK-LABEL: f5:
60 ; CHECK: lgrl %r2, ef@GOT
61 ; CHECK: br %r14
62   ret void() *@ef
65 ; ...likewise locally-defined normal-visibility functions.
66 define void() *@f6() {
67 ; CHECK-LABEL: f6:
68 ; CHECK: lgrl %r2, df@GOT
69 ; CHECK: br %r14
70   ret void() *@df
73 ; ...likewise protected functions.
74 define void() *@f7() {
75 ; CHECK-LABEL: f7:
76 ; CHECK: lgrl %r2, pf@GOT
77 ; CHECK: br %r14
78   ret void() *@pf
81 ; ...likewise hidden functions.
82 define void() *@f8() {
83 ; CHECK-LABEL: f8:
84 ; CHECK: lgrl %r2, hf@GOT
85 ; CHECK: br %r14
86   ret void() *@hf