Shuffle a few tests around.
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
1 @ RUN: llvm-mc -triple=thumbv7-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 complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11
12 @ FIXME: Some 3-operand instructions have a 2-operand assembly syntax.
13
14 _func:
15 @ CHECK: _func
16
17 @------------------------------------------------------------------------------
18 @ ADC (immediate)
19 @------------------------------------------------------------------------------
20         adc r0, r1, #4
21         adcs r0, r1, #0
22         adc r1, r2, #255
23         adc r3, r7, #0x00550055
24         adc r8, r12, #0xaa00aa00
25         adc r9, r7, #0xa5a5a5a5
26         adc r5, r3, #0x87000000
27         adc r4, r2, #0x7f800000
28         adc r4, r2, #0x00000680
29
30 @ CHECK: adc    r0, r1, #4              @ encoding: [0x41,0xf1,0x04,0x00]
31 @ CHECK: adcs   r0, r1, #0              @ encoding: [0x51,0xf1,0x00,0x00]
32 @ CHECK: adc    r1, r2, #255            @ encoding: [0x42,0xf1,0xff,0x01]
33 @ CHECK: adc    r3, r7, #5570645        @ encoding: [0x47,0xf1,0x55,0x13]
34 @ CHECK: adc    r8, r12, #2852170240    @ encoding: [0x4c,0xf1,0xaa,0x28]
35 @ CHECK: adc    r9, r7, #2779096485     @ encoding: [0x47,0xf1,0xa5,0x39]
36 @ CHECK: adc    r5, r3, #2264924160     @ encoding: [0x43,0xf1,0x07,0x45]
37 @ CHECK: adc    r4, r2, #2139095040     @ encoding: [0x42,0xf1,0xff,0x44]
38 @ CHECK: adc    r4, r2, #1664           @ encoding: [0x42,0xf5,0xd0,0x64]
39
40 @------------------------------------------------------------------------------
41 @ ADC (register)
42 @------------------------------------------------------------------------------
43         adc r4, r5, r6
44         adcs r4, r5, r6
45         adc.w r9, r1, r3
46         adcs.w r9, r1, r3
47         adc     r0, r1, r3, ror #4
48         adcs    r0, r1, r3, lsl #7
49         adc.w   r0, r1, r3, lsr #31
50         adcs.w  r0, r1, r3, asr #32
51
52 @ CHECK: adc.w  r4, r5, r6              @ encoding: [0x45,0xeb,0x06,0x04]
53 @ CHECK: adcs.w r4, r5, r6              @ encoding: [0x55,0xeb,0x06,0x04]
54 @ CHECK: adc.w  r9, r1, r3              @ encoding: [0x41,0xeb,0x03,0x09]
55 @ CHECK: adcs.w r9, r1, r3              @ encoding: [0x51,0xeb,0x03,0x09]
56 @ CHECK: adc.w  r0, r1, r3, ror #4      @ encoding: [0x41,0xeb,0x33,0x10]
57 @ CHECK: adcs.w r0, r1, r3, lsl #7      @ encoding: [0x51,0xeb,0xc3,0x10]
58 @ CHECK: adc.w  r0, r1, r3, lsr #31     @ encoding: [0x41,0xeb,0xd3,0x70]
59 @ CHECK: adcs.w r0, r1, r3, asr #32     @ encoding: [0x51,0xeb,0x23,0x00]
60
61
62 @------------------------------------------------------------------------------
63 @ ADD (immediate)
64 @------------------------------------------------------------------------------
65         itet eq
66         addeq r1, r2, #4
67         addwne r5, r3, #1023
68         addeq r4, r5, #293
69         add r2, sp, #1024
70         add r2, r8, #0xff00
71         add r2, r3, #257
72         addw r2, r3, #257
73         add r12, r6, #0x100
74         addw r12, r6, #0x100
75         adds r1, r2, #0x1f0
76
77 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
78 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
79 @ CHECK: addwne r5, r3, #1023           @ encoding: [0x03,0xf2,0xff,0x35]
80 @ CHECK: addweq r4, r5, #293            @ encoding: [0x05,0xf2,0x25,0x14]
81 @ CHECK: add.w  r2, sp, #1024           @ encoding: [0x0d,0xf5,0x80,0x62]
82 @ CHECK: add.w  r2, r8, #65280          @ encoding: [0x08,0xf5,0x7f,0x42]
83 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
84 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
85 @ CHECK: add.w  r12, r6, #256           @ encoding: [0x06,0xf5,0x80,0x7c]
86 @ CHECK: addw   r12, r6, #256           @ encoding: [0x06,0xf2,0x00,0x1c]
87 @ CHECK: adds.w r1, r2, #496            @ encoding: [0x12,0xf5,0xf8,0x71]
88
89
90 @------------------------------------------------------------------------------
91 @ ADD (register)
92 @------------------------------------------------------------------------------
93         add r1, r2, r8
94         add r5, r9, r2, asr #32
95         adds r7, r3, r1, lsl #31
96         adds.w r0, r3, r6, lsr #25
97         add.w r4, r8, r1, ror #12
98
99 @ CHECK: add.w  r1, r2, r8              @ encoding: [0x02,0xeb,0x08,0x01]
100 @ CHECK: add.w  r5, r9, r2, asr #32     @ encoding: [0x09,0xeb,0x22,0x05]
101 @ CHECK: adds.w r7, r3, r1, lsl #31     @ encoding: [0x13,0xeb,0xc1,0x77]
102 @ CHECK: adds.w r0, r3, r6, lsr #25     @ encoding: [0x13,0xeb,0x56,0x60]
103 @ CHECK: add.w  r4, r8, r1, ror #12     @ encoding: [0x08,0xeb,0x31,0x34]
104
105
106 @------------------------------------------------------------------------------
107 @ FIXME: ADR
108 @------------------------------------------------------------------------------
109
110         subw r11, pc, #3270
111         adr.w r11, #-826
112
113 @ CHECK: subw   r11, pc, #3270          @ encoding: [0xaf,0xf6,0xc6,0x4b]
114 @ CHECK: adr.w  r11, #-826              @ encoding: [0xaf,0xf2,0x3a,0x3b]
115
116 @------------------------------------------------------------------------------
117 @ AND (immediate)
118 @------------------------------------------------------------------------------
119         and r2, r5, #0xff000
120         ands r3, r12, #0xf
121         and r1, #0xff
122         and r1, r1, #0xff
123
124 @ CHECK: and    r2, r5, #1044480        @ encoding: [0x05,0xf4,0x7f,0x22]
125 @ CHECK: ands   r3, r12, #15            @ encoding: [0x1c,0xf0,0x0f,0x03]
126 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
127 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
128
129
130 @------------------------------------------------------------------------------
131 @ AND (register)
132 @------------------------------------------------------------------------------
133         and r4, r9, r8
134         and r1, r4, r8, asr #3
135         ands r2, r1, r7, lsl #1
136         ands.w r4, r5, r2, lsr #20
137         and.w r9, r12, r1, ror #17
138
139 @ CHECK: and.w  r4, r9, r8              @ encoding: [0x09,0xea,0x08,0x04]
140 @ CHECK: and.w  r1, r4, r8, asr #3      @ encoding: [0x04,0xea,0xe8,0x01]
141 @ CHECK: ands.w r2, r1, r7, lsl #1      @ encoding: [0x11,0xea,0x47,0x02]
142 @ CHECK: ands.w r4, r5, r2, lsr #20     @ encoding: [0x15,0xea,0x12,0x54]
143 @ CHECK: and.w  r9, r12, r1, ror #17    @ encoding: [0x0c,0xea,0x71,0x49]
144
145 @------------------------------------------------------------------------------
146 @ ASR (immediate)
147 @------------------------------------------------------------------------------
148         asr r2, r3, #12
149         asrs r8, r3, #32
150         asrs.w r2, r3, #1
151         asr r2, r3, #4
152         asrs r2, r12, #15
153
154         asr r3, #19
155         asrs r8, #2
156         asrs.w r7, #5
157         asr.w r12, #21
158
159 @ CHECK: asr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x23,0x32]
160 @ CHECK: asrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x23,0x08]
161 @ CHECK: asrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x63,0x02]
162 @ CHECK: asr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x23,0x12]
163 @ CHECK: asrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xec,0x32]
164
165 @ CHECK: asr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xe3,0x43]
166 @ CHECK: asrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0xa8,0x08]
167 @ CHECK: asrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x67,0x17]
168 @ CHECK: asr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x6c,0x5c]
169
170
171 @------------------------------------------------------------------------------
172 @ ASR (register)
173 @------------------------------------------------------------------------------
174         asr r3, r4, r2
175         asr.w r1, r2
176         asrs r3, r4, r8
177
178 @ CHECK: asr.w  r3, r4, r2              @ encoding: [0x44,0xfa,0x02,0xf3]
179 @ CHECK: asr.w  r1, r1, r2              @ encoding: [0x41,0xfa,0x02,0xf1]
180 @ CHECK: asrs.w r3, r4, r8              @ encoding: [0x54,0xfa,0x08,0xf3]
181
182
183 @------------------------------------------------------------------------------
184 @ B
185 @------------------------------------------------------------------------------
186         b.w   _bar
187         beq.w   _bar
188         it eq
189         beq.w _bar
190         bmi.w   #-183396
191
192 @ CHECK: b.w    _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
193           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
194 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x80'A']
195           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch
196 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
197 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
198           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
199 @ CHECK: bmi.w   #-183396                @ encoding: [0x13,0xf5,0xce,0xa9]
200
201
202 @------------------------------------------------------------------------------
203 @ BFC
204 @------------------------------------------------------------------------------
205         bfc r5, #3, #17
206         it lo
207         bfccc r5, #3, #17
208
209 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
210 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
211 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
212
213
214 @------------------------------------------------------------------------------
215 @ BFI
216 @------------------------------------------------------------------------------
217         bfi r5, r2, #3, #17
218         it ne
219         bfine r5, r2, #3, #17
220
221 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
222 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
223 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
224
225
226 @------------------------------------------------------------------------------
227 @ BIC
228 @------------------------------------------------------------------------------
229         bic r10, r1, #0xf
230         bic r12, r3, r6
231         bic r11, r2, r6, lsl #12
232         bic r8, r4, r1, lsr #11
233         bic r7, r5, r7, lsr #15
234         bic r6, r7, r9, asr #32
235         bic r5, r6, r8, ror #1
236
237         @ destination register is optional
238         bic r1, #0xf
239         bic r1, r1
240         bic r4, r2, lsl #31
241         bic r6, r3, lsr #12
242         bic r7, r4, lsr #7
243         bic r8, r5, asr #15
244         bic r12, r6, ror #29
245
246 @ CHECK: bic    r10, r1, #15            @ encoding: [0x21,0xf0,0x0f,0x0a]
247 @ CHECK: bic.w  r12, r3, r6             @ encoding: [0x23,0xea,0x06,0x0c]
248 @ CHECK: bic.w  r11, r2, r6, lsl #12    @ encoding: [0x22,0xea,0x06,0x3b]
249 @ CHECK: bic.w  r8, r4, r1, lsr #11     @ encoding: [0x24,0xea,0xd1,0x28]
250 @ CHECK: bic.w  r7, r5, r7, lsr #15     @ encoding: [0x25,0xea,0xd7,0x37]
251 @ CHECK: bic.w  r6, r7, r9, asr #32     @ encoding: [0x27,0xea,0x29,0x06]
252 @ CHECK: bic.w  r5, r6, r8, ror #1      @ encoding: [0x26,0xea,0x78,0x05]
253
254 @ CHECK: bic    r1, r1, #15             @ encoding: [0x21,0xf0,0x0f,0x01]
255 @ CHECK: bic.w  r1, r1, r1              @ encoding: [0x21,0xea,0x01,0x01]
256 @ CHECK: bic.w  r4, r4, r2, lsl #31     @ encoding: [0x24,0xea,0xc2,0x74]
257 @ CHECK: bic.w  r6, r6, r3, lsr #12     @ encoding: [0x26,0xea,0x13,0x36]
258 @ CHECK: bic.w  r7, r7, r4, lsr #7      @ encoding: [0x27,0xea,0xd4,0x17]
259 @ CHECK: bic.w  r8, r8, r5, asr #15     @ encoding: [0x28,0xea,0xe5,0x38]
260 @ CHECK: bic.w  r12, r12, r6, ror #29   @ encoding: [0x2c,0xea,0x76,0x7c]
261
262 @------------------------------------------------------------------------------
263 @ BKPT
264 @------------------------------------------------------------------------------
265         it pl
266         bkpt #234
267
268 @ CHECK: it pl                      @ encoding: [0x58,0xbf]
269 @ CHECK: bkpt #234                    @ encoding: [0xea,0xbe]
270
271 @------------------------------------------------------------------------------
272 @ BXJ
273 @------------------------------------------------------------------------------
274         bxj r5
275         it ne
276         bxjne r7
277
278 @ CHECK: bxj    r5                      @ encoding: [0xc5,0xf3,0x00,0x8f]
279 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
280 @ CHECK: bxjne  r7                      @ encoding: [0xc7,0xf3,0x00,0x8f]
281
282
283 @------------------------------------------------------------------------------
284 @ CBZ/CBNZ
285 @------------------------------------------------------------------------------
286         cbnz    r7, #6
287         cbnz    r7, #12
288         cbz   r6, _bar
289         cbnz   r6, _bar
290
291 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
292 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
293 @ CHECK: cbz    r6, _bar                @ encoding: [0x06'A',0xb1'A']
294            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
295 @ CHECK: cbnz   r6, _bar                @ encoding: [0x06'A',0xb9'A']
296            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
297
298
299 @------------------------------------------------------------------------------
300 @ CDP/CDP2
301 @------------------------------------------------------------------------------
302   cdp  p7, #1, c1, c1, c1, #4
303   cdp2  p7, #1, c1, c1, c1, #4
304
305 @ CHECK: cdp    p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xee,0x81,0x17]
306 @ CHECK: cdp2   p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xfe,0x81,0x17]
307
308
309 @------------------------------------------------------------------------------
310 @ CLREX
311 @------------------------------------------------------------------------------
312         clrex
313         it ne
314         clrexne
315
316 @ CHECK: clrex                           @ encoding: [0xbf,0xf3,0x2f,0x8f]
317 @ CHECK: it     ne                       @ encoding: [0x18,0xbf]
318 @ CHECK: clrexne                         @ encoding: [0xbf,0xf3,0x2f,0x8f]
319
320
321 @------------------------------------------------------------------------------
322 @ CLZ
323 @------------------------------------------------------------------------------
324         clz r1, r2
325         it eq
326         clzeq r1, r2
327
328 @ CHECK: clz    r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
329 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
330 @ CHECK: clzeq  r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
331
332
333 @------------------------------------------------------------------------------
334 @ CMN
335 @------------------------------------------------------------------------------
336         cmn r1, #0xf
337         cmn r8, r6
338         cmn r1, r6, lsl #10
339         cmn r1, r6, lsr #10
340         cmn sp, r6, lsr #10
341         cmn r1, r6, asr #10
342         cmn r1, r6, ror #10
343
344 @ CHECK: cmn.w  r1, #15                 @ encoding: [0x11,0xf1,0x0f,0x0f]
345 @ CHECK: cmn.w  r8, r6                  @ encoding: [0x18,0xeb,0x06,0x0f]
346 @ CHECK: cmn.w  r1, r6, lsl #10         @ encoding: [0x11,0xeb,0x86,0x2f]
347 @ CHECK: cmn.w  r1, r6, lsr #10         @ encoding: [0x11,0xeb,0x96,0x2f]
348 @ CHECK: cmn.w  sp, r6, lsr #10         @ encoding: [0x1d,0xeb,0x96,0x2f]
349 @ CHECK: cmn.w  r1, r6, asr #10         @ encoding: [0x11,0xeb,0xa6,0x2f]
350 @ CHECK: cmn.w  r1, r6, ror #10         @ encoding: [0x11,0xeb,0xb6,0x2f]
351
352
353 @------------------------------------------------------------------------------
354 @ CMP
355 @------------------------------------------------------------------------------
356         cmp r5, #0xff00
357         cmp.w r4, r12
358         cmp r9, r6, lsl #12
359         cmp r3, r7, lsr #31
360         cmp sp, r6, lsr #1
361         cmp r2, r5, asr #24
362         cmp r1, r4, ror #15
363
364 @ CHECK: cmp.w  r5, #65280              @ encoding: [0xb5,0xf5,0x7f,0x4f]
365 @ CHECK: cmp.w  r4, r12                 @ encoding: [0xb4,0xeb,0x0c,0x0f]
366 @ CHECK: cmp.w  r9, r6, lsl #12         @ encoding: [0xb9,0xeb,0x06,0x3f]
367 @ CHECK: cmp.w  r3, r7, lsr #31         @ encoding: [0xb3,0xeb,0xd7,0x7f]
368 @ CHECK: cmp.w  sp, r6, lsr #1          @ encoding: [0xbd,0xeb,0x56,0x0f]
369 @ CHECK: cmp.w  r2, r5, asr #24         @ encoding: [0xb2,0xeb,0x25,0x6f]
370 @ CHECK: cmp.w  r1, r4, ror #15         @ encoding: [0xb1,0xeb,0xf4,0x3f]
371
372
373 @------------------------------------------------------------------------------
374 @ DBG
375 @------------------------------------------------------------------------------
376         dbg #5
377         dbg #0
378         dbg #15
379
380 @ CHECK: dbg    #5                      @ encoding: [0xaf,0xf3,0xf5,0x80]
381 @ CHECK: dbg    #0                      @ encoding: [0xaf,0xf3,0xf0,0x80]
382 @ CHECK: dbg    #15                     @ encoding: [0xaf,0xf3,0xff,0x80]
383
384
385 @------------------------------------------------------------------------------
386 @ DMB
387 @------------------------------------------------------------------------------
388         dmb sy
389         dmb st
390         dmb sh
391         dmb ish
392         dmb shst
393         dmb ishst
394         dmb un
395         dmb nsh
396         dmb unst
397         dmb nshst
398         dmb osh
399         dmb oshst
400         dmb
401
402 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
403 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
404 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
405 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
406 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
407 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
408 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
409 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
410 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
411 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
412 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
413 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
414 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
415
416
417 @------------------------------------------------------------------------------
418 @ DSB
419 @------------------------------------------------------------------------------
420         dsb sy
421         dsb st
422         dsb sh
423         dsb ish
424         dsb shst
425         dsb ishst
426         dsb un
427         dsb nsh
428         dsb unst
429         dsb nshst
430         dsb osh
431         dsb oshst
432         dsb
433
434 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
435 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
436 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
437 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
438 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
439 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
440 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
441 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
442 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
443 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
444 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
445 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
446 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
447
448
449 @------------------------------------------------------------------------------
450 @ EOR
451 @------------------------------------------------------------------------------
452         eor r4, r5, #0xf000
453         eor r4, r5, r6
454         eor r4, r5, r6, lsl #5
455         eor r4, r5, r6, lsr #5
456         eor r4, r5, r6, lsr #5
457         eor r4, r5, r6, asr #5
458         eor r4, r5, r6, ror #5
459
460 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x85,0xf4,0x70,0x44]
461 @ CHECK: eor.w  r4, r5, r6              @ encoding: [0x85,0xea,0x06,0x04]
462 @ CHECK: eor.w  r4, r5, r6, lsl #5      @ encoding: [0x85,0xea,0x46,0x14]
463 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
464 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
465 @ CHECK: eor.w  r4, r5, r6, asr #5      @ encoding: [0x85,0xea,0x66,0x14]
466 @ CHECK: eor.w  r4, r5, r6, ror #5      @ encoding: [0x85,0xea,0x76,0x14]
467
468
469 @------------------------------------------------------------------------------
470 @ ISB
471 @------------------------------------------------------------------------------
472         isb sy
473         isb
474
475 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
476 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
477
478
479 @------------------------------------------------------------------------------
480 @ IT
481 @------------------------------------------------------------------------------
482 @ Test encodings of a few full IT blocks, not just the IT instruction
483
484         iteet eq
485         addeq r0, r1, r2
486         nopne
487         subne r5, r6, r7
488         addeq r1, r2, #4
489
490 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
491 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
492 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
493 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
494 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
495
496
497 @------------------------------------------------------------------------------
498 @ LDMIA
499 @------------------------------------------------------------------------------
500         ldmia.w r4, {r4, r5, r8, r9}
501         ldmia.w r4, {r5, r6}
502         ldmia.w r5!, {r3, r8}
503         ldm.w r4, {r4, r5, r8, r9}
504         ldm.w r4, {r5, r6}
505         ldm.w r5!, {r3, r8}
506         ldm.w r5!, {r1, r2}
507         ldm.w r2, {r1, r2}
508
509         ldmia r4, {r4, r5, r8, r9}
510         ldmia r4, {r5, r6}
511         ldmia r5!, {r3, r8}
512         ldm r4, {r4, r5, r8, r9}
513         ldm r4, {r5, r6}
514         ldm r5!, {r3, r8}
515         ldmfd r5!, {r3, r8}
516
517 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
518 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
519 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
520 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
521 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
522 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
523 @ CHECK: ldm.w  r5!, {r1, r2}           @ encoding: [0xb5,0xe8,0x06,0x00]
524 @ CHECK: ldm.w  r2, {r1, r2}            @ encoding: [0x92,0xe8,0x06,0x00]
525
526 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
527 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
528 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
529 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
530 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
531 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
532 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
533
534
535 @------------------------------------------------------------------------------
536 @ LDMDB
537 @------------------------------------------------------------------------------
538         ldmdb r4, {r4, r5, r8, r9}
539         ldmdb r4, {r5, r6}
540         ldmdb r5!, {r3, r8}
541         ldmea r5!, {r3, r8}
542
543 @ CHECK: ldmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x14,0xe9,0x30,0x03]
544 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
545 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
546 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
547
548
549 @------------------------------------------------------------------------------
550 @ LDR(immediate)
551 @------------------------------------------------------------------------------
552         ldr r5, [r5, #-4]
553         ldr r5, [r6, #32]
554         ldr r5, [r6, #33]
555         ldr r5, [r6, #257]
556         ldr.w pc, [r7, #257]
557         ldr r2, [r4, #255]!
558         ldr r8, [sp, #4]!
559         ldr lr, [sp, #-4]!
560         ldr r2, [r4], #255
561         ldr r8, [sp], #4
562         ldr lr, [sp], #-4
563
564 @ CHECK: ldr    r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
565 @ CHECK: ldr    r5, [r6, #32]           @ encoding: [0x35,0x6a]
566 @ CHECK: ldr.w  r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
567 @ CHECK: ldr.w  r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
568 @ CHECK: ldr.w  pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
569 @ CHECK: ldr    r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
570 @ CHECK: ldr    r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
571 @ CHECK: ldr    lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
572 @ CHECK: ldr    r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
573 @ CHECK: ldr    r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
574 @ CHECK: ldr    lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
575
576
577 @------------------------------------------------------------------------------
578 @ LDR(literal)
579 @------------------------------------------------------------------------------
580         ldr.w r5, _foo
581
582 @ CHECK: ldr.w  r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
583             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
584
585
586 @------------------------------------------------------------------------------
587 @ LDR(register)
588 @------------------------------------------------------------------------------
589         ldr r1, [r8, r1]
590         ldr.w r4, [r5, r2]
591         ldr r6, [r0, r2, lsl #3]
592         ldr r8, [r8, r2, lsl #2]
593         ldr r7, [sp, r2, lsl #1]
594         ldr r7, [sp, r2, lsl #0]
595
596 @ CHECK: ldr.w  r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
597 @ CHECK: ldr.w  r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
598 @ CHECK: ldr.w  r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
599 @ CHECK: ldr.w  r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
600 @ CHECK: ldr.w  r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
601 @ CHECK: ldr.w  r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
602
603
604 @------------------------------------------------------------------------------
605 @ LDRB(immediate)
606 @------------------------------------------------------------------------------
607         ldrb r5, [r5, #-4]
608         ldrb r5, [r6, #32]
609         ldrb r5, [r6, #33]
610         ldrb r5, [r6, #257]
611         ldrb.w lr, [r7, #257]
612
613 @ CHECK: ldrb   r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
614 @ CHECK: ldrb.w r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
615 @ CHECK: ldrb.w r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
616 @ CHECK: ldrb.w r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
617 @ CHECK: ldrb.w lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
618
619
620 @------------------------------------------------------------------------------
621 @ LDRB(register)
622 @------------------------------------------------------------------------------
623         ldrb r1, [r8, r1]
624         ldrb.w r4, [r5, r2]
625         ldrb r6, [r0, r2, lsl #3]
626         ldrb r8, [r8, r2, lsl #2]
627         ldrb r7, [sp, r2, lsl #1]
628         ldrb r7, [sp, r2, lsl #0]
629         ldrb r5, [r8, #255]!
630         ldrb r2, [r5, #4]!
631         ldrb r1, [r4, #-4]!
632         ldrb lr, [r3], #255
633         ldrb r9, [r2], #4
634         ldrb r3, [sp], #-4
635
636 @ CHECK: ldrb.w r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
637 @ CHECK: ldrb.w r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
638 @ CHECK: ldrb.w r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
639 @ CHECK: ldrb.w r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
640 @ CHECK: ldrb.w r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
641 @ CHECK: ldrb.w r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
642 @ CHECK: ldrb   r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
643 @ CHECK: ldrb   r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
644 @ CHECK: ldrb   r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
645 @ CHECK: ldrb   lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
646 @ CHECK: ldrb   r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
647 @ CHECK: ldrb   r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
648
649
650 @------------------------------------------------------------------------------
651 @ LDRBT
652 @------------------------------------------------------------------------------
653         ldrbt r1, [r2]
654         ldrbt r1, [r8, #0]
655         ldrbt r1, [r8, #3]
656         ldrbt r1, [r8, #255]
657
658 @ CHECK: ldrbt  r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
659 @ CHECK: ldrbt  r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
660 @ CHECK: ldrbt  r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
661 @ CHECK: ldrbt  r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
662
663
664 @------------------------------------------------------------------------------
665 @ LDRD(immediate)
666 @------------------------------------------------------------------------------
667         ldrd r3, r5, [r6, #24]
668         ldrd r3, r5, [r6, #24]!
669         ldrd r3, r5, [r6], #4
670         ldrd r3, r5, [r6], #-8
671         ldrd r3, r5, [r6]
672         ldrd r8, r1, [r3, #0]
673
674 @ CHECK: ldrd   r3, r5, [r6, #24]       @ encoding: [0xd6,0xe9,0x06,0x35]
675 @ CHECK: ldrd   r3, r5, [r6, #24]!      @ encoding: [0xf6,0xe9,0x06,0x35]
676 @ CHECK: ldrd   r3, r5, [r6], #4        @ encoding: [0xf6,0xe8,0x01,0x35]
677 @ CHECK: ldrd   r3, r5, [r6], #-8       @ encoding: [0x76,0xe8,0x02,0x35]
678 @ CHECK: ldrd   r3, r5, [r6]            @ encoding: [0xd6,0xe9,0x00,0x35]
679 @ CHECK: ldrd   r8, r1, [r3]            @ encoding: [0xd3,0xe9,0x00,0x81]
680
681
682 @------------------------------------------------------------------------------
683 @ FIXME: LDRD(literal)
684 @------------------------------------------------------------------------------
685
686
687 @------------------------------------------------------------------------------
688 @ LDREX/LDREXB/LDREXH/LDREXD
689 @------------------------------------------------------------------------------
690         ldrex r1, [r4]
691         ldrex r8, [r4, #0]
692         ldrex r2, [sp, #128]
693         ldrexb r5, [r7]
694         ldrexh r9, [r12]
695         ldrexd r9, r3, [r4]
696
697 @ CHECK: ldrex  r1, [r4]                @ encoding: [0x54,0xe8,0x00,0x1f]
698 @ CHECK: ldrex  r8, [r4]                @ encoding: [0x54,0xe8,0x00,0x8f]
699 @ CHECK: ldrex  r2, [sp, #128]          @ encoding: [0x5d,0xe8,0x20,0x2f]
700 @ CHECK: ldrexb r5, [r7]                @ encoding: [0xd7,0xe8,0x4f,0x5f]
701 @ CHECK: ldrexh r9, [r12]               @ encoding: [0xdc,0xe8,0x5f,0x9f]
702 @ CHECK: ldrexd r9, r3, [r4]            @ encoding: [0xd4,0xe8,0x7f,0x93]
703
704
705 @------------------------------------------------------------------------------
706 @ LDRH(immediate)
707 @------------------------------------------------------------------------------
708         ldrh r5, [r5, #-4]
709         ldrh r5, [r6, #32]
710         ldrh r5, [r6, #33]
711         ldrh r5, [r6, #257]
712         ldrh.w lr, [r7, #257]
713
714 @ CHECK: ldrh   r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
715 @ CHECK: ldrh   r5, [r6, #32]           @ encoding: [0x35,0x8c]
716 @ CHECK: ldrh.w r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
717 @ CHECK: ldrh.w r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
718 @ CHECK: ldrh.w lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
719
720
721 @------------------------------------------------------------------------------
722 @ LDRH(register)
723 @------------------------------------------------------------------------------
724         ldrh r1, [r8, r1]
725         ldrh.w r4, [r5, r2]
726         ldrh r6, [r0, r2, lsl #3]
727         ldrh r8, [r8, r2, lsl #2]
728         ldrh r7, [sp, r2, lsl #1]
729         ldrh r7, [sp, r2, lsl #0]
730         ldrh r5, [r8, #255]!
731         ldrh r2, [r5, #4]!
732         ldrh r1, [r4, #-4]!
733         ldrh lr, [r3], #255
734         ldrh r9, [r2], #4
735         ldrh r3, [sp], #-4
736
737 @ CHECK: ldrh.w r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
738 @ CHECK: ldrh.w r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
739 @ CHECK: ldrh.w r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
740 @ CHECK: ldrh.w r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
741 @ CHECK: ldrh.w r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
742 @ CHECK: ldrh.w r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
743 @ CHECK: ldrh   r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
744 @ CHECK: ldrh   r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
745 @ CHECK: ldrh   r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
746 @ CHECK: ldrh   lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
747 @ CHECK: ldrh   r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
748 @ CHECK: ldrh   r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
749
750
751 @------------------------------------------------------------------------------
752 @ LDRH(literal)
753 @------------------------------------------------------------------------------
754         ldrh r5, _bar
755
756 @ CHECK: ldrh.w r5, _bar                @ encoding: [0xbf'A',0xf8'A',A,0x50'A']
757 @ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
758
759
760 @------------------------------------------------------------------------------
761 @ LDRSB(immediate)
762 @------------------------------------------------------------------------------
763         ldrsb r5, [r5, #-4]
764         ldrsb r5, [r6, #32]
765         ldrsb r5, [r6, #33]
766         ldrsb r5, [r6, #257]
767         ldrsb.w lr, [r7, #257]
768
769 @ CHECK: ldrsb  r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
770 @ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
771 @ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
772 @ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
773 @ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
774
775
776 @------------------------------------------------------------------------------
777 @ LDRSB(register)
778 @------------------------------------------------------------------------------
779         ldrsb r1, [r8, r1]
780         ldrsb.w r4, [r5, r2]
781         ldrsb r6, [r0, r2, lsl #3]
782         ldrsb r8, [r8, r2, lsl #2]
783         ldrsb r7, [sp, r2, lsl #1]
784         ldrsb r7, [sp, r2, lsl #0]
785         ldrsb r5, [r8, #255]!
786         ldrsb r2, [r5, #4]!
787         ldrsb r1, [r4, #-4]!
788         ldrsb lr, [r3], #255
789         ldrsb r9, [r2], #4
790         ldrsb r3, [sp], #-4
791
792 @ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
793 @ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
794 @ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
795 @ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
796 @ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
797 @ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
798 @ CHECK: ldrsb  r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
799 @ CHECK: ldrsb  r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
800 @ CHECK: ldrsb  r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
801 @ CHECK: ldrsb  lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
802 @ CHECK: ldrsb  r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
803 @ CHECK: ldrsb  r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
804
805
806 @------------------------------------------------------------------------------
807 @ LDRSB(literal)
808 @------------------------------------------------------------------------------
809         ldrsb r5, _bar
810
811 @ CHECK: ldrsb.w r5, _bar               @ encoding: [0x9f'A',0xf9'A',A,0x50'A']
812 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
813
814
815 @------------------------------------------------------------------------------
816 @ LDRSBT
817 @------------------------------------------------------------------------------
818         ldrsbt r1, [r2]
819         ldrsbt r1, [r8, #0]
820         ldrsbt r1, [r8, #3]
821         ldrsbt r1, [r8, #255]
822
823 @ CHECK: ldrsbt r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
824 @ CHECK: ldrsbt r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
825 @ CHECK: ldrsbt r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
826 @ CHECK: ldrsbt r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
827
828
829 @------------------------------------------------------------------------------
830 @ LDRSH(immediate)
831 @------------------------------------------------------------------------------
832         ldrsh r5, [r5, #-4]
833         ldrsh r5, [r6, #32]
834         ldrsh r5, [r6, #33]
835         ldrsh r5, [r6, #257]
836         ldrsh.w lr, [r7, #257]
837
838 @ CHECK: ldrsh  r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
839 @ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
840 @ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
841 @ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
842 @ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
843
844
845 @------------------------------------------------------------------------------
846 @ LDRSH(register)
847 @------------------------------------------------------------------------------
848         ldrsh r1, [r8, r1]
849         ldrsh.w r4, [r5, r2]
850         ldrsh r6, [r0, r2, lsl #3]
851         ldrsh r8, [r8, r2, lsl #2]
852         ldrsh r7, [sp, r2, lsl #1]
853         ldrsh r7, [sp, r2, lsl #0]
854         ldrsh r5, [r8, #255]!
855         ldrsh r2, [r5, #4]!
856         ldrsh r1, [r4, #-4]!
857         ldrsh lr, [r3], #255
858         ldrsh r9, [r2], #4
859         ldrsh r3, [sp], #-4
860
861 @ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
862 @ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
863 @ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
864 @ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
865 @ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
866 @ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
867 @ CHECK: ldrsh  r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
868 @ CHECK: ldrsh  r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
869 @ CHECK: ldrsh  r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
870 @ CHECK: ldrsh  lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
871 @ CHECK: ldrsh  r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
872 @ CHECK: ldrsh  r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
873
874
875 @------------------------------------------------------------------------------
876 @ LDRSH(literal)
877 @------------------------------------------------------------------------------
878         ldrsh r5, _bar
879         ldrsh.w r4, #1435
880
881 @ CHECK: ldrsh.w r5, _bar               @ encoding: [0xbf'A',0xf9'A',A,0x50'A']
882 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
883 @ CHECK: ldrsh.w r4, #1435               @ encoding: [0x3f,0xf9,0x9b,0x45]
884
885 @------------------------------------------------------------------------------
886 @ LDRSHT
887 @------------------------------------------------------------------------------
888         ldrsht r1, [r2]
889         ldrsht r1, [r8, #0]
890         ldrsht r1, [r8, #3]
891         ldrsht r1, [r8, #255]
892
893 @ CHECK: ldrsht r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
894 @ CHECK: ldrsht r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
895 @ CHECK: ldrsht r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
896 @ CHECK: ldrsht r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
897
898
899 @------------------------------------------------------------------------------
900 @ LDRT
901 @------------------------------------------------------------------------------
902         ldrt r1, [r2]
903         ldrt r2, [r6, #0]
904         ldrt r3, [r7, #3]
905         ldrt r4, [r9, #255]
906
907 @ CHECK: ldrt   r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
908 @ CHECK: ldrt   r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
909 @ CHECK: ldrt   r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
910 @ CHECK: ldrt   r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
911
912
913 @------------------------------------------------------------------------------
914 @ LSL (immediate)
915 @------------------------------------------------------------------------------
916         lsl r2, r3, #12
917         lsls r8, r3, #31
918         lsls.w r2, r3, #1
919         lsl r2, r3, #4
920         lsls r2, r12, #15
921
922         lsl r3, #19
923         lsls r8, #2
924         lsls.w r7, #5
925         lsl.w r12, #21
926
927 @ CHECK: lsl.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
928 @ CHECK: lsls.w r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
929 @ CHECK: lsls.w r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
930 @ CHECK: lsl.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
931 @ CHECK: lsls.w r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
932
933 @ CHECK: lsl.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
934 @ CHECK: lsls.w r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
935 @ CHECK: lsls.w r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
936 @ CHECK: lsl.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
937
938
939 @------------------------------------------------------------------------------
940 @ LSL (register)
941 @------------------------------------------------------------------------------
942         lsl r3, r4, r2
943         lsl.w r1, r2
944         lsls r3, r4, r8
945
946 @ CHECK: lsl.w  r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
947 @ CHECK: lsl.w  r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
948 @ CHECK: lsls.w r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
949
950
951 @------------------------------------------------------------------------------
952 @ LSR (immediate)
953 @------------------------------------------------------------------------------
954         lsr r2, r3, #12
955         lsrs r8, r3, #32
956         lsrs.w r2, r3, #1
957         lsr r2, r3, #4
958         lsrs r2, r12, #15
959
960         lsr r3, #19
961         lsrs r8, #2
962         lsrs.w r7, #5
963         lsr.w r12, #21
964
965 @ CHECK: lsr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
966 @ CHECK: lsrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
967 @ CHECK: lsrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
968 @ CHECK: lsr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
969 @ CHECK: lsrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
970
971 @ CHECK: lsr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
972 @ CHECK: lsrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
973 @ CHECK: lsrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
974 @ CHECK: lsr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
975
976
977 @------------------------------------------------------------------------------
978 @ LSR (register)
979 @------------------------------------------------------------------------------
980         lsr r3, r4, r2
981         lsr.w r1, r2
982         lsrs r3, r4, r8
983
984 @ CHECK: lsr.w  r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
985 @ CHECK: lsr.w  r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
986 @ CHECK: lsrs.w r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
987
988 @------------------------------------------------------------------------------
989 @ MCR/MCR2
990 @------------------------------------------------------------------------------
991         mcr  p7, #1, r5, c1, c1, #4
992         mcr2  p7, #1, r5, c1, c1, #4
993
994 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
995 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
996
997
998 @------------------------------------------------------------------------------
999 @ MCRR/MCRR2
1000 @------------------------------------------------------------------------------
1001         mcrr  p7, #15, r5, r4, c1
1002         mcrr2  p7, #15, r5, r4, c1
1003
1004 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1005 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1006
1007
1008 @------------------------------------------------------------------------------
1009 @ MLA/MLS
1010 @------------------------------------------------------------------------------
1011         mla  r1,r2,r3,r4
1012         mls  r1,r2,r3,r4
1013
1014 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1015 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1016
1017
1018 @------------------------------------------------------------------------------
1019 @ MOV(immediate)
1020 @------------------------------------------------------------------------------
1021         movs r1, #21
1022         movs.w r1, #21
1023         movs r8, #21
1024         movw r0, #65535
1025         movw r1, #43777
1026         movw r1, #43792
1027         mov.w r0, #0x3fc0000
1028         mov r0, #0x3fc0000
1029         movs.w r0, #0x3fc0000
1030         itte eq
1031         movseq r1, #12
1032         moveq r1, #12
1033         movne.w r1, #12
1034         mov.w r6, #450
1035
1036 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1037 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1038 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1039 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1040 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1041 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1042 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1043 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1044 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1045 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1046 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1047 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1048 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1049 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1050
1051
1052 @------------------------------------------------------------------------------
1053 @ MOVT
1054 @------------------------------------------------------------------------------
1055         movt r3, #7
1056         movt r6, #0xffff
1057         it eq
1058         movteq r4, #0xff0
1059
1060 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1061 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1062 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1063 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1064
1065 @------------------------------------------------------------------------------
1066 @ MRC/MRC2
1067 @------------------------------------------------------------------------------
1068         mrc  p14, #0, r1, c1, c2, #4
1069         mrc2  p14, #0, r1, c1, c2, #4
1070
1071 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1072 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1073
1074
1075 @------------------------------------------------------------------------------
1076 @ MRRC/MRRC2
1077 @------------------------------------------------------------------------------
1078         mrrc  p7, #1, r5, r4, c1
1079         mrrc2  p7, #1, r5, r4, c1
1080
1081 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1082 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1083
1084
1085 @------------------------------------------------------------------------------
1086 @ MRS
1087 @------------------------------------------------------------------------------
1088         mrs  r8, apsr
1089         mrs  r8, cpsr
1090         mrs  r8, spsr
1091
1092 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1093 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1094 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1095
1096
1097 @------------------------------------------------------------------------------
1098 @ MSR
1099 @------------------------------------------------------------------------------
1100         msr  apsr, r1
1101         msr  apsr_g, r2
1102         msr  apsr_nzcvq, r3
1103         msr  APSR_nzcvq, r4
1104         msr  apsr_nzcvqg, r5
1105         msr  cpsr_fc, r6
1106         msr  cpsr_c, r7
1107         msr  cpsr_x, r8
1108         msr  cpsr_fc, r9
1109         msr  cpsr_all, r11
1110         msr  cpsr_fsx, r12
1111         msr  spsr_fc, r0
1112         msr  SPSR_fsxc, r5
1113         msr  cpsr_fsxc, r8
1114
1115 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1116 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1117 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1118 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1119 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1120 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1121 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1122 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1123 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1124 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1125 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1126 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1127 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1128 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1129
1130
1131 @------------------------------------------------------------------------------
1132 @ MUL
1133 @------------------------------------------------------------------------------
1134         muls r3, r4, r3
1135         mul r3, r4, r3
1136         mul r3, r4, r6
1137         it eq
1138         muleq r3, r4, r5
1139
1140 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1141 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1142 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1143 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1144 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1145
1146
1147 @------------------------------------------------------------------------------
1148 @ MVN(immediate)
1149 @------------------------------------------------------------------------------
1150         mvns r8, #21
1151         mvn r0, #0x3fc0000
1152         mvns r0, #0x3fc0000
1153         itte eq
1154         mvnseq r1, #12
1155         mvneq r1, #12
1156         mvnne r1, #12
1157
1158 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1159 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1160 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1161 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1162 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1163 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1164 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1165
1166
1167 @------------------------------------------------------------------------------
1168 @ MVN(register)
1169 @------------------------------------------------------------------------------
1170         mvn r2, r3
1171         mvns r2, r3
1172         mvn r5, r6, lsl #19
1173         mvn r5, r6, lsr #9
1174         mvn r5, r6, asr #4
1175         mvn r5, r6, ror #6
1176         mvn r5, r6, rrx
1177         it eq
1178         mvneq r2, r3
1179
1180 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1181 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1182 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1183 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1184 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1185 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1186 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1187 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1188 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1189
1190 @------------------------------------------------------------------------------
1191 @ NOP
1192 @------------------------------------------------------------------------------
1193         nop.w
1194
1195 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1196
1197
1198 @------------------------------------------------------------------------------
1199 @ ORN
1200 @------------------------------------------------------------------------------
1201         orn r4, r5, #0xf000
1202         orn r4, r5, r6
1203         orns r4, r5, r6
1204         orn r4, r5, r6, lsl #5
1205         orns r4, r5, r6, lsr #5
1206         orn r4, r5, r6, lsr #5
1207         orns r4, r5, r6, asr #5
1208         orn r4, r5, r6, ror #5
1209
1210 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1211 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1212 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1213 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1214 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1215 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1216 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1217 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1218
1219
1220 @------------------------------------------------------------------------------
1221 @ ORR
1222 @------------------------------------------------------------------------------
1223         orr r4, r5, #0xf000
1224         orr r4, r5, r6
1225         orr r4, r5, r6, lsl #5
1226         orrs r4, r5, r6, lsr #5
1227         orr r4, r5, r6, lsr #5
1228         orrs r4, r5, r6, asr #5
1229         orr r4, r5, r6, ror #5
1230
1231 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1232 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1233 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1234 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1235 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1236 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1237 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1238
1239
1240 @------------------------------------------------------------------------------
1241 @ PKH
1242 @------------------------------------------------------------------------------
1243         pkhbt r2, r2, r3
1244         pkhbt r2, r2, r3, lsl #31
1245         pkhbt r2, r2, r3, lsl #0
1246         pkhbt r2, r2, r3, lsl #15
1247
1248         pkhtb r2, r2, r3
1249         pkhtb r2, r2, r3, asr #31
1250         pkhtb r2, r2, r3, asr #15
1251
1252 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1253 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1254 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1255 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1256
1257 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1258 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1259 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1260
1261
1262 @------------------------------------------------------------------------------
1263 @ PLD(immediate)
1264 @------------------------------------------------------------------------------
1265         pld [r5, #-4]
1266         pld [r6, #32]
1267         pld [r6, #33]
1268         pld [r6, #257]
1269         pld [r7, #257]
1270
1271 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1272 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1273 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1274 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1275 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1276
1277
1278 @------------------------------------------------------------------------------
1279 @ PLD(literal)
1280 @------------------------------------------------------------------------------
1281         pld  _foo
1282
1283 @ CHECK: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1284             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1285
1286
1287 @------------------------------------------------------------------------------
1288 @ PLD(register)
1289 @------------------------------------------------------------------------------
1290         pld [r8, r1]
1291         pld [r5, r2]
1292         pld [r0, r2, lsl #3]
1293         pld [r8, r2, lsl #2]
1294         pld [sp, r2, lsl #1]
1295         pld [sp, r2, lsl #0]
1296
1297 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1298 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1299 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1300 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1301 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1302 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1303
1304 @------------------------------------------------------------------------------
1305 @ PLI(immediate)
1306 @------------------------------------------------------------------------------
1307         pli [r5, #-4]
1308         pli [r6, #32]
1309         pli [r6, #33]
1310         pli [r6, #257]
1311         pli [r7, #257]
1312
1313 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1314 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1315 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1316 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1317 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1318
1319
1320 @------------------------------------------------------------------------------
1321 @ PLI(literal)
1322 @------------------------------------------------------------------------------
1323         pli  _foo
1324
1325
1326 @ CHECK: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1327            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1328
1329
1330 @------------------------------------------------------------------------------
1331 @ PLI(register)
1332 @------------------------------------------------------------------------------
1333         pli [r8, r1]
1334         pli [r5, r2]
1335         pli [r0, r2, lsl #3]
1336         pli [r8, r2, lsl #2]
1337         pli [sp, r2, lsl #1]
1338         pli [sp, r2, lsl #0]
1339
1340 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1341 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1342 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1343 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1344 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1345 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1346
1347
1348 @------------------------------------------------------------------------------
1349 @ QADD/QADD16/QADD8
1350 @------------------------------------------------------------------------------
1351         qadd r1, r2, r3
1352         qadd16 r1, r2, r3
1353         qadd8 r1, r2, r3
1354         itte gt
1355         qaddgt r1, r2, r3
1356         qadd16gt r1, r2, r3
1357         qadd8le r1, r2, r3
1358
1359 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1360 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1361 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1362 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1363 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1364 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1365 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1366
1367
1368 @------------------------------------------------------------------------------
1369 @ QDADD/QDSUB
1370 @------------------------------------------------------------------------------
1371         qdadd r6, r7, r8
1372         qdsub r6, r7, r8
1373         itt hi
1374         qdaddhi r6, r7, r8
1375         qdsubhi r6, r7, r8
1376
1377 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1378 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1379 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1380 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1381 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1382
1383
1384 @------------------------------------------------------------------------------
1385 @ QSAX
1386 @------------------------------------------------------------------------------
1387         qsax r9, r12, r0
1388         it eq
1389         qsaxeq r9, r12, r0
1390
1391 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1392 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1393 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1394
1395
1396 @------------------------------------------------------------------------------
1397 @ QSUB/QSUB16/QSUB8
1398 @------------------------------------------------------------------------------
1399         qsub r1, r2, r3
1400         qsub16 r1, r2, r3
1401         qsub8 r1, r2, r3
1402         itet le
1403         qsuble r1, r2, r3
1404         qsub16gt r1, r2, r3
1405         qsub8le r1, r2, r3
1406
1407 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1408 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1409 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1410 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1411 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1412 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1413 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1414
1415
1416 @------------------------------------------------------------------------------
1417 @ RBIT
1418 @------------------------------------------------------------------------------
1419         rbit r1, r2
1420         it ne
1421         rbitne r1, r2
1422
1423 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1424 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1425 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1426
1427
1428 @------------------------------------------------------------------------------
1429 @ REV
1430 @------------------------------------------------------------------------------
1431         rev.w r1, r2
1432         rev r2, r8
1433         itt ne
1434         revne r1, r2
1435         revne r1, r8
1436
1437 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1438 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1439 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1440 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1441 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1442
1443
1444 @------------------------------------------------------------------------------
1445 @ REV16
1446 @------------------------------------------------------------------------------
1447         rev16.w r1, r2
1448         rev16 r2, r8
1449         itt ne
1450         rev16ne r1, r2
1451         rev16ne r1, r8
1452
1453 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1454 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1455 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1456 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1457 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1458
1459
1460 @------------------------------------------------------------------------------
1461 @ REVSH
1462 @------------------------------------------------------------------------------
1463         revsh.w r1, r2
1464         revsh r2, r8
1465         itt ne
1466         revshne r1, r2
1467         revshne r1, r8
1468
1469 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1470 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1471 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1472 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1473 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1474
1475
1476 @------------------------------------------------------------------------------
1477 @ ROR (immediate)
1478 @------------------------------------------------------------------------------
1479         ror r2, r3, #12
1480         rors r8, r3, #31
1481         rors.w r2, r3, #1
1482         ror r2, r3, #4
1483         rors r2, r12, #15
1484
1485         ror r3, #19
1486         rors r8, #2
1487         rors.w r7, #5
1488         ror.w r12, #21
1489
1490 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1491 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1492 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1493 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1494 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1495
1496 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1497 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1498 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1499 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1500
1501
1502 @------------------------------------------------------------------------------
1503 @ ROR (register)
1504 @------------------------------------------------------------------------------
1505         ror r3, r4, r2
1506         ror.w r1, r2
1507         rors r3, r4, r8
1508
1509 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1510 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1511 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1512
1513
1514 @------------------------------------------------------------------------------
1515 @ RRX
1516 @------------------------------------------------------------------------------
1517         rrx r1, r2
1518         rrxs r1, r2
1519         ite lt
1520         rrxlt r9, r12
1521         rrxsge r8, r3
1522
1523 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1524 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1525 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1526 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1527 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1528
1529 @------------------------------------------------------------------------------
1530 @ RSB (immediate)
1531 @------------------------------------------------------------------------------
1532         rsb r2, r5, #0xff000
1533         rsbs r3, r12, #0xf
1534         rsb r1, #0xff
1535         rsb r1, r1, #0xff
1536
1537 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1538 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1539 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1540 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1541
1542
1543 @------------------------------------------------------------------------------
1544 @ RSB (register)
1545 @------------------------------------------------------------------------------
1546         rsb r4, r8
1547         rsb r4, r9, r8
1548         rsb r1, r4, r8, asr #3
1549         rsbs r2, r1, r7, lsl #1
1550
1551 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1552 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1553 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1554 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1555
1556
1557 @------------------------------------------------------------------------------
1558 @ SADD16
1559 @------------------------------------------------------------------------------
1560         sadd16 r3, r4, r8
1561         it ne
1562         sadd16ne r3, r4, r8
1563
1564 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1565 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1566 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1567
1568
1569 @------------------------------------------------------------------------------
1570 @ SADD8
1571 @------------------------------------------------------------------------------
1572         sadd8 r3, r4, r8
1573         it ne
1574         sadd8ne r3, r4, r8
1575
1576 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1577 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1578 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1579
1580
1581 @------------------------------------------------------------------------------
1582 @ SASX
1583 @------------------------------------------------------------------------------
1584         saddsubx r9, r2, r7
1585         it ne
1586         saddsubxne r2, r5, r6
1587         sasx r9, r2, r7
1588         it ne
1589         sasxne r2, r5, r6
1590
1591 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1592 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1593 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1594 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1595 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1596 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1597
1598
1599 @------------------------------------------------------------------------------
1600 @ SBC (immediate)
1601 @------------------------------------------------------------------------------
1602         sbc r0, r1, #4
1603         sbcs r0, r1, #0
1604         sbc r1, r2, #255
1605         sbc r3, r7, #0x00550055
1606         sbc r8, r12, #0xaa00aa00
1607         sbc r9, r7, #0xa5a5a5a5
1608         sbc r5, r3, #0x87000000
1609         sbc r4, r2, #0x7f800000
1610         sbc r4, r2, #0x00000680
1611
1612 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1613 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1614 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1615 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1616 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1617 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1618 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1619 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1620 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1621
1622
1623 @------------------------------------------------------------------------------
1624 @ SBC (register)
1625 @------------------------------------------------------------------------------
1626         sbc r4, r5, r6
1627         sbcs r4, r5, r6
1628         sbc.w r9, r1, r3
1629         sbcs.w r9, r1, r3
1630         sbc     r0, r1, r3, ror #4
1631         sbcs    r0, r1, r3, lsl #7
1632         sbc.w   r0, r1, r3, lsr #31
1633         sbcs.w  r0, r1, r3, asr #32
1634
1635 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1636 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1637 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1638 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1639 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1640 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1641 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1642 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1643
1644
1645 @------------------------------------------------------------------------------
1646 @ SBFX
1647 @------------------------------------------------------------------------------
1648         sbfx r4, r5, #16, #1
1649         it gt
1650         sbfxgt r4, r5, #16, #16
1651
1652 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1653 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1654 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1655
1656
1657 @------------------------------------------------------------------------------
1658 @ SEL
1659 @------------------------------------------------------------------------------
1660         sel r5, r9, r2
1661         it le
1662         selle r5, r9, r2
1663
1664 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1665 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1666 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1667
1668
1669 @------------------------------------------------------------------------------
1670 @ SEV
1671 @------------------------------------------------------------------------------
1672         sev.w
1673         it eq
1674         seveq.w
1675
1676 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1677 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1678 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1679
1680
1681 @------------------------------------------------------------------------------
1682 @ SADD16/SADD8
1683 @------------------------------------------------------------------------------
1684         sadd16 r1, r2, r3
1685         sadd8 r1, r2, r3
1686         ite gt
1687         sadd16gt r1, r2, r3
1688         sadd8le r1, r2, r3
1689
1690 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1691 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1692 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1693 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1694 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1695
1696
1697 @------------------------------------------------------------------------------
1698 @ SHASX
1699 @------------------------------------------------------------------------------
1700         shasx r4, r8, r2
1701         it gt
1702         shasxgt r4, r8, r2
1703         shaddsubx r4, r8, r2
1704         it gt
1705         shaddsubxgt r4, r8, r2
1706
1707 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1708 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1709 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1710 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1711 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1712 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1713
1714
1715 @------------------------------------------------------------------------------
1716 @ SHASX
1717 @------------------------------------------------------------------------------
1718         shsax r4, r8, r2
1719         it gt
1720         shsaxgt r4, r8, r2
1721         shsubaddx r4, r8, r2
1722         it gt
1723         shsubaddxgt r4, r8, r2
1724
1725 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1726 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1727 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1728 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1729 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1730 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1731
1732
1733 @------------------------------------------------------------------------------
1734 @ SHSUB16/SHSUB8
1735 @------------------------------------------------------------------------------
1736         shsub16 r4, r8, r2
1737         shsub8 r4, r8, r2
1738         itt gt
1739         shsub16gt r4, r8, r2
1740         shsub8gt r4, r8, r2
1741
1742 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1743 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1744 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1745 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1746 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1747
1748
1749 @------------------------------------------------------------------------------
1750 @ SMLABB/SMLABT/SMLATB/SMLATT
1751 @------------------------------------------------------------------------------
1752         smlabb r3, r1, r9, r0
1753         smlabt r5, r6, r4, r1
1754         smlatb r4, r2, r3, r2
1755         smlatt r8, r3, r8, r4
1756         itete gt
1757         smlabbgt r3, r1, r9, r0
1758         smlabtle r5, r6, r4, r1
1759         smlatbgt r4, r2, r3, r2
1760         smlattle r8, r3, r8, r4
1761
1762 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1763 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1764 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1765 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1766 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1767 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1768 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1769 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1770 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1771
1772
1773 @------------------------------------------------------------------------------
1774 @ SMLAD/SMLADX
1775 @------------------------------------------------------------------------------
1776         smlad r2, r3, r5, r8
1777         smladx r2, r3, r5, r8
1778         itt hi
1779         smladhi r2, r3, r5, r8
1780         smladxhi r2, r3, r5, r8
1781
1782 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1783 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1784 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1785 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1786 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1787
1788
1789 @------------------------------------------------------------------------------
1790 @ SMLAL
1791 @------------------------------------------------------------------------------
1792         smlal r2, r3, r5, r8
1793         it eq
1794         smlaleq r2, r3, r5, r8
1795
1796 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1797 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1798 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1799
1800
1801 @------------------------------------------------------------------------------
1802 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1803 @------------------------------------------------------------------------------
1804         smlalbb r3, r1, r9, r0
1805         smlalbt r5, r6, r4, r1
1806         smlaltb r4, r2, r3, r2
1807         smlaltt r8, r3, r8, r4
1808         iteet ge
1809         smlalbbge r3, r1, r9, r0
1810         smlalbtlt r5, r6, r4, r1
1811         smlaltblt r4, r2, r3, r2
1812         smlalttge r8, r3, r8, r4
1813
1814 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
1815 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
1816 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
1817 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
1818 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
1819 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
1820 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
1821 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
1822 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
1823
1824
1825 @------------------------------------------------------------------------------
1826 @ SMLALD/SMLALDX
1827 @------------------------------------------------------------------------------
1828         smlald r2, r3, r5, r8
1829         smlaldx r2, r3, r5, r8
1830         ite eq
1831         smlaldeq r2, r3, r5, r8
1832         smlaldxne r2, r3, r5, r8
1833
1834 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
1835 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
1836 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
1837 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
1838 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
1839
1840
1841 @------------------------------------------------------------------------------
1842 @ SMLAWB/SMLAWT
1843 @------------------------------------------------------------------------------
1844         smlawb r2, r3, r10, r8
1845         smlawt r8, r3, r5, r9
1846         ite eq
1847         smlawbeq r2, r7, r5, r8
1848         smlawtne r1, r3, r0, r8
1849
1850 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
1851 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
1852 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
1853 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
1854 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
1855
1856
1857 @------------------------------------------------------------------------------
1858 @ SMLSD/SMLSDX
1859 @------------------------------------------------------------------------------
1860         smlsd r2, r3, r5, r8
1861         smlsdx r2, r3, r5, r8
1862         ite le
1863         smlsdle r2, r3, r5, r8
1864         smlsdxgt r2, r3, r5, r8
1865
1866 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
1867 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
1868 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
1869 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
1870 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
1871
1872
1873 @------------------------------------------------------------------------------
1874 @ SMLSLD/SMLSLDX
1875 @------------------------------------------------------------------------------
1876         smlsld r2, r9, r5, r1
1877         smlsldx r4, r11, r2, r8
1878         ite ge
1879         smlsldge r8, r2, r5, r6
1880         smlsldxlt r1, r0, r3, r8
1881
1882 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
1883 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
1884 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
1885 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
1886 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
1887
1888
1889 @------------------------------------------------------------------------------
1890 @ SMMLA/SMMLAR
1891 @------------------------------------------------------------------------------
1892         smmla r1, r2, r3, r4
1893         smmlar r4, r3, r2, r1
1894         ite lo
1895         smmlalo r1, r2, r3, r4
1896         smmlarcs r4, r3, r2, r1
1897
1898 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
1899 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
1900 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
1901 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
1902 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
1903
1904
1905 @------------------------------------------------------------------------------
1906 @ SMMLS/SMMLSR
1907 @------------------------------------------------------------------------------
1908         smmls r1, r2, r3, r4
1909         smmlsr r4, r3, r2, r1
1910         ite lo
1911         smmlslo r1, r2, r3, r4
1912         smmlsrcs r4, r3, r2, r1
1913
1914 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
1915 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
1916 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
1917 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
1918 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
1919
1920
1921 @------------------------------------------------------------------------------
1922 @ SMMUL/SMMULR
1923 @------------------------------------------------------------------------------
1924         smmul r2, r3, r4
1925         smmulr r3, r2, r1
1926         ite cc
1927         smmulcc r2, r3, r4
1928         smmulrhs r3, r2, r1
1929
1930 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
1931 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
1932 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
1933 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
1934 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
1935
1936
1937 @------------------------------------------------------------------------------
1938 @ SMUAD/SMUADX
1939 @------------------------------------------------------------------------------
1940         smuad r2, r3, r4
1941         smuadx r3, r2, r1
1942         ite lt
1943         smuadlt r2, r3, r4
1944         smuadxge r3, r2, r1
1945
1946 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
1947 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
1948 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1949 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
1950 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
1951
1952
1953 @------------------------------------------------------------------------------
1954 @ SMULBB/SMULBT/SMULTB/SMULTT
1955 @------------------------------------------------------------------------------
1956         smulbb r3, r9, r0
1957         smulbt r5, r4, r1
1958         smultb r4, r2, r2
1959         smultt r8, r3, r4
1960         itete ge
1961         smulbbge r1, r9, r0
1962         smulbtlt r5, r6, r4
1963         smultbge r2, r3, r2
1964         smulttlt r8, r3, r4
1965
1966 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
1967 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
1968 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
1969 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
1970 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
1971 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
1972 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
1973 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
1974 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
1975
1976
1977 @------------------------------------------------------------------------------
1978 @ SMULL
1979 @------------------------------------------------------------------------------
1980         smull r3, r9, r0, r1
1981         it eq
1982         smulleq r8, r3, r4, r5
1983
1984 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
1985 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1986 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
1987
1988
1989 @------------------------------------------------------------------------------
1990 @ SMULWB/SMULWT
1991 @------------------------------------------------------------------------------
1992         smulwb r3, r9, r0
1993         smulwt r3, r9, r2
1994         ite gt
1995         smulwbgt r3, r9, r0
1996         smulwtle r3, r9, r2
1997
1998 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
1999 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2000 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2001 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2002 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2003
2004
2005 @------------------------------------------------------------------------------
2006 @ SMUSD/SMUSDX
2007 @------------------------------------------------------------------------------
2008         smusd r3, r0, r1
2009         smusdx r3, r9, r2
2010         ite eq
2011         smusdeq r8, r3, r2
2012         smusdxne r7, r4, r3
2013
2014 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2015 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2016 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2017 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2018 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2019
2020
2021 @------------------------------------------------------------------------------
2022 @ SRS
2023 @------------------------------------------------------------------------------
2024         srsdb sp, #1
2025         srsia sp, #0
2026
2027         srsdb sp!, #19
2028         srsia sp!, #2
2029
2030         srsea sp, #10
2031         srsfd sp, #9
2032
2033         srsea sp!, #5
2034         srsfd sp!, #5
2035
2036         srs sp, #5
2037         srs sp!, #5
2038
2039 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2040 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2041 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2042 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2043 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2044 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2045 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2046 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2047 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2048 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2049
2050
2051 @------------------------------------------------------------------------------
2052 @ SSAT
2053 @------------------------------------------------------------------------------
2054         ssat    r8, #1, r10
2055         ssat    r8, #1, r10, lsl #0
2056         ssat    r8, #1, r10, lsl #31
2057         ssat    r8, #1, r10, asr #32
2058         ssat    r8, #1, r10, asr #1
2059
2060 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2061 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2062 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2063 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x2a,0xf3,0x00,0x08]
2064 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2065
2066
2067 @------------------------------------------------------------------------------
2068 @ SSAT16
2069 @------------------------------------------------------------------------------
2070         ssat16  r2, #1, r7
2071         ssat16  r3, #16, r5
2072
2073 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2074 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2075
2076
2077 @------------------------------------------------------------------------------
2078 @ SSAX
2079 @------------------------------------------------------------------------------
2080         ssubaddx r2, r3, r4
2081         it lt
2082         ssubaddxlt r2, r3, r4
2083         ssax r2, r3, r4
2084         it lt
2085         ssaxlt r2, r3, r4
2086
2087 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2088 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2089 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2090 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2091 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2092 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2093
2094
2095 @------------------------------------------------------------------------------
2096 @ SSUB16/SSUB8
2097 @------------------------------------------------------------------------------
2098         ssub16 r1, r0, r6
2099         ssub8 r9, r2, r4
2100         ite ne
2101         ssub16ne r5, r3, r2
2102         ssub8eq r5, r1, r2
2103
2104 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2105 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2106 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2107 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2108 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2109
2110
2111 @------------------------------------------------------------------------------
2112 @ STMIA
2113 @------------------------------------------------------------------------------
2114         stmia.w r4, {r4, r5, r8, r9}
2115         stmia.w r4, {r5, r6}
2116         stmia.w r5!, {r3, r8}
2117         stm.w r4, {r4, r5, r8, r9}
2118         stm.w r4, {r5, r6}
2119         stm.w r5!, {r3, r8}
2120         stm.w r5!, {r1, r2}
2121         stm.w r2, {r1, r2}
2122
2123         stmia r4, {r4, r5, r8, r9}
2124         stmia r4, {r5, r6}
2125         stmia r5!, {r3, r8}
2126         stm r4, {r4, r5, r8, r9}
2127         stm r4, {r5, r6}
2128         stm r5!, {r3, r8}
2129         stmea r5!, {r3, r8}
2130
2131 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2132 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2133 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2134 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2135 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2136 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2137 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2138 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2139
2140 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2141 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2142 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2143 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2144 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2145 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2146 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2147
2148
2149 @------------------------------------------------------------------------------
2150 @ STMDB
2151 @------------------------------------------------------------------------------
2152         stmdb r4, {r4, r5, r8, r9}
2153         stmdb r4, {r5, r6}
2154         stmdb r5!, {r3, r8}
2155         stmea r5!, {r3, r8}
2156
2157 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2158 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2159 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2160 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2161
2162
2163 @------------------------------------------------------------------------------
2164 @ STR(immediate)
2165 @------------------------------------------------------------------------------
2166         str r5, [r5, #-4]
2167         str r5, [r6, #32]
2168         str r5, [r6, #33]
2169         str r5, [r6, #257]
2170         str.w pc, [r7, #257]
2171
2172 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2173 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2174 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2175 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2176 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2177
2178
2179 @------------------------------------------------------------------------------
2180 @ SUB (register)
2181 @------------------------------------------------------------------------------
2182         sub.w r5, r2, r12, rrx
2183
2184 @ CHECK: sub.w r5, r2, r12, rrx        @ encoding: [0xa2,0xeb,0x3c,0x05]
2185