[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / la-01.ll
blob4d9993613acfe4fab1221b9c996a9646eb902f2b
1 ; Test loads of symbolic addresses when generating small-model non-PIC.
2 ; All addresses can be treated as PC
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
6 @e4 = external dso_local global i32
7 @d4 = dso_local global i32 1
8 @e2 = external dso_local global i32, align 2
9 @d2 = dso_local global i32 1, align 2
10 @e1 = external dso_local global i32, align 1
11 @d1 = dso_local global i32 1, align 1
13 declare dso_local void @ef()
14 define dso_local void @df() {
15   ret void
18 declare dso_local void @foo(ptr)
20 ; Test a load of a fully-aligned external variable.
21 define dso_local ptr@f1() {
22 ; CHECK-LABEL: f1:
23 ; CHECK: larl %r2, e4
24 ; CHECK-NEXT: br %r14
25   ret ptr@e4
28 ; Test a load of a fully-aligned local variable.
29 define dso_local ptr@f2() {
30 ; CHECK-LABEL: f2:
31 ; CHECK: larl %r2, d4
32 ; CHECK-NEXT: br %r14
33   ret ptr@d4
36 ; Test a load of a 2-byte-aligned external variable.
37 define dso_local ptr@f3() {
38 ; CHECK-LABEL: f3:
39 ; CHECK: larl %r2, e2
40 ; CHECK-NEXT: br %r14
41   ret ptr@e2
44 ; Test a load of a 2-byte-aligned local variable.
45 define dso_local ptr@f4() {
46 ; CHECK-LABEL: f4:
47 ; CHECK: larl %r2, d2
48 ; CHECK-NEXT: br %r14
49   ret ptr@d2
52 ; Test a load of an unaligned external variable, which must go via the GOT.
53 define dso_local ptr@f5() {
54 ; CHECK-LABEL: f5:
55 ; CHECK: lgrl %r2, e1@GOT
56 ; CHECK-NEXT: br %r14
57   ret ptr@e1
60 ; Test a load of an unaligned local variable, which must go via the GOT.
61 define dso_local ptr@f6() {
62 ; CHECK-LABEL: f6:
63 ; CHECK: lgrl %r2, d1@GOT
64 ; CHECK-NEXT: br %r14
65   ret ptr@d1
68 ; Test a load of an external function.
69 define dso_local ptr@f7() {
70 ; CHECK-LABEL: f7:
71 ; CHECK: larl %r2, ef
72 ; CHECK-NEXT: br %r14
73   ret ptr@ef
76 ; Test a load of a local function.
77 define dso_local ptr@f8() {
78 ; CHECK-LABEL: f8:
79 ; CHECK: larl %r2, df
80 ; CHECK-NEXT: br %r14
81   ret ptr@df
84 ; Test that LARL can be rematerialized.
85 define dso_local i32 @f9() {
86 ; CHECK-LABEL: f9:
87 ; CHECK: larl %r2, d2
88 ; CHECK: brasl %r14, foo@PLT
89 ; CHECK: larl %r2, d2
90 ; CHECK: brasl %r14, foo@PLT
91 ; CHECK: br %r14
92   call void @foo(ptr@d2)
93   call void @foo(ptr@d2)
94   ret i32 0