116 lines · plain
1; RUN: llc < %s -emulated-tls -mtriple=aarch64-linux-android -relocation-model=pic \2; RUN: | FileCheck -check-prefix=ARM_64 %s3; RUN: llc < %s -emulated-tls -mtriple=aarch64-linux-android -relocation-model=pic -O3 \4; RUN: | FileCheck -check-prefix=ARM_64 %s5; RUN: llc < %s -emulated-tls -mtriple=aarch64-linux-android -O3 \6; RUN: | FileCheck -check-prefix=ARM_64 %s7; RUN: llc < %s -emulated-tls -mtriple=aarch64-windows-gnu -O3 \8; RUN: | FileCheck -check-prefix=ARM_64 %s9; RUN: llc < %s -emulated-tls -mtriple=aarch64-apple-darwin -O3 \10; RUN: | FileCheck -check-prefix=DARWIN %s11 12; RUN: llc < %s -mtriple=aarch64-linux-android -relocation-model=pic \13; RUN: | FileCheck -check-prefix=ARM_64 %s14; RUN: llc < %s -mtriple=aarch64-linux-android -relocation-model=pic -O3 \15; RUN: | FileCheck -check-prefix=ARM_64 %s16; RUN: llc < %s -mtriple=aarch64-linux-android -O3 \17; RUN: | FileCheck -check-prefix=ARM_64 %s18; aarch64-windows-gnu needs explicit -emulated-tls19; RUN: llc < %s -mtriple=aarch64-apple-darwin -O3 \20; RUN: | FileCheck -check-prefix=NoEMU %s21; RUN: llc < %s -mtriple=aarch64-linux-android29 -O3 \22; RUN: | FileCheck -check-prefix=NoEMU %s23 24; NoEMU-NOT: __emutls25 26; Make sure that TLS symbols are emitted in expected order.27 28@external_x = external thread_local global i32, align 829@external_y = thread_local global i8 7, align 230@internal_y = internal thread_local global i64 9, align 1631 32define ptr @get_external_x() {33entry:34 ret ptr @external_x35}36 37define ptr @get_external_y() {38entry:39 ret ptr @external_y40}41 42define ptr @get_internal_y() {43entry:44 ret ptr @internal_y45}46 47; ARM_64-LABEL: get_external_x:48; ARM_64: __emutls_v.external_x49; ARM_64: __emutls_get_address50; ARM_64-LABEL: get_external_y:51; ARM_64: __emutls_v.external_y52; ARM_64: __emutls_get_address53; ARM_64-LABEL: get_internal_y:54; ARM_64: __emutls_v.internal_y55; ARM_64: __emutls_get_address56; ARM_64-NOT: __emutls_t.external_x57; ARM_64-NOT: __emutls_v.external_x:58; ARM_64: .data{{$}}59; ARM_64: .globl __emutls_v.external_y60; ARM_64: .p2align 361; ARM_64-LABEL: __emutls_v.external_y:62; ARM_64-NEXT: .xword 163; ARM_64-NEXT: .xword 264; ARM_64-NEXT: .xword 065; ARM_64-NEXT: .xword __emutls_t.external_y66; ARM_64-NOT: __emutls_v.external_x:67; ARM_64: .section .r{{o?}}data,68; ARM_64-LABEL: __emutls_t.external_y:69; ARM_64-NEXT: .byte 770; ARM_64: .data{{$}}71; ARM_64-NOT: .globl __emutls_v72; ARM_64: .p2align 373; ARM_64-LABEL: __emutls_v.internal_y:74; ARM_64-NEXT: .xword 875; ARM_64-NEXT: .xword 1676; ARM_64-NEXT: .xword 077; ARM_64-NEXT: .xword __emutls_t.internal_y78; ARM_64: .section .r{{o?}}data,79; ARM_64-LABEL: __emutls_t.internal_y:80; ARM_64-NEXT: .xword 981 82; DARWIN-LABEL: _get_external_x:83; DARWIN: ___emutls_v.external_x84; DARWIN: ___emutls_get_address85; DARWIN-LABEL: _get_external_y:86; DARWIN: ___emutls_v.external_y87; DARWIN: ___emutls_get_address88; DARWIN-LABEL: _get_internal_y:89; DARWIN: ___emutls_v.internal_y90; DARWIN: ___emutls_get_address91; DARWIN-NOT: ___emutls_t.external_x92; DARWIN-NOT: ___emutls_v.external_x:93; DARWIN: .section __DATA,__data94; DARWIN: .globl ___emutls_v.external_y95; DARWIN: .p2align 396; DARWIN-LABEL: ___emutls_v.external_y:97; DARWIN-NEXT: .quad 198; DARWIN-NEXT: .quad 299; DARWIN-NEXT: .quad 0100; DARWIN-NEXT: .quad ___emutls_t.external_y101; DARWIN-NOT: ___emutls_v.external_x:102; DARWIN: .section __TEXT,__const103; DARWIN-LABEL: ___emutls_t.external_y:104; DARWIN-NEXT: .byte 7105; DARWIN: .section __DATA,__data106; DARWIN-NOT: .globl ___emutls_v107; DARWIN: .p2align 3108; DARWIN-LABEL: ___emutls_v.internal_y:109; DARWIN-NEXT: .quad 8110; DARWIN-NEXT: .quad 16111; DARWIN-NEXT: .quad 0112; DARWIN-NEXT: .quad ___emutls_t.internal_y113; DARWIN: .section __TEXT,__const114; DARWIN-LABEL: ___emutls_t.internal_y:115; DARWIN-NEXT: .quad 9116