Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix-shared-lib-tls-model-opt.ll
blob140377270d6d9d355ef39c35fe5cddb82ba0fed9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
3 ; RUN:      --code-model=small < %s | FileCheck %s --check-prefixes=DEFAULT_SMALL64
4 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
5 ; RUN:      --code-model=large < %s | FileCheck %s --check-prefixes=DEFAULT_LARGE64
6 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
7 ; RUN:      -mattr=+aix-shared-lib-tls-model-opt --code-model=small < %s | FileCheck %s --check-prefixes=TLS_MODEL_OPT_SMALL64
8 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
9 ; RUN:      -mattr=+aix-shared-lib-tls-model-opt --code-model=large < %s | FileCheck %s --check-prefixes=TLS_MODEL_OPT_LARGE64
10 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
11 ; RUN:      -mattr=+aix-shared-lib-tls-model-opt -ppc-aix-shared-lib-tls-model-opt-limit=2 \
12 ; RUN:      --code-model=small < %s | FileCheck %s --check-prefixes=TLS_MODEL_OPT_LIMIT2_SMALL64
13 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
14 ; RUN:      -mattr=+aix-shared-lib-tls-model-opt -ppc-aix-shared-lib-tls-model-opt-limit=2 \
15 ; RUN:      --code-model=large < %s | FileCheck %s --check-prefixes=TLS_MODEL_OPT_LIMIT2_LARGE64
16 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
17 ; RUN:      -mattr=+aix-shared-lib-tls-model-opt -ppc-aix-shared-lib-tls-model-opt-limit=3 \
18 ; RUN:      --code-model=small < %s | FileCheck %s --check-prefixes=TLS_MODEL_OPT_LIMIT3_SMALL64
19 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
20 ; RUN:      -mattr=+aix-shared-lib-tls-model-opt -ppc-aix-shared-lib-tls-model-opt-limit=3 \
21 ; RUN:      --code-model=large < %s | FileCheck %s --check-prefixes=TLS_MODEL_OPT_LIMIT3_LARGE64
23 @VarTLSLD1 = internal thread_local(localdynamic) global i32 42, align 4
24 @VarTLSLD2 = internal thread_local(localdynamic) global i32 0, align 4
25 @VarTLSLD3 = internal thread_local(localdynamic) global i32 0, align 4
27 ; Tune function level TLS model settings:
28 ; Use initial-exec when we have a function accessing only one TLS variable.
29 ; Use local-dynamic when we have a function accessing a handful or more different TLS variables.
31 define i32 @Single_LD(i32 %P, i32 %Q) {
32 ; DEFAULT_SMALL64-LABEL: Single_LD:
33 ; DEFAULT_SMALL64:       # %bb.0: # %entry
34 ; DEFAULT_SMALL64-NEXT:    mflr 0
35 ; DEFAULT_SMALL64-NEXT:    stdu 1, -48(1)
36 ; DEFAULT_SMALL64-NEXT:    and 6, 3, 4
37 ; DEFAULT_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tlsldm) @"_$TLSML"
38 ; DEFAULT_SMALL64-NEXT:    std 0, 64(1)
39 ; DEFAULT_SMALL64-NEXT:    bla .__tls_get_mod[PR]
40 ; DEFAULT_SMALL64-NEXT:    ld 4, L..C1(2) # target-flags(ppc-tlsld) @VarTLSLD1
41 ; DEFAULT_SMALL64-NEXT:    cmpwi 6, -1
42 ; DEFAULT_SMALL64-NEXT:    lwzx 3, 3, 4
43 ; DEFAULT_SMALL64-NEXT:    addi 1, 1, 48
44 ; DEFAULT_SMALL64-NEXT:    ld 0, 16(1)
45 ; DEFAULT_SMALL64-NEXT:    mtlr 0
46 ; DEFAULT_SMALL64-NEXT:    blr
48 ; DEFAULT_LARGE64-LABEL: Single_LD:
49 ; DEFAULT_LARGE64:       # %bb.0: # %entry
50 ; DEFAULT_LARGE64-NEXT:    mflr 0
51 ; DEFAULT_LARGE64-NEXT:    stdu 1, -48(1)
52 ; DEFAULT_LARGE64-NEXT:    and 6, 3, 4
53 ; DEFAULT_LARGE64-NEXT:    addis 3, L..C0@u(2)
54 ; DEFAULT_LARGE64-NEXT:    addis 7, L..C1@u(2)
55 ; DEFAULT_LARGE64-NEXT:    ld 3, L..C0@l(3)
56 ; DEFAULT_LARGE64-NEXT:    std 0, 64(1)
57 ; DEFAULT_LARGE64-NEXT:    bla .__tls_get_mod[PR]
58 ; DEFAULT_LARGE64-NEXT:    ld 4, L..C1@l(7)
59 ; DEFAULT_LARGE64-NEXT:    lwzx 3, 3, 4
60 ; DEFAULT_LARGE64-NEXT:    cmpwi 6, -1
61 ; DEFAULT_LARGE64-NEXT:    addi 1, 1, 48
62 ; DEFAULT_LARGE64-NEXT:    ld 0, 16(1)
63 ; DEFAULT_LARGE64-NEXT:    mtlr 0
64 ; DEFAULT_LARGE64-NEXT:    blr
66 ; TLS_MODEL_OPT_SMALL64-LABEL: Single_LD:
67 ; TLS_MODEL_OPT_SMALL64:       # %bb.0: # %entry
68 ; TLS_MODEL_OPT_SMALL64-NEXT:    and 4, 3, 4
69 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tprel) @VarTLSLD1
70 ; TLS_MODEL_OPT_SMALL64-NEXT:    cmpwi 4, -1
71 ; TLS_MODEL_OPT_SMALL64-NEXT:    lwzx 3, 13, 3
72 ; TLS_MODEL_OPT_SMALL64-NEXT:    blr
74 ; TLS_MODEL_OPT_LARGE64-LABEL: Single_LD:
75 ; TLS_MODEL_OPT_LARGE64:       # %bb.0: # %entry
76 ; TLS_MODEL_OPT_LARGE64-NEXT:    and 4, 3, 4
77 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 3, L..C0@u(2)
78 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 3, L..C0@l(3)
79 ; TLS_MODEL_OPT_LARGE64-NEXT:    cmpwi 4, -1
80 ; TLS_MODEL_OPT_LARGE64-NEXT:    lwzx 3, 13, 3
81 ; TLS_MODEL_OPT_LARGE64-NEXT:    blr
83 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: Single_LD:
84 ; TLS_MODEL_OPT_LIMIT2_SMALL64:       # %bb.0: # %entry
85 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    and 4, 3, 4
86 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tprel) @VarTLSLD1
87 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    cmpwi 4, -1
88 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    lwzx 3, 13, 3
89 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    blr
91 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: Single_LD:
92 ; TLS_MODEL_OPT_LIMIT2_LARGE64:       # %bb.0: # %entry
93 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    and 4, 3, 4
94 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 3, L..C0@u(2)
95 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 3, L..C0@l(3)
96 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    cmpwi 4, -1
97 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    lwzx 3, 13, 3
98 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    blr
100 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: Single_LD:
101 ; TLS_MODEL_OPT_LIMIT3_SMALL64:       # %bb.0: # %entry
102 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    and 4, 3, 4
103 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tprel) @VarTLSLD1
104 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    cmpwi 4, -1
105 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    lwzx 3, 13, 3
106 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    blr
108 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: Single_LD:
109 ; TLS_MODEL_OPT_LIMIT3_LARGE64:       # %bb.0: # %entry
110 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    and 4, 3, 4
111 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    addis 3, L..C0@u(2)
112 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    ld 3, L..C0@l(3)
113 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    cmpwi 4, -1
114 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    lwzx 3, 13, 3
115 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    blr
116 entry:
117   %a = icmp slt i32 %P, 0
118   %b = icmp slt i32 %Q, 0
119   %c = and i1 %a, %b
120   %tls1 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD1)
121   %load1 = load i32, ptr %tls1, align 4
122   br i1 %c, label %bb1, label %return
124 bb1:
125   %tls2 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD1)
126   %load2 = load i32, ptr %tls2, align 4
127   ret i32 %load2
129 return:
130   ret i32 %load1
133 define i32 @Two_LDs(i32 %P, i32 %Q) {
134 ; DEFAULT_SMALL64-LABEL: Two_LDs:
135 ; DEFAULT_SMALL64:       # %bb.0: # %entry
136 ; DEFAULT_SMALL64-NEXT:    mflr 0
137 ; DEFAULT_SMALL64-NEXT:    stdu 1, -48(1)
138 ; DEFAULT_SMALL64-NEXT:    and 6, 3, 4
139 ; DEFAULT_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tlsldm) @"_$TLSML"
140 ; DEFAULT_SMALL64-NEXT:    std 0, 64(1)
141 ; DEFAULT_SMALL64-NEXT:    bla .__tls_get_mod[PR]
142 ; DEFAULT_SMALL64-NEXT:    cmpwi 6, -1
143 ; DEFAULT_SMALL64-NEXT:    bgt 0, L..BB1_2
144 ; DEFAULT_SMALL64-NEXT:  # %bb.1: # %bb1
145 ; DEFAULT_SMALL64-NEXT:    ld 4, L..C2(2) # target-flags(ppc-tlsld) @VarTLSLD2
146 ; DEFAULT_SMALL64-NEXT:    lwzx 3, 3, 4
147 ; DEFAULT_SMALL64-NEXT:    b L..BB1_3
148 ; DEFAULT_SMALL64-NEXT:  L..BB1_2: # %return
149 ; DEFAULT_SMALL64-NEXT:    ld 4, L..C1(2) # target-flags(ppc-tlsld) @VarTLSLD1
150 ; DEFAULT_SMALL64-NEXT:    lwzx 3, 3, 4
151 ; DEFAULT_SMALL64-NEXT:  L..BB1_3: # %bb1
152 ; DEFAULT_SMALL64-NEXT:    addi 1, 1, 48
153 ; DEFAULT_SMALL64-NEXT:    ld 0, 16(1)
154 ; DEFAULT_SMALL64-NEXT:    mtlr 0
155 ; DEFAULT_SMALL64-NEXT:    blr
157 ; DEFAULT_LARGE64-LABEL: Two_LDs:
158 ; DEFAULT_LARGE64:       # %bb.0: # %entry
159 ; DEFAULT_LARGE64-NEXT:    mflr 0
160 ; DEFAULT_LARGE64-NEXT:    stdu 1, -48(1)
161 ; DEFAULT_LARGE64-NEXT:    and 6, 3, 4
162 ; DEFAULT_LARGE64-NEXT:    addis 3, L..C0@u(2)
163 ; DEFAULT_LARGE64-NEXT:    std 0, 64(1)
164 ; DEFAULT_LARGE64-NEXT:    ld 3, L..C0@l(3)
165 ; DEFAULT_LARGE64-NEXT:    bla .__tls_get_mod[PR]
166 ; DEFAULT_LARGE64-NEXT:    cmpwi 6, -1
167 ; DEFAULT_LARGE64-NEXT:    bgt 0, L..BB1_2
168 ; DEFAULT_LARGE64-NEXT:  # %bb.1: # %bb1
169 ; DEFAULT_LARGE64-NEXT:    addis 4, L..C2@u(2)
170 ; DEFAULT_LARGE64-NEXT:    ld 4, L..C2@l(4)
171 ; DEFAULT_LARGE64-NEXT:    lwzx 3, 3, 4
172 ; DEFAULT_LARGE64-NEXT:    b L..BB1_3
173 ; DEFAULT_LARGE64-NEXT:  L..BB1_2: # %return
174 ; DEFAULT_LARGE64-NEXT:    addis 4, L..C1@u(2)
175 ; DEFAULT_LARGE64-NEXT:    ld 4, L..C1@l(4)
176 ; DEFAULT_LARGE64-NEXT:    lwzx 3, 3, 4
177 ; DEFAULT_LARGE64-NEXT:  L..BB1_3: # %bb1
178 ; DEFAULT_LARGE64-NEXT:    addi 1, 1, 48
179 ; DEFAULT_LARGE64-NEXT:    ld 0, 16(1)
180 ; DEFAULT_LARGE64-NEXT:    mtlr 0
181 ; DEFAULT_LARGE64-NEXT:    blr
183 ; TLS_MODEL_OPT_SMALL64-LABEL: Two_LDs:
184 ; TLS_MODEL_OPT_SMALL64:       # %bb.0: # %entry
185 ; TLS_MODEL_OPT_SMALL64-NEXT:    mflr 0
186 ; TLS_MODEL_OPT_SMALL64-NEXT:    stdu 1, -48(1)
187 ; TLS_MODEL_OPT_SMALL64-NEXT:    and 6, 3, 4
188 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 3, L..C1(2) # target-flags(ppc-tlsldm) @"_$TLSML"
189 ; TLS_MODEL_OPT_SMALL64-NEXT:    std 0, 64(1)
190 ; TLS_MODEL_OPT_SMALL64-NEXT:    bla .__tls_get_mod[PR]
191 ; TLS_MODEL_OPT_SMALL64-NEXT:    cmpwi 6, -1
192 ; TLS_MODEL_OPT_SMALL64-NEXT:    bgt 0, L..BB1_2
193 ; TLS_MODEL_OPT_SMALL64-NEXT:  # %bb.1: # %bb1
194 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 4, L..C2(2) # target-flags(ppc-tlsld) @VarTLSLD2
195 ; TLS_MODEL_OPT_SMALL64-NEXT:    lwzx 3, 3, 4
196 ; TLS_MODEL_OPT_SMALL64-NEXT:    b L..BB1_3
197 ; TLS_MODEL_OPT_SMALL64-NEXT:  L..BB1_2: # %return
198 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 4, L..C3(2) # target-flags(ppc-tlsld) @VarTLSLD1
199 ; TLS_MODEL_OPT_SMALL64-NEXT:    lwzx 3, 3, 4
200 ; TLS_MODEL_OPT_SMALL64-NEXT:  L..BB1_3: # %bb1
201 ; TLS_MODEL_OPT_SMALL64-NEXT:    addi 1, 1, 48
202 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 0, 16(1)
203 ; TLS_MODEL_OPT_SMALL64-NEXT:    mtlr 0
204 ; TLS_MODEL_OPT_SMALL64-NEXT:    blr
206 ; TLS_MODEL_OPT_LARGE64-LABEL: Two_LDs:
207 ; TLS_MODEL_OPT_LARGE64:       # %bb.0: # %entry
208 ; TLS_MODEL_OPT_LARGE64-NEXT:    mflr 0
209 ; TLS_MODEL_OPT_LARGE64-NEXT:    stdu 1, -48(1)
210 ; TLS_MODEL_OPT_LARGE64-NEXT:    and 6, 3, 4
211 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 3, L..C1@u(2)
212 ; TLS_MODEL_OPT_LARGE64-NEXT:    std 0, 64(1)
213 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 3, L..C1@l(3)
214 ; TLS_MODEL_OPT_LARGE64-NEXT:    bla .__tls_get_mod[PR]
215 ; TLS_MODEL_OPT_LARGE64-NEXT:    cmpwi 6, -1
216 ; TLS_MODEL_OPT_LARGE64-NEXT:    bgt 0, L..BB1_2
217 ; TLS_MODEL_OPT_LARGE64-NEXT:  # %bb.1: # %bb1
218 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 4, L..C2@u(2)
219 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 4, L..C2@l(4)
220 ; TLS_MODEL_OPT_LARGE64-NEXT:    lwzx 3, 3, 4
221 ; TLS_MODEL_OPT_LARGE64-NEXT:    b L..BB1_3
222 ; TLS_MODEL_OPT_LARGE64-NEXT:  L..BB1_2: # %return
223 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 4, L..C3@u(2)
224 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 4, L..C3@l(4)
225 ; TLS_MODEL_OPT_LARGE64-NEXT:    lwzx 3, 3, 4
226 ; TLS_MODEL_OPT_LARGE64-NEXT:  L..BB1_3: # %bb1
227 ; TLS_MODEL_OPT_LARGE64-NEXT:    addi 1, 1, 48
228 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 0, 16(1)
229 ; TLS_MODEL_OPT_LARGE64-NEXT:    mtlr 0
230 ; TLS_MODEL_OPT_LARGE64-NEXT:    blr
232 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: Two_LDs:
233 ; TLS_MODEL_OPT_LIMIT2_SMALL64:       # %bb.0: # %entry
234 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    and 3, 3, 4
235 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    cmpwi 3, -1
236 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    bgt 0, L..BB1_2
237 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:  # %bb.1: # %bb1
238 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 3, L..C1(2) # target-flags(ppc-tprel) @VarTLSLD2
239 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    lwzx 3, 13, 3
240 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    blr
241 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:  L..BB1_2: # %return
242 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tprel) @VarTLSLD1
243 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    lwzx 3, 13, 3
244 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    blr
246 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: Two_LDs:
247 ; TLS_MODEL_OPT_LIMIT2_LARGE64:       # %bb.0: # %entry
248 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    and 3, 3, 4
249 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    cmpwi 3, -1
250 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    bgt 0, L..BB1_2
251 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:  # %bb.1: # %bb1
252 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 3, L..C1@u(2)
253 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 3, L..C1@l(3)
254 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    lwzx 3, 13, 3
255 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    blr
256 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:  L..BB1_2: # %return
257 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 3, L..C0@u(2)
258 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 3, L..C0@l(3)
259 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    lwzx 3, 13, 3
260 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    blr
262 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: Two_LDs:
263 ; TLS_MODEL_OPT_LIMIT3_SMALL64:       # %bb.0: # %entry
264 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    and 3, 3, 4
265 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    cmpwi 3, -1
266 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    bgt 0, L..BB1_2
267 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:  # %bb.1: # %bb1
268 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    ld 3, L..C1(2) # target-flags(ppc-tprel) @VarTLSLD2
269 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    lwzx 3, 13, 3
270 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    blr
271 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:  L..BB1_2: # %return
272 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tprel) @VarTLSLD1
273 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    lwzx 3, 13, 3
274 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    blr
276 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: Two_LDs:
277 ; TLS_MODEL_OPT_LIMIT3_LARGE64:       # %bb.0: # %entry
278 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    and 3, 3, 4
279 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    cmpwi 3, -1
280 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    bgt 0, L..BB1_2
281 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:  # %bb.1: # %bb1
282 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    addis 3, L..C1@u(2)
283 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    ld 3, L..C1@l(3)
284 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    lwzx 3, 13, 3
285 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    blr
286 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:  L..BB1_2: # %return
287 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    addis 3, L..C0@u(2)
288 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    ld 3, L..C0@l(3)
289 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    lwzx 3, 13, 3
290 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    blr
291 entry:
292   %a = icmp slt i32 %P, 0
293   %b = icmp slt i32 %Q, 0
294   %c = and i1 %a, %b
295   %tls1 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD1)
296   %load1 = load i32, ptr %tls1, align 4
297   br i1 %c, label %bb1, label %return
299 bb1:
300   %tls2 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD2)
301   %load2 = load i32, ptr %tls2, align 4
302   ret i32 %load2
304 return:
305   ret i32 %load1
308 define i32 @Three_LDs(i32 %P, i32 %Q) {
309 ; DEFAULT_SMALL64-LABEL: Three_LDs:
310 ; DEFAULT_SMALL64:       # %bb.0: # %entry
311 ; DEFAULT_SMALL64-NEXT:    mflr 0
312 ; DEFAULT_SMALL64-NEXT:    stdu 1, -48(1)
313 ; DEFAULT_SMALL64-NEXT:    and 6, 3, 4
314 ; DEFAULT_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tlsldm) @"_$TLSML"
315 ; DEFAULT_SMALL64-NEXT:    std 0, 64(1)
316 ; DEFAULT_SMALL64-NEXT:    bla .__tls_get_mod[PR]
317 ; DEFAULT_SMALL64-NEXT:    cmpwi 6, -1
318 ; DEFAULT_SMALL64-NEXT:    bgt 0, L..BB2_2
319 ; DEFAULT_SMALL64-NEXT:  # %bb.1: # %bb1
320 ; DEFAULT_SMALL64-NEXT:    ld 4, L..C2(2) # target-flags(ppc-tlsld) @VarTLSLD2
321 ; DEFAULT_SMALL64-NEXT:    ld 5, L..C3(2) # target-flags(ppc-tlsld) @VarTLSLD3
322 ; DEFAULT_SMALL64-NEXT:    lwzx 4, 3, 4
323 ; DEFAULT_SMALL64-NEXT:    lwzx 3, 3, 5
324 ; DEFAULT_SMALL64-NEXT:    add 3, 4, 3
325 ; DEFAULT_SMALL64-NEXT:    b L..BB2_3
326 ; DEFAULT_SMALL64-NEXT:  L..BB2_2: # %return
327 ; DEFAULT_SMALL64-NEXT:    ld 4, L..C1(2) # target-flags(ppc-tlsld) @VarTLSLD1
328 ; DEFAULT_SMALL64-NEXT:    lwzx 3, 3, 4
329 ; DEFAULT_SMALL64-NEXT:  L..BB2_3: # %return
330 ; DEFAULT_SMALL64-NEXT:    addi 1, 1, 48
331 ; DEFAULT_SMALL64-NEXT:    ld 0, 16(1)
332 ; DEFAULT_SMALL64-NEXT:    mtlr 0
333 ; DEFAULT_SMALL64-NEXT:    blr
335 ; DEFAULT_LARGE64-LABEL: Three_LDs:
336 ; DEFAULT_LARGE64:       # %bb.0: # %entry
337 ; DEFAULT_LARGE64-NEXT:    mflr 0
338 ; DEFAULT_LARGE64-NEXT:    stdu 1, -48(1)
339 ; DEFAULT_LARGE64-NEXT:    and 6, 3, 4
340 ; DEFAULT_LARGE64-NEXT:    addis 3, L..C0@u(2)
341 ; DEFAULT_LARGE64-NEXT:    std 0, 64(1)
342 ; DEFAULT_LARGE64-NEXT:    ld 3, L..C0@l(3)
343 ; DEFAULT_LARGE64-NEXT:    bla .__tls_get_mod[PR]
344 ; DEFAULT_LARGE64-NEXT:    cmpwi 6, -1
345 ; DEFAULT_LARGE64-NEXT:    bgt 0, L..BB2_2
346 ; DEFAULT_LARGE64-NEXT:  # %bb.1: # %bb1
347 ; DEFAULT_LARGE64-NEXT:    addis 4, L..C2@u(2)
348 ; DEFAULT_LARGE64-NEXT:    addis 5, L..C3@u(2)
349 ; DEFAULT_LARGE64-NEXT:    ld 4, L..C2@l(4)
350 ; DEFAULT_LARGE64-NEXT:    ld 5, L..C3@l(5)
351 ; DEFAULT_LARGE64-NEXT:    lwzx 4, 3, 4
352 ; DEFAULT_LARGE64-NEXT:    lwzx 3, 3, 5
353 ; DEFAULT_LARGE64-NEXT:    add 3, 4, 3
354 ; DEFAULT_LARGE64-NEXT:    b L..BB2_3
355 ; DEFAULT_LARGE64-NEXT:  L..BB2_2: # %return
356 ; DEFAULT_LARGE64-NEXT:    addis 4, L..C1@u(2)
357 ; DEFAULT_LARGE64-NEXT:    ld 4, L..C1@l(4)
358 ; DEFAULT_LARGE64-NEXT:    lwzx 3, 3, 4
359 ; DEFAULT_LARGE64-NEXT:  L..BB2_3: # %return
360 ; DEFAULT_LARGE64-NEXT:    addi 1, 1, 48
361 ; DEFAULT_LARGE64-NEXT:    ld 0, 16(1)
362 ; DEFAULT_LARGE64-NEXT:    mtlr 0
363 ; DEFAULT_LARGE64-NEXT:    blr
365 ; TLS_MODEL_OPT_SMALL64-LABEL: Three_LDs:
366 ; TLS_MODEL_OPT_SMALL64:       # %bb.0: # %entry
367 ; TLS_MODEL_OPT_SMALL64-NEXT:    mflr 0
368 ; TLS_MODEL_OPT_SMALL64-NEXT:    stdu 1, -48(1)
369 ; TLS_MODEL_OPT_SMALL64-NEXT:    and 6, 3, 4
370 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 3, L..C1(2) # target-flags(ppc-tlsldm) @"_$TLSML"
371 ; TLS_MODEL_OPT_SMALL64-NEXT:    std 0, 64(1)
372 ; TLS_MODEL_OPT_SMALL64-NEXT:    bla .__tls_get_mod[PR]
373 ; TLS_MODEL_OPT_SMALL64-NEXT:    cmpwi 6, -1
374 ; TLS_MODEL_OPT_SMALL64-NEXT:    bgt 0, L..BB2_2
375 ; TLS_MODEL_OPT_SMALL64-NEXT:  # %bb.1: # %bb1
376 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 4, L..C2(2) # target-flags(ppc-tlsld) @VarTLSLD2
377 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 5, L..C4(2) # target-flags(ppc-tlsld) @VarTLSLD3
378 ; TLS_MODEL_OPT_SMALL64-NEXT:    lwzx 4, 3, 4
379 ; TLS_MODEL_OPT_SMALL64-NEXT:    lwzx 3, 3, 5
380 ; TLS_MODEL_OPT_SMALL64-NEXT:    add 3, 4, 3
381 ; TLS_MODEL_OPT_SMALL64-NEXT:    b L..BB2_3
382 ; TLS_MODEL_OPT_SMALL64-NEXT:  L..BB2_2: # %return
383 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 4, L..C3(2) # target-flags(ppc-tlsld) @VarTLSLD1
384 ; TLS_MODEL_OPT_SMALL64-NEXT:    lwzx 3, 3, 4
385 ; TLS_MODEL_OPT_SMALL64-NEXT:  L..BB2_3: # %return
386 ; TLS_MODEL_OPT_SMALL64-NEXT:    addi 1, 1, 48
387 ; TLS_MODEL_OPT_SMALL64-NEXT:    ld 0, 16(1)
388 ; TLS_MODEL_OPT_SMALL64-NEXT:    mtlr 0
389 ; TLS_MODEL_OPT_SMALL64-NEXT:    blr
391 ; TLS_MODEL_OPT_LARGE64-LABEL: Three_LDs:
392 ; TLS_MODEL_OPT_LARGE64:       # %bb.0: # %entry
393 ; TLS_MODEL_OPT_LARGE64-NEXT:    mflr 0
394 ; TLS_MODEL_OPT_LARGE64-NEXT:    stdu 1, -48(1)
395 ; TLS_MODEL_OPT_LARGE64-NEXT:    and 6, 3, 4
396 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 3, L..C1@u(2)
397 ; TLS_MODEL_OPT_LARGE64-NEXT:    std 0, 64(1)
398 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 3, L..C1@l(3)
399 ; TLS_MODEL_OPT_LARGE64-NEXT:    bla .__tls_get_mod[PR]
400 ; TLS_MODEL_OPT_LARGE64-NEXT:    cmpwi 6, -1
401 ; TLS_MODEL_OPT_LARGE64-NEXT:    bgt 0, L..BB2_2
402 ; TLS_MODEL_OPT_LARGE64-NEXT:  # %bb.1: # %bb1
403 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 4, L..C2@u(2)
404 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 5, L..C4@u(2)
405 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 4, L..C2@l(4)
406 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 5, L..C4@l(5)
407 ; TLS_MODEL_OPT_LARGE64-NEXT:    lwzx 4, 3, 4
408 ; TLS_MODEL_OPT_LARGE64-NEXT:    lwzx 3, 3, 5
409 ; TLS_MODEL_OPT_LARGE64-NEXT:    add 3, 4, 3
410 ; TLS_MODEL_OPT_LARGE64-NEXT:    b L..BB2_3
411 ; TLS_MODEL_OPT_LARGE64-NEXT:  L..BB2_2: # %return
412 ; TLS_MODEL_OPT_LARGE64-NEXT:    addis 4, L..C3@u(2)
413 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 4, L..C3@l(4)
414 ; TLS_MODEL_OPT_LARGE64-NEXT:    lwzx 3, 3, 4
415 ; TLS_MODEL_OPT_LARGE64-NEXT:  L..BB2_3: # %return
416 ; TLS_MODEL_OPT_LARGE64-NEXT:    addi 1, 1, 48
417 ; TLS_MODEL_OPT_LARGE64-NEXT:    ld 0, 16(1)
418 ; TLS_MODEL_OPT_LARGE64-NEXT:    mtlr 0
419 ; TLS_MODEL_OPT_LARGE64-NEXT:    blr
421 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: Three_LDs:
422 ; TLS_MODEL_OPT_LIMIT2_SMALL64:       # %bb.0: # %entry
423 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    mflr 0
424 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    stdu 1, -48(1)
425 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    and 6, 3, 4
426 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 3, L..C2(2) # target-flags(ppc-tlsldm) @"_$TLSML"
427 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    std 0, 64(1)
428 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    bla .__tls_get_mod[PR]
429 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    cmpwi 6, -1
430 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    bgt 0, L..BB2_2
431 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:  # %bb.1: # %bb1
432 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 4, L..C3(2) # target-flags(ppc-tlsld) @VarTLSLD2
433 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 5, L..C4(2) # target-flags(ppc-tlsld) @VarTLSLD3
434 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    lwzx 4, 3, 4
435 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    lwzx 3, 3, 5
436 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    add 3, 4, 3
437 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    b L..BB2_3
438 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:  L..BB2_2: # %return
439 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 4, L..C5(2) # target-flags(ppc-tlsld) @VarTLSLD1
440 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    lwzx 3, 3, 4
441 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:  L..BB2_3: # %return
442 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    addi 1, 1, 48
443 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    ld 0, 16(1)
444 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    mtlr 0
445 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT:    blr
447 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: Three_LDs:
448 ; TLS_MODEL_OPT_LIMIT2_LARGE64:       # %bb.0: # %entry
449 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    mflr 0
450 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    stdu 1, -48(1)
451 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    and 6, 3, 4
452 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 3, L..C2@u(2)
453 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    std 0, 64(1)
454 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 3, L..C2@l(3)
455 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    bla .__tls_get_mod[PR]
456 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    cmpwi 6, -1
457 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    bgt 0, L..BB2_2
458 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:  # %bb.1: # %bb1
459 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 4, L..C3@u(2)
460 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 5, L..C4@u(2)
461 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 4, L..C3@l(4)
462 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 5, L..C4@l(5)
463 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    lwzx 4, 3, 4
464 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    lwzx 3, 3, 5
465 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    add 3, 4, 3
466 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    b L..BB2_3
467 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:  L..BB2_2: # %return
468 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addis 4, L..C5@u(2)
469 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 4, L..C5@l(4)
470 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    lwzx 3, 3, 4
471 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:  L..BB2_3: # %return
472 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    addi 1, 1, 48
473 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    ld 0, 16(1)
474 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    mtlr 0
475 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT:    blr
477 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: Three_LDs:
478 ; TLS_MODEL_OPT_LIMIT3_SMALL64:       # %bb.0: # %entry
479 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    and 3, 3, 4
480 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    cmpwi 3, -1
481 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    bgt 0, L..BB2_2
482 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:  # %bb.1: # %bb1
483 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    ld 3, L..C1(2) # target-flags(ppc-tprel) @VarTLSLD2
484 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    ld 4, L..C2(2) # target-flags(ppc-tprel) @VarTLSLD3
485 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    lwzx 3, 13, 3
486 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    lwzx 4, 13, 4
487 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    add 3, 3, 4
488 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    blr
489 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:  L..BB2_2: # %return
490 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    ld 3, L..C0(2) # target-flags(ppc-tprel) @VarTLSLD1
491 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    lwzx 3, 13, 3
492 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT:    blr
494 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: Three_LDs:
495 ; TLS_MODEL_OPT_LIMIT3_LARGE64:       # %bb.0: # %entry
496 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    and 3, 3, 4
497 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    cmpwi 3, -1
498 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    bgt 0, L..BB2_2
499 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:  # %bb.1: # %bb1
500 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    addis 3, L..C1@u(2)
501 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    addis 4, L..C2@u(2)
502 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    ld 3, L..C1@l(3)
503 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    ld 4, L..C2@l(4)
504 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    lwzx 3, 13, 3
505 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    lwzx 4, 13, 4
506 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    add 3, 3, 4
507 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    blr
508 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:  L..BB2_2: # %return
509 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    addis 3, L..C0@u(2)
510 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    ld 3, L..C0@l(3)
511 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    lwzx 3, 13, 3
512 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT:    blr
513 entry:
514   %a = icmp slt i32 %P, 0
515   %b = icmp slt i32 %Q, 0
516   %c = and i1 %a, %b
517   %tls1 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD1)
518   %load1 = load i32, ptr %tls1, align 4
519   br i1 %c, label %bb1, label %return
521 bb1:
522   %tls2 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD2)
523   %load2 = load i32, ptr %tls2, align 4
524   %tls3 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @VarTLSLD3)
525   %load3 = load i32, ptr %tls3, align 4
526   %sum = add i32 %load2, %load3
527   ret i32 %sum
529 return:
530   ret i32 %load1
533 declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
535 ; DEFAULT_SMALL64-LABEL: .toc
536 ; DEFAULT_SMALL64-LABEL: L..C0:
537 ; DEFAULT_SMALL64-NEXT: .tc _Renamed..5f24__TLSML[TC],_Renamed..5f24__TLSML[TC]@ml
538 ; DEFAULT_SMALL64-NEXT: .rename _Renamed..5f24__TLSML[TC],"_$TLSML"
539 ; DEFAULT_SMALL64-LABEL: L..C1:
540 ; DEFAULT_SMALL64-NEXT: .tc VarTLSLD1[TC],VarTLSLD1[TL]@ld
541 ; DEFAULT_SMALL64-LABEL: L..C2:
542 ; DEFAULT_SMALL64-NEXT: .tc VarTLSLD2[TC],VarTLSLD2[UL]@ld
543 ; DEFAULT_SMALL64-LABEL: L..C3:
544 ; DEFAULT_SMALL64-NEXT: .tc VarTLSLD3[TC],VarTLSLD3[UL]@ld
546 ; DEFAULT_LARGE64-LABEL: .toc
547 ; DEFAULT_LARGE64-LABEL: L..C0:
548 ; DEFAULT_LARGE64-NEXT: .tc _Renamed..5f24__TLSML[TC],_Renamed..5f24__TLSML[TC]@ml
549 ; DEFAULT_LARGE64-NEXT: .rename _Renamed..5f24__TLSML[TC],"_$TLSML"
550 ; DEFAULT_LARGE64-LABEL: L..C1:
551 ; DEFAULT_LARGE64-NEXT: .tc VarTLSLD1[TE],VarTLSLD1[TL]@ld
552 ; DEFAULT_LARGE64-LABEL: L..C2:
553 ; DEFAULT_LARGE64-NEXT: .tc VarTLSLD2[TE],VarTLSLD2[UL]@ld
554 ; DEFAULT_LARGE64-LABEL: L..C3:
555 ; DEFAULT_LARGE64-NEXT: .tc VarTLSLD3[TE],VarTLSLD3[UL]@ld
557 ; TLS_MODEL_OPT_SMALL64-LABEL: .toc
558 ; TLS_MODEL_OPT_SMALL64-LABEL: L..C0:
559 ; TLS_MODEL_OPT_SMALL64-NEXT: .tc VarTLSLD1[TC],VarTLSLD1[TL]@ie
560 ; TLS_MODEL_OPT_SMALL64-LABEL: L..C1:
561 ; TLS_MODEL_OPT_SMALL64-NEXT: .tc _Renamed..5f24__TLSML[TC],_Renamed..5f24__TLSML[TC]@ml
562 ; TLS_MODEL_OPT_SMALL64-NEXT: .rename _Renamed..5f24__TLSML[TC],"_$TLSML"
563 ; TLS_MODEL_OPT_SMALL64-LABEL: L..C2:
564 ; TLS_MODEL_OPT_SMALL64-NEXT: .tc .VarTLSLD2[TC],VarTLSLD2[UL]@ld
565 ; TLS_MODEL_OPT_SMALL64-LABEL: L..C3:
566 ; TLS_MODEL_OPT_SMALL64-NEXT: .tc .VarTLSLD1[TC],VarTLSLD1[TL]@ld
567 ; TLS_MODEL_OPT_SMALL64-LABEL: L..C4:
568 ; TLS_MODEL_OPT_SMALL64-NEXT: .tc .VarTLSLD3[TC],VarTLSLD3[UL]@ld
570 ; TLS_MODEL_OPT_LARGE64-LABEL: .toc
571 ; TLS_MODEL_OPT_LARGE64-LABEL: L..C0:
572 ; TLS_MODEL_OPT_LARGE64-NEXT: .tc VarTLSLD1[TE],VarTLSLD1[TL]@ie
573 ; TLS_MODEL_OPT_LARGE64-LABEL: L..C1:
574 ; TLS_MODEL_OPT_LARGE64-NEXT: .tc _Renamed..5f24__TLSML[TC],_Renamed..5f24__TLSML[TC]@ml
575 ; TLS_MODEL_OPT_LARGE64-NEXT: .rename _Renamed..5f24__TLSML[TC],"_$TLSML"
576 ; TLS_MODEL_OPT_LARGE64-LABEL: L..C2:
577 ; TLS_MODEL_OPT_LARGE64-NEXT: .tc .VarTLSLD2[TE],VarTLSLD2[UL]@ld
578 ; TLS_MODEL_OPT_LARGE64-LABEL: L..C3:
579 ; TLS_MODEL_OPT_LARGE64-NEXT: .tc .VarTLSLD1[TE],VarTLSLD1[TL]@ld
580 ; TLS_MODEL_OPT_LARGE64-LABEL: L..C4:
581 ; TLS_MODEL_OPT_LARGE64-NEXT: .tc .VarTLSLD3[TE],VarTLSLD3[UL]@ld
583 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: .toc
584 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: L..C0:
585 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .tc VarTLSLD1[TC],VarTLSLD1[TL]@ie
586 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: L..C1:
587 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .tc VarTLSLD2[TC],VarTLSLD2[UL]@ie
588 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: L..C2:
589 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .tc _Renamed..5f24__TLSML[TC],_Renamed..5f24__TLSML[TC]@ml
590 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .rename _Renamed..5f24__TLSML[TC],"_$TLSML"
591 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: L..C3:
592 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .tc .VarTLSLD2[TC],VarTLSLD2[UL]@ld
593 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: L..C4:
594 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .tc .VarTLSLD3[TC],VarTLSLD3[UL]@ld
595 ; TLS_MODEL_OPT_LIMIT2_SMALL64-LABEL: L..C5:
596 ; TLS_MODEL_OPT_LIMIT2_SMALL64-NEXT: .tc .VarTLSLD1[TC],VarTLSLD1[TL]@ld
598 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: .toc
599 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: L..C0:
600 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .tc VarTLSLD1[TE],VarTLSLD1[TL]@ie
601 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: L..C1:
602 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .tc VarTLSLD2[TE],VarTLSLD2[UL]@ie
603 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: L..C2:
604 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .tc _Renamed..5f24__TLSML[TC],_Renamed..5f24__TLSML[TC]@ml
605 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .rename _Renamed..5f24__TLSML[TC],"_$TLSML"
606 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: L..C3:
607 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .tc .VarTLSLD2[TE],VarTLSLD2[UL]@ld
608 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: L..C4:
609 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .tc .VarTLSLD3[TE],VarTLSLD3[UL]@ld
610 ; TLS_MODEL_OPT_LIMIT2_LARGE64-LABEL: L..C5:
611 ; TLS_MODEL_OPT_LIMIT2_LARGE64-NEXT: .tc .VarTLSLD1[TE],VarTLSLD1[TL]@ld
613 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: .toc
614 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: L..C0:
615 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT: .tc VarTLSLD1[TC],VarTLSLD1[TL]@ie
616 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: L..C1:
617 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT: .tc VarTLSLD2[TC],VarTLSLD2[UL]@ie
618 ; TLS_MODEL_OPT_LIMIT3_SMALL64-LABEL: L..C2:
619 ; TLS_MODEL_OPT_LIMIT3_SMALL64-NEXT: .tc VarTLSLD3[TC],VarTLSLD3[UL]@ie
621 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: .toc
622 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: L..C0:
623 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT: .tc VarTLSLD1[TE],VarTLSLD1[TL]@ie
624 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: L..C1:
625 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT: .tc VarTLSLD2[TE],VarTLSLD2[UL]@ie
626 ; TLS_MODEL_OPT_LIMIT3_LARGE64-LABEL: L..C2:
627 ; TLS_MODEL_OPT_LIMIT3_LARGE64-NEXT: .tc VarTLSLD3[TE],VarTLSLD3[UL]@ie