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