xref: /llvm-project/llvm/test/CodeGen/PowerPC/mergeable-string-pool-tls.ll (revision 935bbbbde4b2661ed7f8f2975a39bda360572572)
1cf721e29SAmy Kwan; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \
2ccddd136SZaara Syeda; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
3cf721e29SAmy Kwan; RUN:     --check-prefix=CHECK64
4cf721e29SAmy Kwan; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff \
5ccddd136SZaara Syeda; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
6cf721e29SAmy Kwan; RUN:     --check-prefix=CHECK32
7cf721e29SAmy Kwan; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux \
8cf721e29SAmy Kwan; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
9cf721e29SAmy Kwan; RUN:     --check-prefix=LINUX64LE
10cf721e29SAmy Kwan; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux \
11cf721e29SAmy Kwan; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
12cf721e29SAmy Kwan; RUN:     --check-prefix=LINUX64BE
13cf721e29SAmy Kwan
14cf721e29SAmy Kwan@.str = private unnamed_addr constant [47 x i8] c"TLS variable 1, 2 and non-TLS var: %s, %s, %s\0A\00", align 1
15cf721e29SAmy Kwan@a = internal thread_local constant [5 x i8] c"tls1\00", align 1
16cf721e29SAmy Kwan@b = internal thread_local constant [5 x i8] c"tls2\00", align 1
17cf721e29SAmy Kwan@c = internal constant [15 x i8] c"Regular global\00", align 1
18cf721e29SAmy Kwan@d = internal constant [10 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10], align 4
19cf721e29SAmy Kwan@e = internal constant [4 x float] [float 0x4055F33340000000, float 0x4056333340000000, float 0x40567999A0000000, float 0x4056B33340000000], align 4
20cf721e29SAmy Kwan
21cf721e29SAmy Kwandeclare noundef signext i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #0
22cf721e29SAmy Kwandeclare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #1
23cf721e29SAmy Kwandeclare void @callee(ptr noundef) local_unnamed_addr #3
24cf721e29SAmy Kwandeclare void @callee2(ptr noundef) local_unnamed_addr #3
25cf721e29SAmy Kwan
26cf721e29SAmy Kwandefine void @print_tls_func() {
27cf721e29SAmy Kwan; CHECK64-LABEL: print_tls_func:
28cf721e29SAmy Kwan; CHECK64:       # %bb.0: # %entry
29cf721e29SAmy Kwan; CHECK64-NEXT:    mflr r0
30cf721e29SAmy Kwan; CHECK64-NEXT:    stdu r1, -112(r1)
31cf721e29SAmy Kwan; CHECK64-NEXT:    ld r3, L..C0(r2) # target-flags(ppc-tlsldm) @"_$TLSML"
32cf721e29SAmy Kwan; CHECK64-NEXT:    std r0, 128(r1)
33ccddd136SZaara Syeda; CHECK64-NEXT:    ld r6, L..C1(r2) # @_MergedGlobals
34cf721e29SAmy Kwan; CHECK64-NEXT:    bla .__tls_get_mod[PR]
35cf721e29SAmy Kwan; CHECK64-NEXT:    ld r4, L..C2(r2) # target-flags(ppc-tlsld) @a
36cf721e29SAmy Kwan; CHECK64-NEXT:    ld r5, L..C3(r2) # target-flags(ppc-tlsld) @b
37cf721e29SAmy Kwan; CHECK64-NEXT:    add r4, r3, r4
38cf721e29SAmy Kwan; CHECK64-NEXT:    add r5, r3, r5
39ccddd136SZaara Syeda; CHECK64-NEXT:    addi r3, r6, 72
40cf721e29SAmy Kwan; CHECK64-NEXT:    bl .printf[PR]
41cf721e29SAmy Kwan; CHECK64-NEXT:    nop
42cf721e29SAmy Kwan; CHECK64-NEXT:    addi r1, r1, 112
43cf721e29SAmy Kwan; CHECK64-NEXT:    ld r0, 16(r1)
44cf721e29SAmy Kwan; CHECK64-NEXT:    mtlr r0
45cf721e29SAmy Kwan; CHECK64-NEXT:    blr
46cf721e29SAmy Kwan;
47cf721e29SAmy Kwan; CHECK32-LABEL: print_tls_func:
48cf721e29SAmy Kwan; CHECK32:       # %bb.0: # %entry
49cf721e29SAmy Kwan; CHECK32-NEXT:    mflr r0
50cf721e29SAmy Kwan; CHECK32-NEXT:    stwu r1, -64(r1)
51cf721e29SAmy Kwan; CHECK32-NEXT:    lwz r3, L..C0(r2) # target-flags(ppc-tlsldm) @"_$TLSML"
52cf721e29SAmy Kwan; CHECK32-NEXT:    stw r0, 72(r1)
53ccddd136SZaara Syeda; CHECK32-NEXT:    lwz r6, L..C1(r2) # @_MergedGlobals
54cf721e29SAmy Kwan; CHECK32-NEXT:    bla .__tls_get_mod[PR]
55cf721e29SAmy Kwan; CHECK32-NEXT:    lwz r4, L..C2(r2) # target-flags(ppc-tlsld) @a
56cf721e29SAmy Kwan; CHECK32-NEXT:    lwz r5, L..C3(r2) # target-flags(ppc-tlsld) @b
57cf721e29SAmy Kwan; CHECK32-NEXT:    add r4, r3, r4
58cf721e29SAmy Kwan; CHECK32-NEXT:    add r5, r3, r5
59ccddd136SZaara Syeda; CHECK32-NEXT:    addi r3, r6, 72
60cf721e29SAmy Kwan; CHECK32-NEXT:    bl .printf[PR]
61cf721e29SAmy Kwan; CHECK32-NEXT:    nop
62cf721e29SAmy Kwan; CHECK32-NEXT:    addi r1, r1, 64
63cf721e29SAmy Kwan; CHECK32-NEXT:    lwz r0, 8(r1)
64cf721e29SAmy Kwan; CHECK32-NEXT:    mtlr r0
65cf721e29SAmy Kwan; CHECK32-NEXT:    blr
66cf721e29SAmy Kwan;
67cf721e29SAmy Kwan; LINUX64LE-LABEL: print_tls_func:
68cf721e29SAmy Kwan; LINUX64LE:       # %bb.0: # %entry
69cf721e29SAmy Kwan; LINUX64LE-NEXT:    mflr r0
70cf721e29SAmy Kwan; LINUX64LE-NEXT:    stdu r1, -96(r1)
71cf721e29SAmy Kwan; LINUX64LE-NEXT:    std r0, 112(r1)
72cf721e29SAmy Kwan; LINUX64LE-NEXT:    .cfi_def_cfa_offset 96
73cf721e29SAmy Kwan; LINUX64LE-NEXT:    .cfi_offset lr, 16
74cf721e29SAmy Kwan; LINUX64LE-NEXT:    addis r3, r13, a@tprel@ha
75cf721e29SAmy Kwan; LINUX64LE-NEXT:    addi r4, r3, a@tprel@l
76cf721e29SAmy Kwan; LINUX64LE-NEXT:    addis r3, r13, b@tprel@ha
77cf721e29SAmy Kwan; LINUX64LE-NEXT:    addi r5, r3, b@tprel@l
78aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
79aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addi r6, r3, .L_MergedGlobals@toc@l
80aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addi r3, r6, 72
81cf721e29SAmy Kwan; LINUX64LE-NEXT:    bl printf
82cf721e29SAmy Kwan; LINUX64LE-NEXT:    nop
83cf721e29SAmy Kwan; LINUX64LE-NEXT:    addi r1, r1, 96
84cf721e29SAmy Kwan; LINUX64LE-NEXT:    ld r0, 16(r1)
85cf721e29SAmy Kwan; LINUX64LE-NEXT:    mtlr r0
86cf721e29SAmy Kwan; LINUX64LE-NEXT:    blr
87cf721e29SAmy Kwan;
88cf721e29SAmy Kwan; LINUX64BE-LABEL: print_tls_func:
89cf721e29SAmy Kwan; LINUX64BE:       # %bb.0: # %entry
90cf721e29SAmy Kwan; LINUX64BE-NEXT:    mflr r0
91cf721e29SAmy Kwan; LINUX64BE-NEXT:    stdu r1, -128(r1)
92cf721e29SAmy Kwan; LINUX64BE-NEXT:    std r0, 144(r1)
93cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_def_cfa_offset 128
94cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_offset lr, 16
95cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_offset r30, -16
96cf721e29SAmy Kwan; LINUX64BE-NEXT:    addis r3, r2, a@got@tlsld@ha
97cf721e29SAmy Kwan; LINUX64BE-NEXT:    std r30, 112(r1) # 8-byte Folded Spill
98cf721e29SAmy Kwan; LINUX64BE-NEXT:    addi r3, r3, a@got@tlsld@l
99cf721e29SAmy Kwan; LINUX64BE-NEXT:    bl __tls_get_addr(a@tlsld)
100cf721e29SAmy Kwan; LINUX64BE-NEXT:    nop
101cf721e29SAmy Kwan; LINUX64BE-NEXT:    addis r4, r2, b@got@tlsld@ha
102cf721e29SAmy Kwan; LINUX64BE-NEXT:    addis r3, r3, a@dtprel@ha
103cf721e29SAmy Kwan; LINUX64BE-NEXT:    addi r30, r3, a@dtprel@l
104cf721e29SAmy Kwan; LINUX64BE-NEXT:    addi r3, r4, b@got@tlsld@l
105cf721e29SAmy Kwan; LINUX64BE-NEXT:    bl __tls_get_addr(b@tlsld)
106cf721e29SAmy Kwan; LINUX64BE-NEXT:    nop
107cf721e29SAmy Kwan; LINUX64BE-NEXT:    addis r3, r3, b@dtprel@ha
108cf721e29SAmy Kwan; LINUX64BE-NEXT:    mr r4, r30
109aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r5, r3, b@dtprel@l
110aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
111aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r6, r3, .L_MergedGlobals@toc@l
112aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r3, r6, 72
113cf721e29SAmy Kwan; LINUX64BE-NEXT:    bl printf
114cf721e29SAmy Kwan; LINUX64BE-NEXT:    nop
115cf721e29SAmy Kwan; LINUX64BE-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload
116cf721e29SAmy Kwan; LINUX64BE-NEXT:    addi r1, r1, 128
117cf721e29SAmy Kwan; LINUX64BE-NEXT:    ld r0, 16(r1)
118cf721e29SAmy Kwan; LINUX64BE-NEXT:    mtlr r0
119cf721e29SAmy Kwan; LINUX64BE-NEXT:    blr
120cf721e29SAmy Kwanentry:
121cf721e29SAmy Kwan  %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @a)
122cf721e29SAmy Kwan  %1 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @b)
123cf721e29SAmy Kwan  %call = tail call signext i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c)
124cf721e29SAmy Kwan  ret void
125cf721e29SAmy Kwan}
126cf721e29SAmy Kwan
127cf721e29SAmy Kwandefine void @test_func() {
128cf721e29SAmy Kwan; CHECK64-LABEL: test_func:
129cf721e29SAmy Kwan; CHECK64:       # %bb.0: # %entry
130cf721e29SAmy Kwan; CHECK64-NEXT:    mflr r0
131cf721e29SAmy Kwan; CHECK64-NEXT:    stdu r1, -112(r1)
132ccddd136SZaara Syeda; CHECK64-NEXT:    ld r3, L..C1(r2) # @_MergedGlobals
133cf721e29SAmy Kwan; CHECK64-NEXT:    std r0, 128(r1)
134ccddd136SZaara Syeda; CHECK64-NEXT:    addi r3, r3, 32
135cf721e29SAmy Kwan; CHECK64-NEXT:    bl .callee[PR]
136cf721e29SAmy Kwan; CHECK64-NEXT:    nop
137cf721e29SAmy Kwan; CHECK64-NEXT:    addi r1, r1, 112
138cf721e29SAmy Kwan; CHECK64-NEXT:    ld r0, 16(r1)
139cf721e29SAmy Kwan; CHECK64-NEXT:    mtlr r0
140cf721e29SAmy Kwan; CHECK64-NEXT:    blr
141cf721e29SAmy Kwan;
142cf721e29SAmy Kwan; CHECK32-LABEL: test_func:
143cf721e29SAmy Kwan; CHECK32:       # %bb.0: # %entry
144cf721e29SAmy Kwan; CHECK32-NEXT:    mflr r0
145cf721e29SAmy Kwan; CHECK32-NEXT:    stwu r1, -64(r1)
146ccddd136SZaara Syeda; CHECK32-NEXT:    lwz r3, L..C1(r2) # @_MergedGlobals
147cf721e29SAmy Kwan; CHECK32-NEXT:    stw r0, 72(r1)
148ccddd136SZaara Syeda; CHECK32-NEXT:    addi r3, r3, 32
149cf721e29SAmy Kwan; CHECK32-NEXT:    bl .callee[PR]
150cf721e29SAmy Kwan; CHECK32-NEXT:    nop
151cf721e29SAmy Kwan; CHECK32-NEXT:    addi r1, r1, 64
152cf721e29SAmy Kwan; CHECK32-NEXT:    lwz r0, 8(r1)
153cf721e29SAmy Kwan; CHECK32-NEXT:    mtlr r0
154cf721e29SAmy Kwan; CHECK32-NEXT:    blr
155aaa37d67SZaara Syeda
156cf721e29SAmy Kwan; LINUX64LE-LABEL: test_func:
157cf721e29SAmy Kwan; LINUX64LE:       # %bb.0: # %entry
158cf721e29SAmy Kwan; LINUX64LE-NEXT:    mflr r0
159cf721e29SAmy Kwan; LINUX64LE-NEXT:    stdu r1, -32(r1)
160cf721e29SAmy Kwan; LINUX64LE-NEXT:    std r0, 48(r1)
161cf721e29SAmy Kwan; LINUX64LE-NEXT:    .cfi_def_cfa_offset 32
162cf721e29SAmy Kwan; LINUX64LE-NEXT:    .cfi_offset lr, 16
163aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
164aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l
165aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addi r3, r3, 32
166cf721e29SAmy Kwan; LINUX64LE-NEXT:    bl callee
167cf721e29SAmy Kwan; LINUX64LE-NEXT:    nop
168cf721e29SAmy Kwan; LINUX64LE-NEXT:    addi r1, r1, 32
169cf721e29SAmy Kwan; LINUX64LE-NEXT:    ld r0, 16(r1)
170cf721e29SAmy Kwan; LINUX64LE-NEXT:    mtlr r0
171cf721e29SAmy Kwan; LINUX64LE-NEXT:    blr
172cf721e29SAmy Kwan;
173cf721e29SAmy Kwan; LINUX64BE-LABEL: test_func:
174cf721e29SAmy Kwan; LINUX64BE:       # %bb.0: # %entry
175cf721e29SAmy Kwan; LINUX64BE-NEXT:    mflr r0
176cf721e29SAmy Kwan; LINUX64BE-NEXT:    stdu r1, -112(r1)
177cf721e29SAmy Kwan; LINUX64BE-NEXT:    std r0, 128(r1)
178cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_def_cfa_offset 112
179cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_offset lr, 16
180aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
181aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l
182aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r3, r3, 32
183cf721e29SAmy Kwan; LINUX64BE-NEXT:    bl callee
184cf721e29SAmy Kwan; LINUX64BE-NEXT:    nop
185cf721e29SAmy Kwan; LINUX64BE-NEXT:    addi r1, r1, 112
186cf721e29SAmy Kwan; LINUX64BE-NEXT:    ld r0, 16(r1)
187cf721e29SAmy Kwan; LINUX64BE-NEXT:    mtlr r0
188cf721e29SAmy Kwan; LINUX64BE-NEXT:    blr
189cf721e29SAmy Kwanentry:
190cf721e29SAmy Kwan  tail call void @callee(ptr noundef nonnull @d) #4
191cf721e29SAmy Kwan  ret void
192cf721e29SAmy Kwan}
193cf721e29SAmy Kwan
194cf721e29SAmy Kwandefine void @test_func2() {
195cf721e29SAmy Kwan; CHECK64-LABEL: test_func2:
196cf721e29SAmy Kwan; CHECK64:       # %bb.0: # %entry
197cf721e29SAmy Kwan; CHECK64-NEXT:    mflr r0
198cf721e29SAmy Kwan; CHECK64-NEXT:    stdu r1, -112(r1)
199ccddd136SZaara Syeda; CHECK64-NEXT:    ld r3, L..C1(r2) # @_MergedGlobals
200cf721e29SAmy Kwan; CHECK64-NEXT:    std r0, 128(r1)
201ccddd136SZaara Syeda; CHECK64-NEXT:    addi r3, r3, 16
202cf721e29SAmy Kwan; CHECK64-NEXT:    bl .callee2[PR]
203cf721e29SAmy Kwan; CHECK64-NEXT:    nop
204cf721e29SAmy Kwan; CHECK64-NEXT:    addi r1, r1, 112
205cf721e29SAmy Kwan; CHECK64-NEXT:    ld r0, 16(r1)
206cf721e29SAmy Kwan; CHECK64-NEXT:    mtlr r0
207cf721e29SAmy Kwan; CHECK64-NEXT:    blr
208cf721e29SAmy Kwan;
209cf721e29SAmy Kwan; CHECK32-LABEL: test_func2:
210cf721e29SAmy Kwan; CHECK32:       # %bb.0: # %entry
211cf721e29SAmy Kwan; CHECK32-NEXT:    mflr r0
212cf721e29SAmy Kwan; CHECK32-NEXT:    stwu r1, -64(r1)
213ccddd136SZaara Syeda; CHECK32-NEXT:    lwz r3, L..C1(r2) # @_MergedGlobals
214cf721e29SAmy Kwan; CHECK32-NEXT:    stw r0, 72(r1)
215ccddd136SZaara Syeda; CHECK32-NEXT:    addi r3, r3, 16
216cf721e29SAmy Kwan; CHECK32-NEXT:    bl .callee2[PR]
217cf721e29SAmy Kwan; CHECK32-NEXT:    nop
218cf721e29SAmy Kwan; CHECK32-NEXT:    addi r1, r1, 64
219cf721e29SAmy Kwan; CHECK32-NEXT:    lwz r0, 8(r1)
220cf721e29SAmy Kwan; CHECK32-NEXT:    mtlr r0
221cf721e29SAmy Kwan; CHECK32-NEXT:    blr
222cf721e29SAmy Kwan;
223cf721e29SAmy Kwan; LINUX64LE-LABEL: test_func2:
224cf721e29SAmy Kwan; LINUX64LE:       # %bb.0: # %entry
225cf721e29SAmy Kwan; LINUX64LE-NEXT:    mflr r0
226cf721e29SAmy Kwan; LINUX64LE-NEXT:    stdu r1, -32(r1)
227cf721e29SAmy Kwan; LINUX64LE-NEXT:    std r0, 48(r1)
228cf721e29SAmy Kwan; LINUX64LE-NEXT:    .cfi_def_cfa_offset 32
229cf721e29SAmy Kwan; LINUX64LE-NEXT:    .cfi_offset lr, 16
230aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
231aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l
232aaa37d67SZaara Syeda; LINUX64LE-NEXT:    addi r3, r3, 16
233cf721e29SAmy Kwan; LINUX64LE-NEXT:    bl callee2
234cf721e29SAmy Kwan; LINUX64LE-NEXT:    nop
235cf721e29SAmy Kwan; LINUX64LE-NEXT:    addi r1, r1, 32
236cf721e29SAmy Kwan; LINUX64LE-NEXT:    ld r0, 16(r1)
237cf721e29SAmy Kwan; LINUX64LE-NEXT:    mtlr r0
238cf721e29SAmy Kwan; LINUX64LE-NEXT:    blr
239cf721e29SAmy Kwan;
240cf721e29SAmy Kwan; LINUX64BE-LABEL: test_func2:
241cf721e29SAmy Kwan; LINUX64BE:       # %bb.0: # %entry
242cf721e29SAmy Kwan; LINUX64BE-NEXT:    mflr r0
243cf721e29SAmy Kwan; LINUX64BE-NEXT:    stdu r1, -112(r1)
244cf721e29SAmy Kwan; LINUX64BE-NEXT:    std r0, 128(r1)
245cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_def_cfa_offset 112
246cf721e29SAmy Kwan; LINUX64BE-NEXT:    .cfi_offset lr, 16
247aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
248aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l
249aaa37d67SZaara Syeda; LINUX64BE-NEXT:    addi r3, r3, 16
250cf721e29SAmy Kwan; LINUX64BE-NEXT:    bl callee2
251cf721e29SAmy Kwan; LINUX64BE-NEXT:    nop
252cf721e29SAmy Kwan; LINUX64BE-NEXT:    addi r1, r1, 112
253cf721e29SAmy Kwan; LINUX64BE-NEXT:    ld r0, 16(r1)
254cf721e29SAmy Kwan; LINUX64BE-NEXT:    mtlr r0
255cf721e29SAmy Kwan; LINUX64BE-NEXT:    blr
256cf721e29SAmy Kwanentry:
257cf721e29SAmy Kwan  tail call void @callee2(ptr noundef nonnull @e) #4
258cf721e29SAmy Kwan  ret void
259cf721e29SAmy Kwan}
260cf721e29SAmy Kwan
261*935bbbbdSZaara Syeda; Check the contents of the TLS data and the _MergedGlobals structure to
262*935bbbbdSZaara Syeda; check that TLS data has been skipped during global merge.
263cf721e29SAmy Kwan
264cf721e29SAmy Kwan; CHECK64: 	.csect a[TL],2
265cf721e29SAmy Kwan; CHECK64-NEXT:	.lglobl	a[TL]
266cf721e29SAmy Kwan; CHECK64-NEXT:	.string	"tls1"
267cf721e29SAmy Kwan; CHECK64:	.csect b[TL],2
268cf721e29SAmy Kwan; CHECK64-NEXT:	.lglobl	b[TL]
269cf721e29SAmy Kwan; CHECK64-NEXT:	.string	"tls2"
270ccddd136SZaara Syeda; CHECK64:	.csect L.._MergedGlobals[RO],2
271ccddd136SZaara Syeda; CHECK64:	.align	2
272ccddd136SZaara Syeda; CHECK64-LABEL: c:
273ccddd136SZaara Syeda; CHECK64:	.string	"Regular global"
274ccddd136SZaara Syeda; CHECK64-LABEL: e:
275ccddd136SZaara Syeda; CHECK64:	.vbyte	4, 0x42af999a
276cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 0x42b1999a
277cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 0x42b3cccd
278cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 0x42b5999a
279ccddd136SZaara Syeda; CHECK64-LABEL: d:
280ccddd136SZaara Syeda; CHECK64:	.vbyte	4, 1
281cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 2
282cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 3
283cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 4
284cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 5
285cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 6
286cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 7
287cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 8
288cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 9
289cf721e29SAmy Kwan; CHECK64-NEXT:	.vbyte	4, 10
290ccddd136SZaara Syeda; CHECK64-LABEL: L...str
291ccddd136SZaara Syeda; CHECK64:	.byte	'T,'L,'S,' ,'v,'a,'r,'i,'a,'b,'l,'e,' ,'1,',,' ,'2,' ,'a,'n,'d,' ,'n,'o,'n,'-,'T,'L,'S,' ,'v,'a,'r,':,' ,'%,'s,',,' ,'%,'s,',,' ,'%,'s,0012,0000
292cf721e29SAmy Kwan; CHECK64: L..C1:
293ccddd136SZaara Syeda; CHECK64-NEXT: .tc L.._MergedGlobals[TC],L.._MergedGlobals[RO]
294cf721e29SAmy Kwan; CHECK64: L..C2:
295cf721e29SAmy Kwan; CHECK64-NEXT:	.tc a[TC],a[TL]@ld
296cf721e29SAmy Kwan; CHECK64: L..C3:
297cf721e29SAmy Kwan; CHECK64-NEXT:	.tc b[TC],b[TL]@ld
298cf721e29SAmy Kwan
299cf721e29SAmy Kwan; CHECK32: 	.csect a[TL],2
300cf721e29SAmy Kwan; CHECK32-NEXT:	.lglobl	a[TL]
301cf721e29SAmy Kwan; CHECK32-NEXT:	.string	"tls1"
302cf721e29SAmy Kwan; CHECK32:	.csect b[TL],2
303cf721e29SAmy Kwan; CHECK32-NEXT:	.lglobl	b[TL]
304cf721e29SAmy Kwan; CHECK32-NEXT:	.string	"tls2"
305ccddd136SZaara Syeda; CHECK32:	.csect L.._MergedGlobals[RO],2
306ccddd136SZaara Syeda; CHECK32:	.align	2
307ccddd136SZaara Syeda; CHECK32-LABEL: c:
308ccddd136SZaara Syeda; CHECK32:	.string "Regular global"
309ccddd136SZaara Syeda; CHECK32-LABEL: e:
310ccddd136SZaara Syeda; CHECK32:	.vbyte	4, 0x42af999a
311cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 0x42b1999a
312cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 0x42b3cccd
313cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 0x42b5999a
314ccddd136SZaara Syeda; CHECK32-LABEL: d:
315ccddd136SZaara Syeda; CHECK32:	.vbyte	4, 1
316cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 2
317cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 3
318cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 4
319cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 5
320cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 6
321cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 7
322cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 8
323cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 9
324cf721e29SAmy Kwan; CHECK32-NEXT:	.vbyte	4, 10
325ccddd136SZaara Syeda; CHECK32-LABEL: L...str:
326ccddd136SZaara Syeda; CHECK32:	.byte	'T,'L,'S,' ,'v,'a,'r,'i,'a,'b,'l,'e,' ,'1,',,' ,'2,' ,'a,'n,'d,' ,'n,'o,'n,'-,'T,'L,'S,' ,'v,'a,'r,':,' ,'%,'s,',,' ,'%,'s,',,' ,'%,'s,0012,0000
327cf721e29SAmy Kwan; CHECK32: L..C1:
328ccddd136SZaara Syeda; CHECK32-NEXT: .tc L.._MergedGlobals[TC],L.._MergedGlobals[RO]
329cf721e29SAmy Kwan; CHECK32: L..C2:
330cf721e29SAmy Kwan; CHECK32-NEXT:	.tc a[TC],a[TL]@ld
331cf721e29SAmy Kwan; CHECK32: L..C3:
332cf721e29SAmy Kwan; CHECK32-NEXT:	.tc b[TC],b[TL]@ld
333cf721e29SAmy Kwan
334cf721e29SAmy Kwan; LINUX64LE: a:
335cf721e29SAmy Kwan; LINUX64LE-NEXT:       .asciz  "tls1"
336cf721e29SAmy Kwan; LINUX64LE-NEXT:       .size   a, 5
337cf721e29SAmy Kwan; LINUX64LE: b:
338cf721e29SAmy Kwan; LINUX64LE-NEXT:       .asciz  "tls2"
339cf721e29SAmy Kwan; LINUX64LE-NEXT:       .size   b, 5
340aaa37d67SZaara Syeda; LINUX64LE: .L_MergedGlobals:
341aaa37d67SZaara Syeda; LINUX64LE-NEXT:       .asciz  "Regular global"
342aaa37d67SZaara Syeda; LINUX64LE-NEXT:       .space  1
343cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   0x42af999a
344cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   0x42b1999a
345cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   0x42b3cccd
346cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   0x42b5999a
347cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   1
348cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   2
349cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   3
350cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   4
351cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   5
352cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   6
353cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   7
354cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   8
355cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   9
356cf721e29SAmy Kwan; LINUX64LE-NEXT:       .long   10
357cf721e29SAmy Kwan; LINUX64LE-NEXT:       .asciz  "TLS variable 1, 2 and non-TLS var: %s, %s, %s\n"
358cf721e29SAmy Kwan
359cf721e29SAmy Kwan; LINUX64BE: a:
360cf721e29SAmy Kwan; LINUX64BE-NEXT:       .asciz  "tls1"
361cf721e29SAmy Kwan; LINUX64BE-NEXT:       .size   a, 5
362cf721e29SAmy Kwan; LINUX64BE: b:
363cf721e29SAmy Kwan; LINUX64BE-NEXT:       .asciz  "tls2"
364cf721e29SAmy Kwan; LINUX64BE-NEXT:       .size   b, 5
365aaa37d67SZaara Syeda; LINUX64BE: .L_MergedGlobals:
366aaa37d67SZaara Syeda; LINUX64BE-NEXT:       .asciz  "Regular global"
367aaa37d67SZaara Syeda; LINUX64BE-NEXT:       .space  1
368cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   0x42af999a
369cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   0x42b1999a
370cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   0x42b3cccd
371cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   0x42b5999a
372cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   1
373cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   2
374cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   3
375cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   4
376cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   5
377cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   6
378cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   7
379cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   8
380cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   9
381cf721e29SAmy Kwan; LINUX64BE-NEXT:       .long   10
382cf721e29SAmy Kwan; LINUX64BE-NEXT:       .asciz  "TLS variable 1, 2 and non-TLS var: %s, %s, %s\n"
383