Add support for parsing #-0 on non-memory-operand immediate values, and add a testcas...
[oota-llvm.git] / test / MC / ARM / basic-arm-instructions.s
1 @ RUN: llvm-mc -triple=armv7-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 _func:
12 @ CHECK: _func
13
14 @------------------------------------------------------------------------------
15 @ ADC (immediate)
16 @------------------------------------------------------------------------------
17   adc r1, r2, #0xf
18   adc r1, r2, #0xf0
19   adc r1, r2, #0xf00
20   adc r1, r2, #0xf000
21   adc r1, r2, #0xf0000
22   adc r1, r2, #0xf00000
23   adc r1, r2, #0xf000000
24   adc r1, r2, #0xf0000000
25   adc r1, r2, #0xf000000f
26   adcs r1, r2, #0xf00
27   adcseq r1, r2, #0xf00
28   adceq r1, r2, #0xf00
29
30 @ CHECK: adc    r1, r2, #15             @ encoding: [0x0f,0x10,0xa2,0xe2]
31 @ CHECK: adc    r1, r2, #240            @ encoding: [0xf0,0x10,0xa2,0xe2]
32 @ CHECK: adc    r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0xe2]
33 @ CHECK: adc    r1, r2, #61440          @ encoding: [0x0f,0x1a,0xa2,0xe2]
34 @ CHECK: adc    r1, r2, #983040         @ encoding: [0x0f,0x18,0xa2,0xe2]
35 @ CHECK: adc    r1, r2, #15728640       @ encoding: [0x0f,0x16,0xa2,0xe2]
36 @ CHECK: adc    r1, r2, #251658240      @ encoding: [0x0f,0x14,0xa2,0xe2]
37 @ CHECK: adc    r1, r2, #4026531840     @ encoding: [0x0f,0x12,0xa2,0xe2]
38 @ CHECK: adc    r1, r2, #4026531855     @ encoding: [0xff,0x12,0xa2,0xe2]
39
40 @ CHECK: adcs   r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0xe2]
41 @ CHECK: adcseq r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0x02]
42 @ CHECK: adceq  r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0x02]
43
44 @------------------------------------------------------------------------------
45 @ ADC (register)
46 @ ADC (shifted register)
47 @------------------------------------------------------------------------------
48   adc r4, r5, r6
49   @ Constant shifts
50   adc r4, r5, r6, lsl #1
51   adc r4, r5, r6, lsl #31
52   adc r4, r5, r6, lsr #1
53   adc r4, r5, r6, lsr #31
54   adc r4, r5, r6, lsr #32
55   adc r4, r5, r6, asr #1
56   adc r4, r5, r6, asr #31
57   adc r4, r5, r6, asr #32
58   adc r4, r5, r6, ror #1
59   adc r4, r5, r6, ror #31
60
61   @ Register shifts
62   adc r6, r7, r8, lsl r9
63   adc r6, r7, r8, lsr r9
64   adc r6, r7, r8, asr r9
65   adc r6, r7, r8, ror r9
66   adc r4, r5, r6, rrx
67
68   @ Destination register is optional
69   adc r5, r6
70   adc r4, r5, lsl #1
71   adc r4, r5, lsl #31
72   adc r4, r5, lsr #1
73   adc r4, r5, lsr #31
74   adc r4, r5, lsr #32
75   adc r4, r5, asr #1
76   adc r4, r5, asr #31
77   adc r4, r5, asr #32
78   adc r4, r5, ror #1
79   adc r4, r5, ror #31
80   adc r4, r5, rrx
81   adc r6, r7, lsl r9
82   adc r6, r7, lsr r9
83   adc r6, r7, asr r9
84   adc r6, r7, ror r9
85   adc r4, r5, rrx
86
87 @ CHECK: adc    r4, r5, r6              @ encoding: [0x06,0x40,0xa5,0xe0]
88
89 @ CHECK: adc    r4, r5, r6, lsl #1      @ encoding: [0x86,0x40,0xa5,0xe0]
90 @ CHECK: adc    r4, r5, r6, lsl #31     @ encoding: [0x86,0x4f,0xa5,0xe0]
91 @ CHECK: adc    r4, r5, r6, lsr #1      @ encoding: [0xa6,0x40,0xa5,0xe0]
92 @ CHECK: adc    r4, r5, r6, lsr #31     @ encoding: [0xa6,0x4f,0xa5,0xe0]
93 @ CHECK: adc    r4, r5, r6, lsr #32     @ encoding: [0x26,0x40,0xa5,0xe0]
94 @ CHECK: adc    r4, r5, r6, asr #1      @ encoding: [0xc6,0x40,0xa5,0xe0]
95 @ CHECK: adc    r4, r5, r6, asr #31     @ encoding: [0xc6,0x4f,0xa5,0xe0]
96 @ CHECK: adc    r4, r5, r6, asr #32     @ encoding: [0x46,0x40,0xa5,0xe0]
97 @ CHECK: adc    r4, r5, r6, ror #1      @ encoding: [0xe6,0x40,0xa5,0xe0]
98 @ CHECK: adc    r4, r5, r6, ror #31     @ encoding: [0xe6,0x4f,0xa5,0xe0]
99
100 @ CHECK: adc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xa7,0xe0]
101 @ CHECK: adc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xa7,0xe0]
102 @ CHECK: adc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xa7,0xe0]
103 @ CHECK: adc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xa7,0xe0]
104 @ CHECK: adc    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0xa5,0xe0]
105
106 @ CHECK: adc    r5, r5, r6              @ encoding: [0x06,0x50,0xa5,0xe0]
107 @ CHECK: adc    r4, r4, r5, lsl #1      @ encoding: [0x85,0x40,0xa4,0xe0]
108 @ CHECK: adc    r4, r4, r5, lsl #31     @ encoding: [0x85,0x4f,0xa4,0xe0]
109 @ CHECK: adc    r4, r4, r5, lsr #1      @ encoding: [0xa5,0x40,0xa4,0xe0]
110 @ CHECK: adc    r4, r4, r5, lsr #31     @ encoding: [0xa5,0x4f,0xa4,0xe0]
111 @ CHECK: adc    r4, r4, r5, lsr #32     @ encoding: [0x25,0x40,0xa4,0xe0]
112 @ CHECK: adc    r4, r4, r5, asr #1      @ encoding: [0xc5,0x40,0xa4,0xe0]
113 @ CHECK: adc    r4, r4, r5, asr #31     @ encoding: [0xc5,0x4f,0xa4,0xe0]
114 @ CHECK: adc    r4, r4, r5, asr #32     @ encoding: [0x45,0x40,0xa4,0xe0]
115 @ CHECK: adc    r4, r4, r5, ror #1      @ encoding: [0xe5,0x40,0xa4,0xe0]
116 @ CHECK: adc    r4, r4, r5, ror #31     @ encoding: [0xe5,0x4f,0xa4,0xe0]
117 @ CHECK: adc    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
118 @ CHECK: adc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xa6,0xe0]
119 @ CHECK: adc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xa6,0xe0]
120 @ CHECK: adc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xa6,0xe0]
121 @ CHECK: adc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xa6,0xe0]
122 @ CHECK: adc    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
123
124
125 @------------------------------------------------------------------------------
126 @ ADR
127 @------------------------------------------------------------------------------
128 Lback:
129   adr r2, Lback
130   adr r3, Lforward
131 Lforward:
132   adr   r2, #3
133   adr   r2, #-3
134
135 @ CHECK: Lback:
136 @ CHECK: adr    r2, Lback    @ encoding: [0bAAAAAAA0,0x20'A',0x0f'A',0b1110001A]
137 @ CHECK:  @   fixup A - offset: 0, value: Lback, kind: fixup_arm_adr_pcrel_12
138 @ CHECK: adr    r3, Lforward @ encoding: [0bAAAAAAA0,0x30'A',0x0f'A',0b1110001A]
139 @ CHECK:  @   fixup A - offset: 0, value: Lforward, kind: fixup_arm_adr_pcrel_12
140 @ CHECK: Lforward:
141 @ CHECK: adr    r2, #3                  @ encoding: [0x03,0x20,0x8f,0xe2]
142 @ CHECK: adr    r2, #-3                 @ encoding: [0x03,0x20,0x4f,0xe2]
143
144
145 @------------------------------------------------------------------------------
146 @ ADD
147 @------------------------------------------------------------------------------
148   add r4, r5, #0xf000
149   add r4, r5, r6
150   add r4, r5, r6, lsl #5
151   add r4, r5, r6, lsr #5
152   add r4, r5, r6, lsr #5
153   add r4, r5, r6, asr #5
154   add r4, r5, r6, ror #5
155   add r6, r7, r8, lsl r9
156   add r6, r7, r8, lsr r9
157   add r6, r7, r8, asr r9
158   add r6, r7, r8, ror r9
159   add r4, r5, r6, rrx
160
161   @ destination register is optional
162   add r5, #0xf000
163   add r4, r5
164   add r4, r5, lsl #5
165   add r4, r5, lsr #5
166   add r4, r5, lsr #5
167   add r4, r5, asr #5
168   add r4, r5, ror #5
169   add r6, r7, lsl r9
170   add r6, r7, lsr r9
171   add r6, r7, asr r9
172   add r6, r7, ror r9
173   add r4, r5, rrx
174
175 @ CHECK: add    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe2]
176 @ CHECK: add    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe0]
177 @ CHECK: add    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe0]
178 @ CHECK: add    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
179 @ CHECK: add    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
180 @ CHECK: add    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe0]
181 @ CHECK: add    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe0]
182 @ CHECK: add    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe0]
183 @ CHECK: add    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe0]
184 @ CHECK: add    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe0]
185 @ CHECK: add    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe0]
186 @ CHECK: add    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe0]
187
188
189 @ CHECK: add    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe2]
190 @ CHECK: add    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe0]
191 @ CHECK: add    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe0]
192 @ CHECK: add    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
193 @ CHECK: add    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
194 @ CHECK: add    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe0]
195 @ CHECK: add    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe0]
196 @ CHECK: add    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe0]
197 @ CHECK: add    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe0]
198 @ CHECK: add    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe0]
199 @ CHECK: add    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe0]
200 @ CHECK: add    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe0]
201
202
203 @------------------------------------------------------------------------------
204 @ AND
205 @------------------------------------------------------------------------------
206   and r10, r1, #0xf
207   and r10, r1, r6
208   and r10, r1, r6, lsl #10
209   and r10, r1, r6, lsr #10
210   and r10, r1, r6, lsr #10
211   and r10, r1, r6, asr #10
212   and r10, r1, r6, ror #10
213   and r6, r7, r8, lsl r2
214   and r6, r7, r8, lsr r2
215   and r6, r7, r8, asr r2
216   and r6, r7, r8, ror r2
217   and r10, r1, r6, rrx
218
219   @ destination register is optional
220   and r1, #0xf
221   and r10, r1
222   and r10, r1, lsl #10
223   and r10, r1, lsr #10
224   and r10, r1, lsr #10
225   and r10, r1, asr #10
226   and r10, r1, ror #10
227   and r6, r7, lsl r2
228   and r6, r7, lsr r2
229   and r6, r7, asr r2
230   and r6, r7, ror r2
231   and r10, r1, rrx
232
233 @ CHECK: and    r10, r1, #15            @ encoding: [0x0f,0xa0,0x01,0xe2]
234 @ CHECK: and    r10, r1, r6             @ encoding: [0x06,0xa0,0x01,0xe0]
235 @ CHECK: and    r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0x01,0xe0]
236 @ CHECK: and    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
237 @ CHECK: and    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
238 @ CHECK: and    r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0x01,0xe0]
239 @ CHECK: and    r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0x01,0xe0]
240 @ CHECK: and    r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0x07,0xe0]
241 @ CHECK: and    r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0x07,0xe0]
242 @ CHECK: and    r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0x07,0xe0]
243 @ CHECK: and    r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0x07,0xe0]
244 @ CHECK: and    r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0x01,0xe0]
245
246 @ CHECK: and    r1, r1, #15             @ encoding: [0x0f,0x10,0x01,0xe2]
247 @ CHECK: and    r10, r10, r1            @ encoding: [0x01,0xa0,0x0a,0xe0]
248 @ CHECK: and    r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0x0a,0xe0]
249 @ CHECK: and    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
250 @ CHECK: and    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
251 @ CHECK: and    r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0x0a,0xe0]
252 @ CHECK: and    r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0x0a,0xe0]
253 @ CHECK: and    r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0x06,0xe0]
254 @ CHECK: and    r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0x06,0xe0]
255 @ CHECK: and    r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0x06,0xe0]
256 @ CHECK: and    r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0x06,0xe0]
257 @ CHECK: and    r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0x0a,0xe0]
258
259 @------------------------------------------------------------------------------
260 @ FIXME: ASR
261 @------------------------------------------------------------------------------
262 @------------------------------------------------------------------------------
263 @ B
264 @------------------------------------------------------------------------------
265         b _bar
266         beq _baz
267
268 @ CHECK: b      _bar                    @ encoding: [A,A,A,0xea]
269                                         @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
270 @ CHECK: beq    _baz                    @ encoding: [A,A,A,0x0a]
271                                         @   fixup A - offset: 0, value: _baz, kind: fixup_arm_condbranch
272
273
274 @------------------------------------------------------------------------------
275 @ BFC
276 @------------------------------------------------------------------------------
277   bfc r5, #3, #17
278   bfccc r5, #3, #17
279
280 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x9f,0x51,0xd3,0xe7]
281 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x9f,0x51,0xd3,0x37]
282
283
284 @------------------------------------------------------------------------------
285 @ BFI
286 @------------------------------------------------------------------------------
287   bfi r5, r2, #3, #17
288   bfine r5, r2, #3, #17
289
290 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x92,0x51,0xd3,0xe7]
291 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x92,0x51,0xd3,0x17]
292
293
294 @------------------------------------------------------------------------------
295 @ BIC
296 @------------------------------------------------------------------------------
297   bic r10, r1, #0xf
298   bic r10, r1, r6
299   bic r10, r1, r6, lsl #10
300   bic r10, r1, r6, lsr #10
301   bic r10, r1, r6, lsr #10
302   bic r10, r1, r6, asr #10
303   bic r10, r1, r6, ror #10
304   bic r6, r7, r8, lsl r2
305   bic r6, r7, r8, lsr r2
306   bic r6, r7, r8, asr r2
307   bic r6, r7, r8, ror r2
308   bic r10, r1, r6, rrx
309
310   @ destination register is optional
311   bic r1, #0xf
312   bic r10, r1
313   bic r10, r1, lsl #10
314   bic r10, r1, lsr #10
315   bic r10, r1, lsr #10
316   bic r10, r1, asr #10
317   bic r10, r1, ror #10
318   bic r6, r7, lsl r2
319   bic r6, r7, lsr r2
320   bic r6, r7, asr r2
321   bic r6, r7, ror r2
322   bic r10, r1, rrx
323
324 @ CHECK: bic    r10, r1, #15            @ encoding: [0x0f,0xa0,0xc1,0xe3]
325 @ CHECK: bic    r10, r1, r6             @ encoding: [0x06,0xa0,0xc1,0xe1]
326 @ CHECK: bic    r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0xc1,0xe1]
327 @ CHECK: bic    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
328 @ CHECK: bic    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
329 @ CHECK: bic    r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0xc1,0xe1]
330 @ CHECK: bic    r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0xc1,0xe1]
331 @ CHECK: bic    r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0xc7,0xe1]
332 @ CHECK: bic    r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0xc7,0xe1]
333 @ CHECK: bic    r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0xc7,0xe1]
334 @ CHECK: bic    r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0xc7,0xe1]
335 @ CHECK: bic    r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0xc1,0xe1]
336
337
338 @ CHECK: bic    r1, r1, #15             @ encoding: [0x0f,0x10,0xc1,0xe3]
339 @ CHECK: bic    r10, r10, r1            @ encoding: [0x01,0xa0,0xca,0xe1]
340 @ CHECK: bic    r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0xca,0xe1]
341 @ CHECK: bic    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
342 @ CHECK: bic    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
343 @ CHECK: bic    r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0xca,0xe1]
344 @ CHECK: bic    r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0xca,0xe1]
345 @ CHECK: bic    r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0xc6,0xe1]
346 @ CHECK: bic    r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0xc6,0xe1]
347 @ CHECK: bic    r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0xc6,0xe1]
348 @ CHECK: bic    r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0xc6,0xe1]
349 @ CHECK: bic    r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0xca,0xe1]
350
351 @------------------------------------------------------------------------------
352 @ BKPT
353 @------------------------------------------------------------------------------
354   bkpt #10
355   bkpt #65535
356
357 @ CHECK: bkpt  #10                      @ encoding: [0x7a,0x00,0x20,0xe1]
358 @ CHECK: bkpt  #65535                   @ encoding: [0x7f,0xff,0x2f,0xe1]
359
360 @------------------------------------------------------------------------------
361 @ BL/BLX (immediate)
362 @------------------------------------------------------------------------------
363
364   bl _bar
365   blx _bar
366   blls #28634268
367   blx   #32424576
368   blx   #16212288
369
370 @ CHECK: bl  _bar @ encoding: [A,A,A,0xeb]
371 @ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
372 @ CHECK: blx    _bar @ encoding: [A,A,A,0xfa]
373            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
374 @ CHECK: blls   #28634268               @ encoding: [0x27,0x3b,0x6d,0x9b]
375 @ CHECK: blx    #32424576               @ encoding: [0xa0,0xb0,0x7b,0xfa]
376 @ CHECK: blx    #16212288               @ encoding: [0x50,0xd8,0x3d,0xfa]
377 @------------------------------------------------------------------------------
378 @ BLX (register)
379 @------------------------------------------------------------------------------
380   blx r2
381   blxne r2
382
383 @ CHECK: blx r2                         @ encoding: [0x32,0xff,0x2f,0xe1]
384 @ CHECK: blxne r2                       @ encoding: [0x32,0xff,0x2f,0x11]
385
386 @------------------------------------------------------------------------------
387 @ BX
388 @------------------------------------------------------------------------------
389
390   bx r2
391   bxne r2
392
393 @ CHECK: bx     r2                      @ encoding: [0x12,0xff,0x2f,0xe1]
394 @ CHECK: bxne   r2                      @ encoding: [0x12,0xff,0x2f,0x11]
395
396 @------------------------------------------------------------------------------
397 @ BXJ
398 @------------------------------------------------------------------------------
399
400   bxj r2
401   bxjne r2
402
403 @ CHECK: bxj    r2                      @ encoding: [0x22,0xff,0x2f,0xe1]
404 @ CHECK: bxjne  r2                      @ encoding: [0x22,0xff,0x2f,0x11]
405
406
407 @------------------------------------------------------------------------------
408 @ CDP/CDP2
409 @------------------------------------------------------------------------------
410   cdp  p7, #1, c1, c1, c1, #4
411   cdp2  p7, #1, c1, c1, c1, #4
412
413 @ CHECK: cdp  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0xee]
414 @ CHECK: cdp2  p7, #1, c1, c1, c1, #4    @ encoding: [0x81,0x17,0x11,0xfe]
415
416
417 @------------------------------------------------------------------------------
418 @ CLREX
419 @------------------------------------------------------------------------------
420   clrex
421
422 @ CHECK: clrex                           @ encoding: [0x1f,0xf0,0x7f,0xf5]
423
424
425 @------------------------------------------------------------------------------
426 @ CLZ
427 @------------------------------------------------------------------------------
428   clz r1, r2
429   clzeq r1, r2
430
431 @ CHECK: clz r1, r2                      @ encoding: [0x12,0x1f,0x6f,0xe1]
432 @ CHECK: clzeq r1, r2                    @ encoding: [0x12,0x1f,0x6f,0x01]
433
434 @------------------------------------------------------------------------------
435 @ CMN
436 @------------------------------------------------------------------------------
437   cmn r1, #0xf
438   cmn r1, r6
439   cmn r1, r6, lsl #10
440   cmn r1, r6, lsr #10
441   cmn sp, r6, lsr #10
442   cmn r1, r6, asr #10
443   cmn r1, r6, ror #10
444   cmn r7, r8, lsl r2
445   cmn sp, r8, lsr r2
446   cmn r7, r8, asr r2
447   cmn r7, r8, ror r2
448   cmn r1, r6, rrx
449
450 @ CHECK: cmn    r1, #15                 @ encoding: [0x0f,0x00,0x71,0xe3]
451 @ CHECK: cmn    r1, r6                  @ encoding: [0x06,0x00,0x71,0xe1]
452 @ CHECK: cmn    r1, r6, lsl #10         @ encoding: [0x06,0x05,0x71,0xe1]
453 @ CHECK: cmn    r1, r6, lsr #10         @ encoding: [0x26,0x05,0x71,0xe1]
454 @ CHECK: cmn    sp, r6, lsr #10         @ encoding: [0x26,0x05,0x7d,0xe1]
455 @ CHECK: cmn    r1, r6, asr #10         @ encoding: [0x46,0x05,0x71,0xe1]
456 @ CHECK: cmn    r1, r6, ror #10         @ encoding: [0x66,0x05,0x71,0xe1]
457 @ CHECK: cmn    r7, r8, lsl r2          @ encoding: [0x18,0x02,0x77,0xe1]
458 @ CHECK: cmn    sp, r8, lsr r2          @ encoding: [0x38,0x02,0x7d,0xe1]
459 @ CHECK: cmn    r7, r8, asr r2          @ encoding: [0x58,0x02,0x77,0xe1]
460 @ CHECK: cmn    r7, r8, ror r2          @ encoding: [0x78,0x02,0x77,0xe1]
461 @ CHECK: cmn    r1, r6, rrx             @ encoding: [0x66,0x00,0x71,0xe1]
462
463 @------------------------------------------------------------------------------
464 @ CMP
465 @------------------------------------------------------------------------------
466   cmp r1, #0xf
467   cmp r1, r6
468   cmp r1, r6, lsl #10
469   cmp r1, r6, lsr #10
470   cmp sp, r6, lsr #10
471   cmp r1, r6, asr #10
472   cmp r1, r6, ror #10
473   cmp r7, r8, lsl r2
474   cmp sp, r8, lsr r2
475   cmp r7, r8, asr r2
476   cmp r7, r8, ror r2
477   cmp r1, r6, rrx
478
479 @ CHECK: cmp    r1, #15                 @ encoding: [0x0f,0x00,0x51,0xe3]
480 @ CHECK: cmp    r1, r6                  @ encoding: [0x06,0x00,0x51,0xe1]
481 @ CHECK: cmp    r1, r6, lsl #10         @ encoding: [0x06,0x05,0x51,0xe1]
482 @ CHECK: cmp    r1, r6, lsr #10         @ encoding: [0x26,0x05,0x51,0xe1]
483 @ CHECK: cmp    sp, r6, lsr #10         @ encoding: [0x26,0x05,0x5d,0xe1]
484 @ CHECK: cmp    r1, r6, asr #10         @ encoding: [0x46,0x05,0x51,0xe1]
485 @ CHECK: cmp    r1, r6, ror #10         @ encoding: [0x66,0x05,0x51,0xe1]
486 @ CHECK: cmp    r7, r8, lsl r2          @ encoding: [0x18,0x02,0x57,0xe1]
487 @ CHECK: cmp    sp, r8, lsr r2          @ encoding: [0x38,0x02,0x5d,0xe1]
488 @ CHECK: cmp    r7, r8, asr r2          @ encoding: [0x58,0x02,0x57,0xe1]
489 @ CHECK: cmp    r7, r8, ror r2          @ encoding: [0x78,0x02,0x57,0xe1]
490 @ CHECK: cmp    r1, r6, rrx             @ encoding: [0x66,0x00,0x51,0xe1]
491
492
493 @------------------------------------------------------------------------------
494 @ CPS
495 @------------------------------------------------------------------------------
496         cpsie  aif
497         cps  #15
498         cpsid  if, #10
499
500 @ CHECK: cpsie  aif @ encoding: [0xc0,0x01,0x08,0xf1]
501 @ CHECK: cps  #15 @ encoding: [0x0f,0x00,0x02,0xf1]
502 @ CHECK: cpsid  if, #10 @ encoding: [0xca,0x00,0x0e,0xf1]
503
504
505 @------------------------------------------------------------------------------
506 @ DBG
507 @------------------------------------------------------------------------------
508   dbg #0
509   dbg #5
510   dbg #15
511
512 @ CHECK: dbg #0                         @ encoding: [0xf0,0xf0,0x20,0xe3]
513 @ CHECK: dbg #5                         @ encoding: [0xf5,0xf0,0x20,0xe3]
514 @ CHECK: dbg #15                        @ encoding: [0xff,0xf0,0x20,0xe3]
515
516
517 @------------------------------------------------------------------------------
518 @ DMB
519 @------------------------------------------------------------------------------
520   dmb sy
521   dmb st
522   dmb sh
523   dmb ish
524   dmb shst
525   dmb ishst
526   dmb un
527   dmb nsh
528   dmb unst
529   dmb nshst
530   dmb osh
531   dmb oshst
532   dmb
533
534 @ CHECK: dmb    sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
535 @ CHECK: dmb    st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
536 @ CHECK: dmb    ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
537 @ CHECK: dmb    ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
538 @ CHECK: dmb    ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
539 @ CHECK: dmb    ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
540 @ CHECK: dmb    nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
541 @ CHECK: dmb    nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
542 @ CHECK: dmb    nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
543 @ CHECK: dmb    nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
544 @ CHECK: dmb    osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
545 @ CHECK: dmb    oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
546 @ CHECK: dmb    sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
547
548 @------------------------------------------------------------------------------
549 @ DSB
550 @------------------------------------------------------------------------------
551   dsb sy
552   dsb st
553   dsb sh
554   dsb ish
555   dsb shst
556   dsb ishst
557   dsb un
558   dsb nsh
559   dsb unst
560   dsb nshst
561   dsb osh
562   dsb oshst
563   dsb
564
565 @ CHECK: dsb    sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
566 @ CHECK: dsb    st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
567 @ CHECK: dsb    ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
568 @ CHECK: dsb    ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
569 @ CHECK: dsb    ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
570 @ CHECK: dsb    ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
571 @ CHECK: dsb    nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
572 @ CHECK: dsb    nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
573 @ CHECK: dsb    nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
574 @ CHECK: dsb    nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
575 @ CHECK: dsb    osh                     @ encoding: [0x43,0xf0,0x7f,0xf5]
576 @ CHECK: dsb    oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
577 @ CHECK: dsb    sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
578
579 @------------------------------------------------------------------------------
580 @ EOR
581 @------------------------------------------------------------------------------
582   eor r4, r5, #0xf000
583   eor r4, r5, r6
584   eor r4, r5, r6, lsl #5
585   eor r4, r5, r6, lsr #5
586   eor r4, r5, r6, lsr #5
587   eor r4, r5, r6, asr #5
588   eor r4, r5, r6, ror #5
589   eor r6, r7, r8, lsl r9
590   eor r6, r7, r8, lsr r9
591   eor r6, r7, r8, asr r9
592   eor r6, r7, r8, ror r9
593   eor r4, r5, r6, rrx
594
595   @ destination register is optional
596   eor r5, #0xf000
597   eor r4, r5
598   eor r4, r5, lsl #5
599   eor r4, r5, lsr #5
600   eor r4, r5, lsr #5
601   eor r4, r5, asr #5
602   eor r4, r5, ror #5
603   eor r6, r7, lsl r9
604   eor r6, r7, lsr r9
605   eor r6, r7, asr r9
606   eor r6, r7, ror r9
607   eor r4, r5, rrx
608
609 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x25,0xe2]
610 @ CHECK: eor    r4, r5, r6              @ encoding: [0x06,0x40,0x25,0xe0]
611 @ CHECK: eor    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x25,0xe0]
612 @ CHECK: eor    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
613 @ CHECK: eor    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
614 @ CHECK: eor    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x25,0xe0]
615 @ CHECK: eor    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x25,0xe0]
616 @ CHECK: eor    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x27,0xe0]
617 @ CHECK: eor    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x27,0xe0]
618 @ CHECK: eor    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x27,0xe0]
619 @ CHECK: eor    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x27,0xe0]
620 @ CHECK: eor    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x25,0xe0]
621
622
623 @ CHECK: eor    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x25,0xe2]
624 @ CHECK: eor    r4, r4, r5              @ encoding: [0x05,0x40,0x24,0xe0]
625 @ CHECK: eor    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x24,0xe0]
626 @ CHECK: eor    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
627 @ CHECK: eor    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
628 @ CHECK: eor    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x24,0xe0]
629 @ CHECK: eor    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x24,0xe0]
630 @ CHECK: eor    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x26,0xe0]
631 @ CHECK: eor    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x26,0xe0]
632 @ CHECK: eor    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x26,0xe0]
633 @ CHECK: eor    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x26,0xe0]
634 @ CHECK: eor    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x24,0xe0]
635
636
637 @------------------------------------------------------------------------------
638 @ ISB
639 @------------------------------------------------------------------------------
640         isb sy
641         isb
642
643 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
644 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
645
646
647
648 @------------------------------------------------------------------------------
649 @ LDM*
650 @------------------------------------------------------------------------------
651         ldm       r2, {r1,r3-r6,sp}
652         ldmia     r2, {r1,r3-r6,sp}
653         ldmib     r2, {r1,r3-r6,sp}
654         ldmda     r2, {r1,r3-r6,sp}
655         ldmdb     r2, {r1,r3-r6,sp}
656         ldmfd     r2, {r1,r3-r6,sp}
657
658         @ with update
659         ldm       r2!, {r1,r3-r6,sp}
660         ldmib     r2!, {r1,r3-r6,sp}
661         ldmda     r2!, {r1,r3-r6,sp}
662         ldmdb     r2!, {r1,r3-r6,sp}
663
664 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
665 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
666 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
667 @ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
668 @ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
669 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
670
671 @ CHECK: ldm   r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
672 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
673 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
674 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
675
676
677 @------------------------------------------------------------------------------
678 @ LDREX/LDREXB/LDREXH/LDREXD
679 @------------------------------------------------------------------------------
680         ldrexb  r3, [r4]
681         ldrexh  r2, [r5]
682         ldrex  r1, [r7]
683         ldrexd  r6, r7, [r8]
684
685 @ CHECK: ldrexb r3, [r4]                @ encoding: [0x9f,0x3f,0xd4,0xe1]
686 @ CHECK: ldrexh r2, [r5]                @ encoding: [0x9f,0x2f,0xf5,0xe1]
687 @ CHECK: ldrex  r1, [r7]                @ encoding: [0x9f,0x1f,0x97,0xe1]
688 @ CHECK: ldrexd r6, r7, [r8]            @ encoding: [0x9f,0x6f,0xb8,0xe1]
689
690 @------------------------------------------------------------------------------
691 @ LDRHT
692 @------------------------------------------------------------------------------
693         ldrhthi r8, [r11], #-0
694         ldrhthi r8, [r11], #0
695
696 @ CHECK: ldrhthi        r8, [r11], #-0          @ encoding: [0xb0,0x80,0x7b,0x80]
697 @ CHECK: ldrhthi        r8, [r11], #0           @ encoding: [0xb0,0x80,0xfb,0x80]
698
699 @------------------------------------------------------------------------------
700 @ FIXME: LSL
701 @------------------------------------------------------------------------------
702 @------------------------------------------------------------------------------
703 @ FIXME: LSR
704 @------------------------------------------------------------------------------
705
706 @------------------------------------------------------------------------------
707 @ MCR/MCR2
708 @------------------------------------------------------------------------------
709         mcr  p7, #1, r5, c1, c1, #4
710         mcr2  p7, #1, r5, c1, c1, #4
711
712 @ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee]
713 @ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe]
714
715 @------------------------------------------------------------------------------
716 @ MCRR/MCRR2
717 @------------------------------------------------------------------------------
718         mcrr  p7, #15, r5, r4, c1
719         mcrr2  p7, #15, r5, r4, c1
720
721 @ CHECK: mcrr  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xec]
722 @ CHECK: mcrr2  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xfc]
723
724
725 @------------------------------------------------------------------------------
726 @ MLA
727 @------------------------------------------------------------------------------
728         mla  r1,r2,r3,r4
729         mlas r1,r2,r3,r4
730         mlane  r1,r2,r3,r4
731         mlasne r1,r2,r3,r4
732
733 @ CHECK: mla    r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0xe0]
734 @ CHECK: mlas   r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0]
735 @ CHECK: mlane  r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0x10]
736 @ CHECK: mlasne r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0x10]
737
738 @------------------------------------------------------------------------------
739 @ MLS
740 @------------------------------------------------------------------------------
741         mls  r2,r5,r6,r3
742         mlsne  r2,r5,r6,r3
743
744 @ CHECK: mls    r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0xe0]
745 @ CHECK: mlsne  r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0x10]
746
747 @------------------------------------------------------------------------------
748 @ MOV (immediate)
749 @------------------------------------------------------------------------------
750     mov r3, #7
751     mov r4, #0xff0
752     mov r5, #0xff0000
753     mov r6, #0xffff
754     movw r9, #0xffff
755     movs r3, #7
756     moveq r4, #0xff0
757     movseq r5, #0xff0000
758
759 @ CHECK: mov    r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
760 @ CHECK: mov    r4, #4080               @ encoding: [0xff,0x4e,0xa0,0xe3]
761 @ CHECK: mov    r5, #16711680           @ encoding: [0xff,0x58,0xa0,0xe3]
762 @ CHECK: movw   r6, #65535              @ encoding: [0xff,0x6f,0x0f,0xe3]
763 @ CHECK: movw   r9, #65535              @ encoding: [0xff,0x9f,0x0f,0xe3]
764 @ CHECK: movs   r3, #7                  @ encoding: [0x07,0x30,0xb0,0xe3]
765 @ CHECK: moveq  r4, #4080               @ encoding: [0xff,0x4e,0xa0,0x03]
766 @ CHECK: movseq r5, #16711680           @ encoding: [0xff,0x58,0xb0,0x03]
767
768 @------------------------------------------------------------------------------
769 @ MOV (register)
770 @------------------------------------------------------------------------------
771         mov r2, r3
772         movs r2, r3
773         moveq r2, r3
774         movseq r2, r3
775
776 @ CHECK: mov    r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
777 @ CHECK: movs   r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
778 @ CHECK: moveq  r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
779 @ CHECK: movseq r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
780
781 @------------------------------------------------------------------------------
782 @ MOVT
783 @------------------------------------------------------------------------------
784     movt r3, #7
785     movt r6, #0xffff
786     movteq r4, #0xff0
787
788 @ CHECK: movt   r3, #7                  @ encoding: [0x07,0x30,0x40,0xe3]
789 @ CHECK: movt   r6, #65535              @ encoding: [0xff,0x6f,0x4f,0xe3]
790 @ CHECK: movteq r4, #4080               @ encoding: [0xf0,0x4f,0x40,0x03]
791
792
793 @------------------------------------------------------------------------------
794 @ MRC/MRC2
795 @------------------------------------------------------------------------------
796         mrc  p14, #0, r1, c1, c2, #4
797         mrc2  p14, #0, r1, c1, c2, #4
798
799 @ CHECK: mrc  p14, #0, r1, c1, c2, #4   @ encoding: [0x92,0x1e,0x11,0xee]
800 @ CHECK: mrc2  p14, #0, r1, c1, c2, #4  @ encoding: [0x92,0x1e,0x11,0xfe]
801
802 @------------------------------------------------------------------------------
803 @ MRRC/MRRC2
804 @------------------------------------------------------------------------------
805         mrrc  p7, #1, r5, r4, c1
806         mrrc2  p7, #1, r5, r4, c1
807
808 @ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
809 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
810
811
812 @------------------------------------------------------------------------------
813 @ MRS
814 @------------------------------------------------------------------------------
815         mrs  r8, apsr
816         mrs  r8, cpsr
817         mrs  r8, spsr
818 @ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
819 @ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
820 @ CHECK: mrs  r8, spsr @ encoding: [0x00,0x80,0x4f,0xe1]
821
822
823
824 @------------------------------------------------------------------------------
825 @ MSR
826 @------------------------------------------------------------------------------
827
828         msr  apsr, #5
829         msr  apsr_g, #5
830         msr  apsr_nzcvq, #5
831         msr  APSR_nzcvq, #5
832         msr  apsr_nzcvqg, #5
833         msr  cpsr_fc, #5
834         msr  cpsr_c, #5
835         msr  cpsr_x, #5
836         msr  cpsr_fc, #5
837         msr  cpsr_all, #5
838         msr  cpsr_fsx, #5
839         msr  spsr_fc, #5
840         msr  SPSR_fsxc, #5
841         msr  cpsr_fsxc, #5
842
843 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
844 @ CHECK: msr    APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
845 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
846 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
847 @ CHECK: msr    APSR_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
848 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
849 @ CHECK: msr    CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
850 @ CHECK: msr    CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
851 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
852 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
853 @ CHECK: msr    CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
854 @ CHECK: msr    SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
855 @ CHECK: msr    SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
856 @ CHECK: msr    CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
857
858         msr  apsr, r0
859         msr  apsr_g, r0
860         msr  apsr_nzcvq, r0
861         msr  APSR_nzcvq, r0
862         msr  apsr_nzcvqg, r0
863         msr  cpsr_fc, r0
864         msr  cpsr_c, r0
865         msr  cpsr_x, r0
866         msr  cpsr_fc, r0
867         msr  cpsr_all, r0
868         msr  cpsr_fsx, r0
869         msr  spsr_fc, r0
870         msr  SPSR_fsxc, r0
871         msr  cpsr_fsxc, r0
872
873 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
874 @ CHECK: msr  APSR_g, r0 @ encoding: [0x00,0xf0,0x24,0xe1]
875 @ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
876 @ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
877 @ CHECK: msr  APSR_nzcvqg, r0 @ encoding: [0x00,0xf0,0x2c,0xe1]
878 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
879 @ CHECK: msr  CPSR_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1]
880 @ CHECK: msr  CPSR_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1]
881 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
882 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
883 @ CHECK: msr  CPSR_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1]
884 @ CHECK: msr  SPSR_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1]
885 @ CHECK: msr  SPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1]
886 @ CHECK: msr  CPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1]
887
888 @------------------------------------------------------------------------------
889 @ MUL
890 @------------------------------------------------------------------------------
891
892   mul r5, r6, r7
893   muls r5, r6, r7
894   mulgt r5, r6, r7
895   mulsle r5, r6, r7
896
897 @ CHECK: mul    r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
898 @ CHECK: muls   r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
899 @ CHECK: mulgt  r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
900 @ CHECK: mulsle r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
901
902
903 @------------------------------------------------------------------------------
904 @ MVN (immediate)
905 @------------------------------------------------------------------------------
906     mvn r3, #7
907     mvn r4, #0xff0
908     mvn r5, #0xff0000
909     mvns r3, #7
910     mvneq r4, #0xff0
911     mvnseq r5, #0xff0000
912
913 @ CHECK: mvn    r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
914 @ CHECK: mvn    r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
915 @ CHECK: mvn    r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
916 @ CHECK: mvns   r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
917 @ CHECK: mvneq  r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
918 @ CHECK: mvnseq r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
919
920
921 @------------------------------------------------------------------------------
922 @ MVN (register)
923 @------------------------------------------------------------------------------
924         mvn r2, r3
925         mvns r2, r3
926         mvn r5, r6, lsl #19
927         mvn r5, r6, lsr #9
928         mvn r5, r6, asr #4
929         mvn r5, r6, ror #6
930         mvn r5, r6, rrx
931         mvneq r2, r3
932         mvnseq r2, r3, lsl #10
933
934 @ CHECK: mvn    r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
935 @ CHECK: mvns   r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
936 @ CHECK: mvn    r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
937 @ CHECK: mvn    r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
938 @ CHECK: mvn    r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
939 @ CHECK: mvn    r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
940 @ CHECK: mvn    r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
941 @ CHECK: mvneq  r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
942 @ CHECK: mvnseq r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
943
944
945 @------------------------------------------------------------------------------
946 @ MVN (shifted register)
947 @------------------------------------------------------------------------------
948         mvn r5, r6, lsl r7
949         mvns r5, r6, lsr r7
950         mvngt r5, r6, asr r7
951         mvnslt r5, r6, ror r7
952
953 @ CHECK: mvn    r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
954 @ CHECK: mvns   r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
955 @ CHECK: mvngt  r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
956 @ CHECK: mvnslt r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
957
958 @------------------------------------------------------------------------------
959 @ NOP
960 @------------------------------------------------------------------------------
961         nop
962         nopgt
963
964 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
965 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
966
967
968 @------------------------------------------------------------------------------
969 @ ORR
970 @------------------------------------------------------------------------------
971         orr r4, r5, #0xf000
972         orr r4, r5, r6
973         orr r4, r5, r6, lsl #5
974         orr r4, r5, r6, lsr #5
975         orr r4, r5, r6, lsr #5
976         orr r4, r5, r6, asr #5
977         orr r4, r5, r6, ror #5
978         orr r6, r7, r8, lsl r9
979         orr r6, r7, r8, lsr r9
980         orr r6, r7, r8, asr r9
981         orr r6, r7, r8, ror r9
982         orr r4, r5, r6, rrx
983
984         @ destination register is optional
985         orr r5, #0xf000
986         orr r4, r5
987         orr r4, r5, lsl #5
988         orr r4, r5, lsr #5
989         orr r4, r5, lsr #5
990         orr r4, r5, asr #5
991         orr r4, r5, ror #5
992         orr r6, r7, lsl r9
993         orr r6, r7, lsr r9
994         orr r6, r7, asr r9
995         orr r6, r7, ror r9
996         orr r4, r5, rrx
997
998 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
999 @ CHECK: orr    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
1000 @ CHECK: orr    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
1001 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1002 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
1003 @ CHECK: orr    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
1004 @ CHECK: orr    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
1005 @ CHECK: orr    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
1006 @ CHECK: orr    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
1007 @ CHECK: orr    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
1008 @ CHECK: orr    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
1009 @ CHECK: orr    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
1010
1011 @ CHECK: orr    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
1012 @ CHECK: orr    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
1013 @ CHECK: orr    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
1014 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1015 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
1016 @ CHECK: orr    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
1017 @ CHECK: orr    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
1018 @ CHECK: orr    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
1019 @ CHECK: orr    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
1020 @ CHECK: orr    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
1021 @ CHECK: orr    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
1022 @ CHECK: orr    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
1023
1024         orrseq r4, r5, #0xf000
1025         orrne r4, r5, r6
1026         orrseq r4, r5, r6, lsl #5
1027         orrlo r6, r7, r8, ror r9
1028         orrshi r4, r5, r6, rrx
1029         orrcs r5, #0xf000
1030         orrseq r4, r5
1031         orrne r6, r7, asr r9
1032         orrslt r6, r7, ror r9
1033         orrsgt r4, r5, rrx
1034
1035 @ CHECK: orrseq r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
1036 @ CHECK: orrne  r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
1037 @ CHECK: orrseq r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
1038 @ CHECK: orrlo  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
1039 @ CHECK: orrshi r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
1040 @ CHECK: orrhs  r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
1041 @ CHECK: orrseq r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
1042 @ CHECK: orrne  r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
1043 @ CHECK: orrslt r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
1044 @ CHECK: orrsgt r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
1045
1046 @------------------------------------------------------------------------------
1047 @ PKH
1048 @------------------------------------------------------------------------------
1049         pkhbt r2, r2, r3
1050         pkhbt r2, r2, r3, lsl #31
1051         pkhbt r2, r2, r3, lsl #0
1052         pkhbt r2, r2, r3, lsl #15
1053
1054         pkhtb r2, r2, r3
1055         pkhtb r2, r2, r3, asr #31
1056         pkhtb r2, r2, r3, asr #15
1057
1058 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1059 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1060 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1061 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1062
1063 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1064 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1065 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1066
1067 @------------------------------------------------------------------------------
1068 @ FIXME: PLD
1069 @------------------------------------------------------------------------------
1070 @------------------------------------------------------------------------------
1071 @ FIXME: PLI
1072 @------------------------------------------------------------------------------
1073
1074
1075 @------------------------------------------------------------------------------
1076 @ POP
1077 @------------------------------------------------------------------------------
1078         pop {r7}
1079         pop {r7, r8, r9, r10}
1080
1081 @ CHECK: pop    {r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1082 @ CHECK: pop    {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1083
1084
1085 @------------------------------------------------------------------------------
1086 @ PUSH
1087 @------------------------------------------------------------------------------
1088         push {r7}
1089         push {r7, r8, r9, r10}
1090
1091 @ CHECK: push   {r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1092 @ CHECK: push   {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1093
1094
1095 @------------------------------------------------------------------------------
1096 @ QADD/QADD16/QADD8
1097 @------------------------------------------------------------------------------
1098         qadd r1, r2, r3
1099         qaddne r1, r2, r3
1100         qadd16 r1, r2, r3
1101         qadd16gt r1, r2, r3
1102         qadd8 r1, r2, r3
1103         qadd8le r1, r2, r3
1104
1105 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1106 @ CHECK: qaddne r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1107 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1108 @ CHECK: qadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1109 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1110 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1111
1112
1113 @------------------------------------------------------------------------------
1114 @ QDADD/QDSUB
1115 @------------------------------------------------------------------------------
1116         qdadd r6, r7, r8
1117         qdaddhi r6, r7, r8
1118         qdsub r6, r7, r8
1119         qdsubhi r6, r7, r8
1120
1121 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1122 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1123 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1124 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1125
1126
1127 @------------------------------------------------------------------------------
1128 @ QSAX
1129 @------------------------------------------------------------------------------
1130         qsax r9, r12, r0
1131         qsaxeq r9, r12, r0
1132
1133 @ CHECK: qsax   r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1134 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1135
1136
1137 @------------------------------------------------------------------------------
1138 @ QSUB/QSUB16/QSUB8
1139 @------------------------------------------------------------------------------
1140         qsub r1, r2, r3
1141         qsubne r1, r2, r3
1142         qsub16 r1, r2, r3
1143         qsub16gt r1, r2, r3
1144         qsub8 r1, r2, r3
1145         qsub8le r1, r2, r3
1146
1147 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1148 @ CHECK: qsubne r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1149 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1150 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1151 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1152 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1153
1154
1155 @------------------------------------------------------------------------------
1156 @ RBIT
1157 @------------------------------------------------------------------------------
1158         rbit r1, r2
1159         rbitne r1, r2
1160
1161 @ CHECK: rbit   r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1162 @ CHECK: rbitne r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1163
1164
1165 @------------------------------------------------------------------------------
1166 @ REV/REV16/REVSH
1167 @------------------------------------------------------------------------------
1168         rev r1, r9
1169         revne r1, r5
1170         rev16 r8, r3
1171         rev16ne r12, r4
1172         revsh r4, r9
1173         revshne r9, r1
1174
1175 @ CHECK: rev    r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1176 @ CHECK: revne  r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1177 @ CHECK: rev16  r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1178 @ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1179 @ CHECK: revsh  r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1180 @ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1181
1182
1183 @------------------------------------------------------------------------------
1184 @ RFE
1185 @------------------------------------------------------------------------------
1186         rfeda r2
1187         rfedb r3
1188         rfeia r5
1189         rfeib r6
1190
1191         rfeda r4!
1192         rfedb r7!
1193         rfeia r9!
1194         rfeib r8!
1195
1196         rfefa r2
1197         rfeea r3
1198         rfefd r5
1199         rfeed r6
1200
1201         rfefa r4!
1202         rfeea r7!
1203         rfefd r9!
1204         rfeed r8!
1205
1206         rfe r1
1207         rfe r1!
1208
1209 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1210 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1211 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1212 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1213
1214 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1215 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1216 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1217 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1218
1219 @ CHECK: rfeda  r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
1220 @ CHECK: rfedb  r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
1221 @ CHECK: rfeia  r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
1222 @ CHECK: rfeib  r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
1223
1224 @ CHECK: rfeda  r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
1225 @ CHECK: rfedb  r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
1226 @ CHECK: rfeia  r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
1227 @ CHECK: rfeib  r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
1228
1229 @ CHECK: rfeia  r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
1230 @ CHECK: rfeia  r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
1231
1232
1233 @------------------------------------------------------------------------------
1234 @ RSB
1235 @------------------------------------------------------------------------------
1236         rsb r4, r5, #0xf000
1237         rsb r4, r5, r6
1238         rsb r4, r5, r6, lsl #5
1239         rsblo r4, r5, r6, lsr #5
1240         rsb r4, r5, r6, lsr #5
1241         rsb r4, r5, r6, asr #5
1242         rsb r4, r5, r6, ror #5
1243         rsb r6, r7, r8, lsl r9
1244         rsb r6, r7, r8, lsr r9
1245         rsb r6, r7, r8, asr r9
1246         rsble r6, r7, r8, ror r9
1247         rsb r4, r5, r6, rrx
1248
1249         @ destination register is optional
1250         rsb r5, #0xf000
1251         rsb r4, r5
1252         rsb r4, r5, lsl #5
1253         rsb r4, r5, lsr #5
1254         rsbne r4, r5, lsr #5
1255         rsb r4, r5, asr #5
1256         rsb r4, r5, ror #5
1257         rsbgt r6, r7, lsl r9
1258         rsb r6, r7, lsr r9
1259         rsb r6, r7, asr r9
1260         rsb r6, r7, ror r9
1261         rsb r4, r5, rrx
1262
1263 @ CHECK: rsb    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
1264 @ CHECK: rsb    r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
1265 @ CHECK: rsb    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
1266 @ CHECK: rsblo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
1267 @ CHECK: rsb    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
1268 @ CHECK: rsb    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
1269 @ CHECK: rsb    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
1270 @ CHECK: rsb    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
1271 @ CHECK: rsb    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
1272 @ CHECK: rsb    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
1273 @ CHECK: rsble  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
1274 @ CHECK: rsb    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
1275
1276 @ CHECK: rsb    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
1277 @ CHECK: rsb    r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
1278 @ CHECK: rsb    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
1279 @ CHECK: rsb    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
1280 @ CHECK: rsbne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
1281 @ CHECK: rsb    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
1282 @ CHECK: rsb    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
1283 @ CHECK: rsbgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
1284 @ CHECK: rsb    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
1285 @ CHECK: rsb    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
1286 @ CHECK: rsb    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
1287 @ CHECK: rsb    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
1288
1289 @------------------------------------------------------------------------------
1290 @ RSC
1291 @------------------------------------------------------------------------------
1292         rsc r4, r5, #0xf000
1293         rsc r4, r5, r6
1294         rsc r4, r5, r6, lsl #5
1295         rsclo r4, r5, r6, lsr #5
1296         rsc r4, r5, r6, lsr #5
1297         rsc r4, r5, r6, asr #5
1298         rsc r4, r5, r6, ror #5
1299         rsc r6, r7, r8, lsl r9
1300         rsc r6, r7, r8, lsr r9
1301         rsc r6, r7, r8, asr r9
1302         rscle r6, r7, r8, ror r9
1303
1304         @ destination register is optional
1305         rsc r5, #0xf000
1306         rsc r4, r5
1307         rsc r4, r5, lsl #5
1308         rsc r4, r5, lsr #5
1309         rscne r4, r5, lsr #5
1310         rsc r4, r5, asr #5
1311         rsc r4, r5, ror #5
1312         rscgt r6, r7, lsl r9
1313         rsc r6, r7, lsr r9
1314         rsc r6, r7, asr r9
1315         rsc r6, r7, ror r9
1316
1317 @ CHECK: rsc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
1318 @ CHECK: rsc    r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
1319 @ CHECK: rsc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
1320 @ CHECK: rsclo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
1321 @ CHECK: rsc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
1322 @ CHECK: rsc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
1323 @ CHECK: rsc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
1324 @ CHECK: rsc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
1325 @ CHECK: rsc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
1326 @ CHECK: rsc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
1327 @ CHECK: rscle  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
1328
1329 @ CHECK: rsc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
1330 @ CHECK: rsc    r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
1331 @ CHECK: rsc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
1332 @ CHECK: rsc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
1333 @ CHECK: rscne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
1334 @ CHECK: rsc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
1335 @ CHECK: rsc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
1336 @ CHECK: rscgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
1337 @ CHECK: rsc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
1338 @ CHECK: rsc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
1339 @ CHECK: rsc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
1340
1341 @------------------------------------------------------------------------------
1342 @ SADD16/SADD8
1343 @------------------------------------------------------------------------------
1344         sadd16 r1, r2, r3
1345         sadd16gt r1, r2, r3
1346         sadd8 r1, r2, r3
1347         sadd8le r1, r2, r3
1348
1349 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
1350 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
1351 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
1352 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
1353
1354
1355 @------------------------------------------------------------------------------
1356 @ SASX
1357 @------------------------------------------------------------------------------
1358         sasx r9, r12, r0
1359         sasxeq r9, r12, r0
1360
1361 @ CHECK: sasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
1362 @ CHECK: sasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
1363
1364
1365 @------------------------------------------------------------------------------
1366 @ SBC
1367 @------------------------------------------------------------------------------
1368         sbc r4, r5, #0xf000
1369         sbc r4, r5, r6
1370         sbc r4, r5, r6, lsl #5
1371         sbc r4, r5, r6, lsr #5
1372         sbc r4, r5, r6, lsr #5
1373         sbc r4, r5, r6, asr #5
1374         sbc r4, r5, r6, ror #5
1375         sbc r6, r7, r8, lsl r9
1376         sbc r6, r7, r8, lsr r9
1377         sbc r6, r7, r8, asr r9
1378         sbc r6, r7, r8, ror r9
1379
1380         @ destination register is optional
1381         sbc r5, #0xf000
1382         sbc r4, r5
1383         sbc r4, r5, lsl #5
1384         sbc r4, r5, lsr #5
1385         sbc r4, r5, lsr #5
1386         sbc r4, r5, asr #5
1387         sbc r4, r5, ror #5
1388         sbc r6, r7, lsl r9
1389         sbc r6, r7, lsr r9
1390         sbc r6, r7, asr r9
1391         sbc r6, r7, ror r9
1392
1393 @ CHECK: sbc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
1394 @ CHECK: sbc    r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
1395 @ CHECK: sbc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
1396 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1397 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1398 @ CHECK: sbc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
1399 @ CHECK: sbc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
1400 @ CHECK: sbc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
1401 @ CHECK: sbc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
1402 @ CHECK: sbc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
1403 @ CHECK: sbc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
1404
1405 @ CHECK: sbc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
1406 @ CHECK: sbc    r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
1407 @ CHECK: sbc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
1408 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1409 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1410 @ CHECK: sbc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
1411 @ CHECK: sbc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
1412 @ CHECK: sbc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
1413 @ CHECK: sbc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
1414 @ CHECK: sbc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
1415 @ CHECK: sbc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
1416
1417
1418 @------------------------------------------------------------------------------
1419 @ SBFX
1420 @------------------------------------------------------------------------------
1421         sbfx r4, r5, #16, #1
1422         sbfxgt r4, r5, #16, #16
1423
1424 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
1425 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
1426
1427
1428 @------------------------------------------------------------------------------
1429 @ SEL
1430 @------------------------------------------------------------------------------
1431         sel r9, r2, r1
1432         selne r9, r2, r1
1433
1434 @ CHECK: sel    r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1435 @ CHECK: selne  r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1436
1437
1438 @------------------------------------------------------------------------------
1439 @ SETEND
1440 @------------------------------------------------------------------------------
1441         setend be
1442         setend le
1443
1444         sel     r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1445         selne   r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1446
1447
1448 @------------------------------------------------------------------------------
1449 @ SEV
1450 @------------------------------------------------------------------------------
1451         sev
1452         seveq
1453
1454 @ CHECK: sev                             @ encoding: [0x04,0xf0,0x20,0xe3]
1455 @ CHECK: seveq                           @ encoding: [0x04,0xf0,0x20,0x03]
1456
1457 @------------------------------------------------------------------------------
1458 @ SHADD16/SHADD8
1459 @------------------------------------------------------------------------------
1460         shadd16 r4, r8, r2
1461         shadd16gt r4, r8, r2
1462         shadd8 r4, r8, r2
1463         shadd8gt r4, r8, r2
1464
1465 @ CHECK: shadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1466 @ CHECK: shadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1467 @ CHECK: shadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1468 @ CHECK: shadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1469
1470
1471 @------------------------------------------------------------------------------
1472 @ SHASX
1473 @------------------------------------------------------------------------------
1474         shasx r4, r8, r2
1475         shasxgt r4, r8, r2
1476
1477 @ CHECK: shasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1478 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1479
1480
1481 @------------------------------------------------------------------------------
1482 @ SHSUB16/SHSUB8
1483 @------------------------------------------------------------------------------
1484         shsub16 r4, r8, r2
1485         shsub16gt r4, r8, r2
1486         shsub8 r4, r8, r2
1487         shsub8gt r4, r8, r2
1488
1489 @ CHECK: shsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1490 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1491 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1492 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1493
1494 @------------------------------------------------------------------------------
1495 @ SMC
1496 @------------------------------------------------------------------------------
1497         smc #0xf
1498         smceq #0
1499
1500 @ CHECK: smc    #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1501 @ CHECK: smceq  #0                      @ encoding: [0x70,0x00,0x60,0x01]
1502
1503 @------------------------------------------------------------------------------
1504 @ SMLABB/SMLABT/SMLATB/SMLATT
1505 @------------------------------------------------------------------------------
1506         smlabb r3, r1, r9, r0
1507         smlabt r5, r6, r4, r1
1508         smlatb r4, r2, r3, r2
1509         smlatt r8, r3, r8, r4
1510         smlabbge r3, r1, r9, r0
1511         smlabtle r5, r6, r4, r1
1512         smlatbne r4, r2, r3, r2
1513         smlatteq r8, r3, r8, r4
1514
1515 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1516 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1517 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1518 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1519 @ CHECK: smlabbge       r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1520 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1521 @ CHECK: smlatbne       r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1522 @ CHECK: smlatteq       r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1523
1524 @------------------------------------------------------------------------------
1525 @ SMLAD/SMLADX
1526 @------------------------------------------------------------------------------
1527         smlad r2, r3, r5, r8
1528         smladx r2, r3, r5, r8
1529         smladeq r2, r3, r5, r8
1530         smladxhi r2, r3, r5, r8
1531
1532 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1533 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1534 @ CHECK: smladeq        r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1535 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1536
1537
1538 @------------------------------------------------------------------------------
1539 @ SMLAL
1540 @------------------------------------------------------------------------------
1541         smlal r2, r3, r5, r8
1542         smlals r2, r3, r5, r8
1543         smlaleq r2, r3, r5, r8
1544         smlalshi r2, r3, r5, r8
1545
1546 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1547 @ CHECK: smlals r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1548 @ CHECK: smlaleq        r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1549 @ CHECK: smlalshi       r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1550
1551
1552 @------------------------------------------------------------------------------
1553 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1554 @------------------------------------------------------------------------------
1555         smlalbb r3, r1, r9, r0
1556         smlalbt r5, r6, r4, r1
1557         smlaltb r4, r2, r3, r2
1558         smlaltt r8, r3, r8, r4
1559         smlalbbge r3, r1, r9, r0
1560         smlalbtle r5, r6, r4, r1
1561         smlaltbne r4, r2, r3, r2
1562         smlaltteq r8, r3, r8, r4
1563
1564 @ CHECK: smlalbb        r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1565 @ CHECK: smlalbt        r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1566 @ CHECK: smlaltb        r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1567 @ CHECK: smlaltt        r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1568 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1569 @ CHECK: smlalbtle      r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1570 @ CHECK: smlaltbne      r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1571 @ CHECK: smlaltteq      r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1572
1573
1574 @------------------------------------------------------------------------------
1575 @ SMLALD/SMLALDX
1576 @------------------------------------------------------------------------------
1577         smlald r2, r3, r5, r8
1578         smlaldx r2, r3, r5, r8
1579         smlaldeq r2, r3, r5, r8
1580         smlaldxhi r2, r3, r5, r8
1581
1582 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1583 @ CHECK: smlaldx        r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1584 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1585 @ CHECK: smlaldxhi      r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1586
1587
1588 @------------------------------------------------------------------------------
1589 @ SMLAWB/SMLAWT
1590 @------------------------------------------------------------------------------
1591         smlawb r2, r3, r10, r8
1592         smlawt r8, r3, r5, r9
1593         smlawbeq r2, r7, r5, r8
1594         smlawthi r1, r3, r0, r8
1595
1596 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1597 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1598 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1599 @ CHECK: smlawthi       r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1600
1601
1602 @------------------------------------------------------------------------------
1603 @ SMLSD/SMLSDX
1604 @------------------------------------------------------------------------------
1605         smlsd r2, r3, r5, r8
1606         smlsdx r2, r3, r5, r8
1607         smlsdeq r2, r3, r5, r8
1608         smlsdxhi r2, r3, r5, r8
1609
1610 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1611 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1612 @ CHECK: smlsdeq        r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1613 @ CHECK: smlsdxhi       r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1614
1615
1616 @------------------------------------------------------------------------------
1617 @ SMLSLD/SMLSLDX
1618 @------------------------------------------------------------------------------
1619         smlsld r2, r9, r5, r1
1620         smlsldx r4, r11, r2, r8
1621         smlsldeq r8, r2, r5, r6
1622         smlsldxhi r1, r0, r3, r8
1623
1624 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1625 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1626 @ CHECK: smlsldeq       r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1627 @ CHECK: smlsldxhi      r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1628
1629
1630 @------------------------------------------------------------------------------
1631 @ SMMLA/SMMLAR
1632 @------------------------------------------------------------------------------
1633         smmla r1, r2, r3, r4
1634         smmlar r4, r3, r2, r1
1635         smmlalo r1, r2, r3, r4
1636         smmlarcs r4, r3, r2, r1
1637
1638 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1639 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1640 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1641 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1642
1643
1644 @------------------------------------------------------------------------------
1645 @ SMMLS/SMMLSR
1646 @------------------------------------------------------------------------------
1647         smmls r1, r2, r3, r4
1648         smmlsr r4, r3, r2, r1
1649         smmlslo r1, r2, r3, r4
1650         smmlsrcs r4, r3, r2, r1
1651
1652 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1653 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1654 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1655 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1656
1657
1658 @------------------------------------------------------------------------------
1659 @ SMMUL/SMMULR
1660 @------------------------------------------------------------------------------
1661         smmul r2, r3, r4
1662         smmulr r3, r2, r1
1663         smmulcc r2, r3, r4
1664         smmulrhs r3, r2, r1
1665
1666 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1667 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1668 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1669 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1670
1671
1672 @------------------------------------------------------------------------------
1673 @ SMUAD/SMUADX
1674 @------------------------------------------------------------------------------
1675         smuad r2, r3, r4
1676         smuadx r3, r2, r1
1677         smuadlt r2, r3, r4
1678         smuadxge r3, r2, r1
1679
1680 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1681 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1682 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1683 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1684
1685
1686 @------------------------------------------------------------------------------
1687 @ SMULBB/SMLALBT/SMLALTB/SMLALTT
1688 @------------------------------------------------------------------------------
1689         smulbb r3, r9, r0
1690         smulbt r5, r4, r1
1691         smultb r4, r2, r2
1692         smultt r8, r3, r4
1693         smulbbge r1, r9, r0
1694         smulbtle r5, r6, r4
1695         smultbne r2, r3, r2
1696         smultteq r8, r3, r4
1697
1698 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1699 @ CHECK: smulbt r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1700 @ CHECK: smultb r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
1701 @ CHECK: smultt r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
1702 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
1703 @ CHECK: smulbtle       r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
1704 @ CHECK: smultbne       r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
1705 @ CHECK: smultteq       r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
1706
1707
1708 @------------------------------------------------------------------------------
1709 @ SMULL
1710 @------------------------------------------------------------------------------
1711         smull r3, r9, r0, r1
1712         smulls r3, r9, r0, r2
1713         smulleq r8, r3, r4, r5
1714         smullseq r8, r3, r4, r3
1715
1716 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
1717 @ CHECK: smulls r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
1718 @ CHECK: smulleq        r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
1719 @ CHECK: smullseq       r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
1720
1721
1722 @------------------------------------------------------------------------------
1723 @ SMULWB/SMULWT
1724 @------------------------------------------------------------------------------
1725         smulwb r3, r9, r0
1726         smulwt r3, r9, r2
1727
1728 @ CHECK: smulwb r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
1729 @ CHECK: smulwt r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
1730
1731
1732 @------------------------------------------------------------------------------
1733 @ SMUSD/SMUSDX
1734 @------------------------------------------------------------------------------
1735         smusd r3, r0, r1
1736         smusdx r3, r9, r2
1737         smusdeq r8, r3, r2
1738         smusdxne r7, r4, r3
1739
1740 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
1741 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
1742 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
1743 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
1744
1745
1746 @------------------------------------------------------------------------------
1747 @ SRS
1748 @------------------------------------------------------------------------------
1749         srsda sp, #5
1750         srsdb sp, #1
1751         srsia sp, #0
1752         srsib sp, #15
1753
1754         srsda sp!, #31
1755         srsdb sp!, #19
1756         srsia sp!, #2
1757         srsib sp!, #14
1758
1759         srsfa sp, #11
1760         srsea sp, #10
1761         srsfd sp, #9
1762         srsed sp, #5
1763
1764         srsfa sp!, #5
1765         srsea sp!, #5
1766         srsfd sp!, #5
1767         srsed sp!, #5
1768
1769         srs sp, #5
1770         srs sp!, #5
1771
1772 @ CHECK: srsda  sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
1773 @ CHECK: srsdb  sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
1774 @ CHECK: srsia  sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
1775 @ CHECK: srsib  sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
1776
1777 @ CHECK: srsda  sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
1778 @ CHECK: srsdb  sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
1779 @ CHECK: srsia  sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
1780 @ CHECK: srsib  sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
1781
1782 @ CHECK: srsda  sp, #11                 @ encoding: [0x0b,0x05,0x4d,0xf8]
1783 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0a,0x05,0x4d,0xf9]
1784 @ CHECK: srsia  sp, #9                  @ encoding: [0x09,0x05,0xcd,0xf8]
1785 @ CHECK: srsib  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf9]
1786
1787 @ CHECK: srsda  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
1788 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
1789 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1790 @ CHECK: srsib  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
1791
1792 @ CHECK: srsia  sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
1793 @ CHECK: srsia  sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
1794
1795
1796 @------------------------------------------------------------------------------
1797 @ SSAT
1798 @------------------------------------------------------------------------------
1799         ssat    r8, #1, r10
1800         ssat    r8, #1, r10, lsl #0
1801         ssat    r8, #1, r10, lsl #31
1802         ssat    r8, #1, r10, asr #32
1803         ssat    r8, #1, r10, asr #1
1804
1805 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1806 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1807 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
1808 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
1809 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
1810
1811
1812 @------------------------------------------------------------------------------
1813 @ SSAT16
1814 @------------------------------------------------------------------------------
1815         ssat16  r2, #1, r7
1816         ssat16  r3, #16, r5
1817
1818 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
1819 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
1820
1821
1822 @------------------------------------------------------------------------------
1823 @ SSAX
1824 @------------------------------------------------------------------------------
1825         ssax r2, r3, r4
1826         ssaxlt r2, r3, r4
1827
1828 @ CHECK: ssax   r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
1829 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
1830
1831 @------------------------------------------------------------------------------
1832 @ SSUB16/SSUB8
1833 @------------------------------------------------------------------------------
1834         ssub16 r1, r0, r6
1835         ssub16ne r5, r3, r2
1836         ssub8 r9, r2, r4
1837         ssub8eq r5, r1, r2
1838
1839 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
1840 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
1841 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
1842 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
1843
1844
1845 @------------------------------------------------------------------------------
1846 @ STM*
1847 @------------------------------------------------------------------------------
1848         stm       r2, {r1,r3-r6,sp}
1849         stmia     r3, {r1,r3-r6,lr}
1850         stmib     r4, {r1,r3-r6,sp}
1851         stmda     r5, {r1,r3-r6,sp}
1852         stmdb     r6, {r1,r3-r6,r8}
1853         stmfd     sp, {r1,r3-r6,sp}
1854
1855         @ with update
1856         stm       r8!, {r1,r3-r6,sp}
1857         stmib     r9!, {r1,r3-r6,sp}
1858         stmda     sp!, {r1,r3-r6}
1859         stmdb     r0!, {r1,r5,r7,sp}
1860
1861 @ CHECK: stm    r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
1862 @ CHECK: stm    r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
1863 @ CHECK: stmib  r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
1864 @ CHECK: stmda  r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
1865 @ CHECK: stmdb  r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
1866 @ CHECK: stmdb  sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
1867
1868 @ CHECK: stm    r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
1869 @ CHECK: stmib  r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
1870 @ CHECK: stmda  sp!, {r1, r3, r4, r5, r6} @ encoding: [0x7a,0x00,0x2d,0xe8]
1871 @ CHECK: stmdb  r0!, {r1, r5, r7, sp}   @ encoding: [0xa2,0x20,0x20,0xe9]
1872
1873
1874 @------------------------------------------------------------------------------
1875 @ STREX/STREXB/STREXH/STREXD
1876 @------------------------------------------------------------------------------
1877         strexb  r1, r3, [r4]
1878         strexh  r4, r2, [r5]
1879         strex  r2, r1, [r7]
1880         strexd  r6, r2, r3, [r8]
1881
1882 @ CHECK: strexb r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
1883 @ CHECK: strexh r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
1884 @ CHECK: strex  r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
1885 @ CHECK: strexd r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
1886
1887
1888 @------------------------------------------------------------------------------
1889 @ SUB
1890 @------------------------------------------------------------------------------
1891         sub r4, r5, #0xf000
1892         sub r4, r5, r6
1893         sub r4, r5, r6, lsl #5
1894         sub r4, r5, r6, lsr #5
1895         sub r4, r5, r6, lsr #5
1896         sub r4, r5, r6, asr #5
1897         sub r4, r5, r6, ror #5
1898         sub r6, r7, r8, lsl r9
1899         sub r6, r7, r8, lsr r9
1900         sub r6, r7, r8, asr r9
1901         sub r6, r7, r8, ror r9
1902
1903         @ destination register is optional
1904         sub r5, #0xf000
1905         sub r4, r5
1906         sub r4, r5, lsl #5
1907         sub r4, r5, lsr #5
1908         sub r4, r5, lsr #5
1909         sub r4, r5, asr #5
1910         sub r4, r5, ror #5
1911         sub r6, r7, lsl r9
1912         sub r6, r7, lsr r9
1913         sub r6, r7, asr r9
1914         sub r6, r7, ror r9
1915
1916 @ CHECK: sub    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
1917 @ CHECK: sub    r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
1918 @ CHECK: sub    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
1919 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1920 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1921 @ CHECK: sub    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
1922 @ CHECK: sub    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
1923 @ CHECK: sub    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
1924 @ CHECK: sub    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
1925 @ CHECK: sub    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
1926 @ CHECK: sub    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
1927
1928
1929 @ CHECK: sub    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
1930 @ CHECK: sub    r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
1931 @ CHECK: sub    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
1932 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1933 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1934 @ CHECK: sub    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
1935 @ CHECK: sub    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
1936 @ CHECK: sub    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
1937 @ CHECK: sub    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
1938 @ CHECK: sub    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
1939 @ CHECK: sub    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
1940
1941
1942 @------------------------------------------------------------------------------
1943 @ SVC
1944 @------------------------------------------------------------------------------
1945         svc #16
1946         svc #0
1947         svc #0xffffff
1948
1949 @ CHECK: svc    #16                     @ encoding: [0x10,0x00,0x00,0xef]
1950 @ CHECK: svc    #0                      @ encoding: [0x00,0x00,0x00,0xef]
1951 @ CHECK: svc    #16777215               @ encoding: [0xff,0xff,0xff,0xef]
1952
1953
1954 @------------------------------------------------------------------------------
1955 @ SWP/SWPB
1956 @------------------------------------------------------------------------------
1957         swp r1, r2, [r3]
1958         swp r4, r4, [r6]
1959         swpb r5, r1, [r9]
1960
1961 @ CHECK: swp    r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
1962 @ CHECK: swp    r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
1963 @ CHECK: swpb   r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
1964
1965
1966 @------------------------------------------------------------------------------
1967 @ SXTAB
1968 @------------------------------------------------------------------------------
1969         sxtab r2, r3, r4
1970         sxtab r4, r5, r6, ror #0
1971         sxtablt r6, r2, r9, ror #8
1972         sxtab r5, r1, r4, ror #16
1973         sxtab r7, r8, r3, ror #24
1974
1975 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
1976 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
1977 @ CHECK: sxtablt        r6, r2, r9, ror #8
1978                                         @ encoding: [0x79,0x64,0xa2,0xb6]
1979 @ CHECK: sxtab  r5, r1, r4, ror #16
1980                                         @ encoding: [0x74,0x58,0xa1,0xe6]
1981 @ CHECK: sxtab  r7, r8, r3, ror #24
1982                                         @ encoding: [0x73,0x7c,0xa8,0xe6]
1983
1984
1985 @------------------------------------------------------------------------------
1986 @ SXTAB16
1987 @------------------------------------------------------------------------------
1988         sxtab16ge r0, r1, r4
1989         sxtab16 r6, r2, r7, ror #0
1990         sxtab16 r3, r5, r8, ror #8
1991         sxtab16 r3, r2, r1, ror #16
1992         sxtab16eq r1, r2, r3, ror #24
1993
1994 @ CHECK: sxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
1995 @ CHECK: sxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
1996 @ CHECK: sxtab16        r3, r5, r8, ror #8
1997                                         @ encoding: [0x78,0x34,0x85,0xe6]
1998 @ CHECK: sxtab16        r3, r2, r1, ror #16
1999                                         @ encoding: [0x71,0x38,0x82,0xe6]
2000 @ CHECK: sxtab16eq      r1, r2, r3, ror #24
2001                                         @ encoding: [0x73,0x1c,0x82,0x06]
2002
2003 @------------------------------------------------------------------------------
2004 @ SXTAH
2005 @------------------------------------------------------------------------------
2006         sxtah r1, r3, r9
2007         sxtahhi r6, r1, r6, ror #0
2008         sxtah r3, r8, r3, ror #8
2009         sxtahlo r2, r2, r4, ror #16
2010         sxtah r9, r3, r3, ror #24
2011
2012 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
2013 @ CHECK: sxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
2014 @ CHECK: sxtah  r3, r8, r3, ror #8
2015                                         @ encoding: [0x73,0x34,0xb8,0xe6]
2016 @ CHECK: sxtahlo        r2, r2, r4, ror #16
2017                                         @ encoding: [0x74,0x28,0xb2,0x36]
2018 @ CHECK: sxtah  r9, r3, r3, ror #24
2019                                         @ encoding: [0x73,0x9c,0xb3,0xe6]
2020
2021 @------------------------------------------------------------------------------
2022 @ SXTB
2023 @------------------------------------------------------------------------------
2024         sxtbge r2, r4
2025         sxtb r5, r6, ror #0
2026         sxtb r6, r9, ror #8
2027         sxtbcc r5, r1, ror #16
2028         sxtb r8, r3, ror #24
2029
2030 @ CHECK: sxtbge r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
2031 @ CHECK: sxtb   r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
2032 @ CHECK: sxtb   r6, r9, ror #8
2033                                         @ encoding: [0x79,0x64,0xaf,0xe6]
2034 @ CHECK: sxtblo r5, r1, ror #16
2035                                         @ encoding: [0x71,0x58,0xaf,0x36]
2036 @ CHECK: sxtb   r8, r3, ror #24
2037                                         @ encoding: [0x73,0x8c,0xaf,0xe6]
2038
2039
2040 @------------------------------------------------------------------------------
2041 @ SXTB16
2042 @------------------------------------------------------------------------------
2043         sxtb16 r1, r4
2044         sxtb16 r6, r7, ror #0
2045         sxtb16cs r3, r5, ror #8
2046         sxtb16 r3, r1, ror #16
2047         sxtb16ge r2, r3, ror #24
2048
2049 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
2050 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
2051 @ CHECK: sxtb16hs       r3, r5, ror #8
2052                                         @ encoding: [0x75,0x34,0x8f,0x26]
2053 @ CHECK: sxtb16 r3, r1, ror #16
2054                                         @ encoding: [0x71,0x38,0x8f,0xe6]
2055 @ CHECK: sxtb16ge       r2, r3, ror #24
2056                                         @ encoding: [0x73,0x2c,0x8f,0xa6]
2057
2058
2059 @------------------------------------------------------------------------------
2060 @ SXTH
2061 @------------------------------------------------------------------------------
2062         sxthne r3, r9
2063         sxth r1, r6, ror #0
2064         sxth r3, r8, ror #8
2065         sxthle r2, r2, ror #16
2066         sxth r9, r3, ror #24
2067
2068 @ CHECK: sxthne r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
2069 @ CHECK: sxth   r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
2070 @ CHECK: sxth   r3, r8, ror #8
2071                                         @ encoding: [0x78,0x34,0xbf,0xe6]
2072 @ CHECK: sxthle r2, r2, ror #16
2073                                         @ encoding: [0x72,0x28,0xbf,0xd6]
2074 @ CHECK: sxth   r9, r3, ror #24
2075                                         @ encoding: [0x73,0x9c,0xbf,0xe6]
2076
2077
2078 @------------------------------------------------------------------------------
2079 @ FIXME: TBB/TBH
2080 @------------------------------------------------------------------------------
2081
2082
2083 @------------------------------------------------------------------------------
2084 @ TEQ
2085 @------------------------------------------------------------------------------
2086         teq r5, #0xf000
2087         teq r4, r5
2088         teq r4, r5, lsl #5
2089         teq r4, r5, lsr #5
2090         teq r4, r5, lsr #5
2091         teq r4, r5, asr #5
2092         teq r4, r5, ror #5
2093         teq r6, r7, lsl r9
2094         teq r6, r7, lsr r9
2095         teq r6, r7, asr r9
2096         teq r6, r7, ror r9
2097
2098 @ CHECK: teq    r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
2099 @ CHECK: teq    r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
2100 @ CHECK: teq    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
2101 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2102 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
2103 @ CHECK: teq    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
2104 @ CHECK: teq    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
2105 @ CHECK: teq    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
2106 @ CHECK: teq    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
2107 @ CHECK: teq    r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
2108 @ CHECK: teq    r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
2109
2110
2111 @------------------------------------------------------------------------------
2112 @ TST
2113 @------------------------------------------------------------------------------
2114         tst r5, #0xf000
2115         tst r4, r5
2116         tst r4, r5, lsl #5
2117         tst r4, r5, lsr #5
2118         tst r4, r5, lsr #5
2119         tst r4, r5, asr #5
2120         tst r4, r5, ror #5
2121         tst r6, r7, lsl r9
2122         tst r6, r7, lsr r9
2123         tst r6, r7, asr r9
2124         tst r6, r7, ror r9
2125
2126 @ CHECK: tst    r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
2127 @ CHECK: tst    r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
2128 @ CHECK: tst    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
2129 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2130 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
2131 @ CHECK: tst    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
2132 @ CHECK: tst    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
2133 @ CHECK: tst    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
2134 @ CHECK: tst    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
2135 @ CHECK: tst    r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
2136 @ CHECK: tst    r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
2137
2138
2139 @------------------------------------------------------------------------------
2140 @ UADD16/UADD8
2141 @------------------------------------------------------------------------------
2142         uadd16 r1, r2, r3
2143         uadd16gt r1, r2, r3
2144         uadd8 r1, r2, r3
2145         uadd8le r1, r2, r3
2146
2147 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
2148 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2149 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2150 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2151
2152
2153 @------------------------------------------------------------------------------
2154 @ UASX
2155 @------------------------------------------------------------------------------
2156         uasx r9, r12, r0
2157         uasxeq r9, r12, r0
2158
2159 @ CHECK: uasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2160 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2161
2162
2163 @------------------------------------------------------------------------------
2164 @ UBFX
2165 @------------------------------------------------------------------------------
2166         ubfx r4, r5, #16, #1
2167         ubfxgt r4, r5, #16, #16
2168
2169 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2170 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2171
2172
2173 @------------------------------------------------------------------------------
2174 @ UHADD16/UHADD8
2175 @------------------------------------------------------------------------------
2176         uhadd16 r4, r8, r2
2177         uhadd16gt r4, r8, r2
2178         uhadd8 r4, r8, r2
2179         uhadd8gt r4, r8, r2
2180
2181 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2182 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2183 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2184 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2185
2186
2187 @------------------------------------------------------------------------------
2188 @ UHASX
2189 @------------------------------------------------------------------------------
2190         uhasx r4, r8, r2
2191         uhasxgt r4, r8, r2
2192
2193 @ CHECK: uhasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2194 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2195
2196
2197 @------------------------------------------------------------------------------
2198 @ UHSUB16/UHSUB8
2199 @------------------------------------------------------------------------------
2200         uhsub16 r4, r8, r2
2201         uhsub16gt r4, r8, r2
2202         uhsub8 r4, r8, r2
2203         uhsub8gt r4, r8, r2
2204
2205 @ CHECK: uhsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
2206 @ CHECK: uhsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
2207 @ CHECK: uhsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
2208 @ CHECK: uhsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
2209
2210
2211 @------------------------------------------------------------------------------
2212 @ UMAAL
2213 @------------------------------------------------------------------------------
2214         umaal r3, r4, r5, r6
2215         umaallt r3, r4, r5, r6
2216
2217 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
2218 @ CHECK: umaallt        r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xb0]
2219
2220
2221 @------------------------------------------------------------------------------
2222 @ UMLAL
2223 @------------------------------------------------------------------------------
2224         umlal r2, r4, r6, r8
2225         umlalgt r6, r1, r2, r6
2226         umlals r2, r9, r2, r3
2227         umlalseq r3, r5, r1, r2
2228
2229 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
2230 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
2231 @ CHECK: umlals r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
2232 @ CHECK: umlalseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
2233
2234
2235 @------------------------------------------------------------------------------
2236 @ UMULL
2237 @------------------------------------------------------------------------------
2238         umull r2, r4, r6, r8
2239         umullgt r6, r1, r2, r6
2240         umulls r2, r9, r2, r3
2241         umullseq r3, r5, r1, r2
2242
2243 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
2244 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
2245 @ CHECK: umulls r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
2246 @ CHECK: umullseq       r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
2247
2248
2249 @------------------------------------------------------------------------------
2250 @ UQADD16/UQADD8
2251 @------------------------------------------------------------------------------
2252         uqadd16 r1, r2, r3
2253         uqadd16gt r4, r7, r9
2254         uqadd8 r3, r4, r8
2255         uqadd8le r8, r1, r2
2256
2257
2258 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
2259 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
2260 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
2261 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
2262
2263
2264 @------------------------------------------------------------------------------
2265 @ UQASX
2266 @------------------------------------------------------------------------------
2267         uqasx r2, r4, r1
2268         uqasxhi r5, r2, r9
2269
2270 @ CHECK: uqasx  r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
2271 @ CHECK: uqasxhi        r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
2272
2273
2274 @------------------------------------------------------------------------------
2275 @ UQSAX
2276 @------------------------------------------------------------------------------
2277         uqsax r1, r3, r7
2278         uqsaxal r3, r6, r2
2279
2280 @ CHECK: uqsax  r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
2281 @ CHECK: uqsax  r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
2282
2283
2284 @------------------------------------------------------------------------------
2285 @ UQSUB16/UQSUB8
2286 @------------------------------------------------------------------------------
2287         uqsub16 r1, r5, r3
2288         uqsub16gt r3, r2, r5
2289         uqsub8 r2, r1, r4
2290         uqsub8le r4, r6, r9
2291
2292 @ CHECK: uqsub16        r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
2293 @ CHECK: uqsub16gt      r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
2294 @ CHECK: uqsub8 r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
2295 @ CHECK: uqsub8le       r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
2296
2297
2298 @------------------------------------------------------------------------------
2299 @ USADA8/USAD8
2300 @------------------------------------------------------------------------------
2301         usad8 r2, r1, r4
2302         usad8le r4, r6, r9
2303         usada8 r1, r5, r3, r7
2304         usada8gt r3, r2, r5, r1
2305
2306 @ CHECK: usad8  r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
2307 @ CHECK: usad8le        r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
2308 @ CHECK: usada8 r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
2309 @ CHECK: usada8gt       r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
2310
2311
2312 @------------------------------------------------------------------------------
2313 @ USAT
2314 @------------------------------------------------------------------------------
2315
2316         usat    r8, #1, r10
2317         usat    r8, #4, r10, lsl #0
2318         usat    r8, #5, r10, lsl #31
2319         usat    r8, #31, r10, asr #32
2320         usat    r8, #16, r10, asr #1
2321
2322 @ CHECK: usat   r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
2323 @ CHECK: usat   r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
2324 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
2325 @ CHECK: usat   r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
2326 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
2327
2328 @------------------------------------------------------------------------------
2329 @ USAT16
2330 @------------------------------------------------------------------------------
2331         usat16  r2, #2, r7
2332         usat16  r3, #15, r5
2333
2334 @ CHECK: usat16 r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
2335 @ CHECK: usat16 r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
2336
2337
2338 @------------------------------------------------------------------------------
2339 @ USAX
2340 @------------------------------------------------------------------------------
2341         usax r2, r3, r4
2342         usaxne r2, r3, r4
2343
2344 @ CHECK: usax   r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
2345 @ CHECK: usaxne r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
2346
2347 @------------------------------------------------------------------------------
2348 @ USUB16/USUB8
2349 @------------------------------------------------------------------------------
2350         usub16 r4, r2, r7
2351         usub16hi r1, r1, r3
2352         usub8 r1, r8, r5
2353         usub8le r9, r2, r3
2354
2355 @ CHECK: usub16 r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
2356 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
2357 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
2358 @ CHECK: usub8le        r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
2359
2360
2361 @------------------------------------------------------------------------------
2362 @ UXTAB
2363 @------------------------------------------------------------------------------
2364         uxtab r2, r3, r4
2365         uxtab r4, r5, r6, ror #0
2366         uxtablt r6, r2, r9, ror #8
2367         uxtab r5, r1, r4, ror #16
2368         uxtab r7, r8, r3, ror #24
2369
2370 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
2371 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
2372 @ CHECK: uxtablt        r6, r2, r9, ror #8
2373                                         @ encoding: [0x79,0x64,0xe2,0xb6]
2374 @ CHECK: uxtab  r5, r1, r4, ror #16
2375                                         @ encoding: [0x74,0x58,0xe1,0xe6]
2376 @ CHECK: uxtab  r7, r8, r3, ror #24
2377                                         @ encoding: [0x73,0x7c,0xe8,0xe6]
2378
2379
2380 @------------------------------------------------------------------------------
2381 @ UXTAB16
2382 @------------------------------------------------------------------------------
2383         uxtab16ge r0, r1, r4
2384         uxtab16 r6, r2, r7, ror #0
2385         uxtab16 r3, r5, r8, ror #8
2386         uxtab16 r3, r2, r1, ror #16
2387         uxtab16eq r1, r2, r3, ror #24
2388
2389 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
2390 @ CHECK: uxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
2391 @ CHECK: uxtab16        r3, r5, r8, ror #8
2392                                         @ encoding: [0x78,0x34,0xc5,0xe6]
2393 @ CHECK: uxtab16        r3, r2, r1, ror #16
2394                                         @ encoding: [0x71,0x38,0xc2,0xe6]
2395 @ CHECK: uxtab16eq      r1, r2, r3, ror #24
2396                                         @ encoding: [0x73,0x1c,0xc2,0x06]
2397
2398 @------------------------------------------------------------------------------
2399 @ UXTAH
2400 @------------------------------------------------------------------------------
2401         uxtah r1, r3, r9
2402         uxtahhi r6, r1, r6, ror #0
2403         uxtah r3, r8, r3, ror #8
2404         uxtahlo r2, r2, r4, ror #16
2405         uxtah r9, r3, r3, ror #24
2406
2407 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
2408 @ CHECK: uxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
2409 @ CHECK: uxtah  r3, r8, r3, ror #8
2410                                         @ encoding: [0x73,0x34,0xf8,0xe6]
2411 @ CHECK: uxtahlo        r2, r2, r4, ror #16
2412                                         @ encoding: [0x74,0x28,0xf2,0x36]
2413 @ CHECK: uxtah  r9, r3, r3, ror #24
2414                                         @ encoding: [0x73,0x9c,0xf3,0xe6]
2415
2416 @------------------------------------------------------------------------------
2417 @ UXTB
2418 @------------------------------------------------------------------------------
2419         uxtbge r2, r4
2420         uxtb r5, r6, ror #0
2421         uxtb r6, r9, ror #8
2422         uxtbcc r5, r1, ror #16
2423         uxtb r8, r3, ror #24
2424
2425 @ CHECK: uxtbge r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
2426 @ CHECK: uxtb   r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
2427 @ CHECK: uxtb   r6, r9, ror #8
2428                                         @ encoding: [0x79,0x64,0xef,0xe6]
2429 @ CHECK: uxtblo r5, r1, ror #16
2430                                         @ encoding: [0x71,0x58,0xef,0x36]
2431 @ CHECK: uxtb   r8, r3, ror #24
2432                                         @ encoding: [0x73,0x8c,0xef,0xe6]
2433
2434
2435 @------------------------------------------------------------------------------
2436 @ UXTB16
2437 @------------------------------------------------------------------------------
2438         uxtb16 r1, r4
2439         uxtb16 r6, r7, ror #0
2440         uxtb16cs r3, r5, ror #8
2441         uxtb16 r3, r1, ror #16
2442         uxtb16ge r2, r3, ror #24
2443
2444 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
2445 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
2446 @ CHECK: uxtb16hs       r3, r5, ror #8
2447                                         @ encoding: [0x75,0x34,0xcf,0x26]
2448 @ CHECK: uxtb16 r3, r1, ror #16
2449                                         @ encoding: [0x71,0x38,0xcf,0xe6]
2450 @ CHECK: uxtb16ge       r2, r3, ror #24
2451                                         @ encoding: [0x73,0x2c,0xcf,0xa6]
2452
2453
2454 @------------------------------------------------------------------------------
2455 @ UXTH
2456 @------------------------------------------------------------------------------
2457         uxthne r3, r9
2458         uxth r1, r6, ror #0
2459         uxth r3, r8, ror #8
2460         uxthle r2, r2, ror #16
2461         uxth r9, r3, ror #24
2462
2463 @ CHECK: uxthne r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
2464 @ CHECK: uxth   r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
2465 @ CHECK: uxth   r3, r8, ror #8
2466                                         @ encoding: [0x78,0x34,0xff,0xe6]
2467 @ CHECK: uxthle r2, r2, ror #16
2468                                         @ encoding: [0x72,0x28,0xff,0xd6]
2469 @ CHECK: uxth   r9, r3, ror #24
2470                                         @ encoding: [0x73,0x9c,0xff,0xe6]
2471
2472 @------------------------------------------------------------------------------
2473 @ WFE/WFI/YIELD
2474 @------------------------------------------------------------------------------
2475         wfe
2476         wfehi
2477         wfi
2478         wfilt
2479         yield
2480         yieldne
2481
2482 @ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
2483 @ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83]
2484 @ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
2485 @ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3]
2486 @ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
2487 @ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13]