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