[SystemZ] Rework handling of constant PC-relative operands
[oota-llvm.git] / test / MC / SystemZ / insn-brc-01.s
1 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
2
3 #CHECK: brc     0, .[[LAB:L.*]]-65536   # encoding: [0xa7,0x04,A,A]
4 #CHECK:  fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
5         brc     0, -0x10000
6 #CHECK: brc     0, .[[LAB:L.*]]-2       # encoding: [0xa7,0x04,A,A]
7 #CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
8         brc     0, -2
9 #CHECK: brc     0, .[[LAB:L.*]]         # encoding: [0xa7,0x04,A,A]
10 #CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
11         brc     0, 0
12 #CHECK: brc     0, .[[LAB:L.*]]+65534   # encoding: [0xa7,0x04,A,A]
13 #CHECK:  fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
14         brc     0, 0xfffe
15
16 #CHECK: brc     0, foo                  # encoding: [0xa7,0x04,A,A]
17 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
18         brc     0, foo
19
20 #CHECK: brc     1, foo                  # encoding: [0xa7,0x14,A,A]
21 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
22 #CHECK: jo      foo                     # encoding: [0xa7,0x14,A,A]
23 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
24         brc     1, foo
25         jo      foo
26
27 #CHECK: brc     2, foo                  # encoding: [0xa7,0x24,A,A]
28 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
29 #CHECK: jh      foo                     # encoding: [0xa7,0x24,A,A]
30 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
31         brc     2, foo
32         jh      foo
33
34 #CHECK: brc     3, foo                  # encoding: [0xa7,0x34,A,A]
35 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
36 #CHECK: jnle    foo                     # encoding: [0xa7,0x34,A,A]
37 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
38         brc     3, foo
39         jnle    foo
40
41 #CHECK: brc     4, foo                  # encoding: [0xa7,0x44,A,A]
42 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
43 #CHECK: jl      foo                     # encoding: [0xa7,0x44,A,A]
44 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
45         brc     4, foo
46         jl      foo
47
48 #CHECK: brc     5, foo                  # encoding: [0xa7,0x54,A,A]
49 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
50 #CHECK: jnhe    foo                     # encoding: [0xa7,0x54,A,A]
51 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
52         brc     5, foo
53         jnhe    foo
54
55 #CHECK: brc     6, foo                  # encoding: [0xa7,0x64,A,A]
56 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
57 #CHECK: jlh     foo                     # encoding: [0xa7,0x64,A,A]
58 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
59         brc     6, foo
60         jlh     foo
61
62 #CHECK: brc     7, foo                  # encoding: [0xa7,0x74,A,A]
63 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
64 #CHECK: jne     foo                     # encoding: [0xa7,0x74,A,A]
65 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
66         brc     7, foo
67         jne     foo
68
69 #CHECK: brc     8, foo                  # encoding: [0xa7,0x84,A,A]
70 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
71 #CHECK: je      foo                     # encoding: [0xa7,0x84,A,A]
72 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
73         brc     8, foo
74         je      foo
75
76 #CHECK: brc     9, foo                  # encoding: [0xa7,0x94,A,A]
77 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
78 #CHECK: jnlh    foo                     # encoding: [0xa7,0x94,A,A]
79 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
80         brc     9, foo
81         jnlh    foo
82
83 #CHECK: brc     10, foo                 # encoding: [0xa7,0xa4,A,A]
84 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
85 #CHECK: jhe     foo                     # encoding: [0xa7,0xa4,A,A]
86 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
87         brc     10, foo
88         jhe     foo
89
90 #CHECK: brc     11, foo                 # encoding: [0xa7,0xb4,A,A]
91 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
92 #CHECK: jnl     foo                     # encoding: [0xa7,0xb4,A,A]
93 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
94         brc     11, foo
95         jnl     foo
96
97 #CHECK: brc     12, foo                 # encoding: [0xa7,0xc4,A,A]
98 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
99 #CHECK: jle     foo                     # encoding: [0xa7,0xc4,A,A]
100 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
101         brc     12, foo
102         jle     foo
103
104 #CHECK: brc     13, foo                 # encoding: [0xa7,0xd4,A,A]
105 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
106 #CHECK: jnh     foo                     # encoding: [0xa7,0xd4,A,A]
107 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
108         brc     13, foo
109         jnh     foo
110
111 #CHECK: brc     14, foo                 # encoding: [0xa7,0xe4,A,A]
112 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
113 #CHECK: jno     foo                     # encoding: [0xa7,0xe4,A,A]
114 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
115         brc     14, foo
116         jno     foo
117
118 #CHECK: brc     15, foo                 # encoding: [0xa7,0xf4,A,A]
119 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
120 #CHECK: j       foo                     # encoding: [0xa7,0xf4,A,A]
121 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
122         brc     15, foo
123         j       foo
124
125 #CHECK: brc     0, bar+100              # encoding: [0xa7,0x04,A,A]
126 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
127         brc     0, bar+100
128
129 #CHECK: jo      bar+100                 # encoding: [0xa7,0x14,A,A]
130 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
131         jo      bar+100
132
133 #CHECK: jh      bar+100                 # encoding: [0xa7,0x24,A,A]
134 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
135         jh      bar+100
136
137 #CHECK: jnle    bar+100                 # encoding: [0xa7,0x34,A,A]
138 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
139         jnle    bar+100
140
141 #CHECK: jl      bar+100                 # encoding: [0xa7,0x44,A,A]
142 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
143         jl      bar+100
144
145 #CHECK: jnhe    bar+100                 # encoding: [0xa7,0x54,A,A]
146 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
147         jnhe    bar+100
148
149 #CHECK: jlh     bar+100                 # encoding: [0xa7,0x64,A,A]
150 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
151         jlh     bar+100
152
153 #CHECK: jne     bar+100                 # encoding: [0xa7,0x74,A,A]
154 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
155         jne     bar+100
156
157 #CHECK: je      bar+100                 # encoding: [0xa7,0x84,A,A]
158 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
159         je      bar+100
160
161 #CHECK: jnlh    bar+100                 # encoding: [0xa7,0x94,A,A]
162 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
163         jnlh    bar+100
164
165 #CHECK: jhe     bar+100                 # encoding: [0xa7,0xa4,A,A]
166 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
167         jhe     bar+100
168
169 #CHECK: jnl     bar+100                 # encoding: [0xa7,0xb4,A,A]
170 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
171         jnl     bar+100
172
173 #CHECK: jle     bar+100                 # encoding: [0xa7,0xc4,A,A]
174 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
175         jle     bar+100
176
177 #CHECK: jnh     bar+100                 # encoding: [0xa7,0xd4,A,A]
178 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
179         jnh     bar+100
180
181 #CHECK: jno     bar+100                 # encoding: [0xa7,0xe4,A,A]
182 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
183         jno     bar+100
184
185 #CHECK: j       bar+100                 # encoding: [0xa7,0xf4,A,A]
186 #CHECK:  fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
187         j       bar+100
188
189 #CHECK: brc     0, bar@PLT              # encoding: [0xa7,0x04,A,A]
190 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
191         brc     0, bar@PLT
192
193 #CHECK: jo      bar@PLT                 # encoding: [0xa7,0x14,A,A]
194 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
195         jo      bar@PLT
196
197 #CHECK: jh      bar@PLT                 # encoding: [0xa7,0x24,A,A]
198 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
199         jh      bar@PLT
200
201 #CHECK: jnle    bar@PLT                 # encoding: [0xa7,0x34,A,A]
202 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
203         jnle    bar@PLT
204
205 #CHECK: jl      bar@PLT                 # encoding: [0xa7,0x44,A,A]
206 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
207         jl      bar@PLT
208
209 #CHECK: jnhe    bar@PLT                 # encoding: [0xa7,0x54,A,A]
210 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
211         jnhe    bar@PLT
212
213 #CHECK: jlh     bar@PLT                 # encoding: [0xa7,0x64,A,A]
214 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
215         jlh     bar@PLT
216
217 #CHECK: jne     bar@PLT                 # encoding: [0xa7,0x74,A,A]
218 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
219         jne     bar@PLT
220
221 #CHECK: je      bar@PLT                 # encoding: [0xa7,0x84,A,A]
222 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
223         je      bar@PLT
224
225 #CHECK: jnlh    bar@PLT                 # encoding: [0xa7,0x94,A,A]
226 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
227         jnlh    bar@PLT
228
229 #CHECK: jhe     bar@PLT                 # encoding: [0xa7,0xa4,A,A]
230 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
231         jhe     bar@PLT
232
233 #CHECK: jnl     bar@PLT                 # encoding: [0xa7,0xb4,A,A]
234 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
235         jnl     bar@PLT
236
237 #CHECK: jle     bar@PLT                 # encoding: [0xa7,0xc4,A,A]
238 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
239         jle     bar@PLT
240
241 #CHECK: jnh     bar@PLT                 # encoding: [0xa7,0xd4,A,A]
242 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
243         jnh     bar@PLT
244
245 #CHECK: jno     bar@PLT                 # encoding: [0xa7,0xe4,A,A]
246 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
247         jno     bar@PLT
248
249 #CHECK: j       bar@PLT                 # encoding: [0xa7,0xf4,A,A]
250 #CHECK:  fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
251         j       bar@PLT