[PowerPC] Support absolute branches
[oota-llvm.git] / test / MC / PowerPC / ppc64-fixups.s
1
2 # RUN: llvm-mc -triple powerpc64-unknown-unknown --show-encoding %s | FileCheck %s
3
4 # RUN: llvm-mc -triple powerpc64-unknown-unknown -filetype=obj %s | \
5 # RUN: llvm-readobj -r | FileCheck %s -check-prefix=REL
6
7 # CHECK: b target                        # encoding: [0b010010AA,A,A,0bAAAAAA00]
8 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_br24
9 # CHECK-REL:                             0x{{[0-9A-F]*[048C]}} R_PPC64_REL24 target 0x0
10          b target
11
12 # CHECK: ba target                       # encoding: [0b010010AA,A,A,0bAAAAAA10]
13 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_br24abs
14 # CHECK-REL:                             0x{{[0-9A-F]*[048C]}} R_PPC64_ADDR24 target 0x0
15          ba target
16
17 # CHECK: beq 0, target                   # encoding: [0x41,0x82,A,0bAAAAAA00]
18 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
19 # CHECK-REL:                             0x{{[0-9A-F]*[048C]}} R_PPC64_REL14 target 0x0
20          beq target
21
22 # CHECK: beqa 0, target                  # encoding: [0x41,0x82,A,0bAAAAAA10]
23 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
24 # CHECK-REL:                             0x{{[0-9A-F]*[048C]}} R_PPC64_ADDR14 target 0x0
25          beqa target
26
27
28 # FIXME: .TOC.@tocbase
29
30 # CHECK: li 3, target@l                  # encoding: [0x38,0x60,A,A]
31 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
32 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
33          li 3, target@l
34
35 # CHECK: addis 3, 3, target@ha           # encoding: [0x3c,0x63,A,A]
36 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@ha, kind: fixup_ppc_half16
37 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
38          addis 3, 3, target@ha
39
40 # CHECK: lis 3, target@ha                # encoding: [0x3c,0x60,A,A]
41 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@ha, kind: fixup_ppc_half16
42 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
43          lis 3, target@ha
44
45 # CHECK: addi 4, 3, target@l             # encoding: [0x38,0x83,A,A]
46 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
47 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
48          addi 4, 3, target@l
49
50 # CHECK: li 3, target@ha                 # encoding: [0x38,0x60,A,A]
51 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@ha, kind: fixup_ppc_half16
52 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
53          li 3, target@ha
54
55 # CHECK: lis 3, target@l                 # encoding: [0x3c,0x60,A,A]
56 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
57 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
58          lis 3, target@l
59
60 # CHECK: li 3, target                    # encoding: [0x38,0x60,A,A]
61 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target, kind: fixup_ppc_half16
62 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16 target 0x0
63          li 3, target
64
65 # CHECK: lis 3, target                   # encoding: [0x3c,0x60,A,A]
66 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target, kind: fixup_ppc_half16
67 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16 target 0x0
68          lis 3, target
69
70 # CHECK: li 3, target@h                  # encoding: [0x38,0x60,A,A]
71 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@h, kind: fixup_ppc_half16
72 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HI target 0x0
73          li 3, target@h
74
75 # CHECK: lis 3, target@h                  # encoding: [0x3c,0x60,A,A]
76 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@h, kind: fixup_ppc_half16
77 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HI target 0x0
78          lis 3, target@h
79
80 # CHECK: li 3, target@higher             # encoding: [0x38,0x60,A,A]
81 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@higher, kind: fixup_ppc_half16
82 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HIGHER target 0x0
83          li 3, target@higher
84
85 # CHECK: lis 3, target@highest           # encoding: [0x3c,0x60,A,A]
86 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@highest, kind: fixup_ppc_half16
87 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HIGHEST target 0x0
88          lis 3, target@highest
89
90 # CHECK: li 3, target@highera            # encoding: [0x38,0x60,A,A]
91 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@highera, kind: fixup_ppc_half16
92 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HIGHERA target 0x0
93          li 3, target@highera
94
95 # CHECK: lis 3, target@highesta          # encoding: [0x3c,0x60,A,A]
96 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@highesta, kind: fixup_ppc_half16
97 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HIGHESTA target 0x0
98          lis 3, target@highesta
99
100 # CHECK: lwz 1, target@l(3)              # encoding: [0x80,0x23,A,A]
101 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
102 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
103          lwz 1, target@l(3)
104
105 # CHECK: ld 1, target@l(3)               # encoding: [0xe8,0x23,A,0bAAAAAA00]
106 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16ds
107 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO_DS target 0x0
108          ld 1, target@l(3)
109
110 # CHECK: ld 1, target(3)                 # encoding: [0xe8,0x23,A,0bAAAAAA00]
111 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target, kind: fixup_ppc_half16ds
112 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_DS target 0x0
113          ld 1, target(3)
114
115 base:
116 # CHECK: li 3, target-base               # encoding: [0x38,0x60,A,A]
117 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target-base, kind: fixup_ppc_half16
118 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_REL16 target 0x2
119          li 3, target-base
120
121 # CHECK: li 3, target-base@h             # encoding: [0x38,0x60,A,A]
122 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target-base@h, kind: fixup_ppc_half16
123 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_REL16_HI target 0x6
124          li 3, target-base@h
125
126 # CHECK: li 3, target-base@l             # encoding: [0x38,0x60,A,A]
127 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target-base@l, kind: fixup_ppc_half16
128 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_REL16_LO target 0xA
129          li 3, target-base@l
130
131 # CHECK: li 3, target-base@ha            # encoding: [0x38,0x60,A,A]
132 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target-base@ha, kind: fixup_ppc_half16
133 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_REL16_HA target 0xE
134          li 3, target-base@ha
135
136 # CHECK: ld 1, target@toc(2)             # encoding: [0xe8,0x22,A,0bAAAAAA00]
137 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc, kind: fixup_ppc_half16ds
138 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_DS target 0x0
139          ld 1, target@toc(2)
140
141 # CHECK: addis 3, 2, target@toc@ha       # encoding: [0x3c,0x62,A,A]
142 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@ha, kind: fixup_ppc_half16
143 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_HA target 0x0
144          addis 3, 2, target@toc@ha
145
146 # CHECK: addi 4, 3, target@toc@l         # encoding: [0x38,0x83,A,A]
147 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_half16
148 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO target 0x0
149          addi 4, 3, target@toc@l
150
151 # CHECK: addis 3, 2, target@toc@h        # encoding: [0x3c,0x62,A,A]
152 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@h, kind: fixup_ppc_half16
153 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_HI target 0x0
154          addis 3, 2, target@toc@h
155
156 # CHECK: lwz 1, target@toc@l(3)          # encoding: [0x80,0x23,A,A]
157 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_half16
158 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO target 0x0
159          lwz 1, target@toc@l(3)
160
161 # CHECK: ld 1, target@toc@l(3)           # encoding: [0xe8,0x23,A,0bAAAAAA00]
162 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_half16ds
163 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO_DS target 0x0
164          ld 1, target@toc@l(3)
165
166 # FIXME: @tls
167
168
169 # CHECK: addis 3, 2, target@tprel@ha     # encoding: [0x3c,0x62,A,A]
170 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@ha, kind: fixup_ppc_half16
171 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HA target 0x0
172          addis 3, 2, target@tprel@ha
173
174 # CHECK: addi 3, 3, target@tprel@l       # encoding: [0x38,0x63,A,A]
175 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@l, kind: fixup_ppc_half16
176 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_LO target 0x0
177          addi 3, 3, target@tprel@l
178
179 # CHECK: addi 3, 3, target@tprel         # encoding: [0x38,0x63,A,A]
180 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel, kind: fixup_ppc_half16
181 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16 target 0x0
182          addi 3, 3, target@tprel
183
184 # CHECK: addi 3, 3, target@tprel@h       # encoding: [0x38,0x63,A,A]
185 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@h, kind: fixup_ppc_half16
186 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HI target 0x0
187          addi 3, 3, target@tprel@h
188
189 # CHECK: addi 3, 3, target@tprel@higher  # encoding: [0x38,0x63,A,A]
190 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@higher, kind: fixup_ppc_half16
191 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHER target 0x0
192          addi 3, 3, target@tprel@higher
193
194 # CHECK: addis 3, 2, target@tprel@highest # encoding: [0x3c,0x62,A,A]
195 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@highest, kind: fixup_ppc_half16
196 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHEST target 0x0
197          addis 3, 2, target@tprel@highest
198
199 # CHECK: addi 3, 3, target@tprel@highera  # encoding: [0x38,0x63,A,A]
200 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@highera, kind: fixup_ppc_half16
201 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHERA target 0x0
202          addi 3, 3, target@tprel@highera
203
204 # CHECK: addis 3, 2, target@tprel@highesta # encoding: [0x3c,0x62,A,A]
205 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@highesta, kind: fixup_ppc_half16
206 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHESTA target 0x0
207          addis 3, 2, target@tprel@highesta
208
209 # CHECK: ld 1, target@tprel@l(3)         # encoding: [0xe8,0x23,A,0bAAAAAA00]
210 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@l, kind: fixup_ppc_half16ds
211 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_LO_DS target 0x0
212          ld 1, target@tprel@l(3)
213
214 # CHECK: ld 1, target@tprel(3)           # encoding: [0xe8,0x23,A,0bAAAAAA00]
215 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel, kind: fixup_ppc_half16ds
216 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_DS target 0x0
217          ld 1, target@tprel(3)
218
219 # CHECK: addis 3, 2, target@dtprel@ha    # encoding: [0x3c,0x62,A,A]
220 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@ha, kind: fixup_ppc_half16
221 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HA target 0x0
222          addis 3, 2, target@dtprel@ha
223
224 # CHECK: addi 3, 3, target@dtprel@l      # encoding: [0x38,0x63,A,A]
225 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@l, kind: fixup_ppc_half16
226 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_LO target 0x0
227          addi 3, 3, target@dtprel@l
228
229 # CHECK: addi 3, 3, target@dtprel         # encoding: [0x38,0x63,A,A]
230 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel, kind: fixup_ppc_half16
231 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16 target 0x0
232          addi 3, 3, target@dtprel
233
234 # CHECK: addi 3, 3, target@dtprel@h       # encoding: [0x38,0x63,A,A]
235 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@h, kind: fixup_ppc_half16
236 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HI target 0x0
237          addi 3, 3, target@dtprel@h
238
239 # CHECK: addi 3, 3, target@dtprel@higher  # encoding: [0x38,0x63,A,A]
240 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@higher, kind: fixup_ppc_half16
241 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHER target 0x0
242          addi 3, 3, target@dtprel@higher
243
244 # CHECK: addis 3, 2, target@dtprel@highest # encoding: [0x3c,0x62,A,A]
245 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@highest, kind: fixup_ppc_half16
246 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHEST target 0x0
247          addis 3, 2, target@dtprel@highest
248
249 # CHECK: addi 3, 3, target@dtprel@highera  # encoding: [0x38,0x63,A,A]
250 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@highera, kind: fixup_ppc_half16
251 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHERA target 0x0
252          addi 3, 3, target@dtprel@highera
253
254 # CHECK: addis 3, 2, target@dtprel@highesta # encoding: [0x3c,0x62,A,A]
255 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@highesta, kind: fixup_ppc_half16
256 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHESTA target 0x0
257          addis 3, 2, target@dtprel@highesta
258
259 # CHECK: ld 1, target@dtprel@l(3)        # encoding: [0xe8,0x23,A,0bAAAAAA00]
260 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@l, kind: fixup_ppc_half16ds
261 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_LO_DS target 0x0
262          ld 1, target@dtprel@l(3)
263
264 # CHECK: ld 1, target@dtprel(3)          # encoding: [0xe8,0x23,A,0bAAAAAA00]
265 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel, kind: fixup_ppc_half16ds
266 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_DS target 0x0
267          ld 1, target@dtprel(3)
268
269
270 # CHECK: addis 3, 2, target@got@tprel@ha # encoding: [0x3c,0x62,A,A]
271 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tprel@ha, kind: fixup_ppc_half16
272 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_HA target 0x0
273          addis 3, 2, target@got@tprel@ha
274
275 # CHECK: ld 1, target@got@tprel@l(3)     # encoding: [0xe8,0x23,A,0bAAAAAA00]
276 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tprel@l, kind: fixup_ppc_half16ds
277 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_LO_DS target 0x0
278          ld 1, target@got@tprel@l(3)
279
280 # CHECK: addis 3, 2, target@got@tprel@h  # encoding: [0x3c,0x62,A,A]
281 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tprel@h, kind: fixup_ppc_half16
282 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_HI target 0x0
283          addis 3, 2, target@got@tprel@h
284
285 # CHECK: ld 1, target@got@tprel(3)       # encoding: [0xe8,0x23,A,0bAAAAAA00]
286 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tprel, kind: fixup_ppc_half16ds
287 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_DS target 0x0
288          ld 1, target@got@tprel(3)
289
290 # CHECK: addis 3, 2, target@got@dtprel@ha # encoding: [0x3c,0x62,A,A]
291 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@dtprel@ha, kind: fixup_ppc_half16
292 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_HA target 0x0
293          addis 3, 2, target@got@dtprel@ha
294
295 # CHECK: ld 1, target@got@dtprel@l(3)    # encoding: [0xe8,0x23,A,0bAAAAAA00]
296 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@dtprel@l, kind: fixup_ppc_half16ds
297 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_LO_DS target 0x0
298          ld 1, target@got@dtprel@l(3)
299
300 # CHECK: addis 3, 2, target@got@dtprel@h # encoding: [0x3c,0x62,A,A]
301 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@dtprel@h, kind: fixup_ppc_half16
302 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_HI target 0x0
303          addis 3, 2, target@got@dtprel@h
304
305 # CHECK: ld 1, target@got@dtprel(3)      # encoding: [0xe8,0x23,A,0bAAAAAA00]
306 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@dtprel, kind: fixup_ppc_half16ds
307 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_DS target 0x0
308          ld 1, target@got@dtprel(3)
309
310 # CHECK: addis 3, 2, target@got@tlsgd@ha # encoding: [0x3c,0x62,A,A]
311 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsgd@ha, kind: fixup_ppc_half16
312 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_HA target 0x0
313          addis 3, 2, target@got@tlsgd@ha
314
315 # CHECK: addi 3, 3, target@got@tlsgd@l   # encoding: [0x38,0x63,A,A]
316 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsgd@l, kind: fixup_ppc_half16
317 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_LO target 0x0
318          addi 3, 3, target@got@tlsgd@l
319
320 # CHECK: addi 3, 3, target@got@tlsgd@h   # encoding: [0x38,0x63,A,A]
321 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsgd@h, kind: fixup_ppc_half16
322 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_HI target 0x0
323          addi 3, 3, target@got@tlsgd@h
324
325 # CHECK: addi 3, 3, target@got@tlsgd     # encoding: [0x38,0x63,A,A]
326 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsgd, kind: fixup_ppc_half16
327 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16 target 0x0
328          addi 3, 3, target@got@tlsgd
329
330
331 # CHECK: addis 3, 2, target@got@tlsld@ha # encoding: [0x3c,0x62,A,A]
332 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsld@ha, kind: fixup_ppc_half16
333 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_HA target 0x0
334          addis 3, 2, target@got@tlsld@ha
335
336 # CHECK: addi 3, 3, target@got@tlsld@l   # encoding: [0x38,0x63,A,A]
337 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsld@l, kind: fixup_ppc_half16
338 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_LO target 0x0
339          addi 3, 3, target@got@tlsld@l
340
341 # CHECK: addi 3, 3, target@got@tlsld@h   # encoding: [0x38,0x63,A,A]
342 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsld@h, kind: fixup_ppc_half16
343 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_HI target 0x0
344          addi 3, 3, target@got@tlsld@h
345
346 # CHECK: addi 3, 3, target@got@tlsld     # encoding: [0x38,0x63,A,A]
347 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsld, kind: fixup_ppc_half16
348 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16 target 0x0
349          addi 3, 3, target@got@tlsld
350