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