xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/emutls_generic.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=arm-linux-android -relocation-model=pic \
2*9880d681SAndroid Build Coastguard Worker; RUN:     | FileCheck -check-prefix=ARM_32 %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=arm-linux-androidabi -relocation-model=pic \
4*9880d681SAndroid Build Coastguard Worker; RUN:     | FileCheck -check-prefix=ARM_32 %s
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=arm-linux-androidabi -relocation-model=pic -O3 \
6*9880d681SAndroid Build Coastguard Worker; RUN:     | FileCheck -check-prefix=ARM_32 %s
7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -emulated-tls -mtriple=arm-linux-androidabi -O3 \
8*9880d681SAndroid Build Coastguard Worker; RUN:     | FileCheck -check-prefix=ARM_32 %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; ARM_32-LABEL:  get_external_x:
32*9880d681SAndroid Build Coastguard Worker; ARM_32:        bl __emutls_get_address
33*9880d681SAndroid Build Coastguard Worker; ARM_32:        .long __emutls_v.external_x
34*9880d681SAndroid Build Coastguard Worker; ARM_32-LABEL:  get_external_y:
35*9880d681SAndroid Build Coastguard Worker; ARM_32:        bl __emutls_get_address
36*9880d681SAndroid Build Coastguard Worker; ARM_32:        .long __emutls_v.external_y
37*9880d681SAndroid Build Coastguard Worker; ARM_32-LABEL:  get_internal_y:
38*9880d681SAndroid Build Coastguard Worker; ARM_32:        bl __emutls_get_address
39*9880d681SAndroid Build Coastguard Worker; ARM_32:        .long __emutls_v.internal_y
40*9880d681SAndroid Build Coastguard Worker; ARM_32-NOT:    __emutls_t.external_x
41*9880d681SAndroid Build Coastguard Worker; ARM_32-NOT:    __emutls_v.external_x:
42*9880d681SAndroid Build Coastguard Worker; ARM_32:        .data{{$}}
43*9880d681SAndroid Build Coastguard Worker; ARM_32:        .globl __emutls_v.external_y
44*9880d681SAndroid Build Coastguard Worker; ARM_32:        .p2align 2
45*9880d681SAndroid Build Coastguard Worker; ARM_32-LABEL:  __emutls_v.external_y:
46*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 1
47*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 2
48*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 0
49*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long __emutls_t.external_y
50*9880d681SAndroid Build Coastguard Worker; ARM_32:        .section .rodata,
51*9880d681SAndroid Build Coastguard Worker; ARM_32-LABEL:  __emutls_t.external_y:
52*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .byte 7
53*9880d681SAndroid Build Coastguard Worker; ARM_32:        .data{{$}}
54*9880d681SAndroid Build Coastguard Worker; ARM_32-NOT:    .globl
55*9880d681SAndroid Build Coastguard Worker; ARM_32:        .p2align 2
56*9880d681SAndroid Build Coastguard Worker; ARM_32-LABEL:  __emutls_v.internal_y:
57*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 8
58*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 16
59*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 0
60*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long __emutls_t.internal_y
61*9880d681SAndroid Build Coastguard Worker; ARM_32-LABEL:  __emutls_t.internal_y:
62*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 9
63*9880d681SAndroid Build Coastguard Worker; ARM_32-NEXT:   .long 0
64