ARM assembly parsing needs to be paranoid about negative immediates.
[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         add r2, #1
77         add r0, r0, #32
78
79 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
80 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
81 @ CHECK: addwne r5, r3, #1023           @ encoding: [0x03,0xf2,0xff,0x35]
82 @ CHECK: addweq r4, r5, #293            @ encoding: [0x05,0xf2,0x25,0x14]
83 @ CHECK: add.w  r2, sp, #1024           @ encoding: [0x0d,0xf5,0x80,0x62]
84 @ CHECK: add.w  r2, r8, #65280          @ encoding: [0x08,0xf5,0x7f,0x42]
85 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
86 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
87 @ CHECK: add.w  r12, r6, #256           @ encoding: [0x06,0xf5,0x80,0x7c]
88 @ CHECK: addw   r12, r6, #256           @ encoding: [0x06,0xf2,0x00,0x1c]
89 @ CHECK: adds.w r1, r2, #496            @ encoding: [0x12,0xf5,0xf8,0x71]
90 @ CHECK: add.w  r2, r2, #1              @ encoding: [0x02,0xf1,0x01,0x02]
91 @ CHECK: add.w  r0, r0, #32             @ encoding: [0x00,0xf1,0x20,0x00]
92
93
94 @------------------------------------------------------------------------------
95 @ ADD (register)
96 @------------------------------------------------------------------------------
97         add r1, r2, r8
98         add r5, r9, r2, asr #32
99         adds r7, r3, r1, lsl #31
100         adds.w r0, r3, r6, lsr #25
101         add.w r4, r8, r1, ror #12
102         add r10, r8
103         add r10, r10, r8
104
105 @ CHECK: add.w  r1, r2, r8              @ encoding: [0x02,0xeb,0x08,0x01]
106 @ CHECK: add.w  r5, r9, r2, asr #32     @ encoding: [0x09,0xeb,0x22,0x05]
107 @ CHECK: adds.w r7, r3, r1, lsl #31     @ encoding: [0x13,0xeb,0xc1,0x77]
108 @ CHECK: adds.w r0, r3, r6, lsr #25     @ encoding: [0x13,0xeb,0x56,0x60]
109 @ CHECK: add.w  r4, r8, r1, ror #12     @ encoding: [0x08,0xeb,0x31,0x34]
110 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
111 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
112
113
114 @------------------------------------------------------------------------------
115 @ FIXME: ADR
116 @------------------------------------------------------------------------------
117
118         subw r11, pc, #3270
119         adr.w r11, #-826
120
121 @ CHECK: subw   r11, pc, #3270          @ encoding: [0xaf,0xf6,0xc6,0x4b]
122 @ CHECK: adr.w  r11, #-826              @ encoding: [0xaf,0xf2,0x3a,0x3b]
123
124 @------------------------------------------------------------------------------
125 @ AND (immediate)
126 @------------------------------------------------------------------------------
127         and r2, r5, #0xff000
128         ands r3, r12, #0xf
129         and r1, #0xff
130         and r1, r1, #0xff
131
132 @ CHECK: and    r2, r5, #1044480        @ encoding: [0x05,0xf4,0x7f,0x22]
133 @ CHECK: ands   r3, r12, #15            @ encoding: [0x1c,0xf0,0x0f,0x03]
134 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
135 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
136
137
138 @------------------------------------------------------------------------------
139 @ AND (register)
140 @------------------------------------------------------------------------------
141         and r4, r9, r8
142         and r1, r4, r8, asr #3
143         ands r2, r1, r7, lsl #1
144         ands.w r4, r5, r2, lsr #20
145         and.w r9, r12, r1, ror #17
146
147 @ CHECK: and.w  r4, r9, r8              @ encoding: [0x09,0xea,0x08,0x04]
148 @ CHECK: and.w  r1, r4, r8, asr #3      @ encoding: [0x04,0xea,0xe8,0x01]
149 @ CHECK: ands.w r2, r1, r7, lsl #1      @ encoding: [0x11,0xea,0x47,0x02]
150 @ CHECK: ands.w r4, r5, r2, lsr #20     @ encoding: [0x15,0xea,0x12,0x54]
151 @ CHECK: and.w  r9, r12, r1, ror #17    @ encoding: [0x0c,0xea,0x71,0x49]
152
153 @------------------------------------------------------------------------------
154 @ ASR (immediate)
155 @------------------------------------------------------------------------------
156         asr r2, r3, #12
157         asrs r8, r3, #32
158         asrs.w r2, r3, #1
159         asr r2, r3, #4
160         asrs r2, r12, #15
161
162         asr r3, #19
163         asrs r8, #2
164         asrs.w r7, #5
165         asr.w r12, #21
166
167 @ CHECK: asr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x23,0x32]
168 @ CHECK: asrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x23,0x08]
169 @ CHECK: asrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x63,0x02]
170 @ CHECK: asr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x23,0x12]
171 @ CHECK: asrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xec,0x32]
172
173 @ CHECK: asr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xe3,0x43]
174 @ CHECK: asrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0xa8,0x08]
175 @ CHECK: asrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x67,0x17]
176 @ CHECK: asr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x6c,0x5c]
177
178
179 @------------------------------------------------------------------------------
180 @ ASR (register)
181 @------------------------------------------------------------------------------
182         asr r3, r4, r2
183         asr.w r1, r2
184         asrs r3, r4, r8
185
186 @ CHECK: asr.w  r3, r4, r2              @ encoding: [0x44,0xfa,0x02,0xf3]
187 @ CHECK: asr.w  r1, r1, r2              @ encoding: [0x41,0xfa,0x02,0xf1]
188 @ CHECK: asrs.w r3, r4, r8              @ encoding: [0x54,0xfa,0x08,0xf3]
189
190
191 @------------------------------------------------------------------------------
192 @ B
193 @------------------------------------------------------------------------------
194         b.w   _bar
195         beq.w   _bar
196         it eq
197         beq.w _bar
198         bmi.w   #-183396
199
200 @ CHECK: b.w    _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
201           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
202 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x80'A']
203           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch
204 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
205 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
206           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
207 @ CHECK: bmi.w   #-183396                @ encoding: [0x13,0xf5,0xce,0xa9]
208
209
210 @------------------------------------------------------------------------------
211 @ BFC
212 @------------------------------------------------------------------------------
213         bfc r5, #3, #17
214         it lo
215         bfccc r5, #3, #17
216
217 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
218 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
219 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
220
221
222 @------------------------------------------------------------------------------
223 @ BFI
224 @------------------------------------------------------------------------------
225         bfi r5, r2, #3, #17
226         it ne
227         bfine r5, r2, #3, #17
228
229 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
230 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
231 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
232
233
234 @------------------------------------------------------------------------------
235 @ BIC
236 @------------------------------------------------------------------------------
237         bic r10, r1, #0xf
238         bic r12, r3, r6
239         bic r11, r2, r6, lsl #12
240         bic r8, r4, r1, lsr #11
241         bic r7, r5, r7, lsr #15
242         bic r6, r7, r9, asr #32
243         bic r5, r6, r8, ror #1
244
245         @ destination register is optional
246         bic r1, #0xf
247         bic r1, r1
248         bic r4, r2, lsl #31
249         bic r6, r3, lsr #12
250         bic r7, r4, lsr #7
251         bic r8, r5, asr #15
252         bic r12, r6, ror #29
253
254 @ CHECK: bic    r10, r1, #15            @ encoding: [0x21,0xf0,0x0f,0x0a]
255 @ CHECK: bic.w  r12, r3, r6             @ encoding: [0x23,0xea,0x06,0x0c]
256 @ CHECK: bic.w  r11, r2, r6, lsl #12    @ encoding: [0x22,0xea,0x06,0x3b]
257 @ CHECK: bic.w  r8, r4, r1, lsr #11     @ encoding: [0x24,0xea,0xd1,0x28]
258 @ CHECK: bic.w  r7, r5, r7, lsr #15     @ encoding: [0x25,0xea,0xd7,0x37]
259 @ CHECK: bic.w  r6, r7, r9, asr #32     @ encoding: [0x27,0xea,0x29,0x06]
260 @ CHECK: bic.w  r5, r6, r8, ror #1      @ encoding: [0x26,0xea,0x78,0x05]
261
262 @ CHECK: bic    r1, r1, #15             @ encoding: [0x21,0xf0,0x0f,0x01]
263 @ CHECK: bic.w  r1, r1, r1              @ encoding: [0x21,0xea,0x01,0x01]
264 @ CHECK: bic.w  r4, r4, r2, lsl #31     @ encoding: [0x24,0xea,0xc2,0x74]
265 @ CHECK: bic.w  r6, r6, r3, lsr #12     @ encoding: [0x26,0xea,0x13,0x36]
266 @ CHECK: bic.w  r7, r7, r4, lsr #7      @ encoding: [0x27,0xea,0xd4,0x17]
267 @ CHECK: bic.w  r8, r8, r5, asr #15     @ encoding: [0x28,0xea,0xe5,0x38]
268 @ CHECK: bic.w  r12, r12, r6, ror #29   @ encoding: [0x2c,0xea,0x76,0x7c]
269
270 @------------------------------------------------------------------------------
271 @ BKPT
272 @------------------------------------------------------------------------------
273         it pl
274         bkpt #234
275
276 @ CHECK: it pl                      @ encoding: [0x58,0xbf]
277 @ CHECK: bkpt #234                    @ encoding: [0xea,0xbe]
278
279 @------------------------------------------------------------------------------
280 @ BXJ
281 @------------------------------------------------------------------------------
282         bxj r5
283         it ne
284         bxjne r7
285
286 @ CHECK: bxj    r5                      @ encoding: [0xc5,0xf3,0x00,0x8f]
287 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
288 @ CHECK: bxjne  r7                      @ encoding: [0xc7,0xf3,0x00,0x8f]
289
290
291 @------------------------------------------------------------------------------
292 @ CBZ/CBNZ
293 @------------------------------------------------------------------------------
294         cbnz    r7, #6
295         cbnz    r7, #12
296         cbz   r6, _bar
297         cbnz   r6, _bar
298
299 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
300 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
301 @ CHECK: cbz    r6, _bar                @ encoding: [0x06'A',0xb1'A']
302            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
303 @ CHECK: cbnz   r6, _bar                @ encoding: [0x06'A',0xb9'A']
304            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
305
306
307 @------------------------------------------------------------------------------
308 @ CDP/CDP2
309 @------------------------------------------------------------------------------
310   cdp  p7, #1, c1, c1, c1, #4
311   cdp2  p7, #1, c1, c1, c1, #4
312
313 @ CHECK: cdp    p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xee,0x81,0x17]
314 @ CHECK: cdp2   p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xfe,0x81,0x17]
315
316
317 @------------------------------------------------------------------------------
318 @ CLREX
319 @------------------------------------------------------------------------------
320         clrex
321         it ne
322         clrexne
323
324 @ CHECK: clrex                           @ encoding: [0xbf,0xf3,0x2f,0x8f]
325 @ CHECK: it     ne                       @ encoding: [0x18,0xbf]
326 @ CHECK: clrexne                         @ encoding: [0xbf,0xf3,0x2f,0x8f]
327
328
329 @------------------------------------------------------------------------------
330 @ CLZ
331 @------------------------------------------------------------------------------
332         clz r1, r2
333         it eq
334         clzeq r1, r2
335
336 @ CHECK: clz    r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
337 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
338 @ CHECK: clzeq  r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
339
340
341 @------------------------------------------------------------------------------
342 @ CMN
343 @------------------------------------------------------------------------------
344         cmn r1, #0xf
345         cmn r8, r6
346         cmn r1, r6, lsl #10
347         cmn r1, r6, lsr #10
348         cmn sp, r6, lsr #10
349         cmn r1, r6, asr #10
350         cmn r1, r6, ror #10
351
352 @ CHECK: cmn.w  r1, #15                 @ encoding: [0x11,0xf1,0x0f,0x0f]
353 @ CHECK: cmn.w  r8, r6                  @ encoding: [0x18,0xeb,0x06,0x0f]
354 @ CHECK: cmn.w  r1, r6, lsl #10         @ encoding: [0x11,0xeb,0x86,0x2f]
355 @ CHECK: cmn.w  r1, r6, lsr #10         @ encoding: [0x11,0xeb,0x96,0x2f]
356 @ CHECK: cmn.w  sp, r6, lsr #10         @ encoding: [0x1d,0xeb,0x96,0x2f]
357 @ CHECK: cmn.w  r1, r6, asr #10         @ encoding: [0x11,0xeb,0xa6,0x2f]
358 @ CHECK: cmn.w  r1, r6, ror #10         @ encoding: [0x11,0xeb,0xb6,0x2f]
359
360
361 @------------------------------------------------------------------------------
362 @ CMP
363 @------------------------------------------------------------------------------
364         cmp r5, #0xff00
365         cmp.w r4, r12
366         cmp r9, r6, lsl #12
367         cmp r3, r7, lsr #31
368         cmp sp, r6, lsr #1
369         cmp r2, r5, asr #24
370         cmp r1, r4, ror #15
371         cmp r0, #-2
372
373 @ CHECK: cmp.w  r5, #65280              @ encoding: [0xb5,0xf5,0x7f,0x4f]
374 @ CHECK: cmp.w  r4, r12                 @ encoding: [0xb4,0xeb,0x0c,0x0f]
375 @ CHECK: cmp.w  r9, r6, lsl #12         @ encoding: [0xb9,0xeb,0x06,0x3f]
376 @ CHECK: cmp.w  r3, r7, lsr #31         @ encoding: [0xb3,0xeb,0xd7,0x7f]
377 @ CHECK: cmp.w  sp, r6, lsr #1          @ encoding: [0xbd,0xeb,0x56,0x0f]
378 @ CHECK: cmp.w  r2, r5, asr #24         @ encoding: [0xb2,0xeb,0x25,0x6f]
379 @ CHECK: cmp.w  r1, r4, ror #15         @ encoding: [0xb1,0xeb,0xf4,0x3f]
380 @ CHECK: cmn.w  r0, #2                  @ encoding: [0x10,0xf1,0x02,0x0f]
381
382 @------------------------------------------------------------------------------
383 @ DBG
384 @------------------------------------------------------------------------------
385         dbg #5
386         dbg #0
387         dbg #15
388
389 @ CHECK: dbg    #5                      @ encoding: [0xaf,0xf3,0xf5,0x80]
390 @ CHECK: dbg    #0                      @ encoding: [0xaf,0xf3,0xf0,0x80]
391 @ CHECK: dbg    #15                     @ encoding: [0xaf,0xf3,0xff,0x80]
392
393
394 @------------------------------------------------------------------------------
395 @ DMB
396 @------------------------------------------------------------------------------
397         dmb sy
398         dmb st
399         dmb sh
400         dmb ish
401         dmb shst
402         dmb ishst
403         dmb un
404         dmb nsh
405         dmb unst
406         dmb nshst
407         dmb osh
408         dmb oshst
409         dmb
410
411 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
412 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
413 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
414 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
415 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
416 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
417 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
418 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
419 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
420 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
421 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
422 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
423 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
424
425
426 @------------------------------------------------------------------------------
427 @ DSB
428 @------------------------------------------------------------------------------
429         dsb sy
430         dsb st
431         dsb sh
432         dsb ish
433         dsb shst
434         dsb ishst
435         dsb un
436         dsb nsh
437         dsb unst
438         dsb nshst
439         dsb osh
440         dsb oshst
441         dsb
442
443 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
444 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
445 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
446 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
447 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
448 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
449 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
450 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
451 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
452 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
453 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
454 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
455 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
456
457
458 @------------------------------------------------------------------------------
459 @ EOR
460 @------------------------------------------------------------------------------
461         eor r4, r5, #0xf000
462         eor r4, r5, r6
463         eor r4, r5, r6, lsl #5
464         eor r4, r5, r6, lsr #5
465         eor r4, r5, r6, lsr #5
466         eor r4, r5, r6, asr #5
467         eor r4, r5, r6, ror #5
468
469 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x85,0xf4,0x70,0x44]
470 @ CHECK: eor.w  r4, r5, r6              @ encoding: [0x85,0xea,0x06,0x04]
471 @ CHECK: eor.w  r4, r5, r6, lsl #5      @ encoding: [0x85,0xea,0x46,0x14]
472 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
473 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
474 @ CHECK: eor.w  r4, r5, r6, asr #5      @ encoding: [0x85,0xea,0x66,0x14]
475 @ CHECK: eor.w  r4, r5, r6, ror #5      @ encoding: [0x85,0xea,0x76,0x14]
476
477
478 @------------------------------------------------------------------------------
479 @ ISB
480 @------------------------------------------------------------------------------
481         isb sy
482         isb
483
484 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
485 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
486
487
488 @------------------------------------------------------------------------------
489 @ IT
490 @------------------------------------------------------------------------------
491 @ Test encodings of a few full IT blocks, not just the IT instruction
492
493         iteet eq
494         addeq r0, r1, r2
495         nopne
496         subne r5, r6, r7
497         addeq r1, r2, #4
498
499 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
500 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
501 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
502 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
503 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
504
505
506 @------------------------------------------------------------------------------
507 @ LDC{L}/LDC2{L}
508 @------------------------------------------------------------------------------
509         ldc2 p0, c8, [r1, #4]
510         ldc2 p1, c7, [r2]
511         ldc2 p2, c6, [r3, #-224]
512         ldc2 p3, c5, [r4, #-120]!
513         ldc2 p4, c4, [r5], #16
514         ldc2 p5, c3, [r6], #-72
515         ldc2l p6, c2, [r7, #4]
516         ldc2l p7, c1, [r8]
517         ldc2l p8, c0, [r9, #-224]
518         ldc2l p9, c1, [r10, #-120]!
519         ldc2l p10, c2, [r11], #16
520         ldc2l p11, c3, [r12], #-72
521
522         ldc p12, c4, [r0, #4]
523         ldc p13, c5, [r1]
524         ldc p14, c6, [r2, #-224]
525         ldc p15, c7, [r3, #-120]!
526         ldc p5, c8, [r4], #16
527         ldc p4, c9, [r5], #-72
528         ldcl p3, c10, [r6, #4]
529         ldcl p2, c11, [r7]
530         ldcl p1, c12, [r8, #-224]
531         ldcl p0, c13, [r9, #-120]!
532         ldcl p6, c14, [r10], #16
533         ldcl p7, c15, [r11], #-72
534
535         ldc2 p2, c8, [r1], { 25 }
536
537 @ CHECK: ldc2   p0, c8, [r1, #4]        @ encoding: [0x91,0xfd,0x01,0x80]
538 @ CHECK: ldc2   p1, c7, [r2]            @ encoding: [0x92,0xfd,0x00,0x71]
539 @ CHECK: ldc2   p2, c6, [r3, #-224]     @ encoding: [0x13,0xfd,0x38,0x62]
540 @ CHECK: ldc2   p3, c5, [r4, #-120]!    @ encoding: [0x34,0xfd,0x1e,0x53]
541 @ CHECK: ldc2   p4, c4, [r5], #16       @ encoding: [0xb5,0xfc,0x04,0x44]
542 @ CHECK: ldc2   p5, c3, [r6], #-72      @ encoding: [0x36,0xfc,0x12,0x35]
543 @ CHECK: ldc2l  p6, c2, [r7, #4]        @ encoding: [0xd7,0xfd,0x01,0x26]
544 @ CHECK: ldc2l  p7, c1, [r8]            @ encoding: [0xd8,0xfd,0x00,0x17]
545 @ CHECK: ldc2l  p8, c0, [r9, #-224]     @ encoding: [0x59,0xfd,0x38,0x08]
546 @ CHECK: ldc2l  p9, c1, [r10, #-120]!   @ encoding: [0x7a,0xfd,0x1e,0x19]
547 @ CHECK: ldc2l  p10, c2, [r11], #16     @ encoding: [0xfb,0xfc,0x04,0x2a]
548 @ CHECK: ldc2l  p11, c3, [r12], #-72    @ encoding: [0x7c,0xfc,0x12,0x3b]
549
550 @ CHECK: ldc    p12, c4, [r0, #4]       @ encoding: [0x90,0xed,0x01,0x4c]
551 @ CHECK: ldc    p13, c5, [r1]           @ encoding: [0x91,0xed,0x00,0x5d]
552 @ CHECK: ldc    p14, c6, [r2, #-224]    @ encoding: [0x12,0xed,0x38,0x6e]
553 @ CHECK: ldc    p15, c7, [r3, #-120]!   @ encoding: [0x33,0xed,0x1e,0x7f]
554 @ CHECK: ldc    p5, c8, [r4], #16       @ encoding: [0xb4,0xec,0x04,0x85]
555 @ CHECK: ldc    p4, c9, [r5], #-72      @ encoding: [0x35,0xec,0x12,0x94]
556 @ CHECK: ldcl   p3, c10, [r6, #4]       @ encoding: [0xd6,0xed,0x01,0xa3]
557 @ CHECK: ldcl   p2, c11, [r7]           @ encoding: [0xd7,0xed,0x00,0xb2]
558 @ CHECK: ldcl   p1, c12, [r8, #-224]    @ encoding: [0x58,0xed,0x38,0xc1]
559 @ CHECK: ldcl   p0, c13, [r9, #-120]!   @ encoding: [0x79,0xed,0x1e,0xd0]
560 @ CHECK: ldcl   p6, c14, [r10], #16     @ encoding: [0xfa,0xec,0x04,0xe6]
561 @ CHECK: ldcl   p7, c15, [r11], #-72    @ encoding: [0x7b,0xec,0x12,0xf7]
562
563 @ CHECK: ldc2   p2, c8, [r1], {25}      @ encoding: [0x91,0xfc,0x19,0x82]
564
565
566 @------------------------------------------------------------------------------
567 @ LDMIA
568 @------------------------------------------------------------------------------
569         ldmia.w r4, {r4, r5, r8, r9}
570         ldmia.w r4, {r5, r6}
571         ldmia.w r5!, {r3, r8}
572         ldm.w r4, {r4, r5, r8, r9}
573         ldm.w r4, {r5, r6}
574         ldm.w r5!, {r3, r8}
575         ldm.w r5!, {r1, r2}
576         ldm.w r2, {r1, r2}
577
578         ldmia r4, {r4, r5, r8, r9}
579         ldmia r4, {r5, r6}
580         ldmia r5!, {r3, r8}
581         ldm r4, {r4, r5, r8, r9}
582         ldm r4, {r5, r6}
583         ldm r5!, {r3, r8}
584         ldmfd r5!, {r3, r8}
585         ldmia sp!, {r4-r11, pc}
586
587 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
588 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
589 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
590 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
591 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
592 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
593 @ CHECK: ldm.w  r5!, {r1, r2}           @ encoding: [0xb5,0xe8,0x06,0x00]
594 @ CHECK: ldm.w  r2, {r1, r2}            @ encoding: [0x92,0xe8,0x06,0x00]
595
596 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
597 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
598 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
599 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
600 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
601 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
602 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
603 @ CHECK: pop.w  {pc, r4, r5, r6, r7, r8, r9, r10, r11} @ encoding: [0xbd,0xe8,0xf0,0x8f]
604
605
606 @------------------------------------------------------------------------------
607 @ LDMDB
608 @------------------------------------------------------------------------------
609         ldmdb r4, {r4, r5, r8, r9}
610         ldmdb r4, {r5, r6}
611         ldmdb r5!, {r3, r8}
612         ldmea r5!, {r3, r8}
613         ldmdb.w r4, {r5, r6}
614         ldmdb.w r5!, {r3, r8}
615
616 @ CHECK: ldmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x14,0xe9,0x30,0x03]
617 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
618 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
619 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
620 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
621 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
622
623
624 @------------------------------------------------------------------------------
625 @ LDR(immediate)
626 @------------------------------------------------------------------------------
627         ldr r5, [r5, #-4]
628         ldr r5, [r6, #32]
629         ldr r5, [r6, #33]
630         ldr r5, [r6, #257]
631         ldr.w pc, [r7, #257]
632         ldr r2, [r4, #255]!
633         ldr r8, [sp, #4]!
634         ldr lr, [sp, #-4]!
635         ldr r2, [r4], #255
636         ldr r8, [sp], #4
637         ldr lr, [sp], #-4
638
639 @ CHECK: ldr    r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
640 @ CHECK: ldr    r5, [r6, #32]           @ encoding: [0x35,0x6a]
641 @ CHECK: ldr.w  r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
642 @ CHECK: ldr.w  r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
643 @ CHECK: ldr.w  pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
644 @ CHECK: ldr    r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
645 @ CHECK: ldr    r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
646 @ CHECK: ldr    lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
647 @ CHECK: ldr    r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
648 @ CHECK: ldr    r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
649 @ CHECK: ldr    lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
650
651
652 @------------------------------------------------------------------------------
653 @ LDR(literal)
654 @------------------------------------------------------------------------------
655         ldr.w r5, _foo
656         ldr   lr, (_strcmp-4)
657
658 @ CHECK: ldr.w  r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
659 @ CHECK: @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
660 @ CHECK: ldr.w  lr, _strcmp-4           @ encoding: [0x5f'A',0xf8'A',A,0xe0'A']
661 @ CHECK: @   fixup A - offset: 0, value: _strcmp-4, kind: fixup_t2_ldst_pcrel_12
662
663
664 @------------------------------------------------------------------------------
665 @ LDR(register)
666 @------------------------------------------------------------------------------
667         ldr r1, [r8, r1]
668         ldr.w r4, [r5, r2]
669         ldr r6, [r0, r2, lsl #3]
670         ldr r8, [r8, r2, lsl #2]
671         ldr r7, [sp, r2, lsl #1]
672         ldr r7, [sp, r2, lsl #0]
673
674 @ CHECK: ldr.w  r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
675 @ CHECK: ldr.w  r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
676 @ CHECK: ldr.w  r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
677 @ CHECK: ldr.w  r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
678 @ CHECK: ldr.w  r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
679 @ CHECK: ldr.w  r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
680
681
682 @------------------------------------------------------------------------------
683 @ LDRB(immediate)
684 @------------------------------------------------------------------------------
685         ldrb r5, [r5, #-4]
686         ldrb r5, [r6, #32]
687         ldrb r5, [r6, #33]
688         ldrb r5, [r6, #257]
689         ldrb.w lr, [r7, #257]
690         ldrb r5, [r8, #255]!
691         ldrb r2, [r5, #4]!
692         ldrb r1, [r4, #-4]!
693         ldrb lr, [r3], #255
694         ldrb r9, [r2], #4
695         ldrb r3, [sp], #-4
696
697 @ CHECK: ldrb   r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
698 @ CHECK: ldrb.w r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
699 @ CHECK: ldrb.w r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
700 @ CHECK: ldrb.w r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
701 @ CHECK: ldrb.w lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
702 @ CHECK: ldrb   r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
703 @ CHECK: ldrb   r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
704 @ CHECK: ldrb   r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
705 @ CHECK: ldrb   lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
706 @ CHECK: ldrb   r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
707 @ CHECK: ldrb   r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
708
709
710 @------------------------------------------------------------------------------
711 @ LDRB(register)
712 @------------------------------------------------------------------------------
713         ldrb r1, [r8, r1]
714         ldrb.w r4, [r5, r2]
715         ldrb r6, [r0, r2, lsl #3]
716         ldrb r8, [r8, r2, lsl #2]
717         ldrb r7, [sp, r2, lsl #1]
718         ldrb r7, [sp, r2, lsl #0]
719
720 @ CHECK: ldrb.w r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
721 @ CHECK: ldrb.w r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
722 @ CHECK: ldrb.w r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
723 @ CHECK: ldrb.w r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
724 @ CHECK: ldrb.w r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
725 @ CHECK: ldrb.w r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
726
727
728 @------------------------------------------------------------------------------
729 @ LDRBT
730 @------------------------------------------------------------------------------
731         ldrbt r1, [r2]
732         ldrbt r1, [r8, #0]
733         ldrbt r1, [r8, #3]
734         ldrbt r1, [r8, #255]
735
736 @ CHECK: ldrbt  r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
737 @ CHECK: ldrbt  r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
738 @ CHECK: ldrbt  r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
739 @ CHECK: ldrbt  r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
740
741
742 @------------------------------------------------------------------------------
743 @ LDRD
744 @------------------------------------------------------------------------------
745         ldrd r3, r5, [r6, #24]
746         ldrd r3, r5, [r6, #24]!
747         ldrd r3, r5, [r6], #4
748         ldrd r3, r5, [r6], #-8
749         ldrd r3, r5, [r6]
750         ldrd r8, r1, [r3, #0]
751
752 @ CHECK: ldrd   r3, r5, [r6, #24]       @ encoding: [0xd6,0xe9,0x06,0x35]
753 @ CHECK: ldrd   r3, r5, [r6, #24]!      @ encoding: [0xf6,0xe9,0x06,0x35]
754 @ CHECK: ldrd   r3, r5, [r6], #4        @ encoding: [0xf6,0xe8,0x01,0x35]
755 @ CHECK: ldrd   r3, r5, [r6], #-8       @ encoding: [0x76,0xe8,0x02,0x35]
756 @ CHECK: ldrd   r3, r5, [r6]            @ encoding: [0xd6,0xe9,0x00,0x35]
757 @ CHECK: ldrd   r8, r1, [r3]            @ encoding: [0xd3,0xe9,0x00,0x81]
758
759
760 @------------------------------------------------------------------------------
761 @ FIXME: LDRD(literal)
762 @------------------------------------------------------------------------------
763
764
765 @------------------------------------------------------------------------------
766 @ LDREX/LDREXB/LDREXH/LDREXD
767 @------------------------------------------------------------------------------
768         ldrex r1, [r4]
769         ldrex r8, [r4, #0]
770         ldrex r2, [sp, #128]
771         ldrexb r5, [r7]
772         ldrexh r9, [r12]
773         ldrexd r9, r3, [r4]
774
775 @ CHECK: ldrex  r1, [r4]                @ encoding: [0x54,0xe8,0x00,0x1f]
776 @ CHECK: ldrex  r8, [r4]                @ encoding: [0x54,0xe8,0x00,0x8f]
777 @ CHECK: ldrex  r2, [sp, #128]          @ encoding: [0x5d,0xe8,0x20,0x2f]
778 @ CHECK: ldrexb r5, [r7]                @ encoding: [0xd7,0xe8,0x4f,0x5f]
779 @ CHECK: ldrexh r9, [r12]               @ encoding: [0xdc,0xe8,0x5f,0x9f]
780 @ CHECK: ldrexd r9, r3, [r4]            @ encoding: [0xd4,0xe8,0x7f,0x93]
781
782
783 @------------------------------------------------------------------------------
784 @ LDRH(immediate)
785 @------------------------------------------------------------------------------
786         ldrh r5, [r5, #-4]
787         ldrh r5, [r6, #32]
788         ldrh r5, [r6, #33]
789         ldrh r5, [r6, #257]
790         ldrh.w lr, [r7, #257]
791         ldrh r5, [r8, #255]!
792         ldrh r2, [r5, #4]!
793         ldrh r1, [r4, #-4]!
794         ldrh lr, [r3], #255
795         ldrh r9, [r2], #4
796         ldrh r3, [sp], #-4
797
798 @ CHECK: ldrh   r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
799 @ CHECK: ldrh   r5, [r6, #32]           @ encoding: [0x35,0x8c]
800 @ CHECK: ldrh.w r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
801 @ CHECK: ldrh.w r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
802 @ CHECK: ldrh.w lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
803 @ CHECK: ldrh   r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
804 @ CHECK: ldrh   r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
805 @ CHECK: ldrh   r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
806 @ CHECK: ldrh   lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
807 @ CHECK: ldrh   r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
808 @ CHECK: ldrh   r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
809
810
811 @------------------------------------------------------------------------------
812 @ LDRH(register)
813 @------------------------------------------------------------------------------
814         ldrh r1, [r8, r1]
815         ldrh.w r4, [r5, r2]
816         ldrh r6, [r0, r2, lsl #3]
817         ldrh r8, [r8, r2, lsl #2]
818         ldrh r7, [sp, r2, lsl #1]
819         ldrh r7, [sp, r2, lsl #0]
820
821 @ CHECK: ldrh.w r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
822 @ CHECK: ldrh.w r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
823 @ CHECK: ldrh.w r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
824 @ CHECK: ldrh.w r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
825 @ CHECK: ldrh.w r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
826 @ CHECK: ldrh.w r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
827
828
829 @------------------------------------------------------------------------------
830 @ LDRH(literal)
831 @------------------------------------------------------------------------------
832         ldrh r5, _bar
833
834 @ CHECK: ldrh.w r5, _bar                @ encoding: [0x3f'A',0xf8'A',A,0x50'A']
835 @ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
836
837
838 @------------------------------------------------------------------------------
839 @ LDRHT
840 @------------------------------------------------------------------------------
841         ldrht r1, [r2]
842         ldrht r1, [r8, #0]
843         ldrht r1, [r8, #3]
844         ldrht r1, [r8, #255]
845
846 @ CHECK: ldrht  r1, [r2]                @ encoding: [0x32,0xf8,0x00,0x1e]
847 @ CHECK: ldrht  r1, [r8]                @ encoding: [0x38,0xf8,0x00,0x1e]
848 @ CHECK: ldrht  r1, [r8, #3]            @ encoding: [0x38,0xf8,0x03,0x1e]
849 @ CHECK: ldrht  r1, [r8, #255]          @ encoding: [0x38,0xf8,0xff,0x1e]
850
851
852 @------------------------------------------------------------------------------
853 @ LDRSB(immediate)
854 @------------------------------------------------------------------------------
855         ldrsb r5, [r5, #-4]
856         ldrsb r5, [r6, #32]
857         ldrsb r5, [r6, #33]
858         ldrsb r5, [r6, #257]
859         ldrsb.w lr, [r7, #257]
860
861 @ CHECK: ldrsb  r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
862 @ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
863 @ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
864 @ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
865 @ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
866
867
868 @------------------------------------------------------------------------------
869 @ LDRSB(register)
870 @------------------------------------------------------------------------------
871         ldrsb r1, [r8, r1]
872         ldrsb.w r4, [r5, r2]
873         ldrsb r6, [r0, r2, lsl #3]
874         ldrsb r8, [r8, r2, lsl #2]
875         ldrsb r7, [sp, r2, lsl #1]
876         ldrsb r7, [sp, r2, lsl #0]
877         ldrsb r5, [r8, #255]!
878         ldrsb r2, [r5, #4]!
879         ldrsb r1, [r4, #-4]!
880         ldrsb lr, [r3], #255
881         ldrsb r9, [r2], #4
882         ldrsb r3, [sp], #-4
883
884 @ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
885 @ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
886 @ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
887 @ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
888 @ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
889 @ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
890 @ CHECK: ldrsb  r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
891 @ CHECK: ldrsb  r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
892 @ CHECK: ldrsb  r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
893 @ CHECK: ldrsb  lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
894 @ CHECK: ldrsb  r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
895 @ CHECK: ldrsb  r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
896
897
898 @------------------------------------------------------------------------------
899 @ LDRSB(literal)
900 @------------------------------------------------------------------------------
901         ldrsb r5, _bar
902
903 @ CHECK: ldrsb.w r5, _bar               @ encoding: [0x1f'A',0xf9'A',A,0x50'A']
904 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
905
906
907 @------------------------------------------------------------------------------
908 @ LDRSBT
909 @------------------------------------------------------------------------------
910         ldrsbt r1, [r2]
911         ldrsbt r1, [r8, #0]
912         ldrsbt r1, [r8, #3]
913         ldrsbt r1, [r8, #255]
914
915 @ CHECK: ldrsbt r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
916 @ CHECK: ldrsbt r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
917 @ CHECK: ldrsbt r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
918 @ CHECK: ldrsbt r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
919
920
921 @------------------------------------------------------------------------------
922 @ LDRSH(immediate)
923 @------------------------------------------------------------------------------
924         ldrsh r5, [r5, #-4]
925         ldrsh r5, [r6, #32]
926         ldrsh r5, [r6, #33]
927         ldrsh r5, [r6, #257]
928         ldrsh.w lr, [r7, #257]
929
930 @ CHECK: ldrsh  r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
931 @ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
932 @ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
933 @ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
934 @ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
935
936
937 @------------------------------------------------------------------------------
938 @ LDRSH(register)
939 @------------------------------------------------------------------------------
940         ldrsh r1, [r8, r1]
941         ldrsh.w r4, [r5, r2]
942         ldrsh r6, [r0, r2, lsl #3]
943         ldrsh r8, [r8, r2, lsl #2]
944         ldrsh r7, [sp, r2, lsl #1]
945         ldrsh r7, [sp, r2, lsl #0]
946         ldrsh r5, [r8, #255]!
947         ldrsh r2, [r5, #4]!
948         ldrsh r1, [r4, #-4]!
949         ldrsh lr, [r3], #255
950         ldrsh r9, [r2], #4
951         ldrsh r3, [sp], #-4
952
953 @ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
954 @ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
955 @ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
956 @ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
957 @ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
958 @ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
959 @ CHECK: ldrsh  r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
960 @ CHECK: ldrsh  r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
961 @ CHECK: ldrsh  r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
962 @ CHECK: ldrsh  lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
963 @ CHECK: ldrsh  r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
964 @ CHECK: ldrsh  r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
965
966
967 @------------------------------------------------------------------------------
968 @ LDRSH(literal)
969 @------------------------------------------------------------------------------
970         ldrsh r5, _bar
971
972 @ CHECK: ldrsh.w r5, _bar               @ encoding: [0x3f'A',0xf9'A',A,0x50'A']
973 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
974
975 @ TEMPORARILY DISABLED:
976 @        ldrsh.w r4, [pc, #1435]
977 @      : ldrsh.w r4, [pc, #1435]               @ encoding: [0x3f,0xf9,0x9b,0x45]
978
979 @------------------------------------------------------------------------------
980 @ LDRSHT
981 @------------------------------------------------------------------------------
982         ldrsht r1, [r2]
983         ldrsht r1, [r8, #0]
984         ldrsht r1, [r8, #3]
985         ldrsht r1, [r8, #255]
986
987 @ CHECK: ldrsht r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
988 @ CHECK: ldrsht r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
989 @ CHECK: ldrsht r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
990 @ CHECK: ldrsht r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
991
992
993 @------------------------------------------------------------------------------
994 @ LDRT
995 @------------------------------------------------------------------------------
996         ldrt r1, [r2]
997         ldrt r2, [r6, #0]
998         ldrt r3, [r7, #3]
999         ldrt r4, [r9, #255]
1000
1001 @ CHECK: ldrt   r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
1002 @ CHECK: ldrt   r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
1003 @ CHECK: ldrt   r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
1004 @ CHECK: ldrt   r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
1005
1006
1007 @------------------------------------------------------------------------------
1008 @ LSL (immediate)
1009 @------------------------------------------------------------------------------
1010         lsl r2, r3, #12
1011         lsls r8, r3, #31
1012         lsls.w r2, r3, #1
1013         lsl r2, r3, #4
1014         lsls r2, r12, #15
1015
1016         lsl r3, #19
1017         lsls r8, #2
1018         lsls.w r7, #5
1019         lsl.w r12, #21
1020
1021 @ CHECK: lsl.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
1022 @ CHECK: lsls.w r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
1023 @ CHECK: lsls.w r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
1024 @ CHECK: lsl.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
1025 @ CHECK: lsls.w r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
1026
1027 @ CHECK: lsl.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
1028 @ CHECK: lsls.w r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
1029 @ CHECK: lsls.w r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
1030 @ CHECK: lsl.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
1031
1032
1033 @------------------------------------------------------------------------------
1034 @ LSL (register)
1035 @------------------------------------------------------------------------------
1036         lsl r3, r4, r2
1037         lsl.w r1, r2
1038         lsls r3, r4, r8
1039
1040 @ CHECK: lsl.w  r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
1041 @ CHECK: lsl.w  r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
1042 @ CHECK: lsls.w r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
1043
1044
1045 @------------------------------------------------------------------------------
1046 @ LSR (immediate)
1047 @------------------------------------------------------------------------------
1048         lsr r2, r3, #12
1049         lsrs r8, r3, #32
1050         lsrs.w r2, r3, #1
1051         lsr r2, r3, #4
1052         lsrs r2, r12, #15
1053
1054         lsr r3, #19
1055         lsrs r8, #2
1056         lsrs.w r7, #5
1057         lsr.w r12, #21
1058
1059 @ CHECK: lsr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
1060 @ CHECK: lsrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
1061 @ CHECK: lsrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
1062 @ CHECK: lsr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
1063 @ CHECK: lsrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
1064
1065 @ CHECK: lsr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
1066 @ CHECK: lsrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
1067 @ CHECK: lsrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
1068 @ CHECK: lsr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
1069
1070
1071 @------------------------------------------------------------------------------
1072 @ LSR (register)
1073 @------------------------------------------------------------------------------
1074         lsr r3, r4, r2
1075         lsr.w r1, r2
1076         lsrs r3, r4, r8
1077
1078 @ CHECK: lsr.w  r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
1079 @ CHECK: lsr.w  r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
1080 @ CHECK: lsrs.w r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
1081
1082 @------------------------------------------------------------------------------
1083 @ MCR/MCR2
1084 @------------------------------------------------------------------------------
1085         mcr  p7, #1, r5, c1, c1, #4
1086         mcr2  p7, #1, r5, c1, c1, #4
1087         mcr p14, #0, r4, c0, c5
1088         mcr2 p4, #2, r2, c1, c3
1089
1090 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
1091 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
1092 @ CHECK: mcr    p14, #0, r4, c0, c5, #0 @ encoding: [0x00,0xee,0x15,0x4e]
1093 @ CHECK: mcr2   p4, #2, r2, c1, c3, #0  @ encoding: [0x41,0xfe,0x13,0x24]
1094
1095
1096 @------------------------------------------------------------------------------
1097 @ MCRR/MCRR2
1098 @------------------------------------------------------------------------------
1099         mcrr  p7, #15, r5, r4, c1
1100         mcrr2  p7, #15, r5, r4, c1
1101
1102 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1103 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1104
1105
1106 @------------------------------------------------------------------------------
1107 @ MLA/MLS
1108 @------------------------------------------------------------------------------
1109         mla  r1,r2,r3,r4
1110         mls  r1,r2,r3,r4
1111
1112 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1113 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1114
1115
1116 @------------------------------------------------------------------------------
1117 @ MOV(immediate)
1118 @------------------------------------------------------------------------------
1119         movs r1, #21
1120         movs.w r1, #21
1121         movs r8, #21
1122         movw r0, #65535
1123         movw r1, #43777
1124         movw r1, #43792
1125         mov.w r0, #0x3fc0000
1126         mov r0, #0x3fc0000
1127         movs.w r0, #0x3fc0000
1128         itte eq
1129         movseq r1, #12
1130         moveq r1, #12
1131         movne.w r1, #12
1132         mov.w r6, #450
1133         it lo
1134         movlo r1, #-1
1135
1136         @ alias for mvn
1137         mov r3, #-3
1138
1139
1140 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1141 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1142 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1143 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1144 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1145 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1146 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1147 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1148 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1149 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1150 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1151 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1152 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1153 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1154 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
1155 @ CHECK: movlo.w        r1, #-1         @ encoding: [0x4f,0xf0,0xff,0x31]
1156 @ CHECK: mvn    r3, #2                  @ encoding: [0x6f,0xf0,0x02,0x03]
1157
1158 @------------------------------------------------------------------------------
1159 @ MOV(shifted register)
1160 @------------------------------------------------------------------------------
1161         mov r6, r2, lsl #16
1162         mov r6, r2, lsr #16
1163         movs r6, r2, asr #32
1164         movs r6, r2, ror #5
1165         movs r4, r4, lsl r5
1166         movs r4, r4, lsr r5
1167         movs r4, r4, asr r5
1168         movs r4, r4, ror r5
1169         mov r4, r4, lsl r5
1170         movs r4, r4, ror r8
1171         movs r4, r5, lsr r6
1172         itttt eq
1173         moveq r4, r4, lsl r5
1174         moveq r4, r4, lsr r5
1175         moveq r4, r4, asr r5
1176         moveq r4, r4, ror r5
1177         mov r4, r4, rrx
1178
1179 @ CHECK: lsl.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x02,0x46]
1180 @ CHECK: lsr.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x12,0x46]
1181 @ CHECK: asrs   r6, r2, #32             @ encoding: [0x16,0x10]
1182 @ CHECK: rors.w r6, r2, #5              @ encoding: [0x5f,0xea,0x72,0x16]
1183 @ CHECK: lsls   r4, r5                  @ encoding: [0xac,0x40]
1184 @ CHECK: lsrs   r4, r5                  @ encoding: [0xec,0x40]
1185 @ CHECK: asrs   r4, r5                  @ encoding: [0x2c,0x41]
1186 @ CHECK: rors   r4, r5                  @ encoding: [0xec,0x41]
1187 @ CHECK: lsl.w  r4, r4, r5              @ encoding: [0x04,0xfa,0x05,0xf4]
1188 @ CHECK: rors.w r4, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf4]
1189 @ CHECK: lsrs.w r4, r5, r6              @ encoding: [0x35,0xfa,0x06,0xf4]
1190 @ CHECK: itttt  eq                      @ encoding: [0x01,0xbf]
1191 @ CHECK: lsleq  r4, r5                  @ encoding: [0xac,0x40]
1192 @ CHECK: lsreq  r4, r5                  @ encoding: [0xec,0x40]
1193 @ CHECK: asreq  r4, r5                  @ encoding: [0x2c,0x41]
1194 @ CHECK: roreq  r4, r5                  @ encoding: [0xec,0x41]
1195 @ CHECK: rrx    r4, r4                  @ encoding: [0x4f,0xea,0x34,0x04]
1196
1197
1198 @------------------------------------------------------------------------------
1199 @ MOVT
1200 @------------------------------------------------------------------------------
1201         movt r3, #7
1202         movt r6, #0xffff
1203         it eq
1204         movteq r4, #0xff0
1205
1206 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1207 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1208 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1209 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1210
1211 @------------------------------------------------------------------------------
1212 @ MRC/MRC2
1213 @------------------------------------------------------------------------------
1214         mrc  p14, #0, r1, c1, c2, #4
1215         mrc2  p14, #0, r1, c1, c2, #4
1216         mrc p11, #1, r1, c2, c2
1217         mrc2 p12, #3, r3, c3, c4
1218
1219 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1220 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1221 @ CHECK: mrc    p11, #1, r1, c2, c2, #0 @ encoding: [0x32,0xee,0x12,0x1b]
1222 @ CHECK: mrc2   p12, #3, r3, c3, c4, #0 @ encoding: [0x73,0xfe,0x14,0x3c]
1223
1224
1225 @------------------------------------------------------------------------------
1226 @ MRRC/MRRC2
1227 @------------------------------------------------------------------------------
1228         mrrc  p7, #1, r5, r4, c1
1229         mrrc2  p7, #1, r5, r4, c1
1230
1231 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1232 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1233
1234
1235 @------------------------------------------------------------------------------
1236 @ MRS
1237 @------------------------------------------------------------------------------
1238         mrs  r8, apsr
1239         mrs  r8, cpsr
1240         mrs  r8, spsr
1241
1242 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1243 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1244 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1245
1246
1247 @------------------------------------------------------------------------------
1248 @ MSR
1249 @------------------------------------------------------------------------------
1250         msr  apsr, r1
1251         msr  apsr_g, r2
1252         msr  apsr_nzcvq, r3
1253         msr  APSR_nzcvq, r4
1254         msr  apsr_nzcvqg, r5
1255         msr  cpsr_fc, r6
1256         msr  cpsr_c, r7
1257         msr  cpsr_x, r8
1258         msr  cpsr_fc, r9
1259         msr  cpsr_all, r11
1260         msr  cpsr_fsx, r12
1261         msr  spsr_fc, r0
1262         msr  SPSR_fsxc, r5
1263         msr  cpsr_fsxc, r8
1264
1265 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1266 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1267 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1268 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1269 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1270 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1271 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1272 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1273 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1274 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1275 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1276 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1277 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1278 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1279
1280
1281 @------------------------------------------------------------------------------
1282 @ MUL
1283 @------------------------------------------------------------------------------
1284         muls r3, r4, r3
1285         mul r3, r4, r3
1286         mul r3, r4, r6
1287         it eq
1288         muleq r3, r4, r5
1289         it le
1290         mulle r4, r4, r8
1291         mul r5, r6
1292
1293 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1294 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1295 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1296 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1297 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1298 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1299 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1300 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1301
1302
1303 @------------------------------------------------------------------------------
1304 @ MVN(immediate)
1305 @------------------------------------------------------------------------------
1306         mvns r8, #21
1307         mvn r0, #0x3fc0000
1308         mvns r0, #0x3fc0000
1309         itte eq
1310         mvnseq r1, #12
1311         mvneq.w r1, #12
1312         mvnne r1, #12
1313
1314 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1315 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1316 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1317 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1318 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1319 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1320 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1321
1322
1323 @------------------------------------------------------------------------------
1324 @ MVN(register)
1325 @------------------------------------------------------------------------------
1326         mvn r2, r3
1327         mvns r2, r3
1328         mvn r5, r6, lsl #19
1329         mvn r5, r6, lsr #9
1330         mvn.w r5, r6, asr #4
1331         mvn r5, r6, ror #6
1332         mvn r5, r6, rrx
1333         it eq
1334         mvneq r2, r3
1335
1336 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1337 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1338 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1339 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1340 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1341 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1342 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1343 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1344 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1345
1346 @------------------------------------------------------------------------------
1347 @ NEG
1348 @------------------------------------------------------------------------------
1349         neg r5, r2
1350         neg r5, r8
1351
1352 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1353 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1354
1355
1356 @------------------------------------------------------------------------------
1357 @ NOP
1358 @------------------------------------------------------------------------------
1359         nop.w
1360
1361 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1362
1363
1364 @------------------------------------------------------------------------------
1365 @ ORN
1366 @------------------------------------------------------------------------------
1367         orn r4, r5, #0xf000
1368         orn r4, r5, r6
1369         orns r4, r5, r6
1370         orn r4, r5, r6, lsl #5
1371         orns r4, r5, r6, lsr #5
1372         orn r4, r5, r6, lsr #5
1373         orns r4, r5, r6, asr #5
1374         orn r4, r5, r6, ror #5
1375
1376 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1377 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1378 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1379 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1380 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1381 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1382 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1383 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1384
1385
1386 @------------------------------------------------------------------------------
1387 @ ORR
1388 @------------------------------------------------------------------------------
1389         orr r4, r5, #0xf000
1390         orr r4, r5, r6
1391         orr r4, r5, r6, lsl #5
1392         orrs r4, r5, r6, lsr #5
1393         orr r4, r5, r6, lsr #5
1394         orrs r4, r5, r6, asr #5
1395         orr r4, r5, r6, ror #5
1396
1397 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1398 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1399 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1400 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1401 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1402 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1403 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1404
1405
1406 @------------------------------------------------------------------------------
1407 @ PKH
1408 @------------------------------------------------------------------------------
1409         pkhbt r2, r2, r3
1410         pkhbt r2, r2, r3, lsl #31
1411         pkhbt r2, r2, r3, lsl #0
1412         pkhbt r2, r2, r3, lsl #15
1413
1414         pkhtb r2, r2, r3
1415         pkhtb r2, r2, r3, asr #31
1416         pkhtb r2, r2, r3, asr #15
1417
1418 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1419 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1420 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1421 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1422
1423 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1424 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1425 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1426
1427
1428 @------------------------------------------------------------------------------
1429 @ PLD(immediate)
1430 @------------------------------------------------------------------------------
1431         pld [r5, #-4]
1432         pld [r6, #32]
1433         pld [r6, #33]
1434         pld [r6, #257]
1435         pld [r7, #257]
1436         pld [r1, #0]
1437         pld [r1, #-0]
1438
1439 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1440 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1441 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1442 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1443 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1444 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1445 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1446
1447
1448 @------------------------------------------------------------------------------
1449 @ PLD(literal)
1450 @------------------------------------------------------------------------------
1451 @        pld  _foo
1452
1453 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1454             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1455
1456
1457 @------------------------------------------------------------------------------
1458 @ PLD(register)
1459 @------------------------------------------------------------------------------
1460         pld [r8, r1]
1461         pld [r5, r2]
1462         pld [r0, r2, lsl #3]
1463         pld [r8, r2, lsl #2]
1464         pld [sp, r2, lsl #1]
1465         pld [sp, r2, lsl #0]
1466
1467 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1468 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1469 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1470 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1471 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1472 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1473
1474 @------------------------------------------------------------------------------
1475 @ PLI(immediate)
1476 @------------------------------------------------------------------------------
1477         pli [r5, #-4]
1478         pli [r6, #32]
1479         pli [r6, #33]
1480         pli [r6, #257]
1481         pli [r7, #257]
1482
1483 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1484 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1485 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1486 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1487 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1488
1489
1490 @------------------------------------------------------------------------------
1491 @ PLI(literal)
1492 @------------------------------------------------------------------------------
1493 @        pli  _foo
1494
1495
1496 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1497            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1498
1499
1500 @------------------------------------------------------------------------------
1501 @ PLI(register)
1502 @------------------------------------------------------------------------------
1503         pli [r8, r1]
1504         pli [r5, r2]
1505         pli [r0, r2, lsl #3]
1506         pli [r8, r2, lsl #2]
1507         pli [sp, r2, lsl #1]
1508         pli [sp, r2, lsl #0]
1509
1510 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1511 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1512 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1513 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1514 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1515 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1516
1517 @------------------------------------------------------------------------------
1518 @ POP (alias)
1519 @------------------------------------------------------------------------------
1520         pop {r2, r9}
1521
1522 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1523
1524
1525 @------------------------------------------------------------------------------
1526 @ PUSH (alias)
1527 @------------------------------------------------------------------------------
1528         push {r2, r9}
1529
1530 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1531
1532
1533 @------------------------------------------------------------------------------
1534 @ QADD/QADD16/QADD8
1535 @------------------------------------------------------------------------------
1536         qadd r1, r2, r3
1537         qadd16 r1, r2, r3
1538         qadd8 r1, r2, r3
1539         itte gt
1540         qaddgt r1, r2, r3
1541         qadd16gt r1, r2, r3
1542         qadd8le r1, r2, r3
1543
1544 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1545 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1546 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1547 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1548 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1549 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1550 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1551
1552
1553 @------------------------------------------------------------------------------
1554 @ QDADD/QDSUB
1555 @------------------------------------------------------------------------------
1556         qdadd r6, r7, r8
1557         qdsub r6, r7, r8
1558         itt hi
1559         qdaddhi r6, r7, r8
1560         qdsubhi r6, r7, r8
1561
1562 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1563 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1564 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1565 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1566 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1567
1568
1569 @------------------------------------------------------------------------------
1570 @ QSAX
1571 @------------------------------------------------------------------------------
1572         qsax r9, r12, r0
1573         it eq
1574         qsaxeq r9, r12, r0
1575
1576 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1577 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1578 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1579
1580
1581 @------------------------------------------------------------------------------
1582 @ QSUB/QSUB16/QSUB8
1583 @------------------------------------------------------------------------------
1584         qsub r1, r2, r3
1585         qsub16 r1, r2, r3
1586         qsub8 r1, r2, r3
1587         itet le
1588         qsuble r1, r2, r3
1589         qsub16gt r1, r2, r3
1590         qsub8le r1, r2, r3
1591
1592 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1593 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1594 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1595 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1596 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1597 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1598 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1599
1600
1601 @------------------------------------------------------------------------------
1602 @ RBIT
1603 @------------------------------------------------------------------------------
1604         rbit r1, r2
1605         it ne
1606         rbitne r1, r2
1607
1608 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1609 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1610 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1611
1612
1613 @------------------------------------------------------------------------------
1614 @ REV
1615 @------------------------------------------------------------------------------
1616         rev.w r1, r2
1617         rev r2, r8
1618         itt ne
1619         revne r1, r2
1620         revne r1, r8
1621
1622 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1623 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1624 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1625 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1626 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1627
1628
1629 @------------------------------------------------------------------------------
1630 @ REV16
1631 @------------------------------------------------------------------------------
1632         rev16.w r1, r2
1633         rev16 r2, r8
1634         itt ne
1635         rev16ne r1, r2
1636         rev16ne r1, r8
1637
1638 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1639 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1640 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1641 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1642 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1643
1644
1645 @------------------------------------------------------------------------------
1646 @ REVSH
1647 @------------------------------------------------------------------------------
1648         revsh.w r1, r2
1649         revsh r2, r8
1650         itt ne
1651         revshne r1, r2
1652         revshne r1, r8
1653
1654 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1655 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1656 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1657 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1658 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1659
1660
1661 @------------------------------------------------------------------------------
1662 @ ROR (immediate)
1663 @------------------------------------------------------------------------------
1664         ror r2, r3, #12
1665         rors r8, r3, #31
1666         rors.w r2, r3, #1
1667         ror r2, r3, #4
1668         rors r2, r12, #15
1669
1670         ror r3, #19
1671         rors r8, #2
1672         rors.w r7, #5
1673         ror.w r12, #21
1674
1675 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1676 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1677 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1678 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1679 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1680
1681 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1682 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1683 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1684 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1685
1686
1687 @------------------------------------------------------------------------------
1688 @ ROR (register)
1689 @------------------------------------------------------------------------------
1690         ror r3, r4, r2
1691         ror.w r1, r2
1692         rors r3, r4, r8
1693
1694 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1695 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1696 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1697
1698
1699 @------------------------------------------------------------------------------
1700 @ RRX
1701 @------------------------------------------------------------------------------
1702         rrx r1, r2
1703         rrxs r1, r2
1704         ite lt
1705         rrxlt r9, r12
1706         rrxsge r8, r3
1707
1708 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1709 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1710 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1711 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1712 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1713
1714 @------------------------------------------------------------------------------
1715 @ RSB (immediate)
1716 @------------------------------------------------------------------------------
1717         rsb r2, r5, #0xff000
1718         rsbs r3, r12, #0xf
1719         rsb r1, #0xff
1720         rsb r1, r1, #0xff
1721         rsb r11, r11, #0
1722         rsb r9, #0
1723         rsbs r3, r1, #0
1724         rsb r3, r1, #0
1725
1726 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1727 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1728 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1729 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1730 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1731 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1732 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1733 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1734
1735
1736 @------------------------------------------------------------------------------
1737 @ RSB (register)
1738 @------------------------------------------------------------------------------
1739         rsb r4, r8
1740         rsb r4, r9, r8
1741         rsb r1, r4, r8, asr #3
1742         rsbs r2, r1, r7, lsl #1
1743
1744 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1745 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1746 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1747 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1748
1749
1750 @------------------------------------------------------------------------------
1751 @ SADD16
1752 @------------------------------------------------------------------------------
1753         sadd16 r3, r4, r8
1754         it ne
1755         sadd16ne r3, r4, r8
1756
1757 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1758 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1759 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1760
1761
1762 @------------------------------------------------------------------------------
1763 @ SADD8
1764 @------------------------------------------------------------------------------
1765         sadd8 r3, r4, r8
1766         it ne
1767         sadd8ne r3, r4, r8
1768
1769 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1770 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1771 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1772
1773
1774 @------------------------------------------------------------------------------
1775 @ SASX
1776 @------------------------------------------------------------------------------
1777         saddsubx r9, r2, r7
1778         it ne
1779         saddsubxne r2, r5, r6
1780         sasx r9, r2, r7
1781         it ne
1782         sasxne r2, r5, r6
1783
1784 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1785 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1786 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1787 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1788 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1789 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1790
1791
1792 @------------------------------------------------------------------------------
1793 @ SBC (immediate)
1794 @------------------------------------------------------------------------------
1795         sbc r0, r1, #4
1796         sbcs r0, r1, #0
1797         sbc r1, r2, #255
1798         sbc r3, r7, #0x00550055
1799         sbc r8, r12, #0xaa00aa00
1800         sbc r9, r7, #0xa5a5a5a5
1801         sbc r5, r3, #0x87000000
1802         sbc r4, r2, #0x7f800000
1803         sbc r4, r2, #0x00000680
1804
1805 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1806 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1807 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1808 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1809 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1810 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1811 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1812 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1813 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1814
1815
1816 @------------------------------------------------------------------------------
1817 @ SBC (register)
1818 @------------------------------------------------------------------------------
1819         sbc r4, r5, r6
1820         sbcs r4, r5, r6
1821         sbc.w r9, r1, r3
1822         sbcs.w r9, r1, r3
1823         sbc     r0, r1, r3, ror #4
1824         sbcs    r0, r1, r3, lsl #7
1825         sbc.w   r0, r1, r3, lsr #31
1826         sbcs.w  r0, r1, r3, asr #32
1827
1828 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1829 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1830 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1831 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1832 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1833 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1834 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1835 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1836
1837
1838 @------------------------------------------------------------------------------
1839 @ SBFX
1840 @------------------------------------------------------------------------------
1841         sbfx r4, r5, #16, #1
1842         it gt
1843         sbfxgt r4, r5, #16, #16
1844
1845 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1846 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1847 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1848
1849
1850 @------------------------------------------------------------------------------
1851 @ SEL
1852 @------------------------------------------------------------------------------
1853         sel r5, r9, r2
1854         it le
1855         selle r5, r9, r2
1856
1857 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1858 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1859 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1860
1861
1862 @------------------------------------------------------------------------------
1863 @ SEV
1864 @------------------------------------------------------------------------------
1865         sev.w
1866         it eq
1867         seveq.w
1868
1869 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1870 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1871 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1872
1873
1874 @------------------------------------------------------------------------------
1875 @ SADD16/SADD8
1876 @------------------------------------------------------------------------------
1877         sadd16 r1, r2, r3
1878         sadd8 r1, r2, r3
1879         ite gt
1880         sadd16gt r1, r2, r3
1881         sadd8le r1, r2, r3
1882
1883 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1884 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1885 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1886 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1887 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1888
1889
1890 @------------------------------------------------------------------------------
1891 @ SHASX
1892 @------------------------------------------------------------------------------
1893         shasx r4, r8, r2
1894         it gt
1895         shasxgt r4, r8, r2
1896         shaddsubx r4, r8, r2
1897         it gt
1898         shaddsubxgt r4, r8, r2
1899
1900 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1901 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1902 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1903 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1904 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1905 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1906
1907
1908 @------------------------------------------------------------------------------
1909 @ SHASX
1910 @------------------------------------------------------------------------------
1911         shsax r4, r8, r2
1912         it gt
1913         shsaxgt r4, r8, r2
1914         shsubaddx r4, r8, r2
1915         it gt
1916         shsubaddxgt r4, r8, r2
1917
1918 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1919 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1920 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1921 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1922 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1923 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1924
1925
1926 @------------------------------------------------------------------------------
1927 @ SHSUB16/SHSUB8
1928 @------------------------------------------------------------------------------
1929         shsub16 r4, r8, r2
1930         shsub8 r4, r8, r2
1931         itt gt
1932         shsub16gt r4, r8, r2
1933         shsub8gt r4, r8, r2
1934
1935 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1936 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1937 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1938 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1939 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1940
1941
1942 @------------------------------------------------------------------------------
1943 @ SMLABB/SMLABT/SMLATB/SMLATT
1944 @------------------------------------------------------------------------------
1945         smlabb r3, r1, r9, r0
1946         smlabt r5, r6, r4, r1
1947         smlatb r4, r2, r3, r2
1948         smlatt r8, r3, r8, r4
1949         itete gt
1950         smlabbgt r3, r1, r9, r0
1951         smlabtle r5, r6, r4, r1
1952         smlatbgt r4, r2, r3, r2
1953         smlattle r8, r3, r8, r4
1954
1955 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1956 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1957 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1958 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1959 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1960 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1961 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1962 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1963 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1964
1965
1966 @------------------------------------------------------------------------------
1967 @ SMLAD/SMLADX
1968 @------------------------------------------------------------------------------
1969         smlad r2, r3, r5, r8
1970         smladx r2, r3, r5, r8
1971         itt hi
1972         smladhi r2, r3, r5, r8
1973         smladxhi r2, r3, r5, r8
1974
1975 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1976 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1977 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1978 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1979 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1980
1981
1982 @------------------------------------------------------------------------------
1983 @ SMLAL
1984 @------------------------------------------------------------------------------
1985         smlal r2, r3, r5, r8
1986         it eq
1987         smlaleq r2, r3, r5, r8
1988
1989 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1990 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1991 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1992
1993
1994 @------------------------------------------------------------------------------
1995 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1996 @------------------------------------------------------------------------------
1997         smlalbb r3, r1, r9, r0
1998         smlalbt r5, r6, r4, r1
1999         smlaltb r4, r2, r3, r2
2000         smlaltt r8, r3, r8, r4
2001         iteet ge
2002         smlalbbge r3, r1, r9, r0
2003         smlalbtlt r5, r6, r4, r1
2004         smlaltblt r4, r2, r3, r2
2005         smlalttge r8, r3, r8, r4
2006
2007 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
2008 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
2009 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
2010 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2011 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2012 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2013 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2014 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2015 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2016
2017
2018 @------------------------------------------------------------------------------
2019 @ SMLALD/SMLALDX
2020 @------------------------------------------------------------------------------
2021         smlald r2, r3, r5, r8
2022         smlaldx r2, r3, r5, r8
2023         ite eq
2024         smlaldeq r2, r3, r5, r8
2025         smlaldxne r2, r3, r5, r8
2026
2027 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2028 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2029 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2030 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2031 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2032
2033
2034 @------------------------------------------------------------------------------
2035 @ SMLAWB/SMLAWT
2036 @------------------------------------------------------------------------------
2037         smlawb r2, r3, r10, r8
2038         smlawt r8, r3, r5, r9
2039         ite eq
2040         smlawbeq r2, r7, r5, r8
2041         smlawtne r1, r3, r0, r8
2042
2043 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2044 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2045 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2046 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2047 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2048
2049
2050 @------------------------------------------------------------------------------
2051 @ SMLSD/SMLSDX
2052 @------------------------------------------------------------------------------
2053         smlsd r2, r3, r5, r8
2054         smlsdx r2, r3, r5, r8
2055         ite le
2056         smlsdle r2, r3, r5, r8
2057         smlsdxgt r2, r3, r5, r8
2058
2059 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2060 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2061 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2062 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2063 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2064
2065
2066 @------------------------------------------------------------------------------
2067 @ SMLSLD/SMLSLDX
2068 @------------------------------------------------------------------------------
2069         smlsld r2, r9, r5, r1
2070         smlsldx r4, r11, r2, r8
2071         ite ge
2072         smlsldge r8, r2, r5, r6
2073         smlsldxlt r1, r0, r3, r8
2074
2075 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2076 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2077 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2078 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2079 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2080
2081
2082 @------------------------------------------------------------------------------
2083 @ SMMLA/SMMLAR
2084 @------------------------------------------------------------------------------
2085         smmla r1, r2, r3, r4
2086         smmlar r4, r3, r2, r1
2087         ite lo
2088         smmlalo r1, r2, r3, r4
2089         smmlarcs r4, r3, r2, r1
2090
2091 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2092 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2093 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2094 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2095 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2096
2097
2098 @------------------------------------------------------------------------------
2099 @ SMMLS/SMMLSR
2100 @------------------------------------------------------------------------------
2101         smmls r1, r2, r3, r4
2102         smmlsr r4, r3, r2, r1
2103         ite lo
2104         smmlslo r1, r2, r3, r4
2105         smmlsrcs r4, r3, r2, r1
2106
2107 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2108 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2109 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2110 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2111 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2112
2113
2114 @------------------------------------------------------------------------------
2115 @ SMMUL/SMMULR
2116 @------------------------------------------------------------------------------
2117         smmul r2, r3, r4
2118         smmulr r3, r2, r1
2119         ite cc
2120         smmulcc r2, r3, r4
2121         smmulrhs r3, r2, r1
2122
2123 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2124 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2125 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2126 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2127 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2128
2129
2130 @------------------------------------------------------------------------------
2131 @ SMUAD/SMUADX
2132 @------------------------------------------------------------------------------
2133         smuad r2, r3, r4
2134         smuadx r3, r2, r1
2135         ite lt
2136         smuadlt r2, r3, r4
2137         smuadxge r3, r2, r1
2138
2139 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2140 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2141 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2142 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2143 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2144
2145
2146 @------------------------------------------------------------------------------
2147 @ SMULBB/SMULBT/SMULTB/SMULTT
2148 @------------------------------------------------------------------------------
2149         smulbb r3, r9, r0
2150         smulbt r5, r4, r1
2151         smultb r4, r2, r2
2152         smultt r8, r3, r4
2153         itete ge
2154         smulbbge r1, r9, r0
2155         smulbtlt r5, r6, r4
2156         smultbge r2, r3, r2
2157         smulttlt r8, r3, r4
2158
2159 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2160 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2161 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2162 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2163 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2164 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2165 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2166 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2167 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2168
2169
2170 @------------------------------------------------------------------------------
2171 @ SMULL
2172 @------------------------------------------------------------------------------
2173         smull r3, r9, r0, r1
2174         it eq
2175         smulleq r8, r3, r4, r5
2176
2177 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2178 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2179 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2180
2181
2182 @------------------------------------------------------------------------------
2183 @ SMULWB/SMULWT
2184 @------------------------------------------------------------------------------
2185         smulwb r3, r9, r0
2186         smulwt r3, r9, r2
2187         ite gt
2188         smulwbgt r3, r9, r0
2189         smulwtle r3, r9, r2
2190
2191 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2192 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2193 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2194 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2195 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2196
2197
2198 @------------------------------------------------------------------------------
2199 @ SMUSD/SMUSDX
2200 @------------------------------------------------------------------------------
2201         smusd r3, r0, r1
2202         smusdx r3, r9, r2
2203         ite eq
2204         smusdeq r8, r3, r2
2205         smusdxne r7, r4, r3
2206
2207 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2208 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2209 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2210 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2211 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2212
2213
2214 @------------------------------------------------------------------------------
2215 @ SRS
2216 @------------------------------------------------------------------------------
2217         srsdb sp, #1
2218         srsia sp, #0
2219
2220         srsdb sp!, #19
2221         srsia sp!, #2
2222
2223         srsea sp, #10
2224         srsfd sp, #9
2225
2226         srsea sp!, #5
2227         srsfd sp!, #5
2228
2229         srs sp, #5
2230         srs sp!, #5
2231
2232 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2233 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2234 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2235 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2236 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2237 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2238 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2239 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2240 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2241 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2242
2243
2244 @------------------------------------------------------------------------------
2245 @ SSAT
2246 @------------------------------------------------------------------------------
2247         ssat    r8, #1, r10
2248         ssat    r8, #1, r10, lsl #0
2249         ssat    r8, #1, r10, lsl #31
2250         ssat    r8, #1, r10, asr #1
2251
2252 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2253 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2254 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2255 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2256
2257
2258 @------------------------------------------------------------------------------
2259 @ SSAT16
2260 @------------------------------------------------------------------------------
2261         ssat16  r2, #1, r7
2262         ssat16  r3, #16, r5
2263
2264 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2265 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2266
2267
2268 @------------------------------------------------------------------------------
2269 @ SSAX
2270 @------------------------------------------------------------------------------
2271         ssubaddx r2, r3, r4
2272         it lt
2273         ssubaddxlt r2, r3, r4
2274         ssax r2, r3, r4
2275         it lt
2276         ssaxlt r2, r3, r4
2277
2278 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2279 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2280 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2281 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2282 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2283 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2284
2285
2286 @------------------------------------------------------------------------------
2287 @ SSUB16/SSUB8
2288 @------------------------------------------------------------------------------
2289         ssub16 r1, r0, r6
2290         ssub8 r9, r2, r4
2291         ite ne
2292         ssub16ne r5, r3, r2
2293         ssub8eq r5, r1, r2
2294
2295 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2296 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2297 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2298 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2299 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2300
2301
2302 @------------------------------------------------------------------------------
2303 @ STC{L}/STC2{L}
2304 @------------------------------------------------------------------------------
2305         stc2 p0, c8, [r1, #4]
2306         stc2 p1, c7, [r2]
2307         stc2 p2, c6, [r3, #-224]
2308         stc2 p3, c5, [r4, #-120]!
2309         stc2 p4, c4, [r5], #16
2310         stc2 p5, c3, [r6], #-72
2311         stc2l p6, c2, [r7, #4]
2312         stc2l p7, c1, [r8]
2313         stc2l p8, c0, [r9, #-224]
2314         stc2l p9, c1, [r10, #-120]!
2315         stc2l p10, c2, [r11], #16
2316         stc2l p11, c3, [r12], #-72
2317
2318         stc p12, c4, [r0, #4]
2319         stc p13, c5, [r1]
2320         stc p14, c6, [r2, #-224]
2321         stc p15, c7, [r3, #-120]!
2322         stc p5, c8, [r4], #16
2323         stc p4, c9, [r5], #-72
2324         stcl p3, c10, [r6, #4]
2325         stcl p2, c11, [r7]
2326         stcl p1, c12, [r8, #-224]
2327         stcl p0, c13, [r9, #-120]!
2328         stcl p6, c14, [r10], #16
2329         stcl p7, c15, [r11], #-72
2330
2331         stc2 p2, c8, [r1], { 25 }
2332
2333 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2334 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2335 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2336 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2337 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2338 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2339 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2340 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2341 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2342 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2343 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2344 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2345
2346 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2347 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2348 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2349 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2350 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2351 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2352 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2353 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2354 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2355 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2356 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2357 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2358
2359 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2360
2361
2362 @------------------------------------------------------------------------------
2363 @ STMIA
2364 @------------------------------------------------------------------------------
2365         stmia.w r4, {r4, r5, r8, r9}
2366         stmia.w r4, {r5, r6}
2367         stmia.w r5!, {r3, r8}
2368         stm.w r4, {r4, r5, r8, r9}
2369         stm.w r4, {r5, r6}
2370         stm.w r5!, {r3, r8}
2371         stm.w r5!, {r1, r2}
2372         stm.w r2, {r1, r2}
2373
2374         stmia r4, {r4, r5, r8, r9}
2375         stmia r4, {r5, r6}
2376         stmia r5!, {r3, r8}
2377         stm r4, {r4, r5, r8, r9}
2378         stm r4, {r5, r6}
2379         stm r5!, {r3, r8}
2380         stmea r5!, {r3, r8}
2381
2382 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2383 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2384 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2385 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2386 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2387 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2388 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2389 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2390
2391 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2392 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2393 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2394 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2395 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2396 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2397 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2398
2399
2400 @------------------------------------------------------------------------------
2401 @ STMDB
2402 @------------------------------------------------------------------------------
2403         stmdb r4, {r4, r5, r8, r9}
2404         stmdb r4, {r5, r6}
2405         stmdb r5!, {r3, r8}
2406         stmea r5!, {r3, r8}
2407         stmdb.w r5, {r0, r1}
2408
2409 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2410 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2411 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2412 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2413 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2414
2415
2416 @------------------------------------------------------------------------------
2417 @ STR(immediate)
2418 @------------------------------------------------------------------------------
2419         str r5, [r5, #-4]
2420         str r5, [r6, #32]
2421         str r5, [r6, #33]
2422         str r5, [r6, #257]
2423         str.w pc, [r7, #257]
2424         str r2, [r4, #255]!
2425         str r8, [sp, #4]!
2426         str lr, [sp, #-4]!
2427         str r2, [r4], #255
2428         str r8, [sp], #4
2429         str lr, [sp], #-4
2430
2431 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2432 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2433 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2434 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2435 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2436 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2437 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2438 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2439 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2440 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2441 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2442
2443
2444 @------------------------------------------------------------------------------
2445 @ STR(register)
2446 @------------------------------------------------------------------------------
2447         str r1, [r8, r1]
2448         str.w r4, [r5, r2]
2449         str r6, [r0, r2, lsl #3]
2450         str r8, [r8, r2, lsl #2]
2451         str r7, [sp, r2, lsl #1]
2452         str r7, [sp, r2, lsl #0]
2453
2454 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2455 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2456 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2457 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2458 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2459 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2460
2461
2462 @------------------------------------------------------------------------------
2463 @ STRB(immediate)
2464 @------------------------------------------------------------------------------
2465         strb r5, [r5, #-4]
2466         strb r5, [r6, #32]
2467         strb r5, [r6, #33]
2468         strb r5, [r6, #257]
2469         strb.w lr, [r7, #257]
2470         strb r5, [r8, #255]!
2471         strb r2, [r5, #4]!
2472         strb r1, [r4, #-4]!
2473         strb lr, [r3], #255
2474         strb r9, [r2], #4
2475         strb r3, [sp], #-4
2476         strb r4, [r8, #-0]!
2477
2478 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2479 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2480 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2481 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2482 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2483 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2484 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2485 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2486 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2487 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2488 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2489 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2490
2491
2492 @------------------------------------------------------------------------------
2493 @ STRB(register)
2494 @------------------------------------------------------------------------------
2495         strb r1, [r8, r1]
2496         strb.w r4, [r5, r2]
2497         strb r6, [r0, r2, lsl #3]
2498         strb r8, [r8, r2, lsl #2]
2499         strb r7, [sp, r2, lsl #1]
2500         strb r7, [sp, r2, lsl #0]
2501
2502 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2503 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2504 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2505 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2506 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2507 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2508
2509
2510 @------------------------------------------------------------------------------
2511 @ STRBT
2512 @------------------------------------------------------------------------------
2513         strbt r1, [r2]
2514         strbt r1, [r8, #0]
2515         strbt r1, [r8, #3]
2516         strbt r1, [r8, #255]
2517
2518 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2519 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2520 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2521 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2522
2523
2524 @------------------------------------------------------------------------------
2525 @ STRD
2526 @------------------------------------------------------------------------------
2527         strd r3, r5, [r6, #24]
2528         strd r3, r5, [r6, #24]!
2529         strd r3, r5, [r6], #4
2530         strd r3, r5, [r6], #-8
2531         strd r3, r5, [r6]
2532         strd r8, r1, [r3, #0]
2533
2534 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2535 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2536 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2537 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2538 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2539 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2540
2541
2542 @------------------------------------------------------------------------------
2543 @ STREX/STREXB/STREXH/STREXD
2544 @------------------------------------------------------------------------------
2545         strex r1, r8, [r4]
2546         strex r8, r2, [r4, #0]
2547         strex r2, r12, [sp, #128]
2548         strexb r5, r1, [r7]
2549         strexh r9, r7, [r12]
2550         strexd r9, r3, r6, [r4]
2551
2552 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2553 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2554 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2555 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2556 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2557 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2558
2559
2560 @------------------------------------------------------------------------------
2561 @ STRH(immediate)
2562 @------------------------------------------------------------------------------
2563         strh r5, [r5, #-4]
2564         strh r5, [r6, #32]
2565         strh r5, [r6, #33]
2566         strh r5, [r6, #257]
2567         strh.w lr, [r7, #257]
2568         strh r5, [r8, #255]!
2569         strh r2, [r5, #4]!
2570         strh r1, [r4, #-4]!
2571         strh lr, [r3], #255
2572         strh r9, [r2], #4
2573         strh r3, [sp], #-4
2574
2575 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2576 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2577 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2578 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2579 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2580 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2581 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2582 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2583 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2584 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2585 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2586
2587
2588 @------------------------------------------------------------------------------
2589 @ STRH(register)
2590 @------------------------------------------------------------------------------
2591         strh r1, [r8, r1]
2592         strh.w r4, [r5, r2]
2593         strh r6, [r0, r2, lsl #3]
2594         strh r8, [r8, r2, lsl #2]
2595         strh r7, [sp, r2, lsl #1]
2596         strh r7, [sp, r2, lsl #0]
2597
2598 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2599 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2600 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2601 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2602 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2603 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2604
2605
2606 @------------------------------------------------------------------------------
2607 @ STRHT
2608 @------------------------------------------------------------------------------
2609         strht r1, [r2]
2610         strht r1, [r8, #0]
2611         strht r1, [r8, #3]
2612         strht r1, [r8, #255]
2613
2614 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2615 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2616 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2617 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2618
2619
2620 @------------------------------------------------------------------------------
2621 @ STRT
2622 @------------------------------------------------------------------------------
2623         strt r1, [r2]
2624         strt r1, [r8, #0]
2625         strt r1, [r8, #3]
2626         strt r1, [r8, #255]
2627
2628 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2629 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2630 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2631 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2632
2633
2634 @------------------------------------------------------------------------------
2635 @ SUB (immediate)
2636 @------------------------------------------------------------------------------
2637         itet eq
2638         subeq r1, r2, #4
2639         subwne r5, r3, #1023
2640         subeq r4, r5, #293
2641         sub r2, sp, #1024
2642         sub r2, r8, #0xff00
2643         sub r2, r3, #257
2644         subw r2, r3, #257
2645         sub r12, r6, #0x100
2646         subw r12, r6, #0x100
2647         subs r1, r2, #0x1f0
2648         sub r2, #1
2649         sub r0, r0, #32
2650
2651 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2652 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2653 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2654 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2655 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2656 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2657 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2658 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2659 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2660 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2661 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2662 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2663 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2664
2665
2666 @------------------------------------------------------------------------------
2667 @ SUB (register)
2668 @------------------------------------------------------------------------------
2669         sub r4, r5, r6
2670         sub r4, r5, r6, lsl #5
2671         sub r4, r5, r6, lsr #5
2672         sub.w r4, r5, r6, lsr #5
2673         sub r4, r5, r6, asr #5
2674         sub r4, r5, r6, ror #5
2675         sub.w r5, r2, r12, rrx
2676
2677 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2678 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2679 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2680 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2681 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2682 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2683 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2684
2685
2686 @------------------------------------------------------------------------------
2687 @ SVC
2688 @------------------------------------------------------------------------------
2689         svc #0
2690         ite eq
2691         svceq #255
2692         swine #33
2693
2694 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2695 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2696 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2697 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2698
2699
2700 @------------------------------------------------------------------------------
2701 @ SXTAB
2702 @------------------------------------------------------------------------------
2703         sxtab r2, r3, r4
2704         sxtab r4, r5, r6, ror #0
2705         it lt
2706         sxtablt r6, r2, r9, ror #8
2707         sxtab r5, r1, r4, ror #16
2708         sxtab r7, r8, r3, ror #24
2709
2710 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2711 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2712 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2713 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2714 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2715 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2716
2717
2718 @------------------------------------------------------------------------------
2719 @ SXTAB16
2720 @------------------------------------------------------------------------------
2721         sxtab16 r6, r2, r7, ror #0
2722         sxtab16 r3, r5, r8, ror #8
2723         sxtab16 r3, r2, r1, ror #16
2724         ite ne
2725         sxtab16ne r0, r1, r4
2726         sxtab16eq r1, r2, r3, ror #24
2727
2728 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2729 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2730 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2731 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2732 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2733 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2734
2735
2736 @------------------------------------------------------------------------------
2737 @ SXTAH
2738 @------------------------------------------------------------------------------
2739         sxtah r1, r3, r9
2740         sxtah r3, r8, r3, ror #8
2741         sxtah r9, r3, r3, ror #24
2742         ite hi
2743         sxtahhi r6, r1, r6, ror #0
2744         sxtahls r2, r2, r4, ror #16
2745
2746 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2747 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2748 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2749 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2750 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2751 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2752
2753
2754 @------------------------------------------------------------------------------
2755 @ SXTB
2756 @------------------------------------------------------------------------------
2757         sxtb r5, r6, ror #0
2758         sxtb r6, r9, ror #8
2759         sxtb r8, r3, ror #24
2760         ite ge
2761         sxtbge r2, r4
2762         sxtblt r5, r1, ror #16
2763         sxtb.w  r7, r8
2764
2765 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2766 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2767 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2768 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2769 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2770 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2771 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2772
2773
2774 @------------------------------------------------------------------------------
2775 @ SXTB16
2776 @------------------------------------------------------------------------------
2777         sxtb16 r1, r4
2778         sxtb16 r6, r7, ror #0
2779         sxtb16 r3, r1, ror #16
2780         ite cs
2781         sxtb16cs r3, r5, ror #8
2782         sxtb16lo r2, r3, ror #24
2783
2784 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2785 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2786 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2787 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2788 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2789 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2790
2791
2792 @------------------------------------------------------------------------------
2793 @ SXTH
2794 @------------------------------------------------------------------------------
2795         sxth r1, r6, ror #0
2796         sxth r3, r8, ror #8
2797         sxth r9, r3, ror #24
2798         itt ne
2799         sxthne r3, r9
2800         sxthne r2, r2, ror #16
2801         sxth.w  r7, r8
2802
2803 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2804 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2805 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2806 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2807 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2808 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2809 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2810
2811
2812 @------------------------------------------------------------------------------
2813 @ SXTB
2814 @------------------------------------------------------------------------------
2815         sxtb r5, r6, ror #0
2816         sxtb.w r6, r9, ror #8
2817         sxtb r8, r3, ror #24
2818         ite ge
2819         sxtbge r2, r4
2820         sxtblt r5, r1, ror #16
2821
2822 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2823 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2824 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2825 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2826 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2827 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2828
2829
2830 @------------------------------------------------------------------------------
2831 @ SXTB16
2832 @------------------------------------------------------------------------------
2833         sxtb16 r1, r4
2834         sxtb16 r6, r7, ror #0
2835         sxtb16 r3, r1, ror #16
2836         ite cs
2837         sxtb16cs r3, r5, ror #8
2838         sxtb16lo r2, r3, ror #24
2839
2840 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2841 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2842 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2843 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2844 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2845 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2846
2847
2848 @------------------------------------------------------------------------------
2849 @ SXTH
2850 @------------------------------------------------------------------------------
2851         sxth r1, r6, ror #0
2852         sxth.w r3, r8, ror #8
2853         sxth r9, r3, ror #24
2854         itt ne
2855         sxthne r3, r9
2856         sxthne r2, r2, ror #16
2857
2858 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2859 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2860 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2861 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2862 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2863 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2864
2865
2866 @------------------------------------------------------------------------------
2867 @ TBB/TBH
2868 @------------------------------------------------------------------------------
2869         tbb [r3, r8]
2870         tbh [r3, r8, lsl #1]
2871         it eq
2872         tbbeq [r3, r8]
2873         it cs
2874         tbhcs [r3, r8, lsl #1]
2875
2876 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2877 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2878 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2879 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2880 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
2881 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2882
2883
2884 @------------------------------------------------------------------------------
2885 @ TEQ
2886 @------------------------------------------------------------------------------
2887         teq r5, #0xf000
2888         teq r4, r5
2889         teq r4, r5, lsl #5
2890         teq r4, r5, lsr #5
2891         teq r4, r5, lsr #5
2892         teq r4, r5, asr #5
2893         teq r4, r5, ror #5
2894
2895 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
2896 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
2897 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
2898 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2899 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2900 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
2901 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
2902
2903
2904 @------------------------------------------------------------------------------
2905 @ TST
2906 @------------------------------------------------------------------------------
2907         tst r5, #0xf000
2908         tst r2, r5
2909         tst r3, r12, lsl #5
2910         tst r4, r11, lsr #4
2911         tst r5, r10, lsr #12
2912         tst r6, r9, asr #30
2913         tst r7, r8, ror #2
2914
2915 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
2916 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
2917 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
2918 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
2919 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
2920 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
2921 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
2922
2923
2924 @------------------------------------------------------------------------------
2925 @ UADD16/UADD8
2926 @------------------------------------------------------------------------------
2927         uadd16 r1, r2, r3
2928         uadd8 r1, r2, r3
2929         ite gt
2930         uadd16gt r1, r2, r3
2931         uadd8le r1, r2, r3
2932
2933 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
2934 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
2935 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2936 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
2937 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
2938
2939
2940 @------------------------------------------------------------------------------
2941 @ UASX
2942 @------------------------------------------------------------------------------
2943         uasx r9, r12, r0
2944         it eq
2945         uasxeq r9, r12, r0
2946         uaddsubx r9, r12, r0
2947         it eq
2948         uaddsubxeq r9, r12, r0
2949
2950 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2951 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2952 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2953 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2954 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2955 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2956
2957
2958 @------------------------------------------------------------------------------
2959 @ UBFX
2960 @------------------------------------------------------------------------------
2961         ubfx r4, r5, #16, #1
2962         it gt
2963         ubfxgt r4, r5, #16, #16
2964
2965 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
2966 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2967 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
2968
2969
2970 @------------------------------------------------------------------------------
2971 @ UHADD16/UHADD8
2972 @------------------------------------------------------------------------------
2973         uhadd16 r4, r8, r2
2974         uhadd8 r4, r8, r2
2975         itt gt
2976         uhadd16gt r4, r8, r2
2977         uhadd8gt r4, r8, r2
2978
2979 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2980 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
2981 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2982 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2983 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
2984
2985
2986 @------------------------------------------------------------------------------
2987 @ UHASX/UHSAX
2988 @------------------------------------------------------------------------------
2989         uhasx r4, r1, r5
2990         uhsax r5, r6, r6
2991         itt gt
2992         uhasxgt r6, r9, r8
2993         uhsaxgt r7, r8, r12
2994         uhaddsubx r4, r1, r5
2995         uhsubaddx r5, r6, r6
2996         itt gt
2997         uhaddsubxgt r6, r9, r8
2998         uhsubaddxgt r7, r8, r12
2999
3000 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3001 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3002 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3003 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3004 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3005 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3006 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3007 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3008 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3009 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3010
3011
3012 @------------------------------------------------------------------------------
3013 @ UHSUB16/UHSUB8
3014 @------------------------------------------------------------------------------
3015         uhsub16 r5, r8, r3
3016         uhsub8 r1, r7, r6
3017         itt lt
3018         uhsub16lt r4, r9, r12
3019         uhsub8lt r3, r1, r5
3020
3021 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3022 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3023 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3024 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3025 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3026
3027
3028 @------------------------------------------------------------------------------
3029 @ UMAAL
3030 @------------------------------------------------------------------------------
3031         umaal r3, r4, r5, r6
3032         it lt
3033         umaallt r3, r4, r5, r6
3034
3035 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3036 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3037 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3038
3039
3040 @------------------------------------------------------------------------------
3041 @ UMLAL
3042 @------------------------------------------------------------------------------
3043         umlal r2, r4, r6, r8
3044         it gt
3045         umlalgt r6, r1, r2, r6
3046
3047 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3048 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3049 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3050
3051
3052 @------------------------------------------------------------------------------
3053 @ UMULL
3054 @------------------------------------------------------------------------------
3055         umull r2, r4, r6, r8
3056         it gt
3057         umullgt r6, r1, r2, r6
3058
3059 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3060 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3061 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3062
3063
3064 @------------------------------------------------------------------------------
3065 @ UQADD16/UQADD8
3066 @------------------------------------------------------------------------------
3067         uqadd16 r1, r2, r3
3068         uqadd8 r3, r4, r8
3069         ite gt
3070         uqadd16gt r4, r7, r9
3071         uqadd8le r8, r1, r2
3072
3073 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3074 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3075 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3076 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3077 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3078
3079
3080 @------------------------------------------------------------------------------
3081 @ UQASX/UQSAX
3082 @------------------------------------------------------------------------------
3083         uqasx r1, r2, r3
3084         uqsax r3, r4, r8
3085         ite gt
3086         uqasxgt r4, r7, r9
3087         uqsaxle r8, r1, r2
3088
3089         uqaddsubx r1, r2, r3
3090         uqsubaddx r3, r4, r8
3091         ite gt
3092         uqaddsubxgt r4, r7, r9
3093         uqsubaddxle r8, r1, r2
3094
3095 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3096 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3097 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3098 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3099 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3100
3101 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3102 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3103 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3104 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3105 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3106
3107
3108 @------------------------------------------------------------------------------
3109 @ UQSUB16/UQSUB8
3110 @------------------------------------------------------------------------------
3111         uqsub8 r8, r2, r9
3112         uqsub16 r1, r9, r7
3113         ite gt
3114         uqsub8gt r3, r1, r6
3115         uqsub16le r4, r6, r4
3116
3117 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3118 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3119 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3120 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3121 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3122
3123
3124 @------------------------------------------------------------------------------
3125 @ UQSUB16/UQSUB8
3126 @------------------------------------------------------------------------------
3127         usad8 r1, r9, r7
3128         usada8 r8, r2, r9, r12
3129         ite gt
3130         usada8gt r3, r1, r6, r9
3131         usad8le r4, r6, r4
3132
3133 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3134 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3135 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3136 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3137 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3138
3139
3140 @------------------------------------------------------------------------------
3141 @ USAT
3142 @------------------------------------------------------------------------------
3143         usat    r8, #1, r10
3144         usat    r8, #4, r10, lsl #0
3145         usat    r8, #5, r10, lsl #31
3146         usat    r8, #16, r10, asr #1
3147
3148 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3149 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3150 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3151 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3152
3153
3154 @------------------------------------------------------------------------------
3155 @ USAT16
3156 @------------------------------------------------------------------------------
3157         usat16  r2, #2, r7
3158         usat16  r3, #15, r5
3159
3160 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3161 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3162
3163
3164 @------------------------------------------------------------------------------
3165 @ USAX
3166 @------------------------------------------------------------------------------
3167         usax r2, r3, r4
3168         it ne
3169         usaxne r6, r1, r9
3170         usubaddx r2, r3, r4
3171         it ne
3172         usubaddxne r6, r1, r9
3173
3174 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3175 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3176 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3177 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3178 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3179 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3180
3181
3182 @------------------------------------------------------------------------------
3183 @ USUB16/USUB8
3184 @------------------------------------------------------------------------------
3185         usub16 r4, r2, r7
3186         usub8 r1, r8, r5
3187         ite hi
3188         usub16hi r1, r1, r3
3189         usub8ls r9, r2, r3
3190
3191 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3192 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3193 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3194 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3195 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3196
3197
3198 @------------------------------------------------------------------------------
3199 @ UXTAB
3200 @------------------------------------------------------------------------------
3201         uxtab r2, r3, r4
3202         uxtab r4, r5, r6, ror #0
3203         it lt
3204         uxtablt r6, r2, r9, ror #8
3205         uxtab r5, r1, r4, ror #16
3206         uxtab r7, r8, r3, ror #24
3207
3208 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3209 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3210 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3211 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3212 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3213 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3214
3215
3216 @------------------------------------------------------------------------------
3217 @ UXTAB16
3218 @------------------------------------------------------------------------------
3219         it ge
3220         uxtab16ge r0, r1, r4
3221         uxtab16 r6, r2, r7, ror #0
3222         uxtab16 r3, r5, r8, ror #8
3223         uxtab16 r3, r2, r1, ror #16
3224         it eq
3225         uxtab16eq r1, r2, r3, ror #24
3226
3227 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3228 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3229 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3230 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3231 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3232 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3233 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3234
3235
3236 @------------------------------------------------------------------------------
3237 @ UXTAH
3238 @------------------------------------------------------------------------------
3239         uxtah r1, r3, r9
3240         it hi
3241         uxtahhi r6, r1, r6, ror #0
3242         uxtah r3, r8, r3, ror #8
3243         it lo
3244         uxtahlo r2, r2, r4, ror #16
3245         uxtah r9, r3, r3, ror #24
3246
3247 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3248 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3249 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3250 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3251 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3252 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3253 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3254
3255
3256 @------------------------------------------------------------------------------
3257 @ UXTB
3258 @------------------------------------------------------------------------------
3259         it ge
3260         uxtbge r2, r4
3261         uxtb r5, r6, ror #0
3262         uxtb r6, r9, ror #8
3263         it cc
3264         uxtbcc r5, r1, ror #16
3265         uxtb r8, r3, ror #24
3266         uxtb.w  r7, r8
3267
3268 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3269 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3270 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3271 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3272 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3273 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3274 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3275 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3276
3277
3278 @------------------------------------------------------------------------------
3279 @ UXTB16
3280 @------------------------------------------------------------------------------
3281         uxtb16 r1, r4
3282         uxtb16 r6, r7, ror #0
3283         it cs
3284         uxtb16cs r3, r5, ror #8
3285         uxtb16 r3, r1, ror #16
3286         it ge
3287         uxtb16ge r2, r3, ror #24
3288
3289 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3290 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3291 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3292 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3293 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3294 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3295 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3296
3297
3298 @------------------------------------------------------------------------------
3299 @ UXTH
3300 @------------------------------------------------------------------------------
3301         it ne
3302         uxthne r3, r9
3303         uxth r1, r6, ror #0
3304         uxth r3, r8, ror #8
3305         it le
3306         uxthle r2, r2, ror #16
3307         uxth r9, r3, ror #24
3308         uxth.w  r7, r8
3309
3310 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3311 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3312 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3313 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3314 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3315 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3316 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3317 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3318
3319 @------------------------------------------------------------------------------
3320 @ WFE/WFI/YIELD
3321 @------------------------------------------------------------------------------
3322         wfe
3323         wfi
3324         yield
3325         itet lt
3326         wfelt
3327         wfige
3328         yieldlt
3329
3330 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3331 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3332 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3333 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3334 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3335 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3336 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3337
3338
3339 @------------------------------------------------------------------------------
3340 @ Alternate syntax for LDR*(literal) encodings
3341 @------------------------------------------------------------------------------
3342         ldr r11, [pc, #-22]
3343         ldrb r11, [pc, #-22]
3344         ldrh r11, [pc, #-22]
3345         ldrsb r11, [pc, #-22]
3346         ldrsh r11, [pc, #-22]
3347
3348         ldr.w r11, [pc, #-22]
3349         ldrb.w r11, [pc, #-22]
3350         ldrh.w r11, [pc, #-22]
3351         ldrsb.w r11, [pc, #-22]
3352         ldrsh.w r11, [pc, #-22]
3353
3354 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3355 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3356 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3357 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3358 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3359 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3360 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3361 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3362 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3363 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]