[obj2yaml] - Fix a comment. NFC.
[llvm-complete.git] / test / MC / ARM / arm-memory-instructions.s
blob416069ac5d2c38662c01809907e589b67442c7a7
1 @ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
2 .syntax unified
3 .globl _func
5 @ Check that the assembler can handle the documented syntax from the ARM ARM
6 @ for loads and stores.
8 _func:
9 @ CHECK: _func
11 @------------------------------------------------------------------------------
12 @ LDR (immediate)
13 @------------------------------------------------------------------------------
14 ldr r5, [r7]
15 ldr r6, [r3, #63]
16 ldr r2, [r4, #4095]!
17 ldr r1, [r2], #30
18 ldr r3, [r1], #-30
19 ldr r9, [r2], #-0
21 @ CHECK: ldr r5, [r7] @ encoding: [0x00,0x50,0x97,0xe5]
22 @ CHECK: ldr r6, [r3, #63] @ encoding: [0x3f,0x60,0x93,0xe5]
23 @ CHECK: ldr r2, [r4, #4095]! @ encoding: [0xff,0x2f,0xb4,0xe5]
24 @ CHECK: ldr r1, [r2], #30 @ encoding: [0x1e,0x10,0x92,0xe4]
25 @ CHECK: ldr r3, [r1], #-30 @ encoding: [0x1e,0x30,0x11,0xe4]
26 @ CHECK: ldr r9, [r2], #-0 @ encoding: [0x00,0x90,0x12,0xe4]
28 @------------------------------------------------------------------------------
29 @ FIXME: LDR (literal)
30 @------------------------------------------------------------------------------
31 @ label operands currently assert the show-encoding asm comment helper due
32 @ to the use of non-contiguous bit ranges for fixups in ARM. Once that's
33 @ cleaned up, we can write useful assembly testcases for these sorts of
34 @ instructions.
36 @------------------------------------------------------------------------------
37 @ LDR (register)
38 @------------------------------------------------------------------------------
39 ldr r3, [r8, r1]
40 ldr r2, [r5, -r3]
41 ldr r1, [r5, r9]!
42 ldr r6, [r7, -r8]!
43 ldr r1, [r0, r2, lsr #3]!
44 ldr r5, [r9], r2
45 ldr r4, [r3], -r6
46 ldr r3, [r8, -r2, lsl #15]
47 ldr r1, [r5], r3, asr #15
49 @ CHECK: ldr r3, [r8, r1] @ encoding: [0x01,0x30,0x98,0xe7]
50 @ CHECK: ldr r2, [r5, -r3] @ encoding: [0x03,0x20,0x15,0xe7]
51 @ CHECK: ldr r1, [r5, r9]! @ encoding: [0x09,0x10,0xb5,0xe7]
52 @ CHECK: ldr r6, [r7, -r8]! @ encoding: [0x08,0x60,0x37,0xe7]
53 @ CHECK: ldr r1, [r0, r2, lsr #3]! @ encoding: [0xa2,0x11,0xb0,0xe7]
54 @ CHECK: ldr r5, [r9], r2 @ encoding: [0x02,0x50,0x99,0xe6]
55 @ CHECK: ldr r4, [r3], -r6 @ encoding: [0x06,0x40,0x13,0xe6]
56 @ CHECK: ldr r3, [r8, -r2, lsl #15] @ encoding: [0x82,0x37,0x18,0xe7]
57 @ CHECK: ldr r1, [r5], r3, asr #15 @ encoding: [0xc3,0x17,0x95,0xe6]
60 @------------------------------------------------------------------------------
61 @ LDRB (immediate)
62 @------------------------------------------------------------------------------
63 ldrb r3, [r8]
64 ldrb r1, [sp, #63]
65 ldrb r9, [r3, #4095]!
66 ldrb r8, [r1], #22
67 ldrb r2, [r7], #-19
69 @ CHECK: ldrb r3, [r8] @ encoding: [0x00,0x30,0xd8,0xe5]
70 @ CHECK: ldrb r1, [sp, #63] @ encoding: [0x3f,0x10,0xdd,0xe5]
71 @ CHECK: ldrb r9, [r3, #4095]! @ encoding: [0xff,0x9f,0xf3,0xe5]
72 @ CHECK: ldrb r8, [r1], #22 @ encoding: [0x16,0x80,0xd1,0xe4]
73 @ CHECK: ldrb r2, [r7], #-19 @ encoding: [0x13,0x20,0x57,0xe4]
76 @------------------------------------------------------------------------------
77 @ LDRB (register)
78 @------------------------------------------------------------------------------
79 ldrb r9, [r8, r5]
80 ldrb r1, [r5, -r1]
81 ldrb r3, [r5, r2]!
82 ldrb r6, [r9, -r3]!
83 ldrb r2, [r1], r4
84 ldrb r8, [r4], -r5
85 ldrb r7, [r12, -r1, lsl #15]
86 ldrb r5, [r2], r9, asr #15
88 @ CHECK: ldrb r9, [r8, r5] @ encoding: [0x05,0x90,0xd8,0xe7]
89 @ CHECK: ldrb r1, [r5, -r1] @ encoding: [0x01,0x10,0x55,0xe7]
90 @ CHECK: ldrb r3, [r5, r2]! @ encoding: [0x02,0x30,0xf5,0xe7]
91 @ CHECK: ldrb r6, [r9, -r3]! @ encoding: [0x03,0x60,0x79,0xe7]
92 @ CHECK: ldrb r2, [r1], r4 @ encoding: [0x04,0x20,0xd1,0xe6]
93 @ CHECK: ldrb r8, [r4], -r5 @ encoding: [0x05,0x80,0x54,0xe6]
94 @ CHECK: ldrb r7, [r12, -r1, lsl #15] @ encoding: [0x81,0x77,0x5c,0xe7]
95 @ CHECK: ldrb r5, [r2], r9, asr #15 @ encoding: [0xc9,0x57,0xd2,0xe6]
98 @------------------------------------------------------------------------------
99 @ LDRBT
100 @------------------------------------------------------------------------------
101 @ FIXME: Optional offset operand.
102 ldrbt r3, [r1], #4
103 ldrbt r2, [r8], #-8
104 ldrbt r8, [r7], r6
105 ldrbt r1, [r2], -r6, lsl #12
108 @ CHECK: ldrbt r3, [r1], #4 @ encoding: [0x04,0x30,0xf1,0xe4]
109 @ CHECK: ldrbt r2, [r8], #-8 @ encoding: [0x08,0x20,0x78,0xe4]
110 @ CHECK: ldrbt r8, [r7], r6 @ encoding: [0x06,0x80,0xf7,0xe6]
111 @ CHECK: ldrbt r1, [r2], -r6, lsl #12 @ encoding: [0x06,0x16,0x72,0xe6]
114 @------------------------------------------------------------------------------
115 @ LDRD (immediate)
116 @------------------------------------------------------------------------------
117 ldrd r2, r3, [r5]
118 ldrd r6, r7, [r2, #15]
119 ldrd r0, r1, [r9, #32]!
120 ldrd r6, r7, [r1], #8
121 ldrd r0, r1, [r8], #0
122 ldrd r0, r1, [r8], #+0
123 ldrd r0, r1, [r8], #-0
125 @ CHECK: ldrd r2, r3, [r5] @ encoding: [0xd0,0x20,0xc5,0xe1]
126 @ CHECK: ldrd r6, r7, [r2, #15] @ encoding: [0xdf,0x60,0xc2,0xe1]
127 @ CHECK: ldrd r0, r1, [r9, #32]! @ encoding: [0xd0,0x02,0xe9,0xe1]
128 @ CHECK: ldrd r6, r7, [r1], #8 @ encoding: [0xd8,0x60,0xc1,0xe0]
129 @ CHECK: ldrd r0, r1, [r8], #0 @ encoding: [0xd0,0x00,0xc8,0xe0]
130 @ CHECK: ldrd r0, r1, [r8], #0 @ encoding: [0xd0,0x00,0xc8,0xe0]
131 @ CHECK: ldrd r0, r1, [r8], #-0 @ encoding: [0xd0,0x00,0x48,0xe0]
134 @------------------------------------------------------------------------------
135 @ LDRD (label)
136 @------------------------------------------------------------------------------
137 ldrd r2, r3, Lbaz
138 Lbaz: .quad 0
140 @ CHECK: ldrd r2, r3, Lbaz @ encoding: [0xd0'A',0x20'A',0x4f'A',0xe1'A']
143 @------------------------------------------------------------------------------
144 @ LDRD (register)
145 @------------------------------------------------------------------------------
146 ldrd r4, r5, [r1, r3]
147 ldrd r4, r5, [r7, r2]!
148 ldrd r0, r1, [r8], r12
149 ldrd r0, r1, [r8], -r12
151 @ CHECK: ldrd r4, r5, [r1, r3] @ encoding: [0xd3,0x40,0x81,0xe1]
152 @ CHECK: ldrd r4, r5, [r7, r2]! @ encoding: [0xd2,0x40,0xa7,0xe1]
153 @ CHECK: ldrd r0, r1, [r8], r12 @ encoding: [0xdc,0x00,0x88,0xe0]
154 @ CHECK: ldrd r0, r1, [r8], -r12 @ encoding: [0xdc,0x00,0x08,0xe0]
157 @------------------------------------------------------------------------------
158 @ LDRH (immediate)
159 @------------------------------------------------------------------------------
160 ldrh r3, [r4]
161 ldrh r2, [r7, #4]
162 ldrh r1, [r8, #64]!
163 ldrh r12, [sp], #4
165 @ CHECK: ldrh r3, [r4] @ encoding: [0xb0,0x30,0xd4,0xe1]
166 @ CHECK: ldrh r2, [r7, #4] @ encoding: [0xb4,0x20,0xd7,0xe1]
167 @ CHECK: ldrh r1, [r8, #64]! @ encoding: [0xb0,0x14,0xf8,0xe1]
168 @ CHECK: ldrh r12, [sp], #4 @ encoding: [0xb4,0xc0,0xdd,0xe0]
171 @------------------------------------------------------------------------------
172 @ FIXME: LDRH (label)
173 @------------------------------------------------------------------------------
176 @------------------------------------------------------------------------------
177 @ LDRH (register)
178 @------------------------------------------------------------------------------
179 ldrh r6, [r5, r4]
180 ldrh r3, [r8, r11]!
181 ldrh r1, [r2, -r1]!
182 ldrh r9, [r7], r2
183 ldrh r4, [r3], -r2
185 @ CHECK: ldrh r6, [r5, r4] @ encoding: [0xb4,0x60,0x95,0xe1]
186 @ CHECK: ldrh r3, [r8, r11]! @ encoding: [0xbb,0x30,0xb8,0xe1]
187 @ CHECK: ldrh r1, [r2, -r1]! @ encoding: [0xb1,0x10,0x32,0xe1]
188 @ CHECK: ldrh r9, [r7], r2 @ encoding: [0xb2,0x90,0x97,0xe0]
189 @ CHECK: ldrh r4, [r3], -r2 @ encoding: [0xb2,0x40,0x13,0xe0]
192 @------------------------------------------------------------------------------
193 @ LDRHT
194 @------------------------------------------------------------------------------
195 ldrht r9, [r7], #128
196 ldrht r4, [r3], #-75
197 ldrht r9, [r7], r2
198 ldrht r4, [r3], -r2
200 @ CHECK: ldrht r9, [r7], #128 @ encoding: [0xb0,0x98,0xf7,0xe0]
201 @ CHECK: ldrht r4, [r3], #-75 @ encoding: [0xbb,0x44,0x73,0xe0]
202 @ CHECK: ldrht r9, [r7], r2 @ encoding: [0xb2,0x90,0xb7,0xe0]
203 @ CHECK: ldrht r4, [r3], -r2 @ encoding: [0xb2,0x40,0x33,0xe0]
206 @------------------------------------------------------------------------------
207 @ LDRSB (immediate)
208 @------------------------------------------------------------------------------
209 ldrsb r3, [r4]
210 ldrsb r2, [r7, #17]
211 ldrsb r1, [r8, #255]!
212 ldrsb r12, [sp], #9
214 @ CHECK: ldrsb r3, [r4] @ encoding: [0xd0,0x30,0xd4,0xe1]
215 @ CHECK: ldrsb r2, [r7, #17] @ encoding: [0xd1,0x21,0xd7,0xe1]
216 @ CHECK: ldrsb r1, [r8, #255]! @ encoding: [0xdf,0x1f,0xf8,0xe1]
217 @ CHECK: ldrsb r12, [sp], #9 @ encoding: [0xd9,0xc0,0xdd,0xe0]
220 @------------------------------------------------------------------------------
221 @ FIXME: LDRSB (label)
222 @------------------------------------------------------------------------------
225 @------------------------------------------------------------------------------
226 @ LDRSB (register)
227 @------------------------------------------------------------------------------
228 ldrsb r6, [r5, r4]
229 ldrsb r3, [r8, r11]!
230 ldrsb r1, [r2, -r1]!
231 ldrsb r9, [r7], r2
232 ldrsb r4, [r3], -r2
235 @ CHECK: ldrsb r6, [r5, r4] @ encoding: [0xd4,0x60,0x95,0xe1]
236 @ CHECK: ldrsb r3, [r8, r11]! @ encoding: [0xdb,0x30,0xb8,0xe1]
237 @ CHECK: ldrsb r1, [r2, -r1]! @ encoding: [0xd1,0x10,0x32,0xe1]
238 @ CHECK: ldrsb r9, [r7], r2 @ encoding: [0xd2,0x90,0x97,0xe0]
239 @ CHECK: ldrsb r4, [r3], -r2 @ encoding: [0xd2,0x40,0x13,0xe0]
242 @------------------------------------------------------------------------------
243 @ LDRSBT
244 @------------------------------------------------------------------------------
245 ldrsbt r5, [r6], #1
246 ldrsbt r3, [r8], #-12
247 ldrsbt r8, [r9], r5
248 ldrsbt r2, [r1], -r4
250 @ CHECK: ldrsbt r5, [r6], #1 @ encoding: [0xd1,0x50,0xf6,0xe0]
251 @ CHECK: ldrsbt r3, [r8], #-12 @ encoding: [0xdc,0x30,0x78,0xe0]
252 @ CHECK: ldrsbt r8, [r9], r5 @ encoding: [0xd5,0x80,0xb9,0xe0]
253 @ CHECK: ldrsbt r2, [r1], -r4 @ encoding: [0xd4,0x20,0x31,0xe0]
256 @------------------------------------------------------------------------------
257 @ LDRSH (immediate)
258 @------------------------------------------------------------------------------
259 ldrsh r5, [r9]
260 ldrsh r4, [r5, #7]
261 ldrsh r3, [r6, #55]!
262 ldrsh r2, [r7], #-9
264 @ CHECK: ldrsh r5, [r9] @ encoding: [0xf0,0x50,0xd9,0xe1]
265 @ CHECK: ldrsh r4, [r5, #7] @ encoding: [0xf7,0x40,0xd5,0xe1]
266 @ CHECK: ldrsh r3, [r6, #55]! @ encoding: [0xf7,0x33,0xf6,0xe1]
267 @ CHECK: ldrsh r2, [r7], #-9 @ encoding: [0xf9,0x20,0x57,0xe0]
270 @------------------------------------------------------------------------------
271 @ FIXME: LDRSH (label)
272 @------------------------------------------------------------------------------
275 @------------------------------------------------------------------------------
276 @ LDRSH (register)
277 @------------------------------------------------------------------------------
278 ldrsh r3, [r1, r5]
279 ldrsh r4, [r6, r1]!
280 ldrsh r5, [r3, -r6]!
281 ldrsh r6, [r9], r8
282 ldrsh r7, [r8], -r3
284 @ CHECK: ldrsh r3, [r1, r5] @ encoding: [0xf5,0x30,0x91,0xe1]
285 @ CHECK: ldrsh r4, [r6, r1]! @ encoding: [0xf1,0x40,0xb6,0xe1]
286 @ CHECK: ldrsh r5, [r3, -r6]! @ encoding: [0xf6,0x50,0x33,0xe1]
287 @ CHECK: ldrsh r6, [r9], r8 @ encoding: [0xf8,0x60,0x99,0xe0]
288 @ CHECK: ldrsh r7, [r8], -r3 @ encoding: [0xf3,0x70,0x18,0xe0]
291 @------------------------------------------------------------------------------
292 @ LDRSHT
293 @------------------------------------------------------------------------------
294 ldrsht r5, [r6], #1
295 ldrsht r3, [r8], #-12
296 ldrsht r8, [r9], r5
297 ldrsht r2, [r1], -r4
299 @ CHECK: ldrsht r5, [r6], #1 @ encoding: [0xf1,0x50,0xf6,0xe0]
300 @ CHECK: ldrsht r3, [r8], #-12 @ encoding: [0xfc,0x30,0x78,0xe0]
301 @ CHECK: ldrsht r8, [r9], r5 @ encoding: [0xf5,0x80,0xb9,0xe0]
302 @ CHECK: ldrsht r2, [r1], -r4 @ encoding: [0xf4,0x20,0x31,0xe0]
305 @------------------------------------------------------------------------------
306 @ STR (immediate)
307 @------------------------------------------------------------------------------
308 str r8, [r12]
309 str r7, [r1, #12]
310 str r3, [r5, #40]!
311 str r9, [sp], #4095
312 str r1, [r7], #-128
313 str r1, [r0], #-0
315 @ CHECK: str r8, [r12] @ encoding: [0x00,0x80,0x8c,0xe5]
316 @ CHECK: str r7, [r1, #12] @ encoding: [0x0c,0x70,0x81,0xe5]
317 @ CHECK: str r3, [r5, #40]! @ encoding: [0x28,0x30,0xa5,0xe5]
318 @ CHECK: str r9, [sp], #4095 @ encoding: [0xff,0x9f,0x8d,0xe4]
319 @ CHECK: str r1, [r7], #-128 @ encoding: [0x80,0x10,0x07,0xe4]
320 @ CHECK: str r1, [r0], #-0 @ encoding: [0x00,0x10,0x00,0xe4]
322 @------------------------------------------------------------------------------
323 @ FIXME: STR (literal)
324 @------------------------------------------------------------------------------
326 @------------------------------------------------------------------------------
327 @ STR (register)
328 @------------------------------------------------------------------------------
329 str r9, [r6, r3]
330 str r8, [r0, -r2]
331 str r7, [r1, r6]!
332 str r6, [sp, -r1]!
333 str r5, [r3], r9
334 str r4, [r2], -r5
335 str r3, [r4, -r2, lsl #2]
336 str r2, [r7], r3, asr #24
338 @ CHECK: str r9, [r6, r3] @ encoding: [0x03,0x90,0x86,0xe7]
339 @ CHECK: str r8, [r0, -r2] @ encoding: [0x02,0x80,0x00,0xe7]
340 @ CHECK: str r7, [r1, r6]! @ encoding: [0x06,0x70,0xa1,0xe7]
341 @ CHECK: str r6, [sp, -r1]! @ encoding: [0x01,0x60,0x2d,0xe7]
342 @ CHECK: str r5, [r3], r9 @ encoding: [0x09,0x50,0x83,0xe6]
343 @ CHECK: str r4, [r2], -r5 @ encoding: [0x05,0x40,0x02,0xe6]
344 @ CHECK: str r3, [r4, -r2, lsl #2] @ encoding: [0x02,0x31,0x04,0xe7]
345 @ CHECK: str r2, [r7], r3, asr #24 @ encoding: [0x43,0x2c,0x87,0xe6]
348 @------------------------------------------------------------------------------
349 @ STRB (immediate)
350 @------------------------------------------------------------------------------
351 strb r9, [r2]
352 strb r7, [r1, #3]
353 strb r6, [r4, #405]!
354 strb r5, [r7], #72
355 strb r1, [sp], #-1
357 @ CHECK: strb r9, [r2] @ encoding: [0x00,0x90,0xc2,0xe5]
358 @ CHECK: strb r7, [r1, #3] @ encoding: [0x03,0x70,0xc1,0xe5]
359 @ CHECK: strb r6, [r4, #405]! @ encoding: [0x95,0x61,0xe4,0xe5]
360 @ CHECK: strb r5, [r7], #72 @ encoding: [0x48,0x50,0xc7,0xe4]
361 @ CHECK: strb r1, [sp], #-1 @ encoding: [0x01,0x10,0x4d,0xe4]
363 @------------------------------------------------------------------------------
364 @ FIXME: STRB (literal)
365 @------------------------------------------------------------------------------
367 @------------------------------------------------------------------------------
368 @ STRB (register)
369 @------------------------------------------------------------------------------
370 strb r1, [r2, r9]
371 strb r2, [r3, -r8]
372 strb r3, [r4, r7]!
373 strb r4, [r5, -r6]!
374 strb r5, [r6], r5
375 strb r6, [r2], -r4
376 strb r7, [r12, -r3, lsl #5]
377 strb sp, [r7], r2, asr #12
379 @ CHECK: strb r1, [r2, r9] @ encoding: [0x09,0x10,0xc2,0xe7]
380 @ CHECK: strb r2, [r3, -r8] @ encoding: [0x08,0x20,0x43,0xe7]
381 @ CHECK: strb r3, [r4, r7]! @ encoding: [0x07,0x30,0xe4,0xe7]
382 @ CHECK: strb r4, [r5, -r6]! @ encoding: [0x06,0x40,0x65,0xe7]
383 @ CHECK: strb r5, [r6], r5 @ encoding: [0x05,0x50,0xc6,0xe6]
384 @ CHECK: strb r6, [r2], -r4 @ encoding: [0x04,0x60,0x42,0xe6]
385 @ CHECK: strb r7, [r12, -r3, lsl #5] @ encoding: [0x83,0x72,0x4c,0xe7]
386 @ CHECK: strb sp, [r7], r2, asr #12 @ encoding: [0x42,0xd6,0xc7,0xe6]
389 @------------------------------------------------------------------------------
390 @ STRBT
391 @------------------------------------------------------------------------------
392 @ FIXME: Optional offset operand.
393 strbt r6, [r2], #12
394 strbt r5, [r6], #-13
395 strbt r4, [r9], r5
396 strbt r3, [r8], -r2, lsl #3
398 @ CHECK: strbt r6, [r2], #12 @ encoding: [0x0c,0x60,0xe2,0xe4]
399 @ CHECK: strbt r5, [r6], #-13 @ encoding: [0x0d,0x50,0x66,0xe4]
400 @ CHECK: strbt r4, [r9], r5 @ encoding: [0x05,0x40,0xe9,0xe6]
401 @ CHECK: strbt r3, [r8], -r2, lsl #3 @ encoding: [0x82,0x31,0x68,0xe6]
404 @------------------------------------------------------------------------------
405 @ STRD (immediate)
406 @------------------------------------------------------------------------------
407 strd r2, r3, [r4]
408 strd r2, r3, [r6, #1]
409 strd r0, r1, [r7, #22]!
410 strd r4, r5, [r8], #7
411 strd r4, r5, [sp], #0
412 strd r6, r7, [lr], #+0
413 strd r10, r11, [r9], #-0
415 @ CHECK: strd r2, r3, [r4] @ encoding: [0xf0,0x20,0xc4,0xe1]
416 @ CHECK: strd r2, r3, [r6, #1] @ encoding: [0xf1,0x20,0xc6,0xe1]
417 @ CHECK: strd r0, r1, [r7, #22]! @ encoding: [0xf6,0x01,0xe7,0xe1]
418 @ CHECK: strd r4, r5, [r8], #7 @ encoding: [0xf7,0x40,0xc8,0xe0]
419 @ CHECK: strd r4, r5, [sp], #0 @ encoding: [0xf0,0x40,0xcd,0xe0]
420 @ CHECK: strd r6, r7, [lr], #0 @ encoding: [0xf0,0x60,0xce,0xe0]
421 @ CHECK: strd r10, r11, [r9], #-0 @ encoding: [0xf0,0xa0,0x49,0xe0]
424 @------------------------------------------------------------------------------
425 @ FIXME: STRD (label)
426 @------------------------------------------------------------------------------
428 @------------------------------------------------------------------------------
429 @ STRD (register)
430 @------------------------------------------------------------------------------
431 strd r8, r9, [r4, r1]
432 strd r6, r7, [r3, r9]!
433 strd r6, r7, [r5], r8
434 strd r4, r5, [r12], -r10
436 @ CHECK: strd r8, r9, [r4, r1] @ encoding: [0xf1,0x80,0x84,0xe1]
437 @ CHECK: strd r6, r7, [r3, r9]! @ encoding: [0xf9,0x60,0xa3,0xe1]
438 @ CHECK: strd r6, r7, [r5], r8 @ encoding: [0xf8,0x60,0x85,0xe0]
439 @ CHECK: strd r4, r5, [r12], -r10 @ encoding: [0xfa,0x40,0x0c,0xe0]
442 @------------------------------------------------------------------------------
443 @ STRH (immediate)
444 @------------------------------------------------------------------------------
445 strh r3, [r4]
446 strh r2, [r7, #4]
447 strh r1, [r8, #64]!
448 strh r12, [sp], #4
450 @ CHECK: strh r3, [r4] @ encoding: [0xb0,0x30,0xc4,0xe1]
451 @ CHECK: strh r2, [r7, #4] @ encoding: [0xb4,0x20,0xc7,0xe1]
452 @ CHECK: strh r1, [r8, #64]! @ encoding: [0xb0,0x14,0xe8,0xe1]
453 @ CHECK: strh r12, [sp], #4 @ encoding: [0xb4,0xc0,0xcd,0xe0]
456 @------------------------------------------------------------------------------
457 @ FIXME: STRH (label)
458 @------------------------------------------------------------------------------
461 @------------------------------------------------------------------------------
462 @ STRH (register)
463 @------------------------------------------------------------------------------
464 strh r6, [r5, r4]
465 strh r3, [r8, r11]!
466 strh r1, [r2, -r1]!
467 strh r9, [r7], r2
468 strh r4, [r3], -r2
470 @ CHECK: strh r6, [r5, r4] @ encoding: [0xb4,0x60,0x85,0xe1]
471 @ CHECK: strh r3, [r8, r11]! @ encoding: [0xbb,0x30,0xa8,0xe1]
472 @ CHECK: strh r1, [r2, -r1]! @ encoding: [0xb1,0x10,0x22,0xe1]
473 @ CHECK: strh r9, [r7], r2 @ encoding: [0xb2,0x90,0x87,0xe0]
474 @ CHECK: strh r4, [r3], -r2 @ encoding: [0xb2,0x40,0x03,0xe0]
476 @------------------------------------------------------------------------------
477 @ STRHT
478 @------------------------------------------------------------------------------
479 strht r2, [r5], #76
480 strht r8, [r1], #-25
481 strht r5, [r3], r4
482 strht r6, [r8], -r0
484 @ CHECK: strht r2, [r5], #76 @ encoding: [0xbc,0x24,0xe5,0xe0]
485 @ CHECK: strht r8, [r1], #-25 @ encoding: [0xb9,0x81,0x61,0xe0]
486 @ CHECK: strht r5, [r3], r4 @ encoding: [0xb4,0x50,0xa3,0xe0]
487 @ CHECK: strht r6, [r8], -r0 @ encoding: [0xb0,0x60,0x28,0xe0]
489 @------------------------------------------------------------------------------
490 @ GNU Assembler Compatibility
491 @------------------------------------------------------------------------------
493 ldrd r0, [sp]
494 strd r0, [sp]
496 @ CHECK: ldrd r0, r1, [sp] @ encoding: [0xd0,0x00,0xcd,0xe1]
497 @ CHECK: strd r0, r1, [sp] @ encoding: [0xf0,0x00,0xcd,0xe1]