1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -march=x86 -mtriple=x86_64-linux-android -relocation-model=pic | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -march=x86-64 -mtriple=x86_64-linux-android -relocation-model=pic | FileCheck -check-prefix=X64 %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Make sure that TLS symboles are emitted in expected order. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@external_x = external thread_local global i32 7*9880d681SAndroid Build Coastguard Worker@external_y = thread_local global i32 7 8*9880d681SAndroid Build Coastguard Worker@internal_y = internal thread_local global i32 9 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine i32* @get_external_x() { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker ret i32* @external_x 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine i32* @get_external_y() { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker ret i32* @external_y 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine i32* @get_internal_y() { 21*9880d681SAndroid Build Coastguard Workerentry: 22*9880d681SAndroid Build Coastguard Worker ret i32* @internal_y 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 32-bit mode 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: get_external_x: 27*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_v.external_x 28*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_get_address 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: get_external_y: 31*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_v.external_y 32*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_get_address 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: get_internal_y: 35*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_v.internal_y 36*9880d681SAndroid Build Coastguard Worker; CHECK: __emutls_get_address 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: __emutls_v.external_x: 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; CHECK: .p2align 2 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_v.external_y: 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 4 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 4 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long __emutls_t.external_y 46*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_t.external_y: 47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 7 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; CHECK: .p2align 2 50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_v.internal_y: 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 4 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 4 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long __emutls_t.internal_y 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: __emutls_t.internal_y: 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 9 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 64-bit mode 59*9880d681SAndroid Build Coastguard Worker; X64-LABEL: get_external_x: 60*9880d681SAndroid Build Coastguard Worker; X64: __emutls_v.external_x 61*9880d681SAndroid Build Coastguard Worker; X64: __emutls_get_address 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker; X64-LABEL: get_external_y: 64*9880d681SAndroid Build Coastguard Worker; X64: __emutls_v.external_y 65*9880d681SAndroid Build Coastguard Worker; X64: __emutls_get_address 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker; X64-LABEL: get_internal_y: 68*9880d681SAndroid Build Coastguard Worker; X64: __emutls_v.internal_y 69*9880d681SAndroid Build Coastguard Worker; X64: __emutls_get_address 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker; X64-NOT: __emutls_v.external_x: 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker; X64: .p2align 3 74*9880d681SAndroid Build Coastguard Worker; X64-LABEL: __emutls_v.external_y: 75*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad 4 76*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad 4 77*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad 0 78*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad __emutls_t.external_y 79*9880d681SAndroid Build Coastguard Worker; X64-LABEL: __emutls_t.external_y: 80*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .long 7 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker; X64: .p2align 3 83*9880d681SAndroid Build Coastguard Worker; X64-LABEL: __emutls_v.internal_y: 84*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad 4 85*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad 4 86*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad 0 87*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .quad __emutls_t.internal_y 88*9880d681SAndroid Build Coastguard Worker; X64-LABEL: __emutls_t.internal_y: 89*9880d681SAndroid Build Coastguard Worker; X64-NEXT: .long 9 90