[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / emutls_generic.ll
blob840833972881a02065900d83b07cd8d703f8e56a
1 ; RUN: llc < %s -emulated-tls -mtriple=aarch64-linux-android -relocation-model=pic \
2 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
3 ; RUN: llc < %s -emulated-tls -mtriple=aarch64-linux-android -relocation-model=pic -O3 \
4 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
5 ; RUN: llc < %s -emulated-tls -mtriple=aarch64-linux-android -O3 \
6 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
7 ; RUN: llc < %s -emulated-tls -mtriple=aarch64-windows-gnu -O3 \
8 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
9 ; RUN: llc < %s -emulated-tls -mtriple=aarch64-apple-darwin -O3 \
10 ; RUN:     | FileCheck -check-prefix=DARWIN %s
12 ; RUN: llc < %s -mtriple=aarch64-linux-android -relocation-model=pic \
13 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
14 ; RUN: llc < %s -mtriple=aarch64-linux-android -relocation-model=pic -O3 \
15 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
16 ; RUN: llc < %s -mtriple=aarch64-linux-android -O3 \
17 ; RUN:     | FileCheck -check-prefix=ARM_64 %s
18 ; aarch64-windows-gnu needs explicit -emulated-tls
19 ; RUN: llc < %s -mtriple=aarch64-apple-darwin -O3 \
20 ; RUN:     | FileCheck -check-prefix=NoEMU %s
22 ; NoEMU-NOT: __emutls
24 ; Make sure that TLS symbols are emitted in expected order.
26 @external_x = external thread_local global i32, align 8
27 @external_y = thread_local global i8 7, align 2
28 @internal_y = internal thread_local global i64 9, align 16
30 define i32* @get_external_x() {
31 entry:
32   ret i32* @external_x
35 define i8* @get_external_y() {
36 entry:
37   ret i8* @external_y
40 define i64* @get_internal_y() {
41 entry:
42   ret i64* @internal_y
45 ; ARM_64-LABEL:  get_external_x:
46 ; ARM_64:      __emutls_v.external_x
47 ; ARM_64:      __emutls_get_address
48 ; ARM_64-LABEL:  get_external_y:
49 ; ARM_64:      __emutls_v.external_y
50 ; ARM_64:      __emutls_get_address
51 ; ARM_64-LABEL:  get_internal_y:
52 ; ARM_64:      __emutls_v.internal_y
53 ; ARM_64:      __emutls_get_address
54 ; ARM_64-NOT:   __emutls_t.external_x
55 ; ARM_64-NOT:   __emutls_v.external_x:
56 ; ARM_64:        .data{{$}}
57 ; ARM_64:        .globl __emutls_v.external_y
58 ; ARM_64:        .p2align 3
59 ; ARM_64-LABEL:  __emutls_v.external_y:
60 ; ARM_64-NEXT:   .xword 1
61 ; ARM_64-NEXT:   .xword 2
62 ; ARM_64-NEXT:   .xword 0
63 ; ARM_64-NEXT:   .xword __emutls_t.external_y
64 ; ARM_64-NOT:    __emutls_v.external_x:
65 ; ARM_64:        .section .r{{o?}}data,
66 ; ARM_64-LABEL:  __emutls_t.external_y:
67 ; ARM_64-NEXT:   .byte 7
68 ; ARM_64:        .data{{$}}
69 ; ARM_64-NOT:    .globl __emutls_v
70 ; ARM_64:        .p2align 3
71 ; ARM_64-LABEL:  __emutls_v.internal_y:
72 ; ARM_64-NEXT:   .xword 8
73 ; ARM_64-NEXT:   .xword 16
74 ; ARM_64-NEXT:   .xword 0
75 ; ARM_64-NEXT:   .xword __emutls_t.internal_y
76 ; ARM_64:        .section .r{{o?}}data,
77 ; ARM_64-LABEL:  __emutls_t.internal_y:
78 ; ARM_64-NEXT:   .xword 9
80 ; DARWIN-LABEL:  _get_external_x:
81 ; DARWIN:        ___emutls_v.external_x
82 ; DARWIN:        ___emutls_get_address
83 ; DARWIN-LABEL:  _get_external_y:
84 ; DARWIN:        ___emutls_v.external_y
85 ; DARWIN:        ___emutls_get_address
86 ; DARWIN-LABEL:  _get_internal_y:
87 ; DARWIN:        ___emutls_v.internal_y
88 ; DARWIN:        ___emutls_get_address
89 ; DARWIN-NOT:    ___emutls_t.external_x
90 ; DARWIN-NOT:    ___emutls_v.external_x:
91 ; DARWIN:        .section __DATA,__data
92 ; DARWIN:        .globl ___emutls_v.external_y
93 ; DARWIN:        .p2align 3
94 ; DARWIN-LABEL:  ___emutls_v.external_y:
95 ; DARWIN-NEXT:   .quad 1
96 ; DARWIN-NEXT:   .quad 2
97 ; DARWIN-NEXT:   .quad 0
98 ; DARWIN-NEXT:   .quad ___emutls_t.external_y
99 ; DARWIN-NOT:    ___emutls_v.external_x:
100 ; DARWIN:        .section __TEXT,__const
101 ; DARWIN-LABEL:  ___emutls_t.external_y:
102 ; DARWIN-NEXT:   .byte 7
103 ; DARWIN:        .section __DATA,__data
104 ; DARWIN-NOT:    .globl ___emutls_v
105 ; DARWIN:        .p2align 3
106 ; DARWIN-LABEL:  ___emutls_v.internal_y:
107 ; DARWIN-NEXT:   .quad 8
108 ; DARWIN-NEXT:   .quad 16
109 ; DARWIN-NEXT:   .quad 0
110 ; DARWIN-NEXT:   .quad ___emutls_t.internal_y
111 ; DARWIN:        .section __TEXT,__const
112 ; DARWIN-LABEL:  ___emutls_t.internal_y:
113 ; DARWIN-NEXT:   .quad 9