xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-shared-lib-tls-model-opt.ll (revision ea126aebdc9d8205016f355d85dbf1c15f2f4b28)
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
22
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
26
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.
30
31define 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
47;
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
65;
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
73;
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
82;
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
90;
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
99;
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
107;
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
116entry:
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
123
124bb1:
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
128
129return:
130  ret i32 %load1
131}
132
133define 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
156;
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
182;
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
205;
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
231;
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
245;
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
261;
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
275;
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
291entry:
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
298
299bb1:
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
303
304return:
305  ret i32 %load1
306}
307
308define 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
334;
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
364;
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
390;
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
420;
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
446;
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
476;
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
493;
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
513entry:
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
520
521bb1:
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
528
529return:
530  ret i32 %load1
531}
532
533declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
534
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
545
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
556
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
569
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
582
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
597
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
612
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
620
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
628