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