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