0dbde19d28f08c8088d4459d97b4f54bc0c45cac
[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         it le
1232         mulle r4, r4, r8
1233         mul r6, r5
1234
1235 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1236 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1237 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1238 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1239 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1240 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1241 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1242 @ CHECK: mul    r6, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf6]
1243
1244
1245 @------------------------------------------------------------------------------
1246 @ MVN(immediate)
1247 @------------------------------------------------------------------------------
1248         mvns r8, #21
1249         mvn r0, #0x3fc0000
1250         mvns r0, #0x3fc0000
1251         itte eq
1252         mvnseq r1, #12
1253         mvneq.w r1, #12
1254         mvnne r1, #12
1255
1256 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1257 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1258 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1259 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1260 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1261 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1262 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1263
1264
1265 @------------------------------------------------------------------------------
1266 @ MVN(register)
1267 @------------------------------------------------------------------------------
1268         mvn r2, r3
1269         mvns r2, r3
1270         mvn r5, r6, lsl #19
1271         mvn r5, r6, lsr #9
1272         mvn.w r5, r6, asr #4
1273         mvn r5, r6, ror #6
1274         mvn r5, r6, rrx
1275         it eq
1276         mvneq r2, r3
1277
1278 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1279 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1280 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1281 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1282 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1283 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1284 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1285 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1286 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1287
1288 @------------------------------------------------------------------------------
1289 @ NOP
1290 @------------------------------------------------------------------------------
1291         nop.w
1292
1293 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1294
1295
1296 @------------------------------------------------------------------------------
1297 @ ORN
1298 @------------------------------------------------------------------------------
1299         orn r4, r5, #0xf000
1300         orn r4, r5, r6
1301         orns r4, r5, r6
1302         orn r4, r5, r6, lsl #5
1303         orns r4, r5, r6, lsr #5
1304         orn r4, r5, r6, lsr #5
1305         orns r4, r5, r6, asr #5
1306         orn r4, r5, r6, ror #5
1307
1308 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1309 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1310 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1311 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1312 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1313 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1314 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1315 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1316
1317
1318 @------------------------------------------------------------------------------
1319 @ ORR
1320 @------------------------------------------------------------------------------
1321         orr r4, r5, #0xf000
1322         orr r4, r5, r6
1323         orr r4, r5, r6, lsl #5
1324         orrs r4, r5, r6, lsr #5
1325         orr r4, r5, r6, lsr #5
1326         orrs r4, r5, r6, asr #5
1327         orr r4, r5, r6, ror #5
1328
1329 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1330 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1331 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1332 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1333 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1334 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1335 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1336
1337
1338 @------------------------------------------------------------------------------
1339 @ PKH
1340 @------------------------------------------------------------------------------
1341         pkhbt r2, r2, r3
1342         pkhbt r2, r2, r3, lsl #31
1343         pkhbt r2, r2, r3, lsl #0
1344         pkhbt r2, r2, r3, lsl #15
1345
1346         pkhtb r2, r2, r3
1347         pkhtb r2, r2, r3, asr #31
1348         pkhtb r2, r2, r3, asr #15
1349
1350 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1351 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1352 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1353 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1354
1355 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1356 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1357 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1358
1359
1360 @------------------------------------------------------------------------------
1361 @ PLD(immediate)
1362 @------------------------------------------------------------------------------
1363         pld [r5, #-4]
1364         pld [r6, #32]
1365         pld [r6, #33]
1366         pld [r6, #257]
1367         pld [r7, #257]
1368
1369 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1370 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1371 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1372 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1373 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1374
1375
1376 @------------------------------------------------------------------------------
1377 @ PLD(literal)
1378 @------------------------------------------------------------------------------
1379 @        pld  _foo
1380
1381 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1382             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1383
1384
1385 @------------------------------------------------------------------------------
1386 @ PLD(register)
1387 @------------------------------------------------------------------------------
1388         pld [r8, r1]
1389         pld [r5, r2]
1390         pld [r0, r2, lsl #3]
1391         pld [r8, r2, lsl #2]
1392         pld [sp, r2, lsl #1]
1393         pld [sp, r2, lsl #0]
1394
1395 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1396 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1397 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1398 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1399 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1400 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1401
1402 @------------------------------------------------------------------------------
1403 @ PLI(immediate)
1404 @------------------------------------------------------------------------------
1405         pli [r5, #-4]
1406         pli [r6, #32]
1407         pli [r6, #33]
1408         pli [r6, #257]
1409         pli [r7, #257]
1410
1411 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1412 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1413 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1414 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1415 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1416
1417
1418 @------------------------------------------------------------------------------
1419 @ PLI(literal)
1420 @------------------------------------------------------------------------------
1421 @        pli  _foo
1422
1423
1424 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1425            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1426
1427
1428 @------------------------------------------------------------------------------
1429 @ PLI(register)
1430 @------------------------------------------------------------------------------
1431         pli [r8, r1]
1432         pli [r5, r2]
1433         pli [r0, r2, lsl #3]
1434         pli [r8, r2, lsl #2]
1435         pli [sp, r2, lsl #1]
1436         pli [sp, r2, lsl #0]
1437
1438 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1439 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1440 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1441 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1442 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1443 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1444
1445 @------------------------------------------------------------------------------
1446 @ POP (alias)
1447 @------------------------------------------------------------------------------
1448         pop {r2, r9}
1449
1450 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1451
1452
1453 @------------------------------------------------------------------------------
1454 @ PUSH (alias)
1455 @------------------------------------------------------------------------------
1456         push {r2, r9}
1457
1458 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1459
1460
1461 @------------------------------------------------------------------------------
1462 @ QADD/QADD16/QADD8
1463 @------------------------------------------------------------------------------
1464         qadd r1, r2, r3
1465         qadd16 r1, r2, r3
1466         qadd8 r1, r2, r3
1467         itte gt
1468         qaddgt r1, r2, r3
1469         qadd16gt r1, r2, r3
1470         qadd8le r1, r2, r3
1471
1472 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1473 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1474 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1475 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1476 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1477 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1478 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1479
1480
1481 @------------------------------------------------------------------------------
1482 @ QDADD/QDSUB
1483 @------------------------------------------------------------------------------
1484         qdadd r6, r7, r8
1485         qdsub r6, r7, r8
1486         itt hi
1487         qdaddhi r6, r7, r8
1488         qdsubhi r6, r7, r8
1489
1490 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1491 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1492 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1493 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1494 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1495
1496
1497 @------------------------------------------------------------------------------
1498 @ QSAX
1499 @------------------------------------------------------------------------------
1500         qsax r9, r12, r0
1501         it eq
1502         qsaxeq r9, r12, r0
1503
1504 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1505 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1506 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1507
1508
1509 @------------------------------------------------------------------------------
1510 @ QSUB/QSUB16/QSUB8
1511 @------------------------------------------------------------------------------
1512         qsub r1, r2, r3
1513         qsub16 r1, r2, r3
1514         qsub8 r1, r2, r3
1515         itet le
1516         qsuble r1, r2, r3
1517         qsub16gt r1, r2, r3
1518         qsub8le r1, r2, r3
1519
1520 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1521 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1522 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1523 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1524 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1525 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1526 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1527
1528
1529 @------------------------------------------------------------------------------
1530 @ RBIT
1531 @------------------------------------------------------------------------------
1532         rbit r1, r2
1533         it ne
1534         rbitne r1, r2
1535
1536 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1537 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1538 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1539
1540
1541 @------------------------------------------------------------------------------
1542 @ REV
1543 @------------------------------------------------------------------------------
1544         rev.w r1, r2
1545         rev r2, r8
1546         itt ne
1547         revne r1, r2
1548         revne r1, r8
1549
1550 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1551 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1552 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1553 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1554 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1555
1556
1557 @------------------------------------------------------------------------------
1558 @ REV16
1559 @------------------------------------------------------------------------------
1560         rev16.w r1, r2
1561         rev16 r2, r8
1562         itt ne
1563         rev16ne r1, r2
1564         rev16ne r1, r8
1565
1566 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1567 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1568 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1569 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1570 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1571
1572
1573 @------------------------------------------------------------------------------
1574 @ REVSH
1575 @------------------------------------------------------------------------------
1576         revsh.w r1, r2
1577         revsh r2, r8
1578         itt ne
1579         revshne r1, r2
1580         revshne r1, r8
1581
1582 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1583 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1584 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1585 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1586 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1587
1588
1589 @------------------------------------------------------------------------------
1590 @ ROR (immediate)
1591 @------------------------------------------------------------------------------
1592         ror r2, r3, #12
1593         rors r8, r3, #31
1594         rors.w r2, r3, #1
1595         ror r2, r3, #4
1596         rors r2, r12, #15
1597
1598         ror r3, #19
1599         rors r8, #2
1600         rors.w r7, #5
1601         ror.w r12, #21
1602
1603 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1604 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1605 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1606 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1607 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1608
1609 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1610 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1611 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1612 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1613
1614
1615 @------------------------------------------------------------------------------
1616 @ ROR (register)
1617 @------------------------------------------------------------------------------
1618         ror r3, r4, r2
1619         ror.w r1, r2
1620         rors r3, r4, r8
1621
1622 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1623 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1624 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1625
1626
1627 @------------------------------------------------------------------------------
1628 @ RRX
1629 @------------------------------------------------------------------------------
1630         rrx r1, r2
1631         rrxs r1, r2
1632         ite lt
1633         rrxlt r9, r12
1634         rrxsge r8, r3
1635
1636 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1637 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1638 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1639 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1640 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1641
1642 @------------------------------------------------------------------------------
1643 @ RSB (immediate)
1644 @------------------------------------------------------------------------------
1645         rsb r2, r5, #0xff000
1646         rsbs r3, r12, #0xf
1647         rsb r1, #0xff
1648         rsb r1, r1, #0xff
1649
1650 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1651 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1652 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1653 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1654
1655
1656 @------------------------------------------------------------------------------
1657 @ RSB (register)
1658 @------------------------------------------------------------------------------
1659         rsb r4, r8
1660         rsb r4, r9, r8
1661         rsb r1, r4, r8, asr #3
1662         rsbs r2, r1, r7, lsl #1
1663
1664 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1665 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1666 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1667 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1668
1669
1670 @------------------------------------------------------------------------------
1671 @ SADD16
1672 @------------------------------------------------------------------------------
1673         sadd16 r3, r4, r8
1674         it ne
1675         sadd16ne r3, r4, r8
1676
1677 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1678 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1679 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1680
1681
1682 @------------------------------------------------------------------------------
1683 @ SADD8
1684 @------------------------------------------------------------------------------
1685         sadd8 r3, r4, r8
1686         it ne
1687         sadd8ne r3, r4, r8
1688
1689 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1690 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1691 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1692
1693
1694 @------------------------------------------------------------------------------
1695 @ SASX
1696 @------------------------------------------------------------------------------
1697         saddsubx r9, r2, r7
1698         it ne
1699         saddsubxne r2, r5, r6
1700         sasx r9, r2, r7
1701         it ne
1702         sasxne r2, r5, r6
1703
1704 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1705 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1706 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1707 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1708 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1709 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1710
1711
1712 @------------------------------------------------------------------------------
1713 @ SBC (immediate)
1714 @------------------------------------------------------------------------------
1715         sbc r0, r1, #4
1716         sbcs r0, r1, #0
1717         sbc r1, r2, #255
1718         sbc r3, r7, #0x00550055
1719         sbc r8, r12, #0xaa00aa00
1720         sbc r9, r7, #0xa5a5a5a5
1721         sbc r5, r3, #0x87000000
1722         sbc r4, r2, #0x7f800000
1723         sbc r4, r2, #0x00000680
1724
1725 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1726 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1727 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1728 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1729 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1730 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1731 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1732 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1733 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1734
1735
1736 @------------------------------------------------------------------------------
1737 @ SBC (register)
1738 @------------------------------------------------------------------------------
1739         sbc r4, r5, r6
1740         sbcs r4, r5, r6
1741         sbc.w r9, r1, r3
1742         sbcs.w r9, r1, r3
1743         sbc     r0, r1, r3, ror #4
1744         sbcs    r0, r1, r3, lsl #7
1745         sbc.w   r0, r1, r3, lsr #31
1746         sbcs.w  r0, r1, r3, asr #32
1747
1748 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1749 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1750 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1751 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1752 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1753 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1754 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1755 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1756
1757
1758 @------------------------------------------------------------------------------
1759 @ SBFX
1760 @------------------------------------------------------------------------------
1761         sbfx r4, r5, #16, #1
1762         it gt
1763         sbfxgt r4, r5, #16, #16
1764
1765 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1766 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1767 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1768
1769
1770 @------------------------------------------------------------------------------
1771 @ SEL
1772 @------------------------------------------------------------------------------
1773         sel r5, r9, r2
1774         it le
1775         selle r5, r9, r2
1776
1777 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1778 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1779 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1780
1781
1782 @------------------------------------------------------------------------------
1783 @ SEV
1784 @------------------------------------------------------------------------------
1785         sev.w
1786         it eq
1787         seveq.w
1788
1789 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1790 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1791 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1792
1793
1794 @------------------------------------------------------------------------------
1795 @ SADD16/SADD8
1796 @------------------------------------------------------------------------------
1797         sadd16 r1, r2, r3
1798         sadd8 r1, r2, r3
1799         ite gt
1800         sadd16gt r1, r2, r3
1801         sadd8le r1, r2, r3
1802
1803 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1804 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1805 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1806 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1807 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1808
1809
1810 @------------------------------------------------------------------------------
1811 @ SHASX
1812 @------------------------------------------------------------------------------
1813         shasx r4, r8, r2
1814         it gt
1815         shasxgt r4, r8, r2
1816         shaddsubx r4, r8, r2
1817         it gt
1818         shaddsubxgt r4, r8, r2
1819
1820 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1821 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1822 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1823 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1824 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1825 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1826
1827
1828 @------------------------------------------------------------------------------
1829 @ SHASX
1830 @------------------------------------------------------------------------------
1831         shsax r4, r8, r2
1832         it gt
1833         shsaxgt r4, r8, r2
1834         shsubaddx r4, r8, r2
1835         it gt
1836         shsubaddxgt r4, r8, r2
1837
1838 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1839 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1840 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1841 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1842 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1843 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1844
1845
1846 @------------------------------------------------------------------------------
1847 @ SHSUB16/SHSUB8
1848 @------------------------------------------------------------------------------
1849         shsub16 r4, r8, r2
1850         shsub8 r4, r8, r2
1851         itt gt
1852         shsub16gt r4, r8, r2
1853         shsub8gt r4, r8, r2
1854
1855 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1856 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1857 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1858 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1859 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1860
1861
1862 @------------------------------------------------------------------------------
1863 @ SMLABB/SMLABT/SMLATB/SMLATT
1864 @------------------------------------------------------------------------------
1865         smlabb r3, r1, r9, r0
1866         smlabt r5, r6, r4, r1
1867         smlatb r4, r2, r3, r2
1868         smlatt r8, r3, r8, r4
1869         itete gt
1870         smlabbgt r3, r1, r9, r0
1871         smlabtle r5, r6, r4, r1
1872         smlatbgt r4, r2, r3, r2
1873         smlattle r8, r3, r8, r4
1874
1875 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1876 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1877 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1878 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1879 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1880 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1881 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1882 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1883 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
1884
1885
1886 @------------------------------------------------------------------------------
1887 @ SMLAD/SMLADX
1888 @------------------------------------------------------------------------------
1889         smlad r2, r3, r5, r8
1890         smladx r2, r3, r5, r8
1891         itt hi
1892         smladhi r2, r3, r5, r8
1893         smladxhi r2, r3, r5, r8
1894
1895 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
1896 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
1897 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1898 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
1899 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
1900
1901
1902 @------------------------------------------------------------------------------
1903 @ SMLAL
1904 @------------------------------------------------------------------------------
1905         smlal r2, r3, r5, r8
1906         it eq
1907         smlaleq r2, r3, r5, r8
1908
1909 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
1910 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1911 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
1912
1913
1914 @------------------------------------------------------------------------------
1915 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1916 @------------------------------------------------------------------------------
1917         smlalbb r3, r1, r9, r0
1918         smlalbt r5, r6, r4, r1
1919         smlaltb r4, r2, r3, r2
1920         smlaltt r8, r3, r8, r4
1921         iteet ge
1922         smlalbbge r3, r1, r9, r0
1923         smlalbtlt r5, r6, r4, r1
1924         smlaltblt r4, r2, r3, r2
1925         smlalttge r8, r3, r8, r4
1926
1927 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
1928 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
1929 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
1930 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
1931 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
1932 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
1933 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
1934 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
1935 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
1936
1937
1938 @------------------------------------------------------------------------------
1939 @ SMLALD/SMLALDX
1940 @------------------------------------------------------------------------------
1941         smlald r2, r3, r5, r8
1942         smlaldx r2, r3, r5, r8
1943         ite eq
1944         smlaldeq r2, r3, r5, r8
1945         smlaldxne r2, r3, r5, r8
1946
1947 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
1948 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
1949 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
1950 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
1951 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
1952
1953
1954 @------------------------------------------------------------------------------
1955 @ SMLAWB/SMLAWT
1956 @------------------------------------------------------------------------------
1957         smlawb r2, r3, r10, r8
1958         smlawt r8, r3, r5, r9
1959         ite eq
1960         smlawbeq r2, r7, r5, r8
1961         smlawtne r1, r3, r0, r8
1962
1963 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
1964 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
1965 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
1966 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
1967 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
1968
1969
1970 @------------------------------------------------------------------------------
1971 @ SMLSD/SMLSDX
1972 @------------------------------------------------------------------------------
1973         smlsd r2, r3, r5, r8
1974         smlsdx r2, r3, r5, r8
1975         ite le
1976         smlsdle r2, r3, r5, r8
1977         smlsdxgt r2, r3, r5, r8
1978
1979 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
1980 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
1981 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
1982 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
1983 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
1984
1985
1986 @------------------------------------------------------------------------------
1987 @ SMLSLD/SMLSLDX
1988 @------------------------------------------------------------------------------
1989         smlsld r2, r9, r5, r1
1990         smlsldx r4, r11, r2, r8
1991         ite ge
1992         smlsldge r8, r2, r5, r6
1993         smlsldxlt r1, r0, r3, r8
1994
1995 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
1996 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
1997 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
1998 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
1999 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2000
2001
2002 @------------------------------------------------------------------------------
2003 @ SMMLA/SMMLAR
2004 @------------------------------------------------------------------------------
2005         smmla r1, r2, r3, r4
2006         smmlar r4, r3, r2, r1
2007         ite lo
2008         smmlalo r1, r2, r3, r4
2009         smmlarcs r4, r3, r2, r1
2010
2011 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2012 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2013 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2014 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2015 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2016
2017
2018 @------------------------------------------------------------------------------
2019 @ SMMLS/SMMLSR
2020 @------------------------------------------------------------------------------
2021         smmls r1, r2, r3, r4
2022         smmlsr r4, r3, r2, r1
2023         ite lo
2024         smmlslo r1, r2, r3, r4
2025         smmlsrcs r4, r3, r2, r1
2026
2027 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2028 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2029 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2030 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2031 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2032
2033
2034 @------------------------------------------------------------------------------
2035 @ SMMUL/SMMULR
2036 @------------------------------------------------------------------------------
2037         smmul r2, r3, r4
2038         smmulr r3, r2, r1
2039         ite cc
2040         smmulcc r2, r3, r4
2041         smmulrhs r3, r2, r1
2042
2043 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2044 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2045 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2046 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2047 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2048
2049
2050 @------------------------------------------------------------------------------
2051 @ SMUAD/SMUADX
2052 @------------------------------------------------------------------------------
2053         smuad r2, r3, r4
2054         smuadx r3, r2, r1
2055         ite lt
2056         smuadlt r2, r3, r4
2057         smuadxge r3, r2, r1
2058
2059 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2060 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2061 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2062 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2063 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2064
2065
2066 @------------------------------------------------------------------------------
2067 @ SMULBB/SMULBT/SMULTB/SMULTT
2068 @------------------------------------------------------------------------------
2069         smulbb r3, r9, r0
2070         smulbt r5, r4, r1
2071         smultb r4, r2, r2
2072         smultt r8, r3, r4
2073         itete ge
2074         smulbbge r1, r9, r0
2075         smulbtlt r5, r6, r4
2076         smultbge r2, r3, r2
2077         smulttlt r8, r3, r4
2078
2079 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2080 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2081 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2082 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2083 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2084 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2085 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2086 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2087 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2088
2089
2090 @------------------------------------------------------------------------------
2091 @ SMULL
2092 @------------------------------------------------------------------------------
2093         smull r3, r9, r0, r1
2094         it eq
2095         smulleq r8, r3, r4, r5
2096
2097 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2098 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2099 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2100
2101
2102 @------------------------------------------------------------------------------
2103 @ SMULWB/SMULWT
2104 @------------------------------------------------------------------------------
2105         smulwb r3, r9, r0
2106         smulwt r3, r9, r2
2107         ite gt
2108         smulwbgt r3, r9, r0
2109         smulwtle r3, r9, r2
2110
2111 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2112 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2113 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2114 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2115 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2116
2117
2118 @------------------------------------------------------------------------------
2119 @ SMUSD/SMUSDX
2120 @------------------------------------------------------------------------------
2121         smusd r3, r0, r1
2122         smusdx r3, r9, r2
2123         ite eq
2124         smusdeq r8, r3, r2
2125         smusdxne r7, r4, r3
2126
2127 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2128 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2129 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2130 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2131 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2132
2133
2134 @------------------------------------------------------------------------------
2135 @ SRS
2136 @------------------------------------------------------------------------------
2137         srsdb sp, #1
2138         srsia sp, #0
2139
2140         srsdb sp!, #19
2141         srsia sp!, #2
2142
2143         srsea sp, #10
2144         srsfd sp, #9
2145
2146         srsea sp!, #5
2147         srsfd sp!, #5
2148
2149         srs sp, #5
2150         srs sp!, #5
2151
2152 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2153 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2154 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2155 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2156 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2157 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2158 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2159 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2160 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2161 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2162
2163
2164 @------------------------------------------------------------------------------
2165 @ SSAT
2166 @------------------------------------------------------------------------------
2167         ssat    r8, #1, r10
2168         ssat    r8, #1, r10, lsl #0
2169         ssat    r8, #1, r10, lsl #31
2170         ssat    r8, #1, r10, asr #1
2171
2172 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2173 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2174 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2175 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2176
2177
2178 @------------------------------------------------------------------------------
2179 @ SSAT16
2180 @------------------------------------------------------------------------------
2181         ssat16  r2, #1, r7
2182         ssat16  r3, #16, r5
2183
2184 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2185 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2186
2187
2188 @------------------------------------------------------------------------------
2189 @ SSAX
2190 @------------------------------------------------------------------------------
2191         ssubaddx r2, r3, r4
2192         it lt
2193         ssubaddxlt r2, r3, r4
2194         ssax r2, r3, r4
2195         it lt
2196         ssaxlt r2, r3, r4
2197
2198 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2199 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2200 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2201 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2202 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2203 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2204
2205
2206 @------------------------------------------------------------------------------
2207 @ SSUB16/SSUB8
2208 @------------------------------------------------------------------------------
2209         ssub16 r1, r0, r6
2210         ssub8 r9, r2, r4
2211         ite ne
2212         ssub16ne r5, r3, r2
2213         ssub8eq r5, r1, r2
2214
2215 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2216 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2217 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2218 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2219 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2220
2221
2222 @------------------------------------------------------------------------------
2223 @ STC{L}/STC2{L}
2224 @------------------------------------------------------------------------------
2225         stc2 p0, c8, [r1, #4]
2226         stc2 p1, c7, [r2]
2227         stc2 p2, c6, [r3, #-224]
2228         stc2 p3, c5, [r4, #-120]!
2229         stc2 p4, c4, [r5], #16
2230         stc2 p5, c3, [r6], #-72
2231         stc2l p6, c2, [r7, #4]
2232         stc2l p7, c1, [r8]
2233         stc2l p8, c0, [r9, #-224]
2234         stc2l p9, c1, [r10, #-120]!
2235         stc2l p10, c2, [r11], #16
2236         stc2l p11, c3, [r12], #-72
2237
2238         stc p12, c4, [r0, #4]
2239         stc p13, c5, [r1]
2240         stc p14, c6, [r2, #-224]
2241         stc p15, c7, [r3, #-120]!
2242         stc p5, c8, [r4], #16
2243         stc p4, c9, [r5], #-72
2244         stcl p3, c10, [r6, #4]
2245         stcl p2, c11, [r7]
2246         stcl p1, c12, [r8, #-224]
2247         stcl p0, c13, [r9, #-120]!
2248         stcl p6, c14, [r10], #16
2249         stcl p7, c15, [r11], #-72
2250
2251         stc2 p2, c8, [r1], { 25 }
2252
2253 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2254 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2255 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2256 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2257 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2258 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2259 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2260 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2261 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2262 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2263 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2264 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2265
2266 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2267 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2268 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2269 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2270 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2271 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2272 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2273 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2274 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2275 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2276 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2277 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2278
2279 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2280
2281
2282 @------------------------------------------------------------------------------
2283 @ STMIA
2284 @------------------------------------------------------------------------------
2285         stmia.w r4, {r4, r5, r8, r9}
2286         stmia.w r4, {r5, r6}
2287         stmia.w r5!, {r3, r8}
2288         stm.w r4, {r4, r5, r8, r9}
2289         stm.w r4, {r5, r6}
2290         stm.w r5!, {r3, r8}
2291         stm.w r5!, {r1, r2}
2292         stm.w r2, {r1, r2}
2293
2294         stmia r4, {r4, r5, r8, r9}
2295         stmia r4, {r5, r6}
2296         stmia r5!, {r3, r8}
2297         stm r4, {r4, r5, r8, r9}
2298         stm r4, {r5, r6}
2299         stm r5!, {r3, r8}
2300         stmea r5!, {r3, r8}
2301
2302 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2303 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2304 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2305 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2306 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2307 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2308 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2309 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2310
2311 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2312 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2313 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2314 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2315 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2316 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2317 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2318
2319
2320 @------------------------------------------------------------------------------
2321 @ STMDB
2322 @------------------------------------------------------------------------------
2323         stmdb r4, {r4, r5, r8, r9}
2324         stmdb r4, {r5, r6}
2325         stmdb r5!, {r3, r8}
2326         stmea r5!, {r3, r8}
2327         stmdb.w r5, {r0, r1}
2328
2329 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2330 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2331 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2332 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2333 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2334
2335
2336 @------------------------------------------------------------------------------
2337 @ STR(immediate)
2338 @------------------------------------------------------------------------------
2339         str r5, [r5, #-4]
2340         str r5, [r6, #32]
2341         str r5, [r6, #33]
2342         str r5, [r6, #257]
2343         str.w pc, [r7, #257]
2344         str r2, [r4, #255]!
2345         str r8, [sp, #4]!
2346         str lr, [sp, #-4]!
2347         str r2, [r4], #255
2348         str r8, [sp], #4
2349         str lr, [sp], #-4
2350
2351 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2352 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2353 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2354 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2355 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2356 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2357 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2358 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2359 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2360 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2361 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2362
2363
2364 @------------------------------------------------------------------------------
2365 @ STR(register)
2366 @------------------------------------------------------------------------------
2367         str r1, [r8, r1]
2368         str.w r4, [r5, r2]
2369         str r6, [r0, r2, lsl #3]
2370         str r8, [r8, r2, lsl #2]
2371         str r7, [sp, r2, lsl #1]
2372         str r7, [sp, r2, lsl #0]
2373
2374 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2375 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2376 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2377 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2378 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2379 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2380
2381
2382 @------------------------------------------------------------------------------
2383 @ STRB(immediate)
2384 @------------------------------------------------------------------------------
2385         strb r5, [r5, #-4]
2386         strb r5, [r6, #32]
2387         strb r5, [r6, #33]
2388         strb r5, [r6, #257]
2389         strb.w lr, [r7, #257]
2390         strb r5, [r8, #255]!
2391         strb r2, [r5, #4]!
2392         strb r1, [r4, #-4]!
2393         strb lr, [r3], #255
2394         strb r9, [r2], #4
2395         strb r3, [sp], #-4
2396         strb r4, [r8, #-0]!
2397
2398 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2399 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2400 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2401 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2402 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2403 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2404 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2405 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2406 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2407 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2408 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2409 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2410
2411
2412 @------------------------------------------------------------------------------
2413 @ STRB(register)
2414 @------------------------------------------------------------------------------
2415         strb r1, [r8, r1]
2416         strb.w r4, [r5, r2]
2417         strb r6, [r0, r2, lsl #3]
2418         strb r8, [r8, r2, lsl #2]
2419         strb r7, [sp, r2, lsl #1]
2420         strb r7, [sp, r2, lsl #0]
2421
2422 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2423 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2424 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2425 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2426 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2427 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2428
2429
2430 @------------------------------------------------------------------------------
2431 @ STRBT
2432 @------------------------------------------------------------------------------
2433         strbt r1, [r2]
2434         strbt r1, [r8, #0]
2435         strbt r1, [r8, #3]
2436         strbt r1, [r8, #255]
2437
2438 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2439 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2440 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2441 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2442
2443
2444 @------------------------------------------------------------------------------
2445 @ STRD
2446 @------------------------------------------------------------------------------
2447         strd r3, r5, [r6, #24]
2448         strd r3, r5, [r6, #24]!
2449         strd r3, r5, [r6], #4
2450         strd r3, r5, [r6], #-8
2451         strd r3, r5, [r6]
2452         strd r8, r1, [r3, #0]
2453
2454 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2455 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2456 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2457 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2458 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2459 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2460
2461
2462 @------------------------------------------------------------------------------
2463 @ STREX/STREXB/STREXH/STREXD
2464 @------------------------------------------------------------------------------
2465         strex r1, r8, [r4]
2466         strex r8, r2, [r4, #0]
2467         strex r2, r12, [sp, #128]
2468         strexb r5, r1, [r7]
2469         strexh r9, r7, [r12]
2470         strexd r9, r3, r6, [r4]
2471
2472 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2473 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2474 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2475 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2476 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2477 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2478
2479
2480 @------------------------------------------------------------------------------
2481 @ STRH(immediate)
2482 @------------------------------------------------------------------------------
2483         strh r5, [r5, #-4]
2484         strh r5, [r6, #32]
2485         strh r5, [r6, #33]
2486         strh r5, [r6, #257]
2487         strh.w lr, [r7, #257]
2488         strh r5, [r8, #255]!
2489         strh r2, [r5, #4]!
2490         strh r1, [r4, #-4]!
2491         strh lr, [r3], #255
2492         strh r9, [r2], #4
2493         strh r3, [sp], #-4
2494
2495 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2496 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2497 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2498 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2499 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2500 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2501 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2502 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2503 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2504 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2505 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2506
2507
2508 @------------------------------------------------------------------------------
2509 @ STRH(register)
2510 @------------------------------------------------------------------------------
2511         strh r1, [r8, r1]
2512         strh.w r4, [r5, r2]
2513         strh r6, [r0, r2, lsl #3]
2514         strh r8, [r8, r2, lsl #2]
2515         strh r7, [sp, r2, lsl #1]
2516         strh r7, [sp, r2, lsl #0]
2517
2518 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2519 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2520 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2521 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2522 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2523 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2524
2525
2526 @------------------------------------------------------------------------------
2527 @ STRHT
2528 @------------------------------------------------------------------------------
2529         strht r1, [r2]
2530         strht r1, [r8, #0]
2531         strht r1, [r8, #3]
2532         strht r1, [r8, #255]
2533
2534 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2535 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2536 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2537 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2538
2539
2540 @------------------------------------------------------------------------------
2541 @ STRT
2542 @------------------------------------------------------------------------------
2543         strt r1, [r2]
2544         strt r1, [r8, #0]
2545         strt r1, [r8, #3]
2546         strt r1, [r8, #255]
2547
2548 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2549 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2550 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2551 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2552
2553
2554 @------------------------------------------------------------------------------
2555 @ SUB (immediate)
2556 @------------------------------------------------------------------------------
2557         itet eq
2558         subeq r1, r2, #4
2559         subwne r5, r3, #1023
2560         subeq r4, r5, #293
2561         sub r2, sp, #1024
2562         sub r2, r8, #0xff00
2563         sub r2, r3, #257
2564         subw r2, r3, #257
2565         sub r12, r6, #0x100
2566         subw r12, r6, #0x100
2567         subs r1, r2, #0x1f0
2568         sub r2, #1
2569
2570 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2571 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2572 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2573 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2574 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2575 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2576 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2577 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2578 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2579 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2580 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2581 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2582
2583
2584 @------------------------------------------------------------------------------
2585 @ SUB (register)
2586 @------------------------------------------------------------------------------
2587         sub r4, r5, r6
2588         sub r4, r5, r6, lsl #5
2589         sub r4, r5, r6, lsr #5
2590         sub.w r4, r5, r6, lsr #5
2591         sub r4, r5, r6, asr #5
2592         sub r4, r5, r6, ror #5
2593         sub.w r5, r2, r12, rrx
2594
2595 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2596 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2597 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2598 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2599 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2600 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2601 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2602
2603
2604 @------------------------------------------------------------------------------
2605 @ SVC
2606 @------------------------------------------------------------------------------
2607         svc #0
2608         ite eq
2609         svceq #255
2610         swine #33
2611
2612 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2613 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2614 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2615 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2616
2617
2618 @------------------------------------------------------------------------------
2619 @ SXTAB
2620 @------------------------------------------------------------------------------
2621         sxtab r2, r3, r4
2622         sxtab r4, r5, r6, ror #0
2623         it lt
2624         sxtablt r6, r2, r9, ror #8
2625         sxtab r5, r1, r4, ror #16
2626         sxtab r7, r8, r3, ror #24
2627
2628 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2629 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2630 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2631 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2632 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2633 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2634
2635
2636 @------------------------------------------------------------------------------
2637 @ SXTAB16
2638 @------------------------------------------------------------------------------
2639         sxtab16 r6, r2, r7, ror #0
2640         sxtab16 r3, r5, r8, ror #8
2641         sxtab16 r3, r2, r1, ror #16
2642         ite ne
2643         sxtab16ne r0, r1, r4
2644         sxtab16eq r1, r2, r3, ror #24
2645
2646 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2647 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2648 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2649 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2650 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2651 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2652
2653
2654 @------------------------------------------------------------------------------
2655 @ SXTAH
2656 @------------------------------------------------------------------------------
2657         sxtah r1, r3, r9
2658         sxtah r3, r8, r3, ror #8
2659         sxtah r9, r3, r3, ror #24
2660         ite hi
2661         sxtahhi r6, r1, r6, ror #0
2662         sxtahls r2, r2, r4, ror #16
2663
2664 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2665 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2666 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2667 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2668 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2669 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2670
2671
2672 @------------------------------------------------------------------------------
2673 @ SXTB
2674 @------------------------------------------------------------------------------
2675         sxtb r5, r6, ror #0
2676         sxtb r6, r9, ror #8
2677         sxtb r8, r3, ror #24
2678         ite ge
2679         sxtbge r2, r4
2680         sxtblt r5, r1, ror #16
2681         sxtb.w  r7, r8
2682
2683 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2684 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2685 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2686 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2687 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2688 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2689 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2690
2691
2692 @------------------------------------------------------------------------------
2693 @ SXTB16
2694 @------------------------------------------------------------------------------
2695         sxtb16 r1, r4
2696         sxtb16 r6, r7, ror #0
2697         sxtb16 r3, r1, ror #16
2698         ite cs
2699         sxtb16cs r3, r5, ror #8
2700         sxtb16lo r2, r3, ror #24
2701
2702 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2703 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2704 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2705 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2706 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2707 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2708
2709
2710 @------------------------------------------------------------------------------
2711 @ SXTH
2712 @------------------------------------------------------------------------------
2713         sxth r1, r6, ror #0
2714         sxth r3, r8, ror #8
2715         sxth r9, r3, ror #24
2716         itt ne
2717         sxthne r3, r9
2718         sxthne r2, r2, ror #16
2719         sxth.w  r7, r8
2720
2721 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2722 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2723 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2724 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2725 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2726 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2727 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2728
2729
2730 @------------------------------------------------------------------------------
2731 @ SXTB
2732 @------------------------------------------------------------------------------
2733         sxtb r5, r6, ror #0
2734         sxtb.w r6, r9, ror #8
2735         sxtb r8, r3, ror #24
2736         ite ge
2737         sxtbge r2, r4
2738         sxtblt r5, r1, ror #16
2739
2740 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2741 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2742 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2743 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2744 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2745 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2746
2747
2748 @------------------------------------------------------------------------------
2749 @ SXTB16
2750 @------------------------------------------------------------------------------
2751         sxtb16 r1, r4
2752         sxtb16 r6, r7, ror #0
2753         sxtb16 r3, r1, ror #16
2754         ite cs
2755         sxtb16cs r3, r5, ror #8
2756         sxtb16lo r2, r3, ror #24
2757
2758 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2759 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2760 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2761 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2762 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2763 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2764
2765
2766 @------------------------------------------------------------------------------
2767 @ SXTH
2768 @------------------------------------------------------------------------------
2769         sxth r1, r6, ror #0
2770         sxth.w r3, r8, ror #8
2771         sxth r9, r3, ror #24
2772         itt ne
2773         sxthne r3, r9
2774         sxthne r2, r2, ror #16
2775
2776 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2777 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2778 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2779 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2780 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2781 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2782
2783
2784 @------------------------------------------------------------------------------
2785 @ TBB/TBH
2786 @------------------------------------------------------------------------------
2787         tbb [r3, r8]
2788         tbh [r3, r8, lsl #1]
2789         it eq
2790         tbbeq [r3, r8]
2791         it cs
2792         tbhcs [r3, r8, lsl #1]
2793
2794 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2795 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2796 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2797 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2798 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
2799 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2800
2801
2802 @------------------------------------------------------------------------------
2803 @ TEQ
2804 @------------------------------------------------------------------------------
2805         teq r5, #0xf000
2806         teq r4, r5
2807         teq r4, r5, lsl #5
2808         teq r4, r5, lsr #5
2809         teq r4, r5, lsr #5
2810         teq r4, r5, asr #5
2811         teq r4, r5, ror #5
2812
2813 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
2814 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
2815 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
2816 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2817 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2818 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
2819 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
2820
2821
2822 @------------------------------------------------------------------------------
2823 @ TST
2824 @------------------------------------------------------------------------------
2825         tst r5, #0xf000
2826         tst r2, r5
2827         tst r3, r12, lsl #5
2828         tst r4, r11, lsr #4
2829         tst r5, r10, lsr #12
2830         tst r6, r9, asr #30
2831         tst r7, r8, ror #2
2832
2833 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
2834 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
2835 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
2836 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
2837 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
2838 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
2839 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
2840
2841
2842 @------------------------------------------------------------------------------
2843 @ UADD16/UADD8
2844 @------------------------------------------------------------------------------
2845         uadd16 r1, r2, r3
2846         uadd8 r1, r2, r3
2847         ite gt
2848         uadd16gt r1, r2, r3
2849         uadd8le r1, r2, r3
2850
2851 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
2852 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
2853 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2854 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
2855 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
2856
2857
2858 @------------------------------------------------------------------------------
2859 @ UASX
2860 @------------------------------------------------------------------------------
2861         uasx r9, r12, r0
2862         it eq
2863         uasxeq r9, r12, r0
2864         uaddsubx r9, r12, r0
2865         it eq
2866         uaddsubxeq r9, r12, r0
2867
2868 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2869 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2870 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2871 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2872 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2873 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
2874
2875
2876 @------------------------------------------------------------------------------
2877 @ UBFX
2878 @------------------------------------------------------------------------------
2879         ubfx r4, r5, #16, #1
2880         it gt
2881         ubfxgt r4, r5, #16, #16
2882
2883 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
2884 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2885 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
2886
2887
2888 @------------------------------------------------------------------------------
2889 @ UHADD16/UHADD8
2890 @------------------------------------------------------------------------------
2891         uhadd16 r4, r8, r2
2892         uhadd8 r4, r8, r2
2893         itt gt
2894         uhadd16gt r4, r8, r2
2895         uhadd8gt r4, r8, r2
2896
2897 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2898 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
2899 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2900 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
2901 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
2902
2903
2904 @------------------------------------------------------------------------------
2905 @ UHASX/UHSAX
2906 @------------------------------------------------------------------------------
2907         uhasx r4, r1, r5
2908         uhsax r5, r6, r6
2909         itt gt
2910         uhasxgt r6, r9, r8
2911         uhsaxgt r7, r8, r12
2912         uhaddsubx r4, r1, r5
2913         uhsubaddx r5, r6, r6
2914         itt gt
2915         uhaddsubxgt r6, r9, r8
2916         uhsubaddxgt r7, r8, r12
2917
2918 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2919 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2920 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2921 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
2922 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
2923 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
2924 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
2925 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
2926 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
2927 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
2928
2929
2930 @------------------------------------------------------------------------------
2931 @ UHSUB16/UHSUB8
2932 @------------------------------------------------------------------------------
2933         uhsub16 r5, r8, r3
2934         uhsub8 r1, r7, r6
2935         itt lt
2936         uhsub16lt r4, r9, r12
2937         uhsub8lt r3, r1, r5
2938
2939 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
2940 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
2941 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
2942 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
2943 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
2944
2945
2946 @------------------------------------------------------------------------------
2947 @ UMAAL
2948 @------------------------------------------------------------------------------
2949         umaal r3, r4, r5, r6
2950         it lt
2951         umaallt r3, r4, r5, r6
2952
2953 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
2954 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2955 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
2956
2957
2958 @------------------------------------------------------------------------------
2959 @ UMLAL
2960 @------------------------------------------------------------------------------
2961         umlal r2, r4, r6, r8
2962         it gt
2963         umlalgt r6, r1, r2, r6
2964
2965 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
2966 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2967 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
2968
2969
2970 @------------------------------------------------------------------------------
2971 @ UMULL
2972 @------------------------------------------------------------------------------
2973         umull r2, r4, r6, r8
2974         it gt
2975         umullgt r6, r1, r2, r6
2976
2977 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
2978 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
2979 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
2980
2981
2982 @------------------------------------------------------------------------------
2983 @ UQADD16/UQADD8
2984 @------------------------------------------------------------------------------
2985         uqadd16 r1, r2, r3
2986         uqadd8 r3, r4, r8
2987         ite gt
2988         uqadd16gt r4, r7, r9
2989         uqadd8le r8, r1, r2
2990
2991 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
2992 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
2993 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2994 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
2995 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
2996
2997
2998 @------------------------------------------------------------------------------
2999 @ UQASX/UQSAX
3000 @------------------------------------------------------------------------------
3001         uqasx r1, r2, r3
3002         uqsax r3, r4, r8
3003         ite gt
3004         uqasxgt r4, r7, r9
3005         uqsaxle r8, r1, r2
3006
3007         uqaddsubx r1, r2, r3
3008         uqsubaddx r3, r4, r8
3009         ite gt
3010         uqaddsubxgt r4, r7, r9
3011         uqsubaddxle r8, r1, r2
3012
3013 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3014 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3015 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3016 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3017 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3018
3019 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3020 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3021 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3022 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3023 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3024
3025
3026 @------------------------------------------------------------------------------
3027 @ UQSUB16/UQSUB8
3028 @------------------------------------------------------------------------------
3029         uqsub8 r8, r2, r9
3030         uqsub16 r1, r9, r7
3031         ite gt
3032         uqsub8gt r3, r1, r6
3033         uqsub16le r4, r6, r4
3034
3035 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3036 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3037 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3038 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3039 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3040
3041
3042 @------------------------------------------------------------------------------
3043 @ UQSUB16/UQSUB8
3044 @------------------------------------------------------------------------------
3045         usad8 r1, r9, r7
3046         usada8 r8, r2, r9, r12
3047         ite gt
3048         usada8gt r3, r1, r6, r9
3049         usad8le r4, r6, r4
3050
3051 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3052 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3053 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3054 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3055 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3056
3057
3058 @------------------------------------------------------------------------------
3059 @ USAT
3060 @------------------------------------------------------------------------------
3061         usat    r8, #1, r10
3062         usat    r8, #4, r10, lsl #0
3063         usat    r8, #5, r10, lsl #31
3064         usat    r8, #16, r10, asr #1
3065
3066 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3067 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3068 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3069 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3070
3071
3072 @------------------------------------------------------------------------------
3073 @ USAT16
3074 @------------------------------------------------------------------------------
3075         usat16  r2, #2, r7
3076         usat16  r3, #15, r5
3077
3078 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3079 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3080
3081
3082 @------------------------------------------------------------------------------
3083 @ USAX
3084 @------------------------------------------------------------------------------
3085         usax r2, r3, r4
3086         it ne
3087         usaxne r6, r1, r9
3088         usubaddx r2, r3, r4
3089         it ne
3090         usubaddxne r6, r1, r9
3091
3092 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3093 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3094 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3095 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3096 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3097 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3098
3099
3100 @------------------------------------------------------------------------------
3101 @ USUB16/USUB8
3102 @------------------------------------------------------------------------------
3103         usub16 r4, r2, r7
3104         usub8 r1, r8, r5
3105         ite hi
3106         usub16hi r1, r1, r3
3107         usub8ls r9, r2, r3
3108
3109 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3110 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3111 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3112 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3113 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3114
3115
3116 @------------------------------------------------------------------------------
3117 @ UXTAB
3118 @------------------------------------------------------------------------------
3119         uxtab r2, r3, r4
3120         uxtab r4, r5, r6, ror #0
3121         it lt
3122         uxtablt r6, r2, r9, ror #8
3123         uxtab r5, r1, r4, ror #16
3124         uxtab r7, r8, r3, ror #24
3125
3126 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3127 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3128 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3129 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3130 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3131 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3132
3133
3134 @------------------------------------------------------------------------------
3135 @ UXTAB16
3136 @------------------------------------------------------------------------------
3137         it ge
3138         uxtab16ge r0, r1, r4
3139         uxtab16 r6, r2, r7, ror #0
3140         uxtab16 r3, r5, r8, ror #8
3141         uxtab16 r3, r2, r1, ror #16
3142         it eq
3143         uxtab16eq r1, r2, r3, ror #24
3144
3145 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3146 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3147 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3148 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3149 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3150 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3151 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3152
3153
3154 @------------------------------------------------------------------------------
3155 @ UXTAH
3156 @------------------------------------------------------------------------------
3157         uxtah r1, r3, r9
3158         it hi
3159         uxtahhi r6, r1, r6, ror #0
3160         uxtah r3, r8, r3, ror #8
3161         it lo
3162         uxtahlo r2, r2, r4, ror #16
3163         uxtah r9, r3, r3, ror #24
3164
3165 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3166 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3167 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3168 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3169 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3170 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3171 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3172
3173
3174 @------------------------------------------------------------------------------
3175 @ UXTB
3176 @------------------------------------------------------------------------------
3177         it ge
3178         uxtbge r2, r4
3179         uxtb r5, r6, ror #0
3180         uxtb r6, r9, ror #8
3181         it cc
3182         uxtbcc r5, r1, ror #16
3183         uxtb r8, r3, ror #24
3184         uxtb.w  r7, r8
3185
3186 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3187 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3188 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3189 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3190 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3191 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3192 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3193 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3194
3195
3196 @------------------------------------------------------------------------------
3197 @ UXTB16
3198 @------------------------------------------------------------------------------
3199         uxtb16 r1, r4
3200         uxtb16 r6, r7, ror #0
3201         it cs
3202         uxtb16cs r3, r5, ror #8
3203         uxtb16 r3, r1, ror #16
3204         it ge
3205         uxtb16ge r2, r3, ror #24
3206
3207 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3208 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3209 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3210 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3211 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3212 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3213 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3214
3215
3216 @------------------------------------------------------------------------------
3217 @ UXTH
3218 @------------------------------------------------------------------------------
3219         it ne
3220         uxthne r3, r9
3221         uxth r1, r6, ror #0
3222         uxth r3, r8, ror #8
3223         it le
3224         uxthle r2, r2, ror #16
3225         uxth r9, r3, ror #24
3226         uxth.w  r7, r8
3227
3228 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3229 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3230 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3231 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3232 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3233 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3234 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3235 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3236
3237 @------------------------------------------------------------------------------
3238 @ WFE/WFI/YIELD
3239 @------------------------------------------------------------------------------
3240         wfe
3241         wfi
3242         yield
3243         itet lt
3244         wfelt
3245         wfige
3246         yieldlt
3247
3248 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3249 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3250 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3251 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3252 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3253 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3254 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]