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