1; RUN: llc -mattr=+bulk-memory,+atomics -filetype=obj %s -o %t.o
2
3target triple = "wasm32-unknown-unknown"
4
5@no_tls = global i32 0, align 4
6@tls1 = thread_local(localexec) global i32 1, align 4
7@tls2 = thread_local(localexec) global i32 1, align 16
8
9define i32* @tls1_addr() {
10  ret i32* @tls1
11}
12
13define i32* @tls2_addr() {
14  ret i32* @tls2
15}
16
17; RUN: wasm-ld -no-gc-sections --shared-memory --max-memory=131072 --no-entry -o %t.wasm %t.o
18; RUN: obj2yaml %t.wasm | FileCheck %s
19
20; CHECK:      - Type:            GLOBAL
21; CHECK-NEXT:   Globals:
22; CHECK-NEXT:     - Index:           0
23; CHECK-NEXT:       Type:            I32
24; CHECK-NEXT:       Mutable:         true
25; CHECK-NEXT:       InitExpr:
26; CHECK-NEXT:         Opcode:          I32_CONST
27; CHECK-NEXT:         Value:           66592
28
29; __tls_base
30; CHECK-NEXT:     - Index:           1
31; CHECK-NEXT:       Type:            I32
32; CHECK-NEXT:       Mutable:         true
33; CHECK-NEXT:       InitExpr:
34; CHECK-NEXT:         Opcode:          I32_CONST
35; CHECK-NEXT:         Value:           0
36
37; __tls_size
38; CHECK-NEXT:     - Index:           2
39; CHECK-NEXT:       Type:            I32
40; CHECK-NEXT:       Mutable:         false
41; CHECK-NEXT:       InitExpr:
42; CHECK-NEXT:         Opcode:          I32_CONST
43; CHECK-NEXT:         Value:           20
44
45; __tls_align
46; CHECK-NEXT:     - Index:           3
47; CHECK-NEXT:       Type:            I32
48; CHECK-NEXT:       Mutable:         false
49; CHECK-NEXT:       InitExpr:
50; CHECK-NEXT:         Opcode:          I32_CONST
51; CHECK-NEXT:         Value:           16
52