1ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
2ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# RUN: llvm-mc -triple s390x-unknown-unknown --show-encoding %s | FileCheck %s
3ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
4ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# RUN: llvm-mc -triple s390x-unknown-unknown -filetype=obj %s | \
5ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# RUN: llvm-readobj -r | FileCheck %s -check-prefix=CHECK-REL
6ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
7ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: larl %r14, target                      # encoding: [0xc0,0xe0,A,A,A,A]
8ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target+2, kind: FK_390_PC32DBL
9ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PC32DBL target 0x2
10ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
11ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	larl %r14, target
12ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
13ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: larl %r14, target@GOT                  # encoding: [0xc0,0xe0,A,A,A,A]
14ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@GOT+2, kind: FK_390_PC32DBL
15ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_GOTENT target 0x2
16ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
17ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	larl %r14, target@got
18ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
19ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: larl %r14, target@INDNTPOFF            # encoding: [0xc0,0xe0,A,A,A,A]
20ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@INDNTPOFF+2, kind: FK_390_PC32DBL
21ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_TLS_IEENT target 0x2
22ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
23ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	larl %r14, target@indntpoff
24ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
25ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: brasl %r14, target                     # encoding: [0xc0,0xe5,A,A,A,A]
26ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target+2, kind: FK_390_PC32DBL
27ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PC32DBL target 0x2
28ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
29ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	brasl %r14, target
30ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
31ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: brasl %r14, target@PLT                 # encoding: [0xc0,0xe5,A,A,A,A]
32ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
33ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
34ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
35ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	brasl %r14, target@plt
36ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
37ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: brasl %r14, target@PLT:tls_gdcall:sym  # encoding: [0xc0,0xe5,A,A,A,A]
38ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
39ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSGD, kind: FK_390_TLS_CALL
40ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
41f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_GDCALL sym 0x0
42ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
43ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	brasl %r14, target@plt:tls_gdcall:sym
44ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
45ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: brasl %r14, target@PLT:tls_ldcall:sym  # encoding: [0xc0,0xe5,A,A,A,A]
46ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
47ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSLDM, kind: FK_390_TLS_CALL
48ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
49f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_LDCALL sym 0x0
50ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
51ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	brasl %r14, target@plt:tls_ldcall:sym
52ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
53ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: bras %r14, target                      # encoding: [0xa7,0xe5,A,A]
54ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target+2, kind: FK_390_PC16DBL
55ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PC16DBL target 0x2
56ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
57ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	bras %r14, target
58ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
59ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: bras %r14, target@PLT                  # encoding: [0xa7,0xe5,A,A]
60ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
61ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
62ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
63ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	bras %r14, target@plt
64ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
65ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: bras %r14, target@PLT:tls_gdcall:sym   # encoding: [0xa7,0xe5,A,A]
66ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
67ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSGD, kind: FK_390_TLS_CALL
68ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
69f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_GDCALL sym 0x0
70ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
71ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	bras %r14, target@plt:tls_gdcall:sym
72ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
73ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK: bras %r14, target@PLT:tls_ldcall:sym   # encoding: [0xa7,0xe5,A,A]
74ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
75ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSLDM, kind: FK_390_TLS_CALL
76ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
77f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_LDCALL sym 0x0
78ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
79ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	bras %r14, target@plt:tls_ldcall:sym
80ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
81ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
82ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# Data relocs
83ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# llvm-mc does not show any "encoding" string for data, so we just check the relocs
84ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
85ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: .rela.data
86ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.data
87ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
88ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE64 target 0x0
89ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
90ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.quad target@ntpoff
91ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
92ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO64 target 0x0
93ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
94ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.quad target@dtpoff
95ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
96ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM64 target 0x0
97ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
98ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.quad target@tlsldm
99ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
100ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD64 target 0x0
101ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
102ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.quad target@tlsgd
103ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
104ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE32 target 0x0
105ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
106ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.long target@ntpoff
107ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
108ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO32 target 0x0
109ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
110ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.long target@dtpoff
111ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
112ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM32 target 0x0
113ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
114ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.long target@tlsldm
115ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
116ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD32 target 0x0
117ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.align 16
118ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines	.long target@tlsgd
119ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
120