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