1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=i686-linux-android -relocation-model=pic \ 2*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck -check-prefix=X86_32 %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=x86_64-linux-android -march=x86 -relocation-model=pic \ 4*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck -check-prefix=X86_32 %s 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=x86_64-linux-android -relocation-model=pic \ 6*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck -check-prefix=X86_64 %s 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -march=x86 -mtriple=i386-linux-gnu -relocation-model=pic \ 8*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck %s 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; Make sure that TLS symbols are emitted in expected order. 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker@external_x = external thread_local global i32, align 8 13*9880d681SAndroid Build Coastguard Worker@external_y = thread_local global i8 7, align 2 14*9880d681SAndroid Build Coastguard Worker@internal_y = internal thread_local global i64 9, align 16 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine i32* @get_external_x() { 17*9880d681SAndroid Build Coastguard Workerentry: 18*9880d681SAndroid Build Coastguard Worker ret i32* @external_x 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine i8* @get_external_y() { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker ret i8* @external_y 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine i64* @get_internal_y() { 27*9880d681SAndroid Build Coastguard Workerentry: 28*9880d681SAndroid Build Coastguard Worker ret i64* @internal_y 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: get_external_x: 32*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: _tls_get_address 33*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_get_address 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: get_external_y: 35*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_get_address 36*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: _tls_get_address 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: get_internal_y: 38*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: __emutls_t.external_x: 39*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: __emutls_v.external_x: 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_v.external_y: 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_t.external_y: 42*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_t.external_y 43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_v.internal_y: 44*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_t.internal_y: 45*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_t.internal_y 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: get_external_x: 48*9880d681SAndroid Build Coastguard Worker; X86_32: movl __emutls_v.external_x@GOT(%ebx) 49*9880d681SAndroid Build Coastguard Worker; X86_32: calll __emutls_get_address 50*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: get_external_y: 51*9880d681SAndroid Build Coastguard Worker; X86_32: movl __emutls_v.external_y@GOT(%ebx) 52*9880d681SAndroid Build Coastguard Worker; X86_32: calll __emutls_get_address 53*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: get_internal_y: 54*9880d681SAndroid Build Coastguard Worker; X86_32: leal __emutls_v.internal_y@GOTOFF(%ebx) 55*9880d681SAndroid Build Coastguard Worker; X86_32: calll __emutls_get_address 56*9880d681SAndroid Build Coastguard Worker; X86_32-NOT: __emutls_t.external_x 57*9880d681SAndroid Build Coastguard Worker; X86_32-NOT: __emutls_v.external_x: 58*9880d681SAndroid Build Coastguard Worker; X86_32: .data{{$}} 59*9880d681SAndroid Build Coastguard Worker; X86_32: .globl __emutls_v.external_y 60*9880d681SAndroid Build Coastguard Worker; X86_32: .p2align 2 61*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: __emutls_v.external_y: 62*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long 1 63*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long 2 64*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long 0 65*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long __emutls_t.external_y 66*9880d681SAndroid Build Coastguard Worker; X86_32: .section .rodata, 67*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: __emutls_t.external_y: 68*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .byte 7 69*9880d681SAndroid Build Coastguard Worker; X86_32: .data{{$}} 70*9880d681SAndroid Build Coastguard Worker; X86_32-NOT: .globl 71*9880d681SAndroid Build Coastguard Worker; X86_32: .p2align 2 72*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: __emutls_v.internal_y: 73*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long 8 74*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long 16 75*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long 0 76*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .long __emutls_t.internal_y 77*9880d681SAndroid Build Coastguard Worker; X86_32-LABEL: __emutls_t.internal_y: 78*9880d681SAndroid Build Coastguard Worker; X86_32-NEXT: .quad 9 79*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: get_external_x: 80*9880d681SAndroid Build Coastguard Worker; X86_64: __emutls_v.external_x@GOTPCREL(%rip) 81*9880d681SAndroid Build Coastguard Worker; X86_64: __emutls_get_address 82*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: get_external_y: 83*9880d681SAndroid Build Coastguard Worker; X86_64: __emutls_v.external_y@GOTPCREL(%rip) 84*9880d681SAndroid Build Coastguard Worker; X86_64: __emutls_get_address 85*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: get_internal_y: 86*9880d681SAndroid Build Coastguard Worker; X86_64: __emutls_v.internal_y(%rip) 87*9880d681SAndroid Build Coastguard Worker; X86_64: __emutls_get_address 88*9880d681SAndroid Build Coastguard Worker; X86_64-NOT: __emutls_t.external_x 89*9880d681SAndroid Build Coastguard Worker; X86_64-NOT: __emutls_v.external_x: 90*9880d681SAndroid Build Coastguard Worker; X86_64: .globl __emutls_v.external_y 91*9880d681SAndroid Build Coastguard Worker; X86_64: .p2align 3 92*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: __emutls_v.external_y: 93*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 1 94*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 2 95*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 0 96*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad __emutls_t.external_y 97*9880d681SAndroid Build Coastguard Worker; X86_64-NOT: __emutls_v.external_x: 98*9880d681SAndroid Build Coastguard Worker; X86_64: .section .rodata, 99*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: __emutls_t.external_y: 100*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .byte 7 101*9880d681SAndroid Build Coastguard Worker; X86_64: .data{{$}} 102*9880d681SAndroid Build Coastguard Worker; X86_64-NOT: .globl 103*9880d681SAndroid Build Coastguard Worker; X86_64: .p2align 3 104*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: __emutls_v.internal_y: 105*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 8 106*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 16 107*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 0 108*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad __emutls_t.internal_y 109*9880d681SAndroid Build Coastguard Worker; X86_64: .section .rodata, 110*9880d681SAndroid Build Coastguard Worker; X86_64-LABEL: __emutls_t.internal_y: 111*9880d681SAndroid Build Coastguard Worker; X86_64-NEXT: .quad 9 112