[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / la-03.ll
blob643318dd7c3189e88cad2fb4b44cdd7050cfe2dd
1 ; Test loads of symbolic addresses in PIC code.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -relocation-model=pic | FileCheck %s
5 @ev = external global i32
6 @dv = global i32 0
7 @pv = protected global i32 0
8 @hv = hidden global i32 0
10 declare void @ef()
11 define void @df() {
12   ret void
14 define protected void @pf() {
15   ret void
17 define hidden void @hf() {
18   ret void
21 ; Test loads of external variables, which must go via the GOT.
22 define ptr@f1() {
23 ; CHECK-LABEL: f1:
24 ; CHECK: lgrl %r2, ev@GOT
25 ; CHECK: br %r14
26   ret ptr@ev
29 ; Check loads of locally-defined normal-visibility variables, which might
30 ; be overridden.  The load must go via the GOT.
31 define ptr@f2() {
32 ; CHECK-LABEL: f2:
33 ; CHECK: lgrl %r2, dv@GOT
34 ; CHECK: br %r14
35   ret ptr@dv
38 ; Check loads of protected variables, which in the small code model
39 ; must be in range of LARL.
40 define ptr@f3() {
41 ; CHECK-LABEL: f3:
42 ; CHECK: larl %r2, pv
43 ; CHECK: br %r14
44   ret ptr@pv
47 ; ...likewise hidden variables.
48 define ptr@f4() {
49 ; CHECK-LABEL: f4:
50 ; CHECK: larl %r2, hv
51 ; CHECK: br %r14
52   ret ptr@hv
55 ; Like f1, but for functions.
56 define ptr@f5() {
57 ; CHECK-LABEL: f5:
58 ; CHECK: lgrl %r2, ef@GOT
59 ; CHECK: br %r14
60   ret ptr@ef
63 ; Like f2, but for functions.
64 define ptr@f6() {
65 ; CHECK-LABEL: f6:
66 ; CHECK: lgrl %r2, df@GOT
67 ; CHECK: br %r14
68   ret ptr@df
71 ; Like f3, but for functions.
72 define ptr@f7() {
73 ; CHECK-LABEL: f7:
74 ; CHECK: larl %r2, pf
75 ; CHECK: br %r14
76   ret ptr@pf
79 ; Like f4, but for functions.
80 define ptr@f8() {
81 ; CHECK-LABEL: f8:
82 ; CHECK: larl %r2, hf
83 ; CHECK: br %r14
84   ret ptr@hf