• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu -relocation-model=pic | FileCheck -check-prefix=X32 %s
2; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu -relocation-model=pic | FileCheck -check-prefix=X64 %s
3
4@i = thread_local global i32 15
5
6define i32 @f1() {
7entry:
8	%tmp1 = load i32* @i
9	ret i32 %tmp1
10}
11
12; X32: f1:
13; X32:   leal i@TLSGD(,%ebx), %eax
14; X32:   calll ___tls_get_addr@PLT
15
16; X64: f1:
17; X64:   leaq i@TLSGD(%rip), %rdi
18; X64:   callq __tls_get_addr@PLT
19
20
21@i2 = external thread_local global i32
22
23define i32* @f2() {
24entry:
25	ret i32* @i
26}
27
28; X32: f2:
29; X32:   leal i@TLSGD(,%ebx), %eax
30; X32:   calll ___tls_get_addr@PLT
31
32; X64: f2:
33; X64:   leaq i@TLSGD(%rip), %rdi
34; X64:   callq __tls_get_addr@PLT
35
36
37
38define i32 @f3() {
39entry:
40	%tmp1 = load i32* @i		; <i32> [#uses=1]
41	ret i32 %tmp1
42}
43
44; X32: f3:
45; X32:   leal	i@TLSGD(,%ebx), %eax
46; X32:   calll ___tls_get_addr@PLT
47
48; X64: f3:
49; X64:   leaq i@TLSGD(%rip), %rdi
50; X64:   callq __tls_get_addr@PLT
51
52
53define i32* @f4() nounwind {
54entry:
55	ret i32* @i
56}
57
58; X32: f4:
59; X32:   leal	i@TLSGD(,%ebx), %eax
60; X32:   calll ___tls_get_addr@PLT
61
62; X64: f4:
63; X64:   leaq i@TLSGD(%rip), %rdi
64; X64:   callq __tls_get_addr@PLT
65
66
67
68