15c23b644886194ab48977e849c3e6fb36e5d033
[oota-llvm.git] / test / MC / Disassembler / Hexagon / ld.txt
1 # RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.5 LD
3
4 # Load doubleword
5 0x90 0xff 0xd5 0x3a
6 # CHECK: r17:16 = memd(r21 + r31<<#3)
7 0x10 0xc5 0xc0 0x49
8 # CHECK: r17:16 = memd(##320)
9 0xb0 0xe0 0xd5 0x99
10 # CHECK: r17:16 = memd(r21 ++ #40:circ(m1))
11 0x10 0xe2 0xd5 0x99
12 # CHECK: r17:16 = memd(r21 ++ I:circ(m1))
13 0xb0 0xc0 0xd5 0x9b
14 # CHECK: r17:16 = memd(r21++#40)
15 0x10 0xe0 0xd5 0x9d
16 # CHECK: r17:16 = memd(r21++m1)
17 0x10 0xe0 0xd5 0x9f
18 # CHECK: r17:16 = memd(r21 ++ m1:brev)
19
20 # Load doubleword conditionally
21 0xf0 0xff 0xd5 0x30
22 # CHECK: if (p3) r17:16 = memd(r21+r31<<#3)
23 0xf0 0xff 0xd5 0x31
24 # CHECK: if (!p3) r17:16 = memd(r21+r31<<#3)
25 0x03 0x40 0x45 0x85 0xf0 0xff 0xd5 0x32
26 # CHECK: p3 = r5
27 # CHECK-NEXT: if (p3.new) r17:16 = memd(r21+r31<<#3)
28 0x03 0x40 0x45 0x85 0xf0 0xff 0xd5 0x33
29 # CHECK: p3 = r5
30 # CHECK-NEXT: if (!p3.new) r17:16 = memd(r21+r31<<#3)
31 0x70 0xd8 0xd5 0x41
32 # CHECK: if (p3) r17:16 = memd(r21 + #24)
33 0x03 0x40 0x45 0x85 0x70 0xd8 0xd5 0x43
34 # CHECK: p3 = r5
35 # CHECK-NEXT: if (p3.new) r17:16 = memd(r21 + #24)
36 0x70 0xd8 0xd5 0x45
37 # CHECK: if (!p3) r17:16 = memd(r21 + #24)
38 0x03 0x40 0x45 0x85 0x70 0xd8 0xd5 0x47
39 # CHECK: p3 = r5
40 # CHECK-NEXT: if (!p3.new) r17:16 = memd(r21 + #24)
41 0xb0 0xe6 0xd5 0x9b
42 # CHECK: if (p3) r17:16 = memd(r21++#40)
43 0xb0 0xee 0xd5 0x9b
44 # CHECK: if (!p3) r17:16 = memd(r21++#40)
45 0x03 0x40 0x45 0x85 0xb0 0xf6 0xd5 0x9b
46 # CHECK: p3 = r5
47 # CHECK-NEXT: if (p3.new) r17:16 = memd(r21++#40)
48 0x03 0x40 0x45 0x85 0xb0 0xfe 0xd5 0x9b
49 # CHECK: p3 = r5
50 # CHECK-NEXT: if (!p3.new) r17:16 = memd(r21++#40)
51
52 # Load byte
53 0x91 0xff 0x15 0x3a
54 # CHECK: r17 = memb(r21 + r31<<#3)
55 0xb1 0xc2 0x00 0x49
56 # CHECK: r17 = memb(##21)
57 0xf1 0xc3 0x15 0x91
58 # CHECK: r17 = memb(r21 + #31)
59 0xb1 0xe0 0x15 0x99
60 # CHECK: r17 = memb(r21 ++ #5:circ(m1))
61 0x11 0xe2 0x15 0x99
62 # CHECK: r17 = memb(r21 ++ I:circ(m1))
63 0xb1 0xc0 0x15 0x9b
64 # CHECK: r17 = memb(r21++#5)
65 0x11 0xe0 0x15 0x9d
66 # CHECK: r17 = memb(r21++m1)
67 0x11 0xe0 0x15 0x9f
68 # CHECK: r17 = memb(r21 ++ m1:brev)
69
70 # Load byte conditionally
71 0xf1 0xff 0x15 0x30
72 # CHECK: if (p3) r17 = memb(r21+r31<<#3)
73 0xf1 0xff 0x15 0x31
74 # CHECK: if (!p3) r17 = memb(r21+r31<<#3)
75 0x03 0x40 0x45 0x85 0xf1 0xff 0x15 0x32
76 # CHECK: p3 = r5
77 # CHECK-NEXT: if (p3.new) r17 = memb(r21+r31<<#3)
78 0x03 0x40 0x45 0x85 0xf1 0xff 0x15 0x33
79 # CHECK: p3 = r5
80 # CHECK-NEXT: if (!p3.new) r17 = memb(r21+r31<<#3)
81 0x91 0xdd 0x15 0x41
82 # CHECK: if (p3) r17 = memb(r21 + #44)
83 0x03 0x40 0x45 0x85 0x91 0xdd 0x15 0x43
84 # CHECK: p3 = r5
85 # CHECK-NEXT: if (p3.new) r17 = memb(r21 + #44)
86 0x91 0xdd 0x15 0x45
87 # CHECK: if (!p3) r17 = memb(r21 + #44)
88 0x03 0x40 0x45 0x85 0x91 0xdd 0x15 0x47
89 # CHECK: p3 = r5
90 # CHECK-NEXT: if (!p3.new) r17 = memb(r21 + #44)
91 0xb1 0xe6 0x15 0x9b
92 # CHECK: if (p3) r17 = memb(r21++#5)
93 0xb1 0xee 0x15 0x9b
94 # CHECK: if (!p3) r17 = memb(r21++#5)
95 0x03 0x40 0x45 0x85 0xb1 0xf6 0x15 0x9b
96 # CHECK: p3 = r5
97 # CHECK-NEXT: if (p3.new) r17 = memb(r21++#5)
98 0x03 0x40 0x45 0x85 0xb1 0xfe 0x15 0x9b
99 # CHECK: p3 = r5
100 # CHECK-NEXT: if (!p3.new) r17 = memb(r21++#5)
101
102 # Load halfword
103 0x91 0xff 0x55 0x3a
104 # CHECK: r17 = memh(r21 + r31<<#3)
105 0x51 0xc5 0x40 0x49
106 # CHECK: r17 = memh(##84)
107 0xf1 0xc3 0x55 0x91
108 # CHECK: r17 = memh(r21 + #62)
109 0xb1 0xe0 0x55 0x99
110 # CHECK: r17 = memh(r21 ++ #10:circ(m1))
111 0x11 0xe2 0x55 0x99
112 # CHECK: r17 = memh(r21 ++ I:circ(m1))
113 0xb1 0xc0 0x55 0x9b
114 # CHECK: r17 = memh(r21++#10)
115 0x11 0xe0 0x55 0x9d
116 # CHECK: r17 = memh(r21++m1)
117 0x11 0xe0 0x55 0x9f
118 # CHECK: r17 = memh(r21 ++ m1:brev)
119
120 # Load halfword conditionally
121 0xf1 0xff 0x55 0x30
122 # CHECK: if (p3) r17 = memh(r21+r31<<#3)
123 0xf1 0xff 0x55 0x31
124 # CHECK: if (!p3) r17 = memh(r21+r31<<#3)
125 0x03 0x40 0x45 0x85 0xf1 0xff 0x55 0x32
126 # CHECK: p3 = r5
127 # CHECK-NEXT: if (p3.new) r17 = memh(r21+r31<<#3)
128 0x03 0x40 0x45 0x85 0xf1 0xff 0x55 0x33
129 # CHECK: p3 = r5
130 # CHECK-NEXT: if (!p3.new) r17 = memh(r21+r31<<#3)
131 0xb1 0xe6 0x55 0x9b
132 # CHECK: if (p3) r17 = memh(r21++#10)
133 0xb1 0xee 0x55 0x9b
134 # CHECK: if (!p3) r17 = memh(r21++#10)
135 0x03 0x40 0x45 0x85 0xb1 0xf6 0x55 0x9b
136 # CHECK: p3 = r5
137 # CHECK-NEXT: if (p3.new) r17 = memh(r21++#10)
138 0x03 0x40 0x45 0x85 0xb1 0xfe 0x55 0x9b
139 # CHECK: p3 = r5
140 # CHECK-NEXT: if (!p3.new) r17 = memh(r21++#10)
141
142 # Load unsigned byte
143 0x91 0xff 0x35 0x3a
144 # CHECK: r17 = memub(r21 + r31<<#3)
145 0xb1 0xc2 0x20 0x49
146 # CHECK: r17 = memub(##21)
147 0xf1 0xc3 0x35 0x91
148 # CHECK: r17 = memub(r21 + #31)
149 0xb1 0xe0 0x35 0x99
150 # CHECK: r17 = memub(r21 ++ #5:circ(m1))
151 0x11 0xe2 0x35 0x99
152 # CHECK: r17 = memub(r21 ++ I:circ(m1))
153 0xb1 0xc0 0x35 0x9b
154 # CHECK: r17 = memub(r21++#5)
155 0x11 0xe0 0x35 0x9d
156 # CHECK: r17 = memub(r21++m1)
157 0x11 0xe0 0x35 0x9f
158 # CHECK: r17 = memub(r21 ++ m1:brev)
159
160 # Load unsigned byte conditionally
161 0xf1 0xff 0x35 0x30
162 # CHECK: if (p3) r17 = memub(r21+r31<<#3)
163 0xf1 0xff 0x35 0x31
164 # CHECK: if (!p3) r17 = memub(r21+r31<<#3)
165 0x03 0x40 0x45 0x85 0xf1 0xff 0x35 0x32
166 # CHECK: p3 = r5
167 # CHECK-NEXT: if (p3.new) r17 = memub(r21+r31<<#3)
168 0x03 0x40 0x45 0x85 0xf1 0xff 0x35 0x33
169 # CHECK: p3 = r5
170 # CHECK-NEXT: if (!p3.new) r17 = memub(r21+r31<<#3)
171 0xf1 0xdb 0x35 0x41
172 # CHECK: if (p3) r17 = memub(r21 + #31)
173 0x03 0x40 0x45 0x85 0xf1 0xdb 0x35 0x43
174 # CHECK: p3 = r5
175 # CHECK-NEXT: if (p3.new) r17 = memub(r21 + #31)
176 0xf1 0xdb 0x35 0x45
177 # CHECK: if (!p3) r17 = memub(r21 + #31)
178 0x03 0x40 0x45 0x85 0xf1 0xdb 0x35 0x47
179 # CHECK: p3 = r5
180 # CHECK-NEXT: if (!p3.new) r17 = memub(r21 + #31)
181 0xb1 0xe6 0x35 0x9b
182 # CHECK: if (p3) r17 = memub(r21++#5)
183 0xb1 0xee 0x35 0x9b
184 # CHECK: if (!p3) r17 = memub(r21++#5)
185 0x03 0x40 0x45 0x85 0xb1 0xf6 0x35 0x9b
186 # CHECK: p3 = r5
187 # CHECK-NEXT: if (p3.new) r17 = memub(r21++#5)
188 0x03 0x40 0x45 0x85 0xb1 0xfe 0x35 0x9b
189 # CHECK: p3 = r5
190 # CHECK-NEXT: if (!p3.new) r17 = memub(r21++#5)
191
192 # Load unsigned halfword
193 0x91 0xff 0x75 0x3a
194 # CHECK: r17 = memuh(r21 + r31<<#3)
195 0x51 0xc5 0x60 0x49
196 # CHECK: r17 = memuh(##84)
197 0xb1 0xc2 0x75 0x91
198 # CHECK: r17 = memuh(r21 + #42)
199 0xb1 0xe0 0x75 0x99
200 # CHECK: r17 = memuh(r21 ++ #10:circ(m1))
201 0x11 0xe2 0x75 0x99
202 # CHECK: r17 = memuh(r21 ++ I:circ(m1))
203 0xb1 0xc0 0x75 0x9b
204 # CHECK: r17 = memuh(r21++#10)
205 0x11 0xe0 0x75 0x9d
206 # CHECK: r17 = memuh(r21++m1)
207 0x11 0xe0 0x75 0x9f
208 # CHECK: r17 = memuh(r21 ++ m1:brev)
209
210 # Load unsigned halfword conditionally
211 0xf1 0xff 0x75 0x30
212 # CHECK: if (p3) r17 = memuh(r21+r31<<#3)
213 0xf1 0xff 0x75 0x31
214 # CHECK: if (!p3) r17 = memuh(r21+r31<<#3)
215 0x03 0x40 0x45 0x85 0xf1 0xff 0x75 0x32
216 # CHECK: p3 = r5
217 # CHECK-NEXT: if (p3.new) r17 = memuh(r21+r31<<#3)
218 0x03 0x40 0x45 0x85 0xf1 0xff 0x75 0x33
219 # CHECK: p3 = r5
220 # CHECK-NEXT: if (!p3.new) r17 = memuh(r21+r31<<#3)
221 0xb1 0xda 0x75 0x41
222 # CHECK: if (p3) r17 = memuh(r21 + #42)
223 0xb1 0xda 0x75 0x45
224 # CHECK: if (!p3) r17 = memuh(r21 + #42)
225 0x03 0x40 0x45 0x85 0xb1 0xda 0x75 0x43
226 # CHECK: p3 = r5
227 # CHECK-NEXT: if (p3.new) r17 = memuh(r21 + #42)
228 0x03 0x40 0x45 0x85 0xb1 0xda 0x75 0x47
229 # CHECK: p3 = r5
230 # CHECK-NEXT: if (!p3.new) r17 = memuh(r21 + #42)
231 0xb1 0xe6 0x75 0x9b
232 # CHECK: if (p3) r17 = memuh(r21++#10)
233 0xb1 0xee 0x75 0x9b
234 # CHECK: if (!p3) r17 = memuh(r21++#10)
235 0x03 0x40 0x45 0x85 0xb1 0xf6 0x75 0x9b
236 # CHECK: p3 = r5
237 # CHECK-NEXT: if (p3.new) r17 = memuh(r21++#10)
238 0x03 0x40 0x45 0x85 0xb1 0xfe 0x75 0x9b
239 # CHECK: p3 = r5
240 # CHECK-NEXT: if (!p3.new) r17 = memuh(r21++#10)
241
242 # Load word
243 0x91 0xff 0x95 0x3a
244 # CHECK: r17 = memw(r21 + r31<<#3)
245 0x91 0xc2 0x80 0x49
246 # CHECK: r17 = memw(##80)
247 0xb1 0xc2 0x95 0x91
248 # CHECK: r17 = memw(r21 + #84)
249 0xb1 0xe0 0x95 0x99
250 # CHECK: r17 = memw(r21 ++ #20:circ(m1))
251 0x11 0xe2 0x95 0x99
252 # CHECK: r17 = memw(r21 ++ I:circ(m1))
253 0xb1 0xc0 0x95 0x9b
254 # CHECK: r17 = memw(r21++#20)
255 0x11 0xe0 0x95 0x9d
256 # CHECK: r17 = memw(r21++m1)
257 0x11 0xe0 0x95 0x9f
258 # CHECK: r17 = memw(r21 ++ m1:brev)
259
260 # Load word conditionally
261 0xf1 0xff 0x95 0x30
262 # CHECK: if (p3) r17 = memw(r21+r31<<#3)
263 0xf1 0xff 0x95 0x31
264 # CHECK: if (!p3) r17 = memw(r21+r31<<#3)
265 0x03 0x40 0x45 0x85 0xf1 0xff 0x95 0x32
266 # CHECK: p3 = r5
267 # CHECK-NEXT: if (p3.new) r17 = memw(r21+r31<<#3)
268 0x03 0x40 0x45 0x85 0xf1 0xff 0x95 0x33
269 # CHECK: p3 = r5
270 # CHECK-NEXT: if (!p3.new) r17 = memw(r21+r31<<#3)
271 0xb1 0xda 0x95 0x41
272 # CHECK: if (p3) r17 = memw(r21 + #84)
273 0xb1 0xda 0x95 0x45
274 # CHECK: if (!p3) r17 = memw(r21 + #84)
275 0x03 0x40 0x45 0x85 0xb1 0xda 0x95 0x43
276 # CHECK: p3 = r5
277 # CHECK-NEXT: if (p3.new) r17 = memw(r21 + #84)
278 0x03 0x40 0x45 0x85 0xb1 0xda 0x95 0x47
279 # CHECK: p3 = r5
280 # CHECK-NEXT: if (!p3.new) r17 = memw(r21 + #84)
281 0xb1 0xe6 0x95 0x9b
282 # CHECK: if (p3) r17 = memw(r21++#20)
283 0xb1 0xee 0x95 0x9b
284 # CHECK: if (!p3) r17 = memw(r21++#20)
285 0x03 0x40 0x45 0x85 0xb1 0xf6 0x95 0x9b
286 # CHECK: p3 = r5
287 # CHECK-NEXT: if (p3.new) r17 = memw(r21++#20)
288 0x03 0x40 0x45 0x85 0xb1 0xfe 0x95 0x9b
289 # CHECK: p3 = r5
290 # CHECK-NEXT: if (!p3.new) r17 = memw(r21++#20)
291
292 # Deallocate stack frame
293 0x1e 0xc0 0x1e 0x90
294 # CHECK: deallocframe
295
296 # Deallocate stack frame and return
297 0x1e 0xc0 0x1e 0x96
298 # CHECK: dealloc_return
299 0x03 0x40 0x45 0x85 0x1e 0xcb 0x1e 0x96
300 # CHECK: p3 = r5
301 # CHECK-NEXT: if (p3.new) dealloc_return:nt
302 0x1e 0xd3 0x1e 0x96
303 # CHECK: if (p3) dealloc_return
304 0x03 0x40 0x45 0x85 0x1e 0xdb 0x1e 0x96
305 # CHECK: p3 = r5
306 # CHECK-NEXT: if (p3.new) dealloc_return:t
307 0x03 0x40 0x45 0x85 0x1e 0xeb 0x1e 0x96
308 # CHECK: p3 = r5
309 # CHECK-NEXT: if (!p3.new) dealloc_return:nt
310 0x1e 0xf3 0x1e 0x96
311 # CHECK: if (!p3) dealloc_return
312 0x03 0x40 0x45 0x85 0x1e 0xfb 0x1e 0x96
313 # CHECK: p3 = r5
314 # CHECK-NEXT: if (!p3.new) dealloc_return:t
315
316 # Load and unpack bytes to halfwords
317 0xf1 0xc3 0x35 0x90
318 # CHECK: r17 = membh(r21 + #62)
319 0xf1 0xc3 0x75 0x90
320 # CHECK: r17 = memubh(r21 + #62)
321 0xf0 0xc3 0xb5 0x90
322 # CHECK: r17:16 = memubh(r21 + #124)
323 0xf0 0xc3 0xf5 0x90
324 # CHECK: r17:16 = membh(r21 + #124)
325 0xb1 0xe0 0x35 0x98
326 # CHECK: r17 = membh(r21 ++ #10:circ(m1))
327 0x11 0xe2 0x35 0x98
328 # CHECK: r17 = membh(r21 ++ I:circ(m1))
329 0xb1 0xe0 0x75 0x98
330 # CHECK: r17 = memubh(r21 ++ #10:circ(m1))
331 0x11 0xe2 0x75 0x98
332 # CHECK: r17 = memubh(r21 ++ I:circ(m1))
333 0xb0 0xe0 0xf5 0x98
334 # CHECK: r17:16 = membh(r21 ++ #20:circ(m1))
335 0x10 0xe2 0xf5 0x98
336 # CHECK: r17:16 = membh(r21 ++ I:circ(m1))
337 0xb0 0xe0 0xb5 0x98
338 # CHECK: r17:16 = memubh(r21 ++ #20:circ(m1))
339 0x10 0xe2 0xb5 0x98
340 # CHECK: r17:16 = memubh(r21 ++ I:circ(m1))
341 0xb1 0xc0 0x35 0x9a
342 # CHECK: r17 = membh(r21++#10)
343 0xb1 0xc0 0x75 0x9a
344 # CHECK: r17 = memubh(r21++#10)
345 0xb0 0xc0 0xb5 0x9a
346 # CHECK: r17:16 = memubh(r21++#20)
347 0xb0 0xc0 0xf5 0x9a
348 # CHECK: r17:16 = membh(r21++#20)
349 0x11 0xe0 0x35 0x9c
350 # CHECK: r17 = membh(r21++m1)
351 0x11 0xe0 0x75 0x9c
352 # CHECK: r17 = memubh(r21++m1)
353 0x10 0xe0 0xf5 0x9c
354 # CHECK: r17:16 = membh(r21++m1)
355 0x10 0xe0 0xb5 0x9c
356 # CHECK: r17:16 = memubh(r21++m1)
357 0x11 0xe0 0x35 0x9e
358 # CHECK: r17 = membh(r21 ++ m1:brev)
359 0x11 0xe0 0x75 0x9e
360 # CHECK: r17 = memubh(r21 ++ m1:brev)
361 0x10 0xe0 0xb5 0x9e
362 # CHECK: r17:16 = memubh(r21 ++ m1:brev)
363 0x10 0xe0 0xf5 0x9e
364 # CHECK: r17:16 = membh(r21 ++ m1:brev)