xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-tls-ie-ldst.ll (revision 21bea1a208692f26a7112b9f0f46edb21d706023)
1*21bea1a2SQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \
3*21bea1a2SQiu Chaofan; RUN:   -mtriple powerpc64-ibm-aix-xcoff -code-model=large < %s | \
4*21bea1a2SQiu Chaofan; RUN:   FileCheck %s -check-prefix=LARGE64
5*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \
6*21bea1a2SQiu Chaofan; RUN:   -mtriple powerpc64-ibm-aix-xcoff -code-model=small < %s | \
7*21bea1a2SQiu Chaofan; RUN:   FileCheck %s -check-prefix=SMALL64
8*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \
9*21bea1a2SQiu Chaofan; RUN:   -mtriple powerpc-ibm-aix-xcoff -code-model=large < %s | \
10*21bea1a2SQiu Chaofan; RUN:   FileCheck %s -check-prefix=LARGE32
11*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \
12*21bea1a2SQiu Chaofan; RUN:   -mtriple powerpc-ibm-aix-xcoff -code-model=small < %s | \
13*21bea1a2SQiu Chaofan; RUN:   FileCheck %s -check-prefix=SMALL32
14*21bea1a2SQiu Chaofan
15*21bea1a2SQiu Chaofan@global_int_zero = thread_local(initialexec) global i32 0, align 4
16*21bea1a2SQiu Chaofan@global_int_nonzero = thread_local(initialexec) global i32 1, align 4
17*21bea1a2SQiu Chaofan@intern_int_zero = internal thread_local(initialexec) global i32 0, align 4
18*21bea1a2SQiu Chaofan@intern_int_nonzero = internal thread_local(initialexec) global i32 1, align 4
19*21bea1a2SQiu Chaofan
20*21bea1a2SQiu Chaofan@global_long_zero = thread_local(initialexec) global i64 0, align 8
21*21bea1a2SQiu Chaofan@global_long_nonzero = thread_local(initialexec) global i64 1, align 8
22*21bea1a2SQiu Chaofan@intern_long_zero = internal thread_local(initialexec) global i64 0, align 8
23*21bea1a2SQiu Chaofan@intern_long_nonzero = internal thread_local(initialexec) global i64 1, align 8
24*21bea1a2SQiu Chaofan
25*21bea1a2SQiu Chaofan@global_float_zero = thread_local(initialexec) global float 0.000000, align 4
26*21bea1a2SQiu Chaofan@global_float_nonzero = thread_local(initialexec) global float 1.000000, align 4
27*21bea1a2SQiu Chaofan@intern_float_zero = internal thread_local(initialexec) global float 0.000000, align 4
28*21bea1a2SQiu Chaofan@intern_float_nonzero = internal thread_local(initialexec) global float 1.000000, align 4
29*21bea1a2SQiu Chaofan
30*21bea1a2SQiu Chaofan@global_double_zero = thread_local(initialexec) global double 0.000000, align 8
31*21bea1a2SQiu Chaofan@global_double_nonzero = thread_local(initialexec) global double 1.000000, align 8
32*21bea1a2SQiu Chaofan@intern_double_zero = internal thread_local(initialexec) global double 0.000000, align 8
33*21bea1a2SQiu Chaofan@intern_double_nonzero = internal thread_local(initialexec) global double 1.000000, align 8
34*21bea1a2SQiu Chaofan
35*21bea1a2SQiu Chaofandefine void @store_global_int_zero(i32 noundef signext %i) {
36*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_int_zero:
37*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
38*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C0@u(r2)
39*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C0@l(r4)
40*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stwx r3, r13, r4
41*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
42*21bea1a2SQiu Chaofan;
43*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_int_zero:
44*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
45*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero
46*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stwx r3, r13, r4
47*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
48*21bea1a2SQiu Chaofan;
49*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_int_zero:
50*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
51*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
52*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
53*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
54*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r4, r3
55*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C0@u(r2)
56*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r5, L..C0@l(r3)
57*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
58*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwx r4, r3, r5
59*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
60*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
61*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
62*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
63*21bea1a2SQiu Chaofan;
64*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_int_zero:
65*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
66*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
67*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
68*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r5, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero
69*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r4, r3
70*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
71*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
72*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwx r4, r3, r5
73*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
74*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
75*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
76*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
77*21bea1a2SQiu Chaofanentry:
78*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_zero)
79*21bea1a2SQiu Chaofan  store i32 %i, ptr %addr, align 4
80*21bea1a2SQiu Chaofan  ret void
81*21bea1a2SQiu Chaofan}
82*21bea1a2SQiu Chaofan
83*21bea1a2SQiu Chaofandefine void @store_global_int_nonzero(i32 noundef signext %i) {
84*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_int_nonzero:
85*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
86*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C1@u(r2)
87*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C1@l(r4)
88*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stwx r3, r13, r4
89*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
90*21bea1a2SQiu Chaofan;
91*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_int_nonzero:
92*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
93*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero
94*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stwx r3, r13, r4
95*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
96*21bea1a2SQiu Chaofan;
97*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_int_nonzero:
98*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
99*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
100*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
101*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
102*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r4, r3
103*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C1@u(r2)
104*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r5, L..C1@l(r3)
105*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
106*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwx r4, r3, r5
107*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
108*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
109*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
110*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
111*21bea1a2SQiu Chaofan;
112*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_int_nonzero:
113*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
114*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
115*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
116*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r5, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero
117*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r4, r3
118*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
119*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
120*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwx r4, r3, r5
121*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
122*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
123*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
124*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
125*21bea1a2SQiu Chaofanentry:
126*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_nonzero)
127*21bea1a2SQiu Chaofan  store i32 %i, ptr %addr, align 4
128*21bea1a2SQiu Chaofan  ret void
129*21bea1a2SQiu Chaofan}
130*21bea1a2SQiu Chaofan
131*21bea1a2SQiu Chaofandefine void @store_intern_int_zero(i32 noundef signext %i) {
132*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_int_zero:
133*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
134*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C2@u(r2)
135*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C2@l(r4)
136*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stwx r3, r13, r4
137*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
138*21bea1a2SQiu Chaofan;
139*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_int_zero:
140*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
141*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero
142*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stwx r3, r13, r4
143*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
144*21bea1a2SQiu Chaofan;
145*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_int_zero:
146*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
147*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
148*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
149*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
150*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r4, r3
151*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C2@u(r2)
152*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r5, L..C2@l(r3)
153*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
154*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwx r4, r3, r5
155*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
156*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
157*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
158*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
159*21bea1a2SQiu Chaofan;
160*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_int_zero:
161*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
162*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
163*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
164*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r5, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero
165*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r4, r3
166*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
167*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
168*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwx r4, r3, r5
169*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
170*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
171*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
172*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
173*21bea1a2SQiu Chaofanentry:
174*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero)
175*21bea1a2SQiu Chaofan  store i32 %i, ptr %addr, align 4
176*21bea1a2SQiu Chaofan  ret void
177*21bea1a2SQiu Chaofan}
178*21bea1a2SQiu Chaofan
179*21bea1a2SQiu Chaofandefine void @store_intern_int_nonzero(i32 noundef signext %i) {
180*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_int_nonzero:
181*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
182*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C3@u(r2)
183*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C3@l(r4)
184*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stwx r3, r13, r4
185*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
186*21bea1a2SQiu Chaofan;
187*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_int_nonzero:
188*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
189*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero
190*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stwx r3, r13, r4
191*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
192*21bea1a2SQiu Chaofan;
193*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_int_nonzero:
194*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
195*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
196*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
197*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
198*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r4, r3
199*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C3@u(r2)
200*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r5, L..C3@l(r3)
201*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
202*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwx r4, r3, r5
203*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
204*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
205*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
206*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
207*21bea1a2SQiu Chaofan;
208*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_int_nonzero:
209*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
210*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
211*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
212*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r5, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero
213*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r4, r3
214*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
215*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
216*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwx r4, r3, r5
217*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
218*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
219*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
220*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
221*21bea1a2SQiu Chaofanentry:
222*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_nonzero)
223*21bea1a2SQiu Chaofan  store i32 %i, ptr %addr, align 4
224*21bea1a2SQiu Chaofan  ret void
225*21bea1a2SQiu Chaofan}
226*21bea1a2SQiu Chaofan
227*21bea1a2SQiu Chaofandefine signext i32 @load_global_int_zero() {
228*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_int_zero:
229*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
230*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C0@u(r2)
231*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C0@l(r3)
232*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lwax r3, r13, r3
233*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
234*21bea1a2SQiu Chaofan;
235*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_int_zero:
236*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
237*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero
238*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lwax r3, r13, r3
239*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
240*21bea1a2SQiu Chaofan;
241*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_int_zero:
242*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
243*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
244*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
245*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
246*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C0@u(r2)
247*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C0@l(r3)
248*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
249*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwzx r3, r3, r4
250*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
251*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
252*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
253*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
254*21bea1a2SQiu Chaofan;
255*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_int_zero:
256*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
257*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
258*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
259*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero
260*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
261*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
262*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwzx r3, r3, r4
263*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
264*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
265*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
266*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
267*21bea1a2SQiu Chaofanentry:
268*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_zero)
269*21bea1a2SQiu Chaofan  %val = load i32, ptr %addr, align 4
270*21bea1a2SQiu Chaofan  ret i32 %val
271*21bea1a2SQiu Chaofan}
272*21bea1a2SQiu Chaofan
273*21bea1a2SQiu Chaofandefine signext i32 @load_global_int_nonzero() {
274*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_int_nonzero:
275*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
276*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C1@u(r2)
277*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C1@l(r3)
278*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lwax r3, r13, r3
279*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
280*21bea1a2SQiu Chaofan;
281*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_int_nonzero:
282*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
283*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero
284*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lwax r3, r13, r3
285*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
286*21bea1a2SQiu Chaofan;
287*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_int_nonzero:
288*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
289*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
290*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
291*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
292*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C1@u(r2)
293*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C1@l(r3)
294*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
295*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwzx r3, r3, r4
296*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
297*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
298*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
299*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
300*21bea1a2SQiu Chaofan;
301*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_int_nonzero:
302*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
303*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
304*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
305*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero
306*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
307*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
308*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwzx r3, r3, r4
309*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
310*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
311*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
312*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
313*21bea1a2SQiu Chaofanentry:
314*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_nonzero)
315*21bea1a2SQiu Chaofan  %val = load i32, ptr %addr, align 4
316*21bea1a2SQiu Chaofan  ret i32 %val
317*21bea1a2SQiu Chaofan}
318*21bea1a2SQiu Chaofan
319*21bea1a2SQiu Chaofandefine signext i32 @load_intern_int_zero() {
320*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_int_zero:
321*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
322*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C2@u(r2)
323*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C2@l(r3)
324*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lwax r3, r13, r3
325*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
326*21bea1a2SQiu Chaofan;
327*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_int_zero:
328*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
329*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero
330*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lwax r3, r13, r3
331*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
332*21bea1a2SQiu Chaofan;
333*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_int_zero:
334*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
335*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
336*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
337*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
338*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C2@u(r2)
339*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C2@l(r3)
340*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
341*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwzx r3, r3, r4
342*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
343*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
344*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
345*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
346*21bea1a2SQiu Chaofan;
347*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_int_zero:
348*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
349*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
350*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
351*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero
352*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
353*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
354*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwzx r3, r3, r4
355*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
356*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
357*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
358*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
359*21bea1a2SQiu Chaofanentry:
360*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero)
361*21bea1a2SQiu Chaofan  %val = load i32, ptr %addr, align 4
362*21bea1a2SQiu Chaofan  ret i32 %val
363*21bea1a2SQiu Chaofan}
364*21bea1a2SQiu Chaofan
365*21bea1a2SQiu Chaofandefine signext i32 @load_intern_int_nonzero() {
366*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_int_nonzero:
367*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
368*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C3@u(r2)
369*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C3@l(r3)
370*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lwax r3, r13, r3
371*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
372*21bea1a2SQiu Chaofan;
373*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_int_nonzero:
374*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
375*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero
376*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lwax r3, r13, r3
377*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
378*21bea1a2SQiu Chaofan;
379*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_int_nonzero:
380*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
381*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
382*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
383*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
384*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C3@u(r2)
385*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C3@l(r3)
386*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
387*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwzx r3, r3, r4
388*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
389*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
390*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
391*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
392*21bea1a2SQiu Chaofan;
393*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_int_nonzero:
394*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
395*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
396*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
397*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero
398*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
399*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
400*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwzx r3, r3, r4
401*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
402*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
403*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
404*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
405*21bea1a2SQiu Chaofanentry:
406*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_nonzero)
407*21bea1a2SQiu Chaofan  %val = load i32, ptr %addr, align 4
408*21bea1a2SQiu Chaofan  ret i32 %val
409*21bea1a2SQiu Chaofan}
410*21bea1a2SQiu Chaofan
411*21bea1a2SQiu Chaofandefine void @store_global_long_zero(i64 noundef %i) {
412*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_long_zero:
413*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
414*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C4@u(r2)
415*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C4@l(r4)
416*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stdx r3, r13, r4
417*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
418*21bea1a2SQiu Chaofan;
419*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_long_zero:
420*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
421*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero
422*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stdx r3, r13, r4
423*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
424*21bea1a2SQiu Chaofan;
425*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_long_zero:
426*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
427*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
428*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
429*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
430*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r5, r3
431*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C4@u(r2)
432*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r6, L..C4@l(r3)
433*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
434*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r3, r3, r6
435*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r4, 4(r3)
436*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r5, 0(r3)
437*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
438*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
439*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
440*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
441*21bea1a2SQiu Chaofan;
442*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_long_zero:
443*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
444*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
445*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
446*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r6, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero
447*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r5, r3
448*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
449*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
450*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r3, r3, r6
451*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r4, 4(r3)
452*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r5, 0(r3)
453*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
454*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
455*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
456*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
457*21bea1a2SQiu Chaofanentry:
458*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_zero)
459*21bea1a2SQiu Chaofan  store i64 %i, ptr %addr, align 8
460*21bea1a2SQiu Chaofan  ret void
461*21bea1a2SQiu Chaofan}
462*21bea1a2SQiu Chaofan
463*21bea1a2SQiu Chaofandefine void @store_global_long_nonzero(i64 noundef %i) {
464*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_long_nonzero:
465*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
466*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C5@u(r2)
467*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C5@l(r4)
468*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stdx r3, r13, r4
469*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
470*21bea1a2SQiu Chaofan;
471*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_long_nonzero:
472*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
473*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero
474*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stdx r3, r13, r4
475*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
476*21bea1a2SQiu Chaofan;
477*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_long_nonzero:
478*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
479*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
480*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
481*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
482*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r5, r3
483*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C5@u(r2)
484*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r6, L..C5@l(r3)
485*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
486*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r3, r3, r6
487*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r4, 4(r3)
488*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r5, 0(r3)
489*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
490*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
491*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
492*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
493*21bea1a2SQiu Chaofan;
494*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_long_nonzero:
495*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
496*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
497*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
498*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r6, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero
499*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r5, r3
500*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
501*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
502*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r3, r3, r6
503*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r4, 4(r3)
504*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r5, 0(r3)
505*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
506*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
507*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
508*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
509*21bea1a2SQiu Chaofanentry:
510*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_nonzero)
511*21bea1a2SQiu Chaofan  store i64 %i, ptr %addr, align 8
512*21bea1a2SQiu Chaofan  ret void
513*21bea1a2SQiu Chaofan}
514*21bea1a2SQiu Chaofan
515*21bea1a2SQiu Chaofandefine void @store_intern_long_zero(i64 noundef %i) {
516*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_long_zero:
517*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
518*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C6@u(r2)
519*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C6@l(r4)
520*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stdx r3, r13, r4
521*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
522*21bea1a2SQiu Chaofan;
523*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_long_zero:
524*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
525*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero
526*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stdx r3, r13, r4
527*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
528*21bea1a2SQiu Chaofan;
529*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_long_zero:
530*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
531*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
532*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
533*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
534*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r5, r3
535*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C6@u(r2)
536*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r6, L..C6@l(r3)
537*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
538*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r3, r3, r6
539*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r4, 4(r3)
540*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r5, 0(r3)
541*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
542*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
543*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
544*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
545*21bea1a2SQiu Chaofan;
546*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_long_zero:
547*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
548*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
549*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
550*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r6, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero
551*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r5, r3
552*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
553*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
554*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r3, r3, r6
555*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r4, 4(r3)
556*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r5, 0(r3)
557*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
558*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
559*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
560*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
561*21bea1a2SQiu Chaofanentry:
562*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_zero)
563*21bea1a2SQiu Chaofan  store i64 %i, ptr %addr, align 8
564*21bea1a2SQiu Chaofan  ret void
565*21bea1a2SQiu Chaofan}
566*21bea1a2SQiu Chaofan
567*21bea1a2SQiu Chaofandefine void @store_intern_long_nonzero(i64 noundef %i) {
568*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_long_nonzero:
569*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
570*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r4, L..C7@u(r2)
571*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r4, L..C7@l(r4)
572*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stdx r3, r13, r4
573*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
574*21bea1a2SQiu Chaofan;
575*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_long_nonzero:
576*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
577*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r4, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero
578*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stdx r3, r13, r4
579*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
580*21bea1a2SQiu Chaofan;
581*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_long_nonzero:
582*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
583*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
584*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
585*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
586*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mr r5, r3
587*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C7@u(r2)
588*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r6, L..C7@l(r3)
589*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
590*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r3, r3, r6
591*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r4, 4(r3)
592*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r5, 0(r3)
593*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
594*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
595*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
596*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
597*21bea1a2SQiu Chaofan;
598*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_long_nonzero:
599*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
600*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
601*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
602*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r6, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero
603*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mr r5, r3
604*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
605*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
606*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r3, r3, r6
607*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r4, 4(r3)
608*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r5, 0(r3)
609*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
610*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
611*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
612*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
613*21bea1a2SQiu Chaofanentry:
614*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_nonzero)
615*21bea1a2SQiu Chaofan  store i64 %i, ptr %addr, align 8
616*21bea1a2SQiu Chaofan  ret void
617*21bea1a2SQiu Chaofan}
618*21bea1a2SQiu Chaofan
619*21bea1a2SQiu Chaofandefine i64 @load_global_long_zero() {
620*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_long_zero:
621*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
622*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C4@u(r2)
623*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C4@l(r3)
624*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ldx r3, r13, r3
625*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
626*21bea1a2SQiu Chaofan;
627*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_long_zero:
628*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
629*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero
630*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ldx r3, r13, r3
631*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
632*21bea1a2SQiu Chaofan;
633*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_long_zero:
634*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
635*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
636*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
637*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
638*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C4@u(r2)
639*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C4@l(r3)
640*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
641*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r4, r3, r4
642*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r3, 0(r4)
643*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, 4(r4)
644*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
645*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
646*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
647*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
648*21bea1a2SQiu Chaofan;
649*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_long_zero:
650*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
651*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
652*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
653*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero
654*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
655*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
656*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r4, r3, r4
657*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r3, 0(r4)
658*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, 4(r4)
659*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
660*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
661*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
662*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
663*21bea1a2SQiu Chaofanentry:
664*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_zero)
665*21bea1a2SQiu Chaofan  %val = load i64, ptr %addr, align 8
666*21bea1a2SQiu Chaofan  ret i64 %val
667*21bea1a2SQiu Chaofan}
668*21bea1a2SQiu Chaofan
669*21bea1a2SQiu Chaofandefine i64 @load_global_long_nonzero() {
670*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_long_nonzero:
671*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
672*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C5@u(r2)
673*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C5@l(r3)
674*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ldx r3, r13, r3
675*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
676*21bea1a2SQiu Chaofan;
677*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_long_nonzero:
678*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
679*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero
680*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ldx r3, r13, r3
681*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
682*21bea1a2SQiu Chaofan;
683*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_long_nonzero:
684*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
685*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
686*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
687*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
688*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C5@u(r2)
689*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C5@l(r3)
690*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
691*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r4, r3, r4
692*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r3, 0(r4)
693*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, 4(r4)
694*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
695*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
696*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
697*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
698*21bea1a2SQiu Chaofan;
699*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_long_nonzero:
700*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
701*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
702*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
703*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero
704*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
705*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
706*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r4, r3, r4
707*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r3, 0(r4)
708*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, 4(r4)
709*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
710*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
711*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
712*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
713*21bea1a2SQiu Chaofanentry:
714*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_nonzero)
715*21bea1a2SQiu Chaofan  %val = load i64, ptr %addr, align 8
716*21bea1a2SQiu Chaofan  ret i64 %val
717*21bea1a2SQiu Chaofan}
718*21bea1a2SQiu Chaofan
719*21bea1a2SQiu Chaofandefine i64 @load_intern_long_zero() {
720*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_long_zero:
721*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
722*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C6@u(r2)
723*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C6@l(r3)
724*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ldx r3, r13, r3
725*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
726*21bea1a2SQiu Chaofan;
727*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_long_zero:
728*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
729*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero
730*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ldx r3, r13, r3
731*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
732*21bea1a2SQiu Chaofan;
733*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_long_zero:
734*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
735*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
736*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
737*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
738*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C6@u(r2)
739*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C6@l(r3)
740*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
741*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r4, r3, r4
742*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r3, 0(r4)
743*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, 4(r4)
744*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
745*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
746*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
747*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
748*21bea1a2SQiu Chaofan;
749*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_long_zero:
750*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
751*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
752*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
753*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero
754*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
755*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
756*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r4, r3, r4
757*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r3, 0(r4)
758*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, 4(r4)
759*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
760*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
761*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
762*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
763*21bea1a2SQiu Chaofanentry:
764*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_zero)
765*21bea1a2SQiu Chaofan  %val = load i64, ptr %addr, align 8
766*21bea1a2SQiu Chaofan  ret i64 %val
767*21bea1a2SQiu Chaofan}
768*21bea1a2SQiu Chaofan
769*21bea1a2SQiu Chaofandefine i64 @load_intern_long_nonzero() {
770*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_long_nonzero:
771*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
772*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C7@u(r2)
773*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C7@l(r3)
774*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ldx r3, r13, r3
775*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
776*21bea1a2SQiu Chaofan;
777*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_long_nonzero:
778*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
779*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero
780*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ldx r3, r13, r3
781*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
782*21bea1a2SQiu Chaofan;
783*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_long_nonzero:
784*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
785*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
786*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
787*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
788*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C7@u(r2)
789*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C7@l(r3)
790*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
791*21bea1a2SQiu Chaofan; LARGE32-NEXT:    add r4, r3, r4
792*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r3, 0(r4)
793*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, 4(r4)
794*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
795*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
796*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
797*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
798*21bea1a2SQiu Chaofan;
799*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_long_nonzero:
800*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
801*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
802*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
803*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero
804*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
805*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
806*21bea1a2SQiu Chaofan; SMALL32-NEXT:    add r4, r3, r4
807*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r3, 0(r4)
808*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, 4(r4)
809*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
810*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
811*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
812*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
813*21bea1a2SQiu Chaofanentry:
814*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_nonzero)
815*21bea1a2SQiu Chaofan  %val = load i64, ptr %addr, align 8
816*21bea1a2SQiu Chaofan  ret i64 %val
817*21bea1a2SQiu Chaofan}
818*21bea1a2SQiu Chaofan
819*21bea1a2SQiu Chaofandefine void @store_global_float_zero(float noundef %i) {
820*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_float_zero:
821*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
822*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C8@u(r2)
823*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C8@l(r3)
824*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfsx f1, r13, r3
825*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
826*21bea1a2SQiu Chaofan;
827*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_float_zero:
828*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
829*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero
830*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfsx f1, r13, r3
831*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
832*21bea1a2SQiu Chaofan;
833*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_float_zero:
834*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
835*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
836*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
837*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
838*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C8@u(r2)
839*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C8@l(r3)
840*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
841*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfsx f1, r3, r4
842*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
843*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
844*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
845*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
846*21bea1a2SQiu Chaofan;
847*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_float_zero:
848*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
849*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
850*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
851*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero
852*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
853*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
854*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfsx f1, r3, r4
855*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
856*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
857*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
858*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
859*21bea1a2SQiu Chaofanentry:
860*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_zero)
861*21bea1a2SQiu Chaofan  store float %i, ptr %addr, align 4
862*21bea1a2SQiu Chaofan  ret void
863*21bea1a2SQiu Chaofan}
864*21bea1a2SQiu Chaofan
865*21bea1a2SQiu Chaofandefine void @store_global_float_nonzero(float noundef %i) {
866*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_float_nonzero:
867*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
868*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C9@u(r2)
869*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C9@l(r3)
870*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfsx f1, r13, r3
871*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
872*21bea1a2SQiu Chaofan;
873*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_float_nonzero:
874*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
875*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero
876*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfsx f1, r13, r3
877*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
878*21bea1a2SQiu Chaofan;
879*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_float_nonzero:
880*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
881*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
882*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
883*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
884*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C9@u(r2)
885*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C9@l(r3)
886*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
887*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfsx f1, r3, r4
888*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
889*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
890*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
891*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
892*21bea1a2SQiu Chaofan;
893*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_float_nonzero:
894*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
895*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
896*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
897*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero
898*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
899*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
900*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfsx f1, r3, r4
901*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
902*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
903*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
904*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
905*21bea1a2SQiu Chaofanentry:
906*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_nonzero)
907*21bea1a2SQiu Chaofan  store float %i, ptr %addr, align 4
908*21bea1a2SQiu Chaofan  ret void
909*21bea1a2SQiu Chaofan}
910*21bea1a2SQiu Chaofan
911*21bea1a2SQiu Chaofandefine void @store_intern_float_zero(float noundef %i) {
912*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_float_zero:
913*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
914*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C10@u(r2)
915*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C10@l(r3)
916*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfsx f1, r13, r3
917*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
918*21bea1a2SQiu Chaofan;
919*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_float_zero:
920*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
921*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero
922*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfsx f1, r13, r3
923*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
924*21bea1a2SQiu Chaofan;
925*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_float_zero:
926*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
927*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
928*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
929*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
930*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C10@u(r2)
931*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C10@l(r3)
932*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
933*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfsx f1, r3, r4
934*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
935*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
936*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
937*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
938*21bea1a2SQiu Chaofan;
939*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_float_zero:
940*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
941*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
942*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
943*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero
944*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
945*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
946*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfsx f1, r3, r4
947*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
948*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
949*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
950*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
951*21bea1a2SQiu Chaofanentry:
952*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_zero)
953*21bea1a2SQiu Chaofan  store float %i, ptr %addr, align 4
954*21bea1a2SQiu Chaofan  ret void
955*21bea1a2SQiu Chaofan}
956*21bea1a2SQiu Chaofan
957*21bea1a2SQiu Chaofandefine void @store_intern_float_nonzero(float noundef %i) {
958*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_float_nonzero:
959*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
960*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C11@u(r2)
961*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C11@l(r3)
962*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfsx f1, r13, r3
963*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
964*21bea1a2SQiu Chaofan;
965*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_float_nonzero:
966*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
967*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero
968*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfsx f1, r13, r3
969*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
970*21bea1a2SQiu Chaofan;
971*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_float_nonzero:
972*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
973*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
974*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
975*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
976*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C11@u(r2)
977*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C11@l(r3)
978*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
979*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfsx f1, r3, r4
980*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
981*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
982*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
983*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
984*21bea1a2SQiu Chaofan;
985*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_float_nonzero:
986*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
987*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
988*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
989*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero
990*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
991*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
992*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfsx f1, r3, r4
993*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
994*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
995*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
996*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
997*21bea1a2SQiu Chaofanentry:
998*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_nonzero)
999*21bea1a2SQiu Chaofan  store float %i, ptr %addr, align 4
1000*21bea1a2SQiu Chaofan  ret void
1001*21bea1a2SQiu Chaofan}
1002*21bea1a2SQiu Chaofan
1003*21bea1a2SQiu Chaofandefine float @load_global_float_zero() {
1004*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_float_zero:
1005*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1006*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C8@u(r2)
1007*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C8@l(r3)
1008*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfsx f1, r13, r3
1009*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1010*21bea1a2SQiu Chaofan;
1011*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_float_zero:
1012*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1013*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero
1014*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfsx f1, r13, r3
1015*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1016*21bea1a2SQiu Chaofan;
1017*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_float_zero:
1018*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1019*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1020*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1021*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1022*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C8@u(r2)
1023*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C8@l(r3)
1024*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1025*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfsx f1, r3, r4
1026*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1027*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1028*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1029*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1030*21bea1a2SQiu Chaofan;
1031*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_float_zero:
1032*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1033*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1034*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1035*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero
1036*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1037*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1038*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfsx f1, r3, r4
1039*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1040*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1041*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1042*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1043*21bea1a2SQiu Chaofanentry:
1044*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_zero)
1045*21bea1a2SQiu Chaofan  %val = load float, ptr %addr, align 4
1046*21bea1a2SQiu Chaofan  ret float %val
1047*21bea1a2SQiu Chaofan}
1048*21bea1a2SQiu Chaofan
1049*21bea1a2SQiu Chaofandefine float @load_global_float_nonzero() {
1050*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_float_nonzero:
1051*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1052*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C9@u(r2)
1053*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C9@l(r3)
1054*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfsx f1, r13, r3
1055*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1056*21bea1a2SQiu Chaofan;
1057*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_float_nonzero:
1058*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1059*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero
1060*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfsx f1, r13, r3
1061*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1062*21bea1a2SQiu Chaofan;
1063*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_float_nonzero:
1064*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1065*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1066*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1067*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1068*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C9@u(r2)
1069*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C9@l(r3)
1070*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1071*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfsx f1, r3, r4
1072*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1073*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1074*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1075*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1076*21bea1a2SQiu Chaofan;
1077*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_float_nonzero:
1078*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1079*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1080*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1081*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero
1082*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1083*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1084*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfsx f1, r3, r4
1085*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1086*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1087*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1088*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1089*21bea1a2SQiu Chaofanentry:
1090*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_nonzero)
1091*21bea1a2SQiu Chaofan  %val = load float, ptr %addr, align 4
1092*21bea1a2SQiu Chaofan  ret float %val
1093*21bea1a2SQiu Chaofan}
1094*21bea1a2SQiu Chaofan
1095*21bea1a2SQiu Chaofandefine float @load_intern_float_zero() {
1096*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_float_zero:
1097*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1098*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C10@u(r2)
1099*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C10@l(r3)
1100*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfsx f1, r13, r3
1101*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1102*21bea1a2SQiu Chaofan;
1103*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_float_zero:
1104*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1105*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero
1106*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfsx f1, r13, r3
1107*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1108*21bea1a2SQiu Chaofan;
1109*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_float_zero:
1110*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1111*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1112*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1113*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1114*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C10@u(r2)
1115*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C10@l(r3)
1116*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1117*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfsx f1, r3, r4
1118*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1119*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1120*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1121*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1122*21bea1a2SQiu Chaofan;
1123*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_float_zero:
1124*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1125*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1126*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1127*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero
1128*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1129*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1130*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfsx f1, r3, r4
1131*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1132*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1133*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1134*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1135*21bea1a2SQiu Chaofanentry:
1136*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_zero)
1137*21bea1a2SQiu Chaofan  %val = load float, ptr %addr, align 4
1138*21bea1a2SQiu Chaofan  ret float %val
1139*21bea1a2SQiu Chaofan}
1140*21bea1a2SQiu Chaofan
1141*21bea1a2SQiu Chaofandefine float @load_intern_float_nonzero() {
1142*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_float_nonzero:
1143*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1144*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C11@u(r2)
1145*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C11@l(r3)
1146*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfsx f1, r13, r3
1147*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1148*21bea1a2SQiu Chaofan;
1149*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_float_nonzero:
1150*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1151*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero
1152*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfsx f1, r13, r3
1153*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1154*21bea1a2SQiu Chaofan;
1155*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_float_nonzero:
1156*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1157*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1158*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1159*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1160*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C11@u(r2)
1161*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C11@l(r3)
1162*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1163*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfsx f1, r3, r4
1164*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1165*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1166*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1167*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1168*21bea1a2SQiu Chaofan;
1169*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_float_nonzero:
1170*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1171*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1172*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1173*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero
1174*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1175*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1176*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfsx f1, r3, r4
1177*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1178*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1179*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1180*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1181*21bea1a2SQiu Chaofanentry:
1182*21bea1a2SQiu Chaofan  %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_nonzero)
1183*21bea1a2SQiu Chaofan  %val = load float, ptr %addr, align 4
1184*21bea1a2SQiu Chaofan  ret float %val
1185*21bea1a2SQiu Chaofan}
1186*21bea1a2SQiu Chaofan
1187*21bea1a2SQiu Chaofandefine void @store_global_double_zero(double noundef %i) {
1188*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_double_zero:
1189*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1190*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C12@u(r2)
1191*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C12@l(r3)
1192*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfdx f1, r13, r3
1193*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1194*21bea1a2SQiu Chaofan;
1195*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_double_zero:
1196*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1197*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero
1198*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfdx f1, r13, r3
1199*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1200*21bea1a2SQiu Chaofan;
1201*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_double_zero:
1202*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1203*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1204*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1205*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1206*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C12@u(r2)
1207*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C12@l(r3)
1208*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1209*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfdx f1, r3, r4
1210*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1211*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1212*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1213*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1214*21bea1a2SQiu Chaofan;
1215*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_double_zero:
1216*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1217*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1218*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1219*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero
1220*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1221*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1222*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfdx f1, r3, r4
1223*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1224*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1225*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1226*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1227*21bea1a2SQiu Chaofanentry:
1228*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_zero)
1229*21bea1a2SQiu Chaofan  store double %i, ptr %addr, align 8
1230*21bea1a2SQiu Chaofan  ret void
1231*21bea1a2SQiu Chaofan}
1232*21bea1a2SQiu Chaofan
1233*21bea1a2SQiu Chaofandefine void @store_global_double_nonzero(double noundef %i) {
1234*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_double_nonzero:
1235*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1236*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C13@u(r2)
1237*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C13@l(r3)
1238*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfdx f1, r13, r3
1239*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1240*21bea1a2SQiu Chaofan;
1241*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_double_nonzero:
1242*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1243*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero
1244*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfdx f1, r13, r3
1245*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1246*21bea1a2SQiu Chaofan;
1247*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_double_nonzero:
1248*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1249*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1250*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1251*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1252*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C13@u(r2)
1253*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C13@l(r3)
1254*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1255*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfdx f1, r3, r4
1256*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1257*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1258*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1259*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1260*21bea1a2SQiu Chaofan;
1261*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_double_nonzero:
1262*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1263*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1264*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1265*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero
1266*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1267*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1268*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfdx f1, r3, r4
1269*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1270*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1271*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1272*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1273*21bea1a2SQiu Chaofanentry:
1274*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_nonzero)
1275*21bea1a2SQiu Chaofan  store double %i, ptr %addr, align 8
1276*21bea1a2SQiu Chaofan  ret void
1277*21bea1a2SQiu Chaofan}
1278*21bea1a2SQiu Chaofan
1279*21bea1a2SQiu Chaofandefine void @store_intern_double_zero(double noundef %i) {
1280*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_double_zero:
1281*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1282*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C14@u(r2)
1283*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C14@l(r3)
1284*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfdx f1, r13, r3
1285*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1286*21bea1a2SQiu Chaofan;
1287*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_double_zero:
1288*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1289*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero
1290*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfdx f1, r13, r3
1291*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1292*21bea1a2SQiu Chaofan;
1293*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_double_zero:
1294*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1295*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1296*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1297*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1298*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C14@u(r2)
1299*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C14@l(r3)
1300*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1301*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfdx f1, r3, r4
1302*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1303*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1304*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1305*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1306*21bea1a2SQiu Chaofan;
1307*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_double_zero:
1308*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1309*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1310*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1311*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero
1312*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1313*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1314*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfdx f1, r3, r4
1315*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1316*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1317*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1318*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1319*21bea1a2SQiu Chaofanentry:
1320*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_zero)
1321*21bea1a2SQiu Chaofan  store double %i, ptr %addr, align 8
1322*21bea1a2SQiu Chaofan  ret void
1323*21bea1a2SQiu Chaofan}
1324*21bea1a2SQiu Chaofan
1325*21bea1a2SQiu Chaofandefine void @store_intern_double_nonzero(double noundef %i) {
1326*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_double_nonzero:
1327*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1328*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C15@u(r2)
1329*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C15@l(r3)
1330*21bea1a2SQiu Chaofan; LARGE64-NEXT:    stfdx f1, r13, r3
1331*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1332*21bea1a2SQiu Chaofan;
1333*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_double_nonzero:
1334*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1335*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero
1336*21bea1a2SQiu Chaofan; SMALL64-NEXT:    stfdx f1, r13, r3
1337*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1338*21bea1a2SQiu Chaofan;
1339*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_double_nonzero:
1340*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1341*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1342*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1343*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1344*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C15@u(r2)
1345*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C15@l(r3)
1346*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1347*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stfdx f1, r3, r4
1348*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1349*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1350*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1351*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1352*21bea1a2SQiu Chaofan;
1353*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_double_nonzero:
1354*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1355*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1356*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1357*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero
1358*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1359*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1360*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stfdx f1, r3, r4
1361*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1362*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1363*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1364*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1365*21bea1a2SQiu Chaofanentry:
1366*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_nonzero)
1367*21bea1a2SQiu Chaofan  store double %i, ptr %addr, align 8
1368*21bea1a2SQiu Chaofan  ret void
1369*21bea1a2SQiu Chaofan}
1370*21bea1a2SQiu Chaofan
1371*21bea1a2SQiu Chaofandefine double @load_global_double_zero() {
1372*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_double_zero:
1373*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1374*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C12@u(r2)
1375*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C12@l(r3)
1376*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfdx f1, r13, r3
1377*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1378*21bea1a2SQiu Chaofan;
1379*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_double_zero:
1380*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1381*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero
1382*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfdx f1, r13, r3
1383*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1384*21bea1a2SQiu Chaofan;
1385*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_double_zero:
1386*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1387*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1388*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1389*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1390*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C12@u(r2)
1391*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C12@l(r3)
1392*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1393*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfdx f1, r3, r4
1394*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1395*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1396*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1397*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1398*21bea1a2SQiu Chaofan;
1399*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_double_zero:
1400*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1401*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1402*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1403*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero
1404*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1405*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1406*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfdx f1, r3, r4
1407*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1408*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1409*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1410*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1411*21bea1a2SQiu Chaofanentry:
1412*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_zero)
1413*21bea1a2SQiu Chaofan  %val = load double, ptr %addr, align 8
1414*21bea1a2SQiu Chaofan  ret double %val
1415*21bea1a2SQiu Chaofan}
1416*21bea1a2SQiu Chaofan
1417*21bea1a2SQiu Chaofandefine double @load_global_double_nonzero() {
1418*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_double_nonzero:
1419*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1420*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C13@u(r2)
1421*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C13@l(r3)
1422*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfdx f1, r13, r3
1423*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1424*21bea1a2SQiu Chaofan;
1425*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_double_nonzero:
1426*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1427*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero
1428*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfdx f1, r13, r3
1429*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1430*21bea1a2SQiu Chaofan;
1431*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_double_nonzero:
1432*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1433*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1434*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1435*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1436*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C13@u(r2)
1437*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C13@l(r3)
1438*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1439*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfdx f1, r3, r4
1440*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1441*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1442*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1443*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1444*21bea1a2SQiu Chaofan;
1445*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_double_nonzero:
1446*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1447*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1448*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1449*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero
1450*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1451*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1452*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfdx f1, r3, r4
1453*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1454*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1455*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1456*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1457*21bea1a2SQiu Chaofanentry:
1458*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_nonzero)
1459*21bea1a2SQiu Chaofan  %val = load double, ptr %addr, align 8
1460*21bea1a2SQiu Chaofan  ret double %val
1461*21bea1a2SQiu Chaofan}
1462*21bea1a2SQiu Chaofan
1463*21bea1a2SQiu Chaofandefine double @load_intern_double_zero() {
1464*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_double_zero:
1465*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1466*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C14@u(r2)
1467*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C14@l(r3)
1468*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfdx f1, r13, r3
1469*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1470*21bea1a2SQiu Chaofan;
1471*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_double_zero:
1472*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1473*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero
1474*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfdx f1, r13, r3
1475*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1476*21bea1a2SQiu Chaofan;
1477*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_double_zero:
1478*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1479*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1480*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1481*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1482*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C14@u(r2)
1483*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C14@l(r3)
1484*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1485*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfdx f1, r3, r4
1486*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1487*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1488*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1489*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1490*21bea1a2SQiu Chaofan;
1491*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_double_zero:
1492*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1493*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1494*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1495*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero
1496*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1497*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1498*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfdx f1, r3, r4
1499*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1500*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1501*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1502*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1503*21bea1a2SQiu Chaofanentry:
1504*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_zero)
1505*21bea1a2SQiu Chaofan  %val = load double, ptr %addr, align 8
1506*21bea1a2SQiu Chaofan  ret double %val
1507*21bea1a2SQiu Chaofan}
1508*21bea1a2SQiu Chaofan
1509*21bea1a2SQiu Chaofandefine double @load_intern_double_nonzero() {
1510*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_double_nonzero:
1511*21bea1a2SQiu Chaofan; LARGE64:       # %bb.0: # %entry
1512*21bea1a2SQiu Chaofan; LARGE64-NEXT:    addis r3, L..C15@u(r2)
1513*21bea1a2SQiu Chaofan; LARGE64-NEXT:    ld r3, L..C15@l(r3)
1514*21bea1a2SQiu Chaofan; LARGE64-NEXT:    lfdx f1, r13, r3
1515*21bea1a2SQiu Chaofan; LARGE64-NEXT:    blr
1516*21bea1a2SQiu Chaofan;
1517*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_double_nonzero:
1518*21bea1a2SQiu Chaofan; SMALL64:       # %bb.0: # %entry
1519*21bea1a2SQiu Chaofan; SMALL64-NEXT:    ld r3, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero
1520*21bea1a2SQiu Chaofan; SMALL64-NEXT:    lfdx f1, r13, r3
1521*21bea1a2SQiu Chaofan; SMALL64-NEXT:    blr
1522*21bea1a2SQiu Chaofan;
1523*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_double_nonzero:
1524*21bea1a2SQiu Chaofan; LARGE32:       # %bb.0: # %entry
1525*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mflr r0
1526*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stwu r1, -32(r1)
1527*21bea1a2SQiu Chaofan; LARGE32-NEXT:    stw r0, 40(r1)
1528*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addis r3, L..C15@u(r2)
1529*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r4, L..C15@l(r3)
1530*21bea1a2SQiu Chaofan; LARGE32-NEXT:    bla .__get_tpointer[PR]
1531*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lfdx f1, r3, r4
1532*21bea1a2SQiu Chaofan; LARGE32-NEXT:    addi r1, r1, 32
1533*21bea1a2SQiu Chaofan; LARGE32-NEXT:    lwz r0, 8(r1)
1534*21bea1a2SQiu Chaofan; LARGE32-NEXT:    mtlr r0
1535*21bea1a2SQiu Chaofan; LARGE32-NEXT:    blr
1536*21bea1a2SQiu Chaofan;
1537*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_double_nonzero:
1538*21bea1a2SQiu Chaofan; SMALL32:       # %bb.0: # %entry
1539*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mflr r0
1540*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stwu r1, -32(r1)
1541*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r4, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero
1542*21bea1a2SQiu Chaofan; SMALL32-NEXT:    stw r0, 40(r1)
1543*21bea1a2SQiu Chaofan; SMALL32-NEXT:    bla .__get_tpointer[PR]
1544*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lfdx f1, r3, r4
1545*21bea1a2SQiu Chaofan; SMALL32-NEXT:    addi r1, r1, 32
1546*21bea1a2SQiu Chaofan; SMALL32-NEXT:    lwz r0, 8(r1)
1547*21bea1a2SQiu Chaofan; SMALL32-NEXT:    mtlr r0
1548*21bea1a2SQiu Chaofan; SMALL32-NEXT:    blr
1549*21bea1a2SQiu Chaofanentry:
1550*21bea1a2SQiu Chaofan  %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_nonzero)
1551*21bea1a2SQiu Chaofan  %val = load double, ptr %addr, align 8
1552*21bea1a2SQiu Chaofan  ret double %val
1553*21bea1a2SQiu Chaofan}
1554*21bea1a2SQiu Chaofan
1555*21bea1a2SQiu Chaofandeclare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)
1556*21bea1a2SQiu Chaofan
1557*21bea1a2SQiu Chaofan; Lines below check if the symbols have correct suffix for TLS model, not
1558*21bea1a2SQiu Chaofan; generated by test update script, but kept well after updates.
1559*21bea1a2SQiu Chaofan
1560*21bea1a2SQiu Chaofan; LARGE64: L..C0:
1561*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_int_zero[TE],global_int_zero[TL]@ie
1562*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C1:
1563*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_int_nonzero[TE],global_int_nonzero[TL]@ie
1564*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C2:
1565*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_int_zero[TE],intern_int_zero[UL]@ie
1566*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C3:
1567*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_int_nonzero[TE],intern_int_nonzero[TL]@ie
1568*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C4:
1569*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_long_zero[TE],global_long_zero[TL]@ie
1570*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C5:
1571*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_long_nonzero[TE],global_long_nonzero[TL]@ie
1572*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C6:
1573*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_long_zero[TE],intern_long_zero[UL]@ie
1574*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C7:
1575*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_long_nonzero[TE],intern_long_nonzero[TL]@ie
1576*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C8:
1577*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_float_zero[TE],global_float_zero[TL]@ie
1578*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C9:
1579*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_float_nonzero[TE],global_float_nonzero[TL]@ie
1580*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C10:
1581*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_float_zero[TE],intern_float_zero[UL]@ie
1582*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C11:
1583*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_float_nonzero[TE],intern_float_nonzero[TL]@ie
1584*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C12:
1585*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_double_zero[TE],global_double_zero[TL]@ie
1586*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C13:
1587*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_double_nonzero[TE],global_double_nonzero[TL]@ie
1588*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C14:
1589*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_double_zero[TE],intern_double_zero[UL]@ie
1590*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C15:
1591*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_double_nonzero[TE],intern_double_nonzero[TL]@ie
1592*21bea1a2SQiu Chaofan
1593*21bea1a2SQiu Chaofan; SMALL64: L..C0:
1594*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_int_zero[TC],global_int_zero[TL]@ie
1595*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C1:
1596*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_int_nonzero[TC],global_int_nonzero[TL]@ie
1597*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C2:
1598*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_int_zero[TC],intern_int_zero[UL]@ie
1599*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C3:
1600*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_int_nonzero[TC],intern_int_nonzero[TL]@ie
1601*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C4:
1602*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_long_zero[TC],global_long_zero[TL]@ie
1603*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C5:
1604*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_long_nonzero[TC],global_long_nonzero[TL]@ie
1605*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C6:
1606*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_long_zero[TC],intern_long_zero[UL]@ie
1607*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C7:
1608*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_long_nonzero[TC],intern_long_nonzero[TL]@ie
1609*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C8:
1610*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_float_zero[TC],global_float_zero[TL]@ie
1611*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C9:
1612*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_float_nonzero[TC],global_float_nonzero[TL]@ie
1613*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C10:
1614*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_float_zero[TC],intern_float_zero[UL]@ie
1615*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C11:
1616*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_float_nonzero[TC],intern_float_nonzero[TL]@ie
1617*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C12:
1618*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_double_zero[TC],global_double_zero[TL]@ie
1619*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C13:
1620*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_double_nonzero[TC],global_double_nonzero[TL]@ie
1621*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C14:
1622*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_double_zero[TC],intern_double_zero[UL]@ie
1623*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C15:
1624*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_double_nonzero[TC],intern_double_nonzero[TL]@ie
1625*21bea1a2SQiu Chaofan
1626*21bea1a2SQiu Chaofan; LARGE32: L..C0:
1627*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_int_zero[TE],global_int_zero[TL]@ie
1628*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C1:
1629*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_int_nonzero[TE],global_int_nonzero[TL]@ie
1630*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C2:
1631*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_int_zero[TE],intern_int_zero[UL]@ie
1632*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C3:
1633*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_int_nonzero[TE],intern_int_nonzero[TL]@ie
1634*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C4:
1635*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_long_zero[TE],global_long_zero[TL]@ie
1636*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C5:
1637*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_long_nonzero[TE],global_long_nonzero[TL]@ie
1638*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C6:
1639*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_long_zero[TE],intern_long_zero[UL]@ie
1640*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C7:
1641*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_long_nonzero[TE],intern_long_nonzero[TL]@ie
1642*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C8:
1643*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_float_zero[TE],global_float_zero[TL]@ie
1644*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C9:
1645*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_float_nonzero[TE],global_float_nonzero[TL]@ie
1646*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C10:
1647*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_float_zero[TE],intern_float_zero[UL]@ie
1648*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C11:
1649*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_float_nonzero[TE],intern_float_nonzero[TL]@ie
1650*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C12:
1651*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_double_zero[TE],global_double_zero[TL]@ie
1652*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C13:
1653*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_double_nonzero[TE],global_double_nonzero[TL]@ie
1654*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C14:
1655*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_double_zero[TE],intern_double_zero[UL]@ie
1656*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C15:
1657*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_double_nonzero[TE],intern_double_nonzero[TL]@ie
1658*21bea1a2SQiu Chaofan
1659*21bea1a2SQiu Chaofan; SMALL32: L..C0:
1660*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_int_zero[TC],global_int_zero[TL]@ie
1661*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C1:
1662*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_int_nonzero[TC],global_int_nonzero[TL]@ie
1663*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C2:
1664*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_int_zero[TC],intern_int_zero[UL]@ie
1665*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C3:
1666*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_int_nonzero[TC],intern_int_nonzero[TL]@ie
1667*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C4:
1668*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_long_zero[TC],global_long_zero[TL]@ie
1669*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C5:
1670*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_long_nonzero[TC],global_long_nonzero[TL]@ie
1671*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C6:
1672*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_long_zero[TC],intern_long_zero[UL]@ie
1673*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C7:
1674*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_long_nonzero[TC],intern_long_nonzero[TL]@ie
1675*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C8:
1676*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_float_zero[TC],global_float_zero[TL]@ie
1677*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C9:
1678*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_float_nonzero[TC],global_float_nonzero[TL]@ie
1679*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C10:
1680*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_float_zero[TC],intern_float_zero[UL]@ie
1681*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C11:
1682*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_float_nonzero[TC],intern_float_nonzero[TL]@ie
1683*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C12:
1684*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_double_zero[TC],global_double_zero[TL]@ie
1685*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C13:
1686*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_double_nonzero[TC],global_double_nonzero[TL]@ie
1687*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C14:
1688*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_double_zero[TC],intern_double_zero[UL]@ie
1689*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C15:
1690*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_double_nonzero[TC],intern_double_nonzero[TL]@ie
1691