[PowerPC] Support @toc@h modifier
[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
8 # FIXME: .TOC.@tocbase
9
10 # CHECK: li 3, target@l                  # encoding: [0x38,0x60,A,A]
11 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
12 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
13          li 3, target@l
14
15 # CHECK: addis 3, 3, target@ha           # encoding: [0x3c,0x63,A,A]
16 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@ha, kind: fixup_ppc_half16
17 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
18          addis 3, 3, target@ha
19
20 # CHECK: lis 3, target@ha                # encoding: [0x3c,0x60,A,A]
21 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@ha, kind: fixup_ppc_half16
22 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
23          lis 3, target@ha
24
25 # CHECK: addi 4, 3, target@l             # encoding: [0x38,0x83,A,A]
26 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
27 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
28          addi 4, 3, target@l
29
30 # CHECK: li 3, target@ha                 # encoding: [0x38,0x60,A,A]
31 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@ha, kind: fixup_ppc_half16
32 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
33          li 3, target@ha
34
35 # CHECK: lis 3, target@l                 # encoding: [0x3c,0x60,A,A]
36 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
37 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
38          lis 3, target@l
39
40 # CHECK: li 3, target                    # encoding: [0x38,0x60,A,A]
41 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target, kind: fixup_ppc_half16
42 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16 target 0x0
43          li 3, target
44
45 # CHECK: lis 3, target                   # encoding: [0x3c,0x60,A,A]
46 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target, kind: fixup_ppc_half16
47 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16 target 0x0
48          lis 3, target
49
50 # CHECK: li 3, target@h                  # encoding: [0x38,0x60,A,A]
51 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@h, kind: fixup_ppc_half16
52 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HI target 0x0
53          li 3, target@h
54
55 # CHECK: lis 3, target@h                  # encoding: [0x3c,0x60,A,A]
56 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@h, kind: fixup_ppc_half16
57 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HI target 0x0
58          lis 3, target@h
59
60 # CHECK: lwz 1, target@l(3)              # encoding: [0x80,0x23,A,A]
61 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16
62 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
63          lwz 1, target@l(3)
64
65 # CHECK: ld 1, target@l(3)               # encoding: [0xe8,0x23,A,0bAAAAAA00]
66 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@l, kind: fixup_ppc_half16ds
67 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO_DS target 0x0
68          ld 1, target@l(3)
69
70 # CHECK: ld 1, target@toc(2)             # encoding: [0xe8,0x22,A,0bAAAAAA00]
71 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc, kind: fixup_ppc_half16ds
72 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_DS target 0x0
73          ld 1, target@toc(2)
74
75 # CHECK: addis 3, 2, target@toc@ha       # encoding: [0x3c,0x62,A,A]
76 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@ha, kind: fixup_ppc_half16
77 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_HA target 0x0
78          addis 3, 2, target@toc@ha
79
80 # CHECK: addi 4, 3, target@toc@l         # encoding: [0x38,0x83,A,A]
81 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_half16
82 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO target 0x0
83          addi 4, 3, target@toc@l
84
85 # CHECK: addis 3, 2, target@toc@h        # encoding: [0x3c,0x62,A,A]
86 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@h, kind: fixup_ppc_half16
87 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_HI target 0x0
88          addis 3, 2, target@toc@h
89
90 # CHECK: lwz 1, target@toc@l(3)          # encoding: [0x80,0x23,A,A]
91 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_half16
92 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO target 0x0
93          lwz 1, target@toc@l(3)
94
95 # CHECK: ld 1, target@toc@l(3)           # encoding: [0xe8,0x23,A,0bAAAAAA00]
96 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_half16ds
97 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO_DS target 0x0
98          ld 1, target@toc@l(3)
99
100 # FIXME: @tls
101
102
103 # CHECK: addis 3, 2, target@tprel@ha     # encoding: [0x3c,0x62,A,A]
104 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@ha, kind: fixup_ppc_half16
105 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HA target 0x0
106          addis 3, 2, target@tprel@ha
107
108 # CHECK: addi 3, 3, target@tprel@l       # encoding: [0x38,0x63,A,A]
109 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@tprel@l, kind: fixup_ppc_half16
110 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_LO target 0x0
111          addi 3, 3, target@tprel@l
112
113 # CHECK: addis 3, 2, target@dtprel@ha    # encoding: [0x3c,0x62,A,A]
114 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@ha, kind: fixup_ppc_half16
115 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HA target 0x0
116          addis 3, 2, target@dtprel@ha
117
118 # CHECK: addi 3, 3, target@dtprel@l      # encoding: [0x38,0x63,A,A]
119 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@dtprel@l, kind: fixup_ppc_half16
120 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_LO target 0x0
121          addi 3, 3, target@dtprel@l
122
123
124 # CHECK: addis 3, 2, target@got@tprel@ha # encoding: [0x3c,0x62,A,A]
125 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tprel@ha, kind: fixup_ppc_half16
126 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_HA target 0x0
127          addis 3, 2, target@got@tprel@ha
128
129 # CHECK: ld 1, target@got@tprel@l(3)     # encoding: [0xe8,0x23,A,0bAAAAAA00]
130 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tprel@l, kind: fixup_ppc_half16ds
131 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_LO_DS target 0x0
132          ld 1, target@got@tprel@l(3)
133
134
135 # CHECK: addis 3, 2, target@got@tlsgd@ha # encoding: [0x3c,0x62,A,A]
136 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsgd@ha, kind: fixup_ppc_half16
137 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_HA target 0x0
138          addis 3, 2, target@got@tlsgd@ha
139
140 # CHECK: addi 3, 3, target@got@tlsgd@l   # encoding: [0x38,0x63,A,A]
141 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsgd@l, kind: fixup_ppc_half16
142 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_LO target 0x0
143          addi 3, 3, target@got@tlsgd@l
144
145
146 # CHECK: addis 3, 2, target@got@tlsld@ha # encoding: [0x3c,0x62,A,A]
147 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsld@ha, kind: fixup_ppc_half16
148 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_HA target 0x0
149          addis 3, 2, target@got@tlsld@ha
150
151 # CHECK: addi 3, 3, target@got@tlsld@l   # encoding: [0x38,0x63,A,A]
152 # CHECK-NEXT:                            #   fixup A - offset: 2, value: target@got@tlsld@l, kind: fixup_ppc_half16
153 # CHECK-REL:                             0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_LO target 0x0
154          addi 3, 3, target@got@tlsld@l
155