xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/tls-android.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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