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