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