1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2
2
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \
3
3
; RUN: -mtriple powerpc64-ibm-aix-xcoff < %s \
4
- ; RUN: | FileCheck %s --check-prefix= SMALLCM64
4
+ ; RUN: | FileCheck %s --check-prefixes=COMMONCM, SMALLCM64
5
5
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \
6
6
; RUN: -mtriple powerpc64-ibm-aix-xcoff --code-model=large \
7
- ; RUN: < %s | FileCheck %s --check-prefix= LARGECM64
7
+ ; RUN: < %s | FileCheck %s --check-prefixes=COMMONCM, LARGECM64
8
8
9
9
; Test that the 'aix-small-tls' global variable attribute generates the
10
10
; optimized small-local-exec TLS sequence. Global variables without this
@@ -26,23 +26,18 @@ declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
26
26
@f = thread_local (localexec) global [87 x float ] zeroinitializer , align 4 #0
27
27
@f_noattr = thread_local (localexec) global [87 x float ] zeroinitializer , align 4
28
28
29
- define nonnull ptr @AddrTest1 () local_unnamed_addr {
30
- ; SMALLCM64-LABEL: AddrTest1:
31
- ; SMALLCM64: # %bb.0: # %entry
32
- ; SMALLCM64-NEXT: addi r3, r13, a[TL]@le+1
33
- ; SMALLCM64-NEXT: blr
34
- ;
35
- ; LARGECM64-LABEL: AddrTest1:
36
- ; LARGECM64: # %bb.0: # %entry
37
- ; LARGECM64-NEXT: addi r3, r13, a[TL]@le+1
38
- ; LARGECM64-NEXT: blr
29
+ define nonnull ptr @AddrTest1 () {
30
+ ; COMMONCM-LABEL: AddrTest1:
31
+ ; COMMONCM: # %bb.0: # %entry
32
+ ; COMMONCM-NEXT: addi r3, r13, a[TL]@le+1
33
+ ; COMMONCM-NEXT: blr
39
34
entry:
40
35
%tls0 = tail call align 1 ptr @llvm.threadlocal.address.p0 (ptr align 1 @a )
41
36
%arrayidx = getelementptr inbounds [87 x i8 ], ptr %tls0 , i64 0 , i64 1
42
37
ret ptr %arrayidx
43
38
}
44
39
45
- define nonnull ptr @AddrTest1_NoAttr () local_unnamed_addr {
40
+ define nonnull ptr @AddrTest1_NoAttr () {
46
41
; SMALLCM64-LABEL: AddrTest1_NoAttr:
47
42
; SMALLCM64: # %bb.0: # %entry
48
43
; SMALLCM64-NEXT: ld r3, L..C0(r2) # target-flags(ppc-tprel) @a_noattr
@@ -63,23 +58,18 @@ entry:
63
58
ret ptr %arrayidx
64
59
}
65
60
66
- define nonnull ptr @AddrTest2 () local_unnamed_addr {
67
- ; SMALLCM64-LABEL: AddrTest2:
68
- ; SMALLCM64: # %bb.0: # %entry
69
- ; SMALLCM64-NEXT: addi r3, r13, b[TL]@le+4
70
- ; SMALLCM64-NEXT: blr
71
- ;
72
- ; LARGECM64-LABEL: AddrTest2:
73
- ; LARGECM64: # %bb.0: # %entry
74
- ; LARGECM64-NEXT: addi r3, r13, b[TL]@le+4
75
- ; LARGECM64-NEXT: blr
61
+ define nonnull ptr @AddrTest2 () {
62
+ ; COMMONCM-LABEL: AddrTest2:
63
+ ; COMMONCM: # %bb.0: # %entry
64
+ ; COMMONCM-NEXT: addi r3, r13, b[TL]@le+4
65
+ ; COMMONCM-NEXT: blr
76
66
entry:
77
67
%tls0 = tail call align 2 ptr @llvm.threadlocal.address.p0 (ptr align 2 @b )
78
68
%arrayidx = getelementptr inbounds [87 x i16 ], ptr %tls0 , i64 0 , i64 2
79
69
ret ptr %arrayidx
80
70
}
81
71
82
- define nonnull ptr @AddrTest2_NoAttr () local_unnamed_addr {
72
+ define nonnull ptr @AddrTest2_NoAttr () {
83
73
; SMALLCM64-LABEL: AddrTest2_NoAttr:
84
74
; SMALLCM64: # %bb.0: # %entry
85
75
; SMALLCM64-NEXT: ld r3, L..C1(r2) # target-flags(ppc-tprel) @b_noattr
@@ -100,23 +90,18 @@ entry:
100
90
ret ptr %arrayidx
101
91
}
102
92
103
- define nonnull ptr @AddrTest3 () local_unnamed_addr {
104
- ; SMALLCM64-LABEL: AddrTest3:
105
- ; SMALLCM64: # %bb.0: # %entry
106
- ; SMALLCM64-NEXT: addi r3, r13, c[TL]@le+12
107
- ; SMALLCM64-NEXT: blr
108
- ;
109
- ; LARGECM64-LABEL: AddrTest3:
110
- ; LARGECM64: # %bb.0: # %entry
111
- ; LARGECM64-NEXT: addi r3, r13, c[TL]@le+12
112
- ; LARGECM64-NEXT: blr
93
+ define nonnull ptr @AddrTest3 () {
94
+ ; COMMONCM-LABEL: AddrTest3:
95
+ ; COMMONCM: # %bb.0: # %entry
96
+ ; COMMONCM-NEXT: addi r3, r13, c[TL]@le+12
97
+ ; COMMONCM-NEXT: blr
113
98
entry:
114
99
%tls0 = tail call align 4 ptr @llvm.threadlocal.address.p0 (ptr align 4 @c )
115
100
%arrayidx = getelementptr inbounds [87 x i32 ], ptr %tls0 , i64 0 , i64 3
116
101
ret ptr %arrayidx
117
102
}
118
103
119
- define nonnull ptr @AddrTest3_NoAttr () local_unnamed_addr {
104
+ define nonnull ptr @AddrTest3_NoAttr () {
120
105
; SMALLCM64-LABEL: AddrTest3_NoAttr:
121
106
; SMALLCM64: # %bb.0: # %entry
122
107
; SMALLCM64-NEXT: ld r3, L..C2(r2) # target-flags(ppc-tprel) @c_noattr
@@ -137,23 +122,18 @@ entry:
137
122
ret ptr %arrayidx
138
123
}
139
124
140
- define nonnull ptr @AddrTest4 () local_unnamed_addr {
141
- ; SMALLCM64-LABEL: AddrTest4:
142
- ; SMALLCM64: # %bb.0: # %entry
143
- ; SMALLCM64-NEXT: addi r3, r13, c[TL]@le+56
144
- ; SMALLCM64-NEXT: blr
145
- ;
146
- ; LARGECM64-LABEL: AddrTest4:
147
- ; LARGECM64: # %bb.0: # %entry
148
- ; LARGECM64-NEXT: addi r3, r13, c[TL]@le+56
149
- ; LARGECM64-NEXT: blr
125
+ define nonnull ptr @AddrTest4 () {
126
+ ; COMMONCM-LABEL: AddrTest4:
127
+ ; COMMONCM: # %bb.0: # %entry
128
+ ; COMMONCM-NEXT: addi r3, r13, c[TL]@le+56
129
+ ; COMMONCM-NEXT: blr
150
130
entry:
151
131
%tls0 = tail call align 8 ptr @llvm.threadlocal.address.p0 (ptr align 8 @c )
152
132
%arrayidx = getelementptr inbounds [87 x i64 ], ptr %tls0 , i64 0 , i64 7
153
133
ret ptr %arrayidx
154
134
}
155
135
156
- define nonnull ptr @AddrTest4_NoAttr () local_unnamed_addr {
136
+ define nonnull ptr @AddrTest4_NoAttr () {
157
137
; SMALLCM64-LABEL: AddrTest4_NoAttr:
158
138
; SMALLCM64: # %bb.0: # %entry
159
139
; SMALLCM64-NEXT: ld r3, L..C2(r2) # target-flags(ppc-tprel) @c_noattr
@@ -174,23 +154,18 @@ entry:
174
154
ret ptr %arrayidx
175
155
}
176
156
177
- define nonnull ptr @AddrTest5 () local_unnamed_addr {
178
- ; SMALLCM64-LABEL: AddrTest5:
179
- ; SMALLCM64: # %bb.0: # %entry
180
- ; SMALLCM64-NEXT: addi r3, r13, e[TL]@le+48
181
- ; SMALLCM64-NEXT: blr
182
- ;
183
- ; LARGECM64-LABEL: AddrTest5:
184
- ; LARGECM64: # %bb.0: # %entry
185
- ; LARGECM64-NEXT: addi r3, r13, e[TL]@le+48
186
- ; LARGECM64-NEXT: blr
157
+ define nonnull ptr @AddrTest5 () {
158
+ ; COMMONCM-LABEL: AddrTest5:
159
+ ; COMMONCM: # %bb.0: # %entry
160
+ ; COMMONCM-NEXT: addi r3, r13, e[TL]@le+48
161
+ ; COMMONCM-NEXT: blr
187
162
entry:
188
163
%tls0 = tail call align 8 ptr @llvm.threadlocal.address.p0 (ptr align 8 @e )
189
164
%arrayidx = getelementptr inbounds [87 x double ], ptr %tls0 , i64 0 , i64 6
190
165
ret ptr %arrayidx
191
166
}
192
167
193
- define nonnull ptr @AddrTest5_NoAttr () local_unnamed_addr {
168
+ define nonnull ptr @AddrTest5_NoAttr () {
194
169
; SMALLCM64-LABEL: AddrTest5_NoAttr:
195
170
; SMALLCM64: # %bb.0: # %entry
196
171
; SMALLCM64-NEXT: ld r3, L..C3(r2) # target-flags(ppc-tprel) @e_noattr
@@ -211,23 +186,18 @@ entry:
211
186
ret ptr %arrayidx
212
187
}
213
188
214
- define nonnull ptr @AddrTest6 () local_unnamed_addr {
215
- ; SMALLCM64-LABEL: AddrTest6:
216
- ; SMALLCM64: # %bb.0: # %entry
217
- ; SMALLCM64-NEXT: addi r3, r13, f[TL]@le+16
218
- ; SMALLCM64-NEXT: blr
219
- ;
220
- ; LARGECM64-LABEL: AddrTest6:
221
- ; LARGECM64: # %bb.0: # %entry
222
- ; LARGECM64-NEXT: addi r3, r13, f[TL]@le+16
223
- ; LARGECM64-NEXT: blr
189
+ define nonnull ptr @AddrTest6 () {
190
+ ; COMMONCM-LABEL: AddrTest6:
191
+ ; COMMONCM: # %bb.0: # %entry
192
+ ; COMMONCM-NEXT: addi r3, r13, f[TL]@le+16
193
+ ; COMMONCM-NEXT: blr
224
194
entry:
225
195
%tls0 = tail call align 4 ptr @llvm.threadlocal.address.p0 (ptr align 4 @f )
226
196
%arrayidx = getelementptr inbounds [87 x float ], ptr %tls0 , i64 0 , i64 4
227
197
ret ptr %arrayidx
228
198
}
229
199
230
- define nonnull ptr @AddrTest6_NoAttr () local_unnamed_addr {
200
+ define nonnull ptr @AddrTest6_NoAttr () {
231
201
; SMALLCM64-LABEL: AddrTest6_NoAttr:
232
202
; SMALLCM64: # %bb.0: # %entry
233
203
; SMALLCM64-NEXT: ld r3, L..C4(r2) # target-flags(ppc-tprel) @f_noattr
0 commit comments