xref: /llvm-project/llvm/test/MC/WebAssembly/tls64.s (revision 44177e5fb20d00de01f6f322841bf532e19c4a8c)
1# RUN: llvm-mc -triple=wasm64-unknown-unknown < %s | FileCheck %s
2# RUN: llvm-mc -triple=wasm64-unknown-unknown -filetype=obj -o %t.o < %s
3# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=CHECK-OBJ --match-full-lines
4
5.globaltype __tls_base, i64
6
7tls_store:
8  .functype tls_store (i32) -> ()
9  # CHECK: global.get __tls_base
10  # CHECK-NEXT: i64.const tls1@TLSREL
11  # CHECK-NEXT: i64.add
12  # CHECK-NEXT: local.get 0
13  # CHECK-NEXT: i32.store 0
14  global.get __tls_base
15  i64.const tls1@TLSREL
16  i64.add
17  local.get 0
18  i32.store 0
19  end_function
20
21.section .tls.foo,"T",@
22# CHECK: .tls.foo,"T",@
23tls1:
24  .int32 42
25  .size tls1, 4
26
27.section custom_tls,"T",@
28# CHECK: custom_tls,"T",@
29tls2:
30  .int32 43
31  .size tls2, 4
32
33#      CHECK-OBJ:  - Type:            CODE
34# CHECK-OBJ-NEXT:    Relocations:
35# CHECK-OBJ-NEXT:      - Type:            R_WASM_GLOBAL_INDEX_LEB
36# CHECK-OBJ-NEXT:        Index:           1
37# CHECK-OBJ-NEXT:        Offset:          0x4
38# CHECK-OBJ-NEXT:      - Type:            R_WASM_MEMORY_ADDR_TLS_SLEB64
39# CHECK-OBJ-NEXT:        Index:           2
40# CHECK-OBJ-NEXT:        Offset:          0xA
41
42#      CHECK-OBJ:  - Type:            CUSTOM
43# CHECK-OBJ-NEXT:    Name:            linking
44# CHECK-OBJ-NEXT:    Version:         2
45# CHECK-OBJ-NEXT:    SymbolTable:
46# CHECK-OBJ-NEXT:      - Index:           0
47# CHECK-OBJ-NEXT:        Kind:            FUNCTION
48# CHECK-OBJ-NEXT:        Name:            tls_store
49# CHECK-OBJ-NEXT:        Flags:           [ BINDING_LOCAL ]
50# CHECK-OBJ-NEXT:        Function:        0
51# CHECK-OBJ-NEXT:      - Index:           1
52# CHECK-OBJ-NEXT:        Kind:            GLOBAL
53# CHECK-OBJ-NEXT:        Name:            __tls_base
54# CHECK-OBJ-NEXT:        Flags:           [ UNDEFINED ]
55# CHECK-OBJ-NEXT:        Global:          0
56# CHECK-OBJ-NEXT:      - Index:           2
57# CHECK-OBJ-NEXT:        Kind:            DATA
58# CHECK-OBJ-NEXT:        Name:            tls1
59# CHECK-OBJ-NEXT:        Flags:           [ BINDING_LOCAL, TLS ]
60# CHECK-OBJ-NEXT:        Segment:         0
61# CHECK-OBJ-NEXT:        Size:            4
62# CHECK-OBJ-NEXT:      - Index:           3
63# CHECK-OBJ-NEXT:        Kind:            DATA
64# CHECK-OBJ-NEXT:        Name:            tls2
65# CHECK-OBJ-NEXT:        Flags:           [ BINDING_LOCAL, TLS ]
66# CHECK-OBJ-NEXT:        Segment:         1
67# CHECK-OBJ-NEXT:        Size:            4
68# CHECK-OBJ-NEXT:    SegmentInfo:
69# CHECK-OBJ-NEXT:      - Index:           0
70# CHECK-OBJ-NEXT:        Name:            .tls.foo
71# CHECK-OBJ-NEXT:        Alignment:       0
72# CHECK-OBJ-NEXT:        Flags:           [ TLS ]
73# CHECK-OBJ-NEXT:      - Index:           1
74# CHECK-OBJ-NEXT:        Name:            custom_tls
75# CHECK-OBJ-NEXT:        Alignment:       0
76# CHECK-OBJ-NEXT:        Flags:           [ TLS ]
77