53b4594ebb996983825db3fb71a76203ef7bd51a
[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 @ FIXME: ADR
127 @------------------------------------------------------------------------------
128
129 @------------------------------------------------------------------------------
130 @ ADD
131 @------------------------------------------------------------------------------
132   add r4, r5, #0xf000
133   add r4, r5, r6
134   add r4, r5, r6, lsl #5
135   add r4, r5, r6, lsr #5
136   add r4, r5, r6, lsr #5
137   add r4, r5, r6, asr #5
138   add r4, r5, r6, ror #5
139   add r6, r7, r8, lsl r9
140   add r6, r7, r8, lsr r9
141   add r6, r7, r8, asr r9
142   add r6, r7, r8, ror r9
143   add r4, r5, r6, rrx
144
145   @ destination register is optional
146   add r5, #0xf000
147   add r4, r5
148   add r4, r5, lsl #5
149   add r4, r5, lsr #5
150   add r4, r5, lsr #5
151   add r4, r5, asr #5
152   add r4, r5, ror #5
153   add r6, r7, lsl r9
154   add r6, r7, lsr r9
155   add r6, r7, asr r9
156   add r6, r7, ror r9
157   add r4, r5, rrx
158
159 @ CHECK: add    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe2]
160 @ CHECK: add    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe0]
161 @ CHECK: add    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe0]
162 @ CHECK: add    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
163 @ CHECK: add    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
164 @ CHECK: add    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe0]
165 @ CHECK: add    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe0]
166 @ CHECK: add    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe0]
167 @ CHECK: add    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe0]
168 @ CHECK: add    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe0]
169 @ CHECK: add    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe0]
170 @ CHECK: add    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe0]
171
172
173 @ CHECK: add    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe2]
174 @ CHECK: add    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe0]
175 @ CHECK: add    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe0]
176 @ CHECK: add    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
177 @ CHECK: add    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
178 @ CHECK: add    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe0]
179 @ CHECK: add    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe0]
180 @ CHECK: add    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe0]
181 @ CHECK: add    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe0]
182 @ CHECK: add    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe0]
183 @ CHECK: add    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe0]
184 @ CHECK: add    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe0]
185
186
187 @------------------------------------------------------------------------------
188 @ AND
189 @------------------------------------------------------------------------------
190   and r10, r1, #0xf
191   and r10, r1, r6
192   and r10, r1, r6, lsl #10
193   and r10, r1, r6, lsr #10
194   and r10, r1, r6, lsr #10
195   and r10, r1, r6, asr #10
196   and r10, r1, r6, ror #10
197   and r6, r7, r8, lsl r2
198   and r6, r7, r8, lsr r2
199   and r6, r7, r8, asr r2
200   and r6, r7, r8, ror r2
201   and r10, r1, r6, rrx
202
203   @ destination register is optional
204   and r1, #0xf
205   and r10, r1
206   and r10, r1, lsl #10
207   and r10, r1, lsr #10
208   and r10, r1, lsr #10
209   and r10, r1, asr #10
210   and r10, r1, ror #10
211   and r6, r7, lsl r2
212   and r6, r7, lsr r2
213   and r6, r7, asr r2
214   and r6, r7, ror r2
215   and r10, r1, rrx
216
217 @ CHECK: and    r10, r1, #15            @ encoding: [0x0f,0xa0,0x01,0xe2]
218 @ CHECK: and    r10, r1, r6             @ encoding: [0x06,0xa0,0x01,0xe0]
219 @ CHECK: and    r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0x01,0xe0]
220 @ CHECK: and    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
221 @ CHECK: and    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
222 @ CHECK: and    r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0x01,0xe0]
223 @ CHECK: and    r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0x01,0xe0]
224 @ CHECK: and    r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0x07,0xe0]
225 @ CHECK: and    r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0x07,0xe0]
226 @ CHECK: and    r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0x07,0xe0]
227 @ CHECK: and    r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0x07,0xe0]
228 @ CHECK: and    r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0x01,0xe0]
229
230 @ CHECK: and    r1, r1, #15             @ encoding: [0x0f,0x10,0x01,0xe2]
231 @ CHECK: and    r10, r10, r1            @ encoding: [0x01,0xa0,0x0a,0xe0]
232 @ CHECK: and    r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0x0a,0xe0]
233 @ CHECK: and    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
234 @ CHECK: and    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
235 @ CHECK: and    r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0x0a,0xe0]
236 @ CHECK: and    r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0x0a,0xe0]
237 @ CHECK: and    r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0x06,0xe0]
238 @ CHECK: and    r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0x06,0xe0]
239 @ CHECK: and    r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0x06,0xe0]
240 @ CHECK: and    r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0x06,0xe0]
241 @ CHECK: and    r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0x0a,0xe0]
242
243 @------------------------------------------------------------------------------
244 @ FIXME: ASR
245 @------------------------------------------------------------------------------
246 @------------------------------------------------------------------------------
247 @ FIXME: B
248 @------------------------------------------------------------------------------
249 @------------------------------------------------------------------------------
250 @ FIXME: BFC
251 @------------------------------------------------------------------------------
252 @------------------------------------------------------------------------------
253 @ FIXME: BFI
254 @------------------------------------------------------------------------------
255
256 @------------------------------------------------------------------------------
257 @ BIC
258 @------------------------------------------------------------------------------
259   bic r10, r1, #0xf
260   bic r10, r1, r6
261   bic r10, r1, r6, lsl #10
262   bic r10, r1, r6, lsr #10
263   bic r10, r1, r6, lsr #10
264   bic r10, r1, r6, asr #10
265   bic r10, r1, r6, ror #10
266   bic r6, r7, r8, lsl r2
267   bic r6, r7, r8, lsr r2
268   bic r6, r7, r8, asr r2
269   bic r6, r7, r8, ror r2
270   bic r10, r1, r6, rrx
271
272   @ destination register is optional
273   bic r1, #0xf
274   bic r10, r1
275   bic r10, r1, lsl #10
276   bic r10, r1, lsr #10
277   bic r10, r1, lsr #10
278   bic r10, r1, asr #10
279   bic r10, r1, ror #10
280   bic r6, r7, lsl r2
281   bic r6, r7, lsr r2
282   bic r6, r7, asr r2
283   bic r6, r7, ror r2
284   bic r10, r1, rrx
285
286 @ CHECK: bic    r10, r1, #15            @ encoding: [0x0f,0xa0,0xc1,0xe3]
287 @ CHECK: bic    r10, r1, r6             @ encoding: [0x06,0xa0,0xc1,0xe1]
288 @ CHECK: bic    r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0xc1,0xe1]
289 @ CHECK: bic    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
290 @ CHECK: bic    r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
291 @ CHECK: bic    r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0xc1,0xe1]
292 @ CHECK: bic    r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0xc1,0xe1]
293 @ CHECK: bic    r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0xc7,0xe1]
294 @ CHECK: bic    r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0xc7,0xe1]
295 @ CHECK: bic    r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0xc7,0xe1]
296 @ CHECK: bic    r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0xc7,0xe1]
297 @ CHECK: bic    r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0xc1,0xe1]
298
299
300 @ CHECK: bic    r1, r1, #15             @ encoding: [0x0f,0x10,0xc1,0xe3]
301 @ CHECK: bic    r10, r10, r1            @ encoding: [0x01,0xa0,0xca,0xe1]
302 @ CHECK: bic    r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0xca,0xe1]
303 @ CHECK: bic    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
304 @ CHECK: bic    r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
305 @ CHECK: bic    r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0xca,0xe1]
306 @ CHECK: bic    r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0xca,0xe1]
307 @ CHECK: bic    r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0xc6,0xe1]
308 @ CHECK: bic    r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0xc6,0xe1]
309 @ CHECK: bic    r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0xc6,0xe1]
310 @ CHECK: bic    r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0xc6,0xe1]
311 @ CHECK: bic    r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0xca,0xe1]
312
313 @------------------------------------------------------------------------------
314 @ BKPT
315 @------------------------------------------------------------------------------
316   bkpt #10
317   bkpt #65535
318
319 @ CHECK: bkpt  #10                      @ encoding: [0x7a,0x00,0x20,0xe1]
320 @ CHECK: bkpt  #65535                   @ encoding: [0x7f,0xff,0x2f,0xe1]
321
322 @------------------------------------------------------------------------------
323 @ BL/BLX (immediate)
324 @------------------------------------------------------------------------------
325
326   bl _bar
327   @ FIXME: blx _bar
328
329 @ CHECK: bl  _bar @ encoding: [A,A,A,0xeb]
330 @ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
331
332 @------------------------------------------------------------------------------
333 @ BLX (register)
334 @------------------------------------------------------------------------------
335   blx r2
336   blxne r2
337
338 @ CHECK: blx r2                         @ encoding: [0x32,0xff,0x2f,0xe1]
339 @ CHECK: blxne r2                       @ encoding: [0x32,0xff,0x2f,0x11]
340
341 @------------------------------------------------------------------------------
342 @ BX
343 @------------------------------------------------------------------------------
344
345   bx r2
346   bxne r2
347
348 @ CHECK: bx     r2                      @ encoding: [0x12,0xff,0x2f,0xe1]
349 @ CHECK: bxne   r2                      @ encoding: [0x12,0xff,0x2f,0x11]
350
351 @------------------------------------------------------------------------------
352 @ BXJ
353 @------------------------------------------------------------------------------
354
355   bxj r2
356   bxjne r2
357
358 @ CHECK: bxj    r2                      @ encoding: [0x22,0xff,0x2f,0xe1]
359 @ CHECK: bxjne  r2                      @ encoding: [0x22,0xff,0x2f,0x11]
360
361 @------------------------------------------------------------------------------
362 @ FIXME: CBNZ/CBZ
363 @------------------------------------------------------------------------------
364
365
366 @------------------------------------------------------------------------------
367 @ CDP/CDP2
368 @------------------------------------------------------------------------------
369   cdp  p7, #1, c1, c1, c1, #4
370   cdp2  p7, #1, c1, c1, c1, #4
371
372 @ CHECK: cdp  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0xee]
373 @ CHECK: cdp2  p7, #1, c1, c1, c1, #4    @ encoding: [0x81,0x17,0x11,0xfe]
374
375
376 @------------------------------------------------------------------------------
377 @ CLREX
378 @------------------------------------------------------------------------------
379   clrex
380
381 @ CHECK: clrex                           @ encoding: [0x1f,0xf0,0x7f,0xf5]
382
383
384 @------------------------------------------------------------------------------
385 @ CLZ
386 @------------------------------------------------------------------------------
387   clz r1, r2
388   clzeq r1, r2
389
390 @ CHECK: clz r1, r2                      @ encoding: [0x12,0x1f,0x6f,0xe1]
391 @ CHECK: clzeq r1, r2                    @ encoding: [0x12,0x1f,0x6f,0x01]
392
393 @------------------------------------------------------------------------------
394 @ CMN
395 @------------------------------------------------------------------------------
396   cmn r1, #0xf
397   cmn r1, r6
398   cmn r1, r6, lsl #10
399   cmn r1, r6, lsr #10
400   cmn sp, r6, lsr #10
401   cmn r1, r6, asr #10
402   cmn r1, r6, ror #10
403   cmn r7, r8, lsl r2
404   cmn sp, r8, lsr r2
405   cmn r7, r8, asr r2
406   cmn r7, r8, ror r2
407   cmn r1, r6, rrx
408
409 @ CHECK: cmn    r1, #15                 @ encoding: [0x0f,0x00,0x71,0xe3]
410 @ CHECK: cmn    r1, r6                  @ encoding: [0x06,0x00,0x71,0xe1]
411 @ CHECK: cmn    r1, r6, lsl #10         @ encoding: [0x06,0x05,0x71,0xe1]
412 @ CHECK: cmn    r1, r6, lsr #10         @ encoding: [0x26,0x05,0x71,0xe1]
413 @ CHECK: cmn    sp, r6, lsr #10         @ encoding: [0x26,0x05,0x7d,0xe1]
414 @ CHECK: cmn    r1, r6, asr #10         @ encoding: [0x46,0x05,0x71,0xe1]
415 @ CHECK: cmn    r1, r6, ror #10         @ encoding: [0x66,0x05,0x71,0xe1]
416 @ CHECK: cmn    r7, r8, lsl r2          @ encoding: [0x18,0x02,0x77,0xe1]
417 @ CHECK: cmn    sp, r8, lsr r2          @ encoding: [0x38,0x02,0x7d,0xe1]
418 @ CHECK: cmn    r7, r8, asr r2          @ encoding: [0x58,0x02,0x77,0xe1]
419 @ CHECK: cmn    r7, r8, ror r2          @ encoding: [0x78,0x02,0x77,0xe1]
420 @ CHECK: cmn    r1, r6, rrx             @ encoding: [0x66,0x00,0x71,0xe1]
421
422 @------------------------------------------------------------------------------
423 @ CMP
424 @------------------------------------------------------------------------------
425   cmp r1, #0xf
426   cmp r1, r6
427   cmp r1, r6, lsl #10
428   cmp r1, r6, lsr #10
429   cmp sp, r6, lsr #10
430   cmp r1, r6, asr #10
431   cmp r1, r6, ror #10
432   cmp r7, r8, lsl r2
433   cmp sp, r8, lsr r2
434   cmp r7, r8, asr r2
435   cmp r7, r8, ror r2
436   cmp r1, r6, rrx
437
438 @ CHECK: cmp    r1, #15                 @ encoding: [0x0f,0x00,0x51,0xe3]
439 @ CHECK: cmp    r1, r6                  @ encoding: [0x06,0x00,0x51,0xe1]
440 @ CHECK: cmp    r1, r6, lsl #10         @ encoding: [0x06,0x05,0x51,0xe1]
441 @ CHECK: cmp    r1, r6, lsr #10         @ encoding: [0x26,0x05,0x51,0xe1]
442 @ CHECK: cmp    sp, r6, lsr #10         @ encoding: [0x26,0x05,0x5d,0xe1]
443 @ CHECK: cmp    r1, r6, asr #10         @ encoding: [0x46,0x05,0x51,0xe1]
444 @ CHECK: cmp    r1, r6, ror #10         @ encoding: [0x66,0x05,0x51,0xe1]
445 @ CHECK: cmp    r7, r8, lsl r2          @ encoding: [0x18,0x02,0x57,0xe1]
446 @ CHECK: cmp    sp, r8, lsr r2          @ encoding: [0x38,0x02,0x5d,0xe1]
447 @ CHECK: cmp    r7, r8, asr r2          @ encoding: [0x58,0x02,0x57,0xe1]
448 @ CHECK: cmp    r7, r8, ror r2          @ encoding: [0x78,0x02,0x57,0xe1]
449 @ CHECK: cmp    r1, r6, rrx             @ encoding: [0x66,0x00,0x51,0xe1]
450
451 @------------------------------------------------------------------------------
452 @ DBG
453 @------------------------------------------------------------------------------
454   dbg #0
455   dbg #5
456   dbg #15
457
458 @ CHECK: dbg #0                         @ encoding: [0xf0,0xf0,0x20,0xe3]
459 @ CHECK: dbg #5                         @ encoding: [0xf5,0xf0,0x20,0xe3]
460 @ CHECK: dbg #15                        @ encoding: [0xff,0xf0,0x20,0xe3]
461
462
463 @------------------------------------------------------------------------------
464 @ DMB
465 @------------------------------------------------------------------------------
466   dmb sy
467   dmb st
468   dmb sh
469   dmb ish
470   dmb shst
471   dmb ishst
472   dmb un
473   dmb nsh
474   dmb unst
475   dmb nshst
476   dmb osh
477   dmb oshst
478   dmb
479
480 @ CHECK: dmb    sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
481 @ CHECK: dmb    st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
482 @ CHECK: dmb    ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
483 @ CHECK: dmb    ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
484 @ CHECK: dmb    ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
485 @ CHECK: dmb    ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
486 @ CHECK: dmb    nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
487 @ CHECK: dmb    nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
488 @ CHECK: dmb    nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
489 @ CHECK: dmb    nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
490 @ CHECK: dmb    osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
491 @ CHECK: dmb    oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
492 @ CHECK: dmb    sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
493
494 @------------------------------------------------------------------------------
495 @ DSB
496 @------------------------------------------------------------------------------
497   dsb sy
498   dsb st
499   dsb sh
500   dsb ish
501   dsb shst
502   dsb ishst
503   dsb un
504   dsb nsh
505   dsb unst
506   dsb nshst
507   dsb osh
508   dsb oshst
509   dsb
510
511 @ CHECK: dsb    sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
512 @ CHECK: dsb    st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
513 @ CHECK: dsb    ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
514 @ CHECK: dsb    ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
515 @ CHECK: dsb    ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
516 @ CHECK: dsb    ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
517 @ CHECK: dsb    nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
518 @ CHECK: dsb    nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
519 @ CHECK: dsb    nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
520 @ CHECK: dsb    nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
521 @ CHECK: dsb    osh                     @ encoding: [0x43,0xf0,0x7f,0xf5]
522 @ CHECK: dsb    oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
523 @ CHECK: dsb    sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
524
525 @------------------------------------------------------------------------------
526 @ EOR
527 @------------------------------------------------------------------------------
528   eor r4, r5, #0xf000
529   eor r4, r5, r6
530   eor r4, r5, r6, lsl #5
531   eor r4, r5, r6, lsr #5
532   eor r4, r5, r6, lsr #5
533   eor r4, r5, r6, asr #5
534   eor r4, r5, r6, ror #5
535   eor r6, r7, r8, lsl r9
536   eor r6, r7, r8, lsr r9
537   eor r6, r7, r8, asr r9
538   eor r6, r7, r8, ror r9
539   eor r4, r5, r6, rrx
540
541   @ destination register is optional
542   eor r5, #0xf000
543   eor r4, r5
544   eor r4, r5, lsl #5
545   eor r4, r5, lsr #5
546   eor r4, r5, lsr #5
547   eor r4, r5, asr #5
548   eor r4, r5, ror #5
549   eor r6, r7, lsl r9
550   eor r6, r7, lsr r9
551   eor r6, r7, asr r9
552   eor r6, r7, ror r9
553   eor r4, r5, rrx
554
555 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x25,0xe2]
556 @ CHECK: eor    r4, r5, r6              @ encoding: [0x06,0x40,0x25,0xe0]
557 @ CHECK: eor    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x25,0xe0]
558 @ CHECK: eor    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
559 @ CHECK: eor    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
560 @ CHECK: eor    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x25,0xe0]
561 @ CHECK: eor    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x25,0xe0]
562 @ CHECK: eor    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x27,0xe0]
563 @ CHECK: eor    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x27,0xe0]
564 @ CHECK: eor    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x27,0xe0]
565 @ CHECK: eor    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x27,0xe0]
566 @ CHECK: eor    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x25,0xe0]
567
568
569 @ CHECK: eor    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x25,0xe2]
570 @ CHECK: eor    r4, r4, r5              @ encoding: [0x05,0x40,0x24,0xe0]
571 @ CHECK: eor    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x24,0xe0]
572 @ CHECK: eor    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
573 @ CHECK: eor    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
574 @ CHECK: eor    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x24,0xe0]
575 @ CHECK: eor    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x24,0xe0]
576 @ CHECK: eor    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x26,0xe0]
577 @ CHECK: eor    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x26,0xe0]
578 @ CHECK: eor    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x26,0xe0]
579 @ CHECK: eor    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x26,0xe0]
580 @ CHECK: eor    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x24,0xe0]
581
582
583 @------------------------------------------------------------------------------
584 @ ISB
585 @------------------------------------------------------------------------------
586         isb sy
587         isb
588
589 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
590 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
591
592
593
594 @------------------------------------------------------------------------------
595 @ LDM*
596 @------------------------------------------------------------------------------
597         ldm       r2, {r1,r3-r6,sp}
598         ldmia     r2, {r1,r3-r6,sp}
599         ldmib     r2, {r1,r3-r6,sp}
600         ldmda     r2, {r1,r3-r6,sp}
601         ldmdb     r2, {r1,r3-r6,sp}
602         ldmfd     r2, {r1,r3-r6,sp}
603
604         @ with update
605         ldm       r2!, {r1,r3-r6,sp}
606         ldmib     r2!, {r1,r3-r6,sp}
607         ldmda     r2!, {r1,r3-r6,sp}
608         ldmdb     r2!, {r1,r3-r6,sp}
609
610 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
611 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
612 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
613 @ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
614 @ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
615 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
616
617 @ CHECK: ldm   r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
618 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
619 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
620 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
621
622 @------------------------------------------------------------------------------
623 @ FIXME: LDR*
624 @------------------------------------------------------------------------------
625
626 @------------------------------------------------------------------------------
627 @ LDREX/LDREXB/LDREXH/LDREXD
628 @------------------------------------------------------------------------------
629         ldrexb  r3, [r4]
630         ldrexh  r2, [r5]
631         ldrex  r1, [r7]
632         ldrexd  r6, r7, [r8]
633
634 @ CHECK: ldrexb r3, [r4]                @ encoding: [0x9f,0x3f,0xd4,0xe1]
635 @ CHECK: ldrexh r2, [r5]                @ encoding: [0x9f,0x2f,0xf5,0xe1]
636 @ CHECK: ldrex  r1, [r7]                @ encoding: [0x9f,0x1f,0x97,0xe1]
637 @ CHECK: ldrexd r6, r7, [r8]            @ encoding: [0x9f,0x6f,0xb8,0xe1]
638
639
640 @------------------------------------------------------------------------------
641 @ FIXME: LSL
642 @------------------------------------------------------------------------------
643 @------------------------------------------------------------------------------
644 @ FIXME: LSR
645 @------------------------------------------------------------------------------
646
647 @------------------------------------------------------------------------------
648 @ MCR/MCR2
649 @------------------------------------------------------------------------------
650         mcr  p7, #1, r5, c1, c1, #4
651         mcr2  p7, #1, r5, c1, c1, #4
652
653 @ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee]
654 @ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe]
655
656 @------------------------------------------------------------------------------
657 @ MCRR/MCRR2
658 @------------------------------------------------------------------------------
659         mcrr  p7, #15, r5, r4, c1
660         mcrr2  p7, #15, r5, r4, c1
661
662 @ CHECK: mcrr  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xec]
663 @ CHECK: mcrr2  p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xfc]
664
665
666 @------------------------------------------------------------------------------
667 @ MLA
668 @------------------------------------------------------------------------------
669         mla  r1,r2,r3,r4
670         mlas r1,r2,r3,r4
671         mlane  r1,r2,r3,r4
672         mlasne r1,r2,r3,r4
673
674 @ CHECK: mla    r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0xe0]
675 @ CHECK: mlas   r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0]
676 @ CHECK: mlane  r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0x10]
677 @ CHECK: mlasne r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0x10]
678
679 @------------------------------------------------------------------------------
680 @ MLS
681 @------------------------------------------------------------------------------
682         mls  r2,r5,r6,r3
683         mlsne  r2,r5,r6,r3
684
685 @ CHECK: mls    r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0xe0]
686 @ CHECK: mlsne  r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0x10]
687
688 @------------------------------------------------------------------------------
689 @ MOV (immediate)
690 @------------------------------------------------------------------------------
691     mov r3, #7
692     mov r4, #0xff0
693     mov r5, #0xff0000
694     mov r6, #0xffff
695     movw r9, #0xffff
696     movs r3, #7
697     moveq r4, #0xff0
698     movseq r5, #0xff0000
699
700 @ CHECK: mov    r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
701 @ CHECK: mov    r4, #4080               @ encoding: [0xff,0x4e,0xa0,0xe3]
702 @ CHECK: mov    r5, #16711680           @ encoding: [0xff,0x58,0xa0,0xe3]
703 @ CHECK: movw   r6, #65535              @ encoding: [0xff,0x6f,0x0f,0xe3]
704 @ CHECK: movw   r9, #65535              @ encoding: [0xff,0x9f,0x0f,0xe3]
705 @ CHECK: movs   r3, #7                  @ encoding: [0x07,0x30,0xb0,0xe3]
706 @ CHECK: moveq  r4, #4080               @ encoding: [0xff,0x4e,0xa0,0x03]
707 @ CHECK: movseq r5, #16711680           @ encoding: [0xff,0x58,0xb0,0x03]
708
709 @------------------------------------------------------------------------------
710 @ MOV (register)
711 @------------------------------------------------------------------------------
712         mov r2, r3
713         movs r2, r3
714         moveq r2, r3
715         movseq r2, r3
716
717 @ CHECK: mov    r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
718 @ CHECK: movs   r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
719 @ CHECK: moveq  r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
720 @ CHECK: movseq r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
721
722 @------------------------------------------------------------------------------
723 @ MOVT
724 @------------------------------------------------------------------------------
725     movt r3, #7
726     movt r6, #0xffff
727     movteq r4, #0xff0
728
729 @ CHECK: movt   r3, #7                  @ encoding: [0x07,0x30,0x40,0xe3]
730 @ CHECK: movt   r6, #65535              @ encoding: [0xff,0x6f,0x4f,0xe3]
731 @ CHECK: movteq r4, #4080               @ encoding: [0xf0,0x4f,0x40,0x03]
732
733
734 @------------------------------------------------------------------------------
735 @ MRC/MRC2
736 @------------------------------------------------------------------------------
737         mrc  p14, #0, r1, c1, c2, #4
738         mrc2  p14, #0, r1, c1, c2, #4
739
740 @ CHECK: mrc  p14, #0, r1, c1, c2, #4   @ encoding: [0x92,0x1e,0x11,0xee]
741 @ CHECK: mrc2  p14, #0, r1, c1, c2, #4  @ encoding: [0x92,0x1e,0x11,0xfe]
742
743 @------------------------------------------------------------------------------
744 @ MRRC/MRRC2
745 @------------------------------------------------------------------------------
746         mrrc  p7, #1, r5, r4, c1
747         mrrc2  p7, #1, r5, r4, c1
748
749 @ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
750 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
751
752
753 @------------------------------------------------------------------------------
754 @ MRS
755 @------------------------------------------------------------------------------
756         mrs  r8, apsr
757         mrs  r8, cpsr
758         mrs  r8, spsr
759 @ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
760 @ CHECK: mrs  r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
761 @ CHECK: mrs  r8, spsr @ encoding: [0x00,0x80,0x4f,0xe1]
762
763
764
765 @------------------------------------------------------------------------------
766 @ MSR
767 @------------------------------------------------------------------------------
768
769         msr  apsr, #5
770         msr  apsr_g, #5
771         msr  apsr_nzcvq, #5
772         msr  APSR_nzcvq, #5
773         msr  apsr_nzcvqg, #5
774         msr  cpsr_fc, #5
775         msr  cpsr_c, #5
776         msr  cpsr_x, #5
777         msr  cpsr_fc, #5
778         msr  cpsr_all, #5
779         msr  cpsr_fsx, #5
780         msr  spsr_fc, #5
781         msr  SPSR_fsxc, #5
782         msr  cpsr_fsxc, #5
783
784 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
785 @ CHECK: msr    APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
786 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
787 @ CHECK: msr    APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
788 @ CHECK: msr    APSR_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
789 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
790 @ CHECK: msr    CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
791 @ CHECK: msr    CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
792 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
793 @ CHECK: msr    CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
794 @ CHECK: msr    CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
795 @ CHECK: msr    SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
796 @ CHECK: msr    SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
797 @ CHECK: msr    CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
798
799         msr  apsr, r0
800         msr  apsr_g, r0
801         msr  apsr_nzcvq, r0
802         msr  APSR_nzcvq, r0
803         msr  apsr_nzcvqg, r0
804         msr  cpsr_fc, r0
805         msr  cpsr_c, r0
806         msr  cpsr_x, r0
807         msr  cpsr_fc, r0
808         msr  cpsr_all, r0
809         msr  cpsr_fsx, r0
810         msr  spsr_fc, r0
811         msr  SPSR_fsxc, r0
812         msr  cpsr_fsxc, r0
813
814 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
815 @ CHECK: msr  APSR_g, r0 @ encoding: [0x00,0xf0,0x24,0xe1]
816 @ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
817 @ CHECK: msr  APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
818 @ CHECK: msr  APSR_nzcvqg, r0 @ encoding: [0x00,0xf0,0x2c,0xe1]
819 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
820 @ CHECK: msr  CPSR_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1]
821 @ CHECK: msr  CPSR_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1]
822 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
823 @ CHECK: msr  CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
824 @ CHECK: msr  CPSR_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1]
825 @ CHECK: msr  SPSR_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1]
826 @ CHECK: msr  SPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1]
827 @ CHECK: msr  CPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1]
828
829 @------------------------------------------------------------------------------
830 @ MUL
831 @------------------------------------------------------------------------------
832
833   mul r5, r6, r7
834   muls r5, r6, r7
835   mulgt r5, r6, r7
836   mulsle r5, r6, r7
837
838 @ CHECK: mul    r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
839 @ CHECK: muls   r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
840 @ CHECK: mulgt  r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
841 @ CHECK: mulsle r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
842
843
844 @------------------------------------------------------------------------------
845 @ MVN (immediate)
846 @------------------------------------------------------------------------------
847     mvn r3, #7
848     mvn r4, #0xff0
849     mvn r5, #0xff0000
850     mvns r3, #7
851     mvneq r4, #0xff0
852     mvnseq r5, #0xff0000
853
854 @ CHECK: mvn    r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
855 @ CHECK: mvn    r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
856 @ CHECK: mvn    r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
857 @ CHECK: mvns   r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
858 @ CHECK: mvneq  r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
859 @ CHECK: mvnseq r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
860
861
862 @------------------------------------------------------------------------------
863 @ MVN (register)
864 @------------------------------------------------------------------------------
865         mvn r2, r3
866         mvns r2, r3
867         mvn r5, r6, lsl #19
868         mvn r5, r6, lsr #9
869         mvn r5, r6, asr #4
870         mvn r5, r6, ror #6
871         mvn r5, r6, rrx
872         mvneq r2, r3
873         mvnseq r2, r3, lsl #10
874
875 @ CHECK: mvn    r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
876 @ CHECK: mvns   r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
877 @ CHECK: mvn    r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
878 @ CHECK: mvn    r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
879 @ CHECK: mvn    r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
880 @ CHECK: mvn    r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
881 @ CHECK: mvn    r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
882 @ CHECK: mvneq  r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
883 @ CHECK: mvnseq r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
884
885
886 @------------------------------------------------------------------------------
887 @ MVN (shifted register)
888 @------------------------------------------------------------------------------
889         mvn r5, r6, lsl r7
890         mvns r5, r6, lsr r7
891         mvngt r5, r6, asr r7
892         mvnslt r5, r6, ror r7
893
894 @ CHECK: mvn    r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
895 @ CHECK: mvns   r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
896 @ CHECK: mvngt  r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
897 @ CHECK: mvnslt r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
898
899 @------------------------------------------------------------------------------
900 @ NOP
901 @------------------------------------------------------------------------------
902         nop
903         nopgt
904
905 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
906 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
907
908
909 @------------------------------------------------------------------------------
910 @ ORR
911 @------------------------------------------------------------------------------
912         orr r4, r5, #0xf000
913         orr r4, r5, r6
914         orr r4, r5, r6, lsl #5
915         orr r4, r5, r6, lsr #5
916         orr r4, r5, r6, lsr #5
917         orr r4, r5, r6, asr #5
918         orr r4, r5, r6, ror #5
919         orr r6, r7, r8, lsl r9
920         orr r6, r7, r8, lsr r9
921         orr r6, r7, r8, asr r9
922         orr r6, r7, r8, ror r9
923         orr r4, r5, r6, rrx
924
925         @ destination register is optional
926         orr r5, #0xf000
927         orr r4, r5
928         orr r4, r5, lsl #5
929         orr r4, r5, lsr #5
930         orr r4, r5, lsr #5
931         orr r4, r5, asr #5
932         orr r4, r5, ror #5
933         orr r6, r7, lsl r9
934         orr r6, r7, lsr r9
935         orr r6, r7, asr r9
936         orr r6, r7, ror r9
937         orr r4, r5, rrx
938
939 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
940 @ CHECK: orr    r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
941 @ CHECK: orr    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
942 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
943 @ CHECK: orr    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
944 @ CHECK: orr    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
945 @ CHECK: orr    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
946 @ CHECK: orr    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
947 @ CHECK: orr    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
948 @ CHECK: orr    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
949 @ CHECK: orr    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
950 @ CHECK: orr    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
951
952 @ CHECK: orr    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
953 @ CHECK: orr    r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
954 @ CHECK: orr    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
955 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
956 @ CHECK: orr    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
957 @ CHECK: orr    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
958 @ CHECK: orr    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
959 @ CHECK: orr    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
960 @ CHECK: orr    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
961 @ CHECK: orr    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
962 @ CHECK: orr    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
963 @ CHECK: orr    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
964
965         orrseq r4, r5, #0xf000
966         orrne r4, r5, r6
967         orrseq r4, r5, r6, lsl #5
968         orrlo r6, r7, r8, ror r9
969         orrshi r4, r5, r6, rrx
970         orrcs r5, #0xf000
971         orrseq r4, r5
972         orrne r6, r7, asr r9
973         orrslt r6, r7, ror r9
974         orrsgt r4, r5, rrx
975
976 @ CHECK: orrseq r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
977 @ CHECK: orrne  r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
978 @ CHECK: orrseq r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
979 @ CHECK: orrlo  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
980 @ CHECK: orrshi r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
981 @ CHECK: orrhs  r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
982 @ CHECK: orrseq r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
983 @ CHECK: orrne  r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
984 @ CHECK: orrslt r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
985 @ CHECK: orrsgt r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
986
987 @------------------------------------------------------------------------------
988 @ PKH
989 @------------------------------------------------------------------------------
990         pkhbt r2, r2, r3
991         pkhbt r2, r2, r3, lsl #31
992         pkhbt r2, r2, r3, lsl #0
993         pkhbt r2, r2, r3, lsl #15
994
995         pkhtb r2, r2, r3
996         pkhtb r2, r2, r3, asr #31
997         pkhtb r2, r2, r3, asr #15
998
999 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1000 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
1001 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1002 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
1003
1004 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
1005 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
1006 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
1007
1008 @------------------------------------------------------------------------------
1009 @ FIXME: PLD
1010 @------------------------------------------------------------------------------
1011 @------------------------------------------------------------------------------
1012 @ FIXME: PLI
1013 @------------------------------------------------------------------------------
1014
1015
1016 @------------------------------------------------------------------------------
1017 @ POP
1018 @------------------------------------------------------------------------------
1019         pop {r7}
1020         pop {r7, r8, r9, r10}
1021
1022 @ FIXME: pop of a single register should encode as "ldr r7, [sp], #4"
1023 @ CHECK-FIXME: pop      {r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
1024 @ CHECK: pop    {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
1025
1026
1027 @------------------------------------------------------------------------------
1028 @ PUSH
1029 @------------------------------------------------------------------------------
1030         push {r7}
1031         push {r7, r8, r9, r10}
1032
1033 @ FIXME: push of a single register should encode as "str r7, [sp, #-4]!"
1034 @ CHECK-FIXME: push     {r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
1035 @ CHECK: push   {r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
1036
1037
1038 @------------------------------------------------------------------------------
1039 @ QADD/QADD16/QADD8
1040 @------------------------------------------------------------------------------
1041         qadd r1, r2, r3
1042         qaddne r1, r2, r3
1043         qadd16 r1, r2, r3
1044         qadd16gt r1, r2, r3
1045         qadd8 r1, r2, r3
1046         qadd8le r1, r2, r3
1047
1048 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
1049 @ CHECK: qaddne r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
1050 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
1051 @ CHECK: qadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
1052 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
1053 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
1054
1055
1056 @------------------------------------------------------------------------------
1057 @ QDADD/QDSUB
1058 @------------------------------------------------------------------------------
1059         qdadd r6, r7, r8
1060         qdaddhi r6, r7, r8
1061         qdsub r6, r7, r8
1062         qdsubhi r6, r7, r8
1063
1064 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
1065 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
1066 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
1067 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
1068
1069
1070 @------------------------------------------------------------------------------
1071 @ QSAX
1072 @------------------------------------------------------------------------------
1073         qsax r9, r12, r0
1074         qsaxeq r9, r12, r0
1075
1076 @ CHECK: qsax   r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
1077 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
1078
1079
1080 @------------------------------------------------------------------------------
1081 @ QADD/QADD16/QADD8
1082 @------------------------------------------------------------------------------
1083         qsub r1, r2, r3
1084         qsubne r1, r2, r3
1085         qsub16 r1, r2, r3
1086         qsub16gt r1, r2, r3
1087         qsub8 r1, r2, r3
1088         qsub8le r1, r2, r3
1089
1090 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
1091 @ CHECK: qsubne r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
1092 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
1093 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
1094 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
1095 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
1096
1097
1098 @------------------------------------------------------------------------------
1099 @ RBIT
1100 @------------------------------------------------------------------------------
1101         rbit r1, r2
1102         rbitne r1, r2
1103
1104 @ CHECK: rbit   r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
1105 @ CHECK: rbitne r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
1106
1107
1108 @------------------------------------------------------------------------------
1109 @ REV/REV16/REVSH
1110 @------------------------------------------------------------------------------
1111         rev r1, r9
1112         revne r1, r5
1113         rev16 r8, r3
1114         rev16ne r12, r4
1115         revsh r4, r9
1116         revshne r9, r1
1117
1118 @ CHECK: rev    r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
1119 @ CHECK: revne  r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
1120 @ CHECK: rev16  r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
1121 @ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
1122 @ CHECK: revsh  r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
1123 @ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
1124
1125
1126 @------------------------------------------------------------------------------
1127 @ RSB
1128 @------------------------------------------------------------------------------
1129         rsb r4, r5, #0xf000
1130         rsb r4, r5, r6
1131         rsb r4, r5, r6, lsl #5
1132         rsblo r4, r5, r6, lsr #5
1133         rsb r4, r5, r6, lsr #5
1134         rsb r4, r5, r6, asr #5
1135         rsb r4, r5, r6, ror #5
1136         rsb r6, r7, r8, lsl r9
1137         rsb r6, r7, r8, lsr r9
1138         rsb r6, r7, r8, asr r9
1139         rsble r6, r7, r8, ror r9
1140         rsb r4, r5, r6, rrx
1141
1142         @ destination register is optional
1143         rsb r5, #0xf000
1144         rsb r4, r5
1145         rsb r4, r5, lsl #5
1146         rsb r4, r5, lsr #5
1147         rsbne r4, r5, lsr #5
1148         rsb r4, r5, asr #5
1149         rsb r4, r5, ror #5
1150         rsbgt r6, r7, lsl r9
1151         rsb r6, r7, lsr r9
1152         rsb r6, r7, asr r9
1153         rsb r6, r7, ror r9
1154         rsb r4, r5, rrx
1155
1156 @ CHECK: rsb    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
1157 @ CHECK: rsb    r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
1158 @ CHECK: rsb    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
1159 @ CHECK: rsblo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
1160 @ CHECK: rsb    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
1161 @ CHECK: rsb    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
1162 @ CHECK: rsb    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
1163 @ CHECK: rsb    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
1164 @ CHECK: rsb    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
1165 @ CHECK: rsb    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
1166 @ CHECK: rsble  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
1167 @ CHECK: rsb    r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
1168
1169 @ CHECK: rsb    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
1170 @ CHECK: rsb    r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
1171 @ CHECK: rsb    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
1172 @ CHECK: rsb    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
1173 @ CHECK: rsbne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
1174 @ CHECK: rsb    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
1175 @ CHECK: rsb    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
1176 @ CHECK: rsbgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
1177 @ CHECK: rsb    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
1178 @ CHECK: rsb    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
1179 @ CHECK: rsb    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
1180 @ CHECK: rsb    r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
1181
1182 @------------------------------------------------------------------------------
1183 @ RSC
1184 @------------------------------------------------------------------------------
1185         rsc r4, r5, #0xf000
1186         rsc r4, r5, r6
1187         rsc r4, r5, r6, lsl #5
1188         rsclo r4, r5, r6, lsr #5
1189         rsc r4, r5, r6, lsr #5
1190         rsc r4, r5, r6, asr #5
1191         rsc r4, r5, r6, ror #5
1192         rsc r6, r7, r8, lsl r9
1193         rsc r6, r7, r8, lsr r9
1194         rsc r6, r7, r8, asr r9
1195         rscle r6, r7, r8, ror r9
1196
1197         @ destination register is optional
1198         rsc r5, #0xf000
1199         rsc r4, r5
1200         rsc r4, r5, lsl #5
1201         rsc r4, r5, lsr #5
1202         rscne r4, r5, lsr #5
1203         rsc r4, r5, asr #5
1204         rsc r4, r5, ror #5
1205         rscgt r6, r7, lsl r9
1206         rsc r6, r7, lsr r9
1207         rsc r6, r7, asr r9
1208         rsc r6, r7, ror r9
1209
1210 @ CHECK: rsc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
1211 @ CHECK: rsc    r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
1212 @ CHECK: rsc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
1213 @ CHECK: rsclo  r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
1214 @ CHECK: rsc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
1215 @ CHECK: rsc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
1216 @ CHECK: rsc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
1217 @ CHECK: rsc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
1218 @ CHECK: rsc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
1219 @ CHECK: rsc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
1220 @ CHECK: rscle  r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
1221
1222 @ CHECK: rsc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
1223 @ CHECK: rsc    r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
1224 @ CHECK: rsc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
1225 @ CHECK: rsc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
1226 @ CHECK: rscne  r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
1227 @ CHECK: rsc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
1228 @ CHECK: rsc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
1229 @ CHECK: rscgt  r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
1230 @ CHECK: rsc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
1231 @ CHECK: rsc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
1232 @ CHECK: rsc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
1233
1234 @------------------------------------------------------------------------------
1235 @ SADD16/SADD8
1236 @------------------------------------------------------------------------------
1237         sadd16 r1, r2, r3
1238         sadd16gt r1, r2, r3
1239         sadd8 r1, r2, r3
1240         sadd8le r1, r2, r3
1241
1242 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
1243 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
1244 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
1245 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
1246
1247
1248 @------------------------------------------------------------------------------
1249 @ SASX
1250 @------------------------------------------------------------------------------
1251         sasx r9, r12, r0
1252         sasxeq r9, r12, r0
1253
1254 @ CHECK: sasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
1255 @ CHECK: sasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
1256
1257
1258 @------------------------------------------------------------------------------
1259 @ SBC
1260 @------------------------------------------------------------------------------
1261         sbc r4, r5, #0xf000
1262         sbc r4, r5, r6
1263         sbc r4, r5, r6, lsl #5
1264         sbc r4, r5, r6, lsr #5
1265         sbc r4, r5, r6, lsr #5
1266         sbc r4, r5, r6, asr #5
1267         sbc r4, r5, r6, ror #5
1268         sbc r6, r7, r8, lsl r9
1269         sbc r6, r7, r8, lsr r9
1270         sbc r6, r7, r8, asr r9
1271         sbc r6, r7, r8, ror r9
1272
1273         @ destination register is optional
1274         sbc r5, #0xf000
1275         sbc r4, r5
1276         sbc r4, r5, lsl #5
1277         sbc r4, r5, lsr #5
1278         sbc r4, r5, lsr #5
1279         sbc r4, r5, asr #5
1280         sbc r4, r5, ror #5
1281         sbc r6, r7, lsl r9
1282         sbc r6, r7, lsr r9
1283         sbc r6, r7, asr r9
1284         sbc r6, r7, ror r9
1285
1286 @ CHECK: sbc    r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
1287 @ CHECK: sbc    r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
1288 @ CHECK: sbc    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
1289 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1290 @ CHECK: sbc    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
1291 @ CHECK: sbc    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
1292 @ CHECK: sbc    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
1293 @ CHECK: sbc    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
1294 @ CHECK: sbc    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
1295 @ CHECK: sbc    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
1296 @ CHECK: sbc    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
1297
1298 @ CHECK: sbc    r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
1299 @ CHECK: sbc    r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
1300 @ CHECK: sbc    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
1301 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1302 @ CHECK: sbc    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
1303 @ CHECK: sbc    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
1304 @ CHECK: sbc    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
1305 @ CHECK: sbc    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
1306 @ CHECK: sbc    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
1307 @ CHECK: sbc    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
1308 @ CHECK: sbc    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
1309
1310
1311 @------------------------------------------------------------------------------
1312 @ SBFX
1313 @------------------------------------------------------------------------------
1314         sbfx r4, r5, #16, #1
1315         sbfxgt r4, r5, #16, #16
1316
1317 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
1318 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
1319
1320
1321 @------------------------------------------------------------------------------
1322 @ SEL
1323 @------------------------------------------------------------------------------
1324         sel r9, r2, r1
1325         selne r9, r2, r1
1326
1327 @ CHECK: sel    r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1328 @ CHECK: selne  r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1329
1330
1331 @------------------------------------------------------------------------------
1332 @ SETEND
1333 @------------------------------------------------------------------------------
1334         setend be
1335         setend le
1336
1337         sel     r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
1338         selne   r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
1339
1340
1341 @------------------------------------------------------------------------------
1342 @ SEV
1343 @------------------------------------------------------------------------------
1344         sev
1345         seveq
1346
1347 @ CHECK: sev                             @ encoding: [0x04,0xf0,0x20,0xe3]
1348 @ CHECK: seveq                           @ encoding: [0x04,0xf0,0x20,0x03]
1349
1350 @------------------------------------------------------------------------------
1351 @ SHADD16/SHADD8
1352 @------------------------------------------------------------------------------
1353         shadd16 r4, r8, r2
1354         shadd16gt r4, r8, r2
1355         shadd8 r4, r8, r2
1356         shadd8gt r4, r8, r2
1357
1358 @ CHECK: shadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
1359 @ CHECK: shadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
1360 @ CHECK: shadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
1361 @ CHECK: shadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
1362
1363
1364 @------------------------------------------------------------------------------
1365 @ SHASX
1366 @------------------------------------------------------------------------------
1367         shasx r4, r8, r2
1368         shasxgt r4, r8, r2
1369
1370 @ CHECK: shasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
1371 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
1372
1373
1374 @------------------------------------------------------------------------------
1375 @ SHSUB16/SHSUB8
1376 @------------------------------------------------------------------------------
1377         shsub16 r4, r8, r2
1378         shsub16gt r4, r8, r2
1379         shsub8 r4, r8, r2
1380         shsub8gt r4, r8, r2
1381
1382 @ CHECK: shsub16        r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
1383 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
1384 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
1385 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
1386
1387 @------------------------------------------------------------------------------
1388 @ SMC
1389 @------------------------------------------------------------------------------
1390         smc #0xf
1391         smceq #0
1392
1393 @ CHECK: smc    #15                     @ encoding: [0x7f,0x00,0x60,0xe1]
1394 @ CHECK: smceq  #0                      @ encoding: [0x70,0x00,0x60,0x01]
1395
1396 @------------------------------------------------------------------------------
1397 @ SMLABB/SMLABT/SMLATB/SMLATT
1398 @------------------------------------------------------------------------------
1399         smlabb r3, r1, r9, r0
1400         smlabt r5, r6, r4, r1
1401         smlatb r4, r2, r3, r2
1402         smlatt r8, r3, r8, r4
1403         smlabbge r3, r1, r9, r0
1404         smlabtle r5, r6, r4, r1
1405         smlatbne r4, r2, r3, r2
1406         smlatteq r8, r3, r8, r4
1407
1408 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
1409 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
1410 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
1411 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
1412 @ CHECK: smlabbge       r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
1413 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
1414 @ CHECK: smlatbne       r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
1415 @ CHECK: smlatteq       r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
1416
1417 @------------------------------------------------------------------------------
1418 @ SMLAD/SMLADX
1419 @------------------------------------------------------------------------------
1420         smlad r2, r3, r5, r8
1421         smladx r2, r3, r5, r8
1422         smladeq r2, r3, r5, r8
1423         smladxhi r2, r3, r5, r8
1424
1425 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
1426 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
1427 @ CHECK: smladeq        r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
1428 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
1429
1430
1431 @------------------------------------------------------------------------------
1432 @ SMLAL
1433 @------------------------------------------------------------------------------
1434         smlal r2, r3, r5, r8
1435         smlals r2, r3, r5, r8
1436         smlaleq r2, r3, r5, r8
1437         smlalshi r2, r3, r5, r8
1438
1439 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
1440 @ CHECK: smlals r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
1441 @ CHECK: smlaleq        r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
1442 @ CHECK: smlalshi       r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
1443
1444
1445 @------------------------------------------------------------------------------
1446 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
1447 @------------------------------------------------------------------------------
1448         smlalbb r3, r1, r9, r0
1449         smlalbt r5, r6, r4, r1
1450         smlaltb r4, r2, r3, r2
1451         smlaltt r8, r3, r8, r4
1452         smlalbbge r3, r1, r9, r0
1453         smlalbtle r5, r6, r4, r1
1454         smlaltbne r4, r2, r3, r2
1455         smlaltteq r8, r3, r8, r4
1456
1457 @ CHECK: smlalbb        r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
1458 @ CHECK: smlalbt        r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
1459 @ CHECK: smlaltb        r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
1460 @ CHECK: smlaltt        r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
1461 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
1462 @ CHECK: smlalbtle      r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
1463 @ CHECK: smlaltbne      r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
1464 @ CHECK: smlaltteq      r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
1465
1466
1467 @------------------------------------------------------------------------------
1468 @ SMLALD/SMLALDX
1469 @------------------------------------------------------------------------------
1470         smlald r2, r3, r5, r8
1471         smlaldx r2, r3, r5, r8
1472         smlaldeq r2, r3, r5, r8
1473         smlaldxhi r2, r3, r5, r8
1474
1475 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
1476 @ CHECK: smlaldx        r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
1477 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
1478 @ CHECK: smlaldxhi      r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
1479
1480
1481 @------------------------------------------------------------------------------
1482 @ SMLAWB/SMLAWT
1483 @------------------------------------------------------------------------------
1484         smlawb r2, r3, r10, r8
1485         smlawt r8, r3, r5, r9
1486         smlawbeq r2, r7, r5, r8
1487         smlawthi r1, r3, r0, r8
1488
1489 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
1490 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
1491 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
1492 @ CHECK: smlawthi       r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
1493
1494
1495 @------------------------------------------------------------------------------
1496 @ SMLSD/SMLSDX
1497 @------------------------------------------------------------------------------
1498         smlsd r2, r3, r5, r8
1499         smlsdx r2, r3, r5, r8
1500         smlsdeq r2, r3, r5, r8
1501         smlsdxhi r2, r3, r5, r8
1502
1503 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
1504 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
1505 @ CHECK: smlsdeq        r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
1506 @ CHECK: smlsdxhi       r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
1507
1508
1509 @------------------------------------------------------------------------------
1510 @ SMLSLD/SMLSLDX
1511 @------------------------------------------------------------------------------
1512         smlsld r2, r9, r5, r1
1513         smlsldx r4, r11, r2, r8
1514         smlsldeq r8, r2, r5, r6
1515         smlsldxhi r1, r0, r3, r8
1516
1517 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
1518 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
1519 @ CHECK: smlsldeq       r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
1520 @ CHECK: smlsldxhi      r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
1521
1522
1523 @------------------------------------------------------------------------------
1524 @ SMMLA/SMMLAR
1525 @------------------------------------------------------------------------------
1526         smmla r1, r2, r3, r4
1527         smmlar r4, r3, r2, r1
1528         smmlalo r1, r2, r3, r4
1529         smmlarcs r4, r3, r2, r1
1530
1531 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
1532 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
1533 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
1534 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
1535
1536
1537 @------------------------------------------------------------------------------
1538 @ SMMLS/SMMLSR
1539 @------------------------------------------------------------------------------
1540         smmls r1, r2, r3, r4
1541         smmlsr r4, r3, r2, r1
1542         smmlslo r1, r2, r3, r4
1543         smmlsrcs r4, r3, r2, r1
1544
1545 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
1546 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
1547 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
1548 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
1549
1550
1551 @------------------------------------------------------------------------------
1552 @ SMMUL/SMMULR
1553 @------------------------------------------------------------------------------
1554         smmul r2, r3, r4
1555         smmulr r3, r2, r1
1556         smmulcc r2, r3, r4
1557         smmulrhs r3, r2, r1
1558
1559 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
1560 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
1561 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
1562 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
1563
1564
1565 @------------------------------------------------------------------------------
1566 @ SMUAD/SMUADX
1567 @------------------------------------------------------------------------------
1568         smuad r2, r3, r4
1569         smuadx r3, r2, r1
1570         smuadlt r2, r3, r4
1571         smuadxge r3, r2, r1
1572
1573 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
1574 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
1575 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
1576 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
1577
1578
1579 @------------------------------------------------------------------------------
1580 @ SMULBB/SMLALBT/SMLALTB/SMLALTT
1581 @------------------------------------------------------------------------------
1582         smulbb r3, r9, r0
1583         smulbt r5, r4, r1
1584         smultb r4, r2, r2
1585         smultt r8, r3, r4
1586         smulbbge r1, r9, r0
1587         smulbtle r5, r6, r4
1588         smultbne r2, r3, r2
1589         smultteq r8, r3, r4
1590
1591 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
1592 @ CHECK: smulbt r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
1593 @ CHECK: smultb r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
1594 @ CHECK: smultt r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
1595 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
1596 @ CHECK: smulbtle       r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
1597 @ CHECK: smultbne       r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
1598 @ CHECK: smultteq       r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
1599
1600
1601 @------------------------------------------------------------------------------
1602 @ SMULL
1603 @------------------------------------------------------------------------------
1604         smull r3, r9, r0, r1
1605         smulls r3, r9, r0, r2
1606         smulleq r8, r3, r4, r5
1607         smullseq r8, r3, r4, r3
1608
1609 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
1610 @ CHECK: smulls r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
1611 @ CHECK: smulleq        r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
1612 @ CHECK: smullseq       r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
1613
1614
1615 @------------------------------------------------------------------------------
1616 @ SMULWB/SMULWT
1617 @------------------------------------------------------------------------------
1618         smulwb r3, r9, r0
1619         smulwt r3, r9, r2
1620
1621 @ CHECK: smulwb r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
1622 @ CHECK: smulwt r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
1623
1624
1625 @------------------------------------------------------------------------------
1626 @ SMUSD/SMUSDX
1627 @------------------------------------------------------------------------------
1628         smusd r3, r0, r1
1629         smusdx r3, r9, r2
1630         smusdeq r8, r3, r2
1631         smusdxne r7, r4, r3
1632
1633 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
1634 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
1635 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
1636 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
1637
1638
1639 @------------------------------------------------------------------------------
1640 @ FIXME: SRS
1641 @------------------------------------------------------------------------------
1642
1643
1644 @------------------------------------------------------------------------------
1645 @ SSAT
1646 @------------------------------------------------------------------------------
1647         ssat    r8, #1, r10
1648         ssat    r8, #1, r10, lsl #0
1649         ssat    r8, #1, r10, lsl #31
1650         ssat    r8, #1, r10, asr #32
1651         ssat    r8, #1, r10, asr #1
1652
1653 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1654 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
1655 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
1656 @ CHECK: ssat   r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
1657 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
1658
1659
1660 @------------------------------------------------------------------------------
1661 @ SSAT16
1662 @------------------------------------------------------------------------------
1663         ssat16  r2, #1, r7
1664         ssat16  r3, #16, r5
1665
1666 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
1667 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
1668
1669
1670 @------------------------------------------------------------------------------
1671 @ SSAX
1672 @------------------------------------------------------------------------------
1673         ssax r2, r3, r4
1674         ssaxlt r2, r3, r4
1675
1676 @ CHECK: ssax   r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
1677 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
1678
1679 @------------------------------------------------------------------------------
1680 @ SSUB16/SSUB8
1681 @------------------------------------------------------------------------------
1682         ssub16 r1, r0, r6
1683         ssub16ne r5, r3, r2
1684         ssub8 r9, r2, r4
1685         ssub8eq r5, r1, r2
1686
1687 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
1688 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
1689 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
1690 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
1691
1692
1693 @------------------------------------------------------------------------------
1694 @ STM*
1695 @------------------------------------------------------------------------------
1696         stm       r2, {r1,r3-r6,sp}
1697         stmia     r3, {r1,r3-r6,lr}
1698         stmib     r4, {r1,r3-r6,sp}
1699         stmda     r5, {r1,r3-r6,sp}
1700         stmdb     r6, {r1,r3-r6,r8}
1701         stmfd     sp, {r1,r3-r6,sp}
1702
1703         @ with update
1704         stm       r8!, {r1,r3-r6,sp}
1705         stmib     r9!, {r1,r3-r6,sp}
1706         stmda     sp!, {r1,r3-r6}
1707         stmdb     r0!, {r1,r5,r7,sp}
1708
1709 @ CHECK: stm    r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
1710 @ CHECK: stm    r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8]
1711 @ CHECK: stmib  r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
1712 @ CHECK: stmda  r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
1713 @ CHECK: stmdb  r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
1714 @ CHECK: stmdb  sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
1715
1716 @ CHECK: stm    r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
1717 @ CHECK: stmib  r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
1718 @ CHECK: stmda  sp!, {r1, r3, r4, r5, r6} @ encoding: [0x7a,0x00,0x2d,0xe8]
1719 @ CHECK: stmdb  r0!, {r1, r5, r7, sp}   @ encoding: [0xa2,0x20,0x20,0xe9]
1720
1721
1722 @------------------------------------------------------------------------------
1723 @ FIXME:STR*
1724 @------------------------------------------------------------------------------
1725 @------------------------------------------------------------------------------
1726 @ STREX/STREXB/STREXH/STREXD
1727 @------------------------------------------------------------------------------
1728         strexb  r1, r3, [r4]
1729         strexh  r4, r2, [r5]
1730         strex  r2, r1, [r7]
1731         strexd  r6, r2, r3, [r8]
1732
1733 @ CHECK: strexb r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
1734 @ CHECK: strexh r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
1735 @ CHECK: strex  r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
1736 @ CHECK: strexd r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
1737
1738
1739 @------------------------------------------------------------------------------
1740 @ SUB
1741 @------------------------------------------------------------------------------
1742         sub r4, r5, #0xf000
1743         sub r4, r5, r6
1744         sub r4, r5, r6, lsl #5
1745         sub r4, r5, r6, lsr #5
1746         sub r4, r5, r6, lsr #5
1747         sub r4, r5, r6, asr #5
1748         sub r4, r5, r6, ror #5
1749         sub r6, r7, r8, lsl r9
1750         sub r6, r7, r8, lsr r9
1751         sub r6, r7, r8, asr r9
1752         sub r6, r7, r8, ror r9
1753
1754         @ destination register is optional
1755         sub r5, #0xf000
1756         sub r4, r5
1757         sub r4, r5, lsl #5
1758         sub r4, r5, lsr #5
1759         sub r4, r5, lsr #5
1760         sub r4, r5, asr #5
1761         sub r4, r5, ror #5
1762         sub r6, r7, lsl r9
1763         sub r6, r7, lsr r9
1764         sub r6, r7, asr r9
1765         sub r6, r7, ror r9
1766
1767 @ CHECK: sub    r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
1768 @ CHECK: sub    r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
1769 @ CHECK: sub    r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
1770 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1771 @ CHECK: sub    r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
1772 @ CHECK: sub    r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
1773 @ CHECK: sub    r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
1774 @ CHECK: sub    r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
1775 @ CHECK: sub    r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
1776 @ CHECK: sub    r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
1777 @ CHECK: sub    r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
1778
1779
1780 @ CHECK: sub    r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
1781 @ CHECK: sub    r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
1782 @ CHECK: sub    r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
1783 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1784 @ CHECK: sub    r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
1785 @ CHECK: sub    r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
1786 @ CHECK: sub    r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
1787 @ CHECK: sub    r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
1788 @ CHECK: sub    r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
1789 @ CHECK: sub    r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
1790 @ CHECK: sub    r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
1791
1792
1793 @------------------------------------------------------------------------------
1794 @ SVC
1795 @------------------------------------------------------------------------------
1796         svc #16
1797         svc #0
1798         svc #0xffffff
1799
1800 @ CHECK: svc    #16                     @ encoding: [0x10,0x00,0x00,0xef]
1801 @ CHECK: svc    #0                      @ encoding: [0x00,0x00,0x00,0xef]
1802 @ CHECK: svc    #16777215               @ encoding: [0xff,0xff,0xff,0xef]
1803
1804
1805 @------------------------------------------------------------------------------
1806 @ SWP/SWPB
1807 @------------------------------------------------------------------------------
1808         swp r1, r2, [r3]
1809         swp r4, r4, [r6]
1810         swpb r5, r1, [r9]
1811
1812 @ CHECK: swp    r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
1813 @ CHECK: swp    r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
1814 @ CHECK: swpb   r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
1815
1816
1817 @------------------------------------------------------------------------------
1818 @ SXTAB
1819 @------------------------------------------------------------------------------
1820         sxtab r2, r3, r4
1821         sxtab r4, r5, r6, ror #0
1822         sxtablt r6, r2, r9, ror #8
1823         sxtab r5, r1, r4, ror #16
1824         sxtab r7, r8, r3, ror #24
1825
1826 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
1827 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
1828 @ CHECK: sxtablt        r6, r2, r9, ror #8
1829                                         @ encoding: [0x79,0x64,0xa2,0xb6]
1830 @ CHECK: sxtab  r5, r1, r4, ror #16
1831                                         @ encoding: [0x74,0x58,0xa1,0xe6]
1832 @ CHECK: sxtab  r7, r8, r3, ror #24
1833                                         @ encoding: [0x73,0x7c,0xa8,0xe6]
1834
1835
1836 @------------------------------------------------------------------------------
1837 @ SXTAB16
1838 @------------------------------------------------------------------------------
1839         sxtab16ge r0, r1, r4
1840         sxtab16 r6, r2, r7, ror #0
1841         sxtab16 r3, r5, r8, ror #8
1842         sxtab16 r3, r2, r1, ror #16
1843         sxtab16eq r1, r2, r3, ror #24
1844
1845 @ CHECK: sxtab16ge      r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
1846 @ CHECK: sxtab16        r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
1847 @ CHECK: sxtab16        r3, r5, r8, ror #8
1848                                         @ encoding: [0x78,0x34,0x85,0xe6]
1849 @ CHECK: sxtab16        r3, r2, r1, ror #16
1850                                         @ encoding: [0x71,0x38,0x82,0xe6]
1851 @ CHECK: sxtab16eq      r1, r2, r3, ror #24
1852                                         @ encoding: [0x73,0x1c,0x82,0x06]
1853
1854 @------------------------------------------------------------------------------
1855 @ SXTAH
1856 @------------------------------------------------------------------------------
1857         sxtah r1, r3, r9
1858         sxtahhi r6, r1, r6, ror #0
1859         sxtah r3, r8, r3, ror #8
1860         sxtahlo r2, r2, r4, ror #16
1861         sxtah r9, r3, r3, ror #24
1862
1863 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
1864 @ CHECK: sxtahhi        r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
1865 @ CHECK: sxtah  r3, r8, r3, ror #8
1866                                         @ encoding: [0x73,0x34,0xb8,0xe6]
1867 @ CHECK: sxtahlo        r2, r2, r4, ror #16
1868                                         @ encoding: [0x74,0x28,0xb2,0x36]
1869 @ CHECK: sxtah  r9, r3, r3, ror #24
1870                                         @ encoding: [0x73,0x9c,0xb3,0xe6]
1871
1872 @------------------------------------------------------------------------------
1873 @ SXTB
1874 @------------------------------------------------------------------------------
1875         sxtbge r2, r4
1876         sxtb r5, r6, ror #0
1877         sxtb r6, r9, ror #8
1878         sxtbcc r5, r1, ror #16
1879         sxtb r8, r3, ror #24
1880
1881 @ CHECK: sxtbge r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
1882 @ CHECK: sxtb   r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
1883 @ CHECK: sxtb   r6, r9, ror #8
1884                                         @ encoding: [0x79,0x64,0xaf,0xe6]
1885 @ CHECK: sxtblo r5, r1, ror #16
1886                                         @ encoding: [0x71,0x58,0xaf,0x36]
1887 @ CHECK: sxtb   r8, r3, ror #24
1888                                         @ encoding: [0x73,0x8c,0xaf,0xe6]
1889
1890
1891 @------------------------------------------------------------------------------
1892 @ SXTB16
1893 @------------------------------------------------------------------------------
1894         sxtb16 r1, r4
1895         sxtb16 r6, r7, ror #0
1896         sxtb16cs r3, r5, ror #8
1897         sxtb16 r3, r1, ror #16
1898         sxtb16ge r2, r3, ror #24
1899
1900 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
1901 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
1902 @ CHECK: sxtb16hs       r3, r5, ror #8
1903                                         @ encoding: [0x75,0x34,0x8f,0x26]
1904 @ CHECK: sxtb16 r3, r1, ror #16
1905                                         @ encoding: [0x71,0x38,0x8f,0xe6]
1906 @ CHECK: sxtb16ge       r2, r3, ror #24
1907                                         @ encoding: [0x73,0x2c,0x8f,0xa6]
1908
1909
1910 @------------------------------------------------------------------------------
1911 @ SXTH
1912 @------------------------------------------------------------------------------
1913         sxthne r3, r9
1914         sxth r1, r6, ror #0
1915         sxth r3, r8, ror #8
1916         sxthle r2, r2, ror #16
1917         sxth r9, r3, ror #24
1918
1919 @ CHECK: sxthne r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
1920 @ CHECK: sxth   r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
1921 @ CHECK: sxth   r3, r8, ror #8
1922                                         @ encoding: [0x78,0x34,0xbf,0xe6]
1923 @ CHECK: sxthle r2, r2, ror #16
1924                                         @ encoding: [0x72,0x28,0xbf,0xd6]
1925 @ CHECK: sxth   r9, r3, ror #24
1926                                         @ encoding: [0x73,0x9c,0xbf,0xe6]
1927
1928
1929 @------------------------------------------------------------------------------
1930 @ FIXME: TBB/TBH
1931 @------------------------------------------------------------------------------
1932
1933
1934 @------------------------------------------------------------------------------
1935 @ TEQ
1936 @------------------------------------------------------------------------------
1937         teq r5, #0xf000
1938         teq r4, r5
1939         teq r4, r5, lsl #5
1940         teq r4, r5, lsr #5
1941         teq r4, r5, lsr #5
1942         teq r4, r5, asr #5
1943         teq r4, r5, ror #5
1944         teq r6, r7, lsl r9
1945         teq r6, r7, lsr r9
1946         teq r6, r7, asr r9
1947         teq r6, r7, ror r9
1948
1949 @ CHECK: teq    r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
1950 @ CHECK: teq    r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
1951 @ CHECK: teq    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
1952 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
1953 @ CHECK: teq    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
1954 @ CHECK: teq    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
1955 @ CHECK: teq    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
1956 @ CHECK: teq    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
1957 @ CHECK: teq    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
1958 @ CHECK: teq    r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
1959 @ CHECK: teq    r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
1960
1961
1962 @------------------------------------------------------------------------------
1963 @ TST
1964 @------------------------------------------------------------------------------
1965         tst r5, #0xf000
1966         tst r4, r5
1967         tst r4, r5, lsl #5
1968         tst r4, r5, lsr #5
1969         tst r4, r5, lsr #5
1970         tst r4, r5, asr #5
1971         tst r4, r5, ror #5
1972         tst r6, r7, lsl r9
1973         tst r6, r7, lsr r9
1974         tst r6, r7, asr r9
1975         tst r6, r7, ror r9
1976
1977 @ CHECK: tst    r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
1978 @ CHECK: tst    r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
1979 @ CHECK: tst    r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
1980 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
1981 @ CHECK: tst    r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
1982 @ CHECK: tst    r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
1983 @ CHECK: tst    r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
1984 @ CHECK: tst    r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
1985 @ CHECK: tst    r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
1986 @ CHECK: tst    r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
1987 @ CHECK: tst    r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
1988
1989
1990 @------------------------------------------------------------------------------
1991 @ UADD16/UADD8
1992 @------------------------------------------------------------------------------
1993         uadd16 r1, r2, r3
1994         uadd16gt r1, r2, r3
1995         uadd8 r1, r2, r3
1996         uadd8le r1, r2, r3
1997
1998 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
1999 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
2000 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
2001 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
2002
2003
2004 @------------------------------------------------------------------------------
2005 @ UASX
2006 @------------------------------------------------------------------------------
2007         uasx r9, r12, r0
2008         uasxeq r9, r12, r0
2009
2010 @ CHECK: uasx   r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
2011 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
2012
2013
2014 @------------------------------------------------------------------------------
2015 @ UBFX
2016 @------------------------------------------------------------------------------
2017         ubfx r4, r5, #16, #1
2018         ubfxgt r4, r5, #16, #16
2019
2020 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
2021 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
2022
2023
2024 @------------------------------------------------------------------------------
2025 @ UHADD16/UHADD8
2026 @------------------------------------------------------------------------------
2027         uhadd16 r4, r8, r2
2028         uhadd16gt r4, r8, r2
2029         uhadd8 r4, r8, r2
2030         uhadd8gt r4, r8, r2
2031
2032 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
2033 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
2034 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
2035 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
2036
2037
2038 @------------------------------------------------------------------------------
2039 @ UHASX
2040 @------------------------------------------------------------------------------
2041         uhasx r4, r8, r2
2042         uhasxgt r4, r8, r2
2043
2044 @ CHECK: uhasx  r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
2045 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
2046
2047