1@ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
2  .syntax unified
3  .globl _func
4
5@ Check that the assembler can handle the documented syntax from the ARM ARM
6@ for loads and stores.
7
8_func:
9@ CHECK: _func
10
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
20
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]
27
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.
35
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
48
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]
58
59
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
68
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]
74
75
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
87
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]
96
97
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
106
107
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]
112
113
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
124
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]
132
133
134@------------------------------------------------------------------------------
135@ LDRD (label)
136@------------------------------------------------------------------------------
137        ldrd r2, r3, Lbaz
138Lbaz: .quad 0
139
140@ CHECK: ldrd	r2, r3, Lbaz            @ encoding: [0xd0'A',0x20'A',0x4f'A',0xe1'A']
141
142
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
150
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]
155
156
157@------------------------------------------------------------------------------
158@ LDRH (immediate)
159@------------------------------------------------------------------------------
160        ldrh r3, [r4]
161        ldrh r2, [r7, #4]
162        ldrh r1, [r8, #64]!
163        ldrh r12, [sp], #4
164
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]
169
170
171@------------------------------------------------------------------------------
172@ FIXME: LDRH (label)
173@------------------------------------------------------------------------------
174
175
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
184
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]
190
191
192@------------------------------------------------------------------------------
193@ LDRHT
194@------------------------------------------------------------------------------
195        ldrht r9, [r7], #128
196        ldrht r4, [r3], #-75
197        ldrht r9, [r7], r2
198        ldrht r4, [r3], -r2
199
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]
204
205
206@------------------------------------------------------------------------------
207@ LDRSB (immediate)
208@------------------------------------------------------------------------------
209        ldrsb r3, [r4]
210        ldrsb r2, [r7, #17]
211        ldrsb r1, [r8, #255]!
212        ldrsb r12, [sp], #9
213
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]
218
219
220@------------------------------------------------------------------------------
221@ FIXME: LDRSB (label)
222@------------------------------------------------------------------------------
223
224
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
233
234
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]
240
241
242@------------------------------------------------------------------------------
243@ LDRSBT
244@------------------------------------------------------------------------------
245        ldrsbt r5, [r6], #1
246        ldrsbt r3, [r8], #-12
247        ldrsbt r8, [r9], r5
248        ldrsbt r2, [r1], -r4
249
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]
254
255
256@------------------------------------------------------------------------------
257@ LDRSH (immediate)
258@------------------------------------------------------------------------------
259        ldrsh r5, [r9]
260        ldrsh r4, [r5, #7]
261        ldrsh r3, [r6, #55]!
262        ldrsh r2, [r7], #-9
263
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]
268
269
270@------------------------------------------------------------------------------
271@ FIXME: LDRSH (label)
272@------------------------------------------------------------------------------
273
274
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
283
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]
289
290
291@------------------------------------------------------------------------------
292@ LDRSHT
293@------------------------------------------------------------------------------
294        ldrsht r5, [r6], #1
295        ldrsht r3, [r8], #-12
296        ldrsht r8, [r9], r5
297        ldrsht r2, [r1], -r4
298
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]
303
304
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
314
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]
321
322@------------------------------------------------------------------------------
323@ FIXME: STR (literal)
324@------------------------------------------------------------------------------
325
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
337
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]
346
347
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
356
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]
362
363@------------------------------------------------------------------------------
364@ FIXME: STRB (literal)
365@------------------------------------------------------------------------------
366
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
378
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]
387
388
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
397
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]
402
403
404@------------------------------------------------------------------------------
405@ STRD (immediate)
406@------------------------------------------------------------------------------
407        strd r1, r2, [r4]
408        strd r2, r3, [r6, #1]
409        strd r3, r4, [r7, #22]!
410        strd r4, r5, [r8], #7
411        strd r5, r6, [sp], #0
412        strd r6, r7, [lr], #+0
413        strd r7, r8, [r9], #-0
414
415@ CHECK: strd	r1, r2, [r4]            @ encoding: [0xf0,0x10,0xc4,0xe1]
416@ CHECK: strd	r2, r3, [r6, #1]        @ encoding: [0xf1,0x20,0xc6,0xe1]
417@ CHECK: strd	r3, r4, [r7, #22]!      @ encoding: [0xf6,0x31,0xe7,0xe1]
418@ CHECK: strd	r4, r5, [r8], #7        @ encoding: [0xf7,0x40,0xc8,0xe0]
419@ CHECK: strd	r5, r6, [sp], #0        @ encoding: [0xf0,0x50,0xcd,0xe0]
420@ CHECK: strd	r6, r7, [lr], #0        @ encoding: [0xf0,0x60,0xce,0xe0]
421@ CHECK: strd	r7, r8, [r9], #-0       @ encoding: [0xf0,0x70,0x49,0xe0]
422
423
424@------------------------------------------------------------------------------
425@ FIXME: STRD (label)
426@------------------------------------------------------------------------------
427
428@------------------------------------------------------------------------------
429@ STRD (register)
430@------------------------------------------------------------------------------
431        strd r8, r9, [r4, r1]
432        strd r7, r8, [r3, r9]!
433        strd r6, r7, [r5], r8
434        strd r5, r6, [r12], -r10
435
436@ CHECK: strd	r8, r9, [r4, r1]        @ encoding: [0xf1,0x80,0x84,0xe1]
437@ CHECK: strd	r7, r8, [r3, r9]!       @ encoding: [0xf9,0x70,0xa3,0xe1]
438@ CHECK: strd	r6, r7, [r5], r8        @ encoding: [0xf8,0x60,0x85,0xe0]
439@ CHECK: strd	r5, r6, [r12], -r10     @ encoding: [0xfa,0x50,0x0c,0xe0]
440
441
442@------------------------------------------------------------------------------
443@ STRH (immediate)
444@------------------------------------------------------------------------------
445        strh r3, [r4]
446        strh r2, [r7, #4]
447        strh r1, [r8, #64]!
448        strh r12, [sp], #4
449
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]
454
455
456@------------------------------------------------------------------------------
457@ FIXME: STRH (label)
458@------------------------------------------------------------------------------
459
460
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
469
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]
475
476@------------------------------------------------------------------------------
477@ STRHT
478@------------------------------------------------------------------------------
479        strht r2, [r5], #76
480        strht r8, [r1], #-25
481        strht r5, [r3], r4
482        strht r6, [r8], -r0
483
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]
488
489@------------------------------------------------------------------------------
490@ GNU Assembler Compatibility
491@------------------------------------------------------------------------------
492
493	ldrd r0, [sp]
494	strd r0, [sp]
495
496@ CHECK: ldrd r0, r1, [sp]              @ encoding: [0xd0,0x00,0xcd,0xe1]
497@ CHECK: strd r0, r1, [sp]              @ encoding: [0xf0,0x00,0xcd,0xe1]
498
499