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