basic-thumb2-instructions.s revision e4e4a93e9ec6040b6466bf067d5e02533471f093
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 77@ CHECK: itet eq @ encoding: [0x0a,0xbf] 78@ CHECK: addeq r1, r2, #4 @ encoding: [0x11,0x1d] 79@ CHECK: addwne r5, r3, #1023 @ encoding: [0x03,0xf2,0xff,0x35] 80@ CHECK: addweq r4, r5, #293 @ encoding: [0x05,0xf2,0x25,0x14] 81@ CHECK: add.w r2, sp, #1024 @ encoding: [0x0d,0xf5,0x80,0x62] 82@ CHECK: add.w r2, r8, #65280 @ encoding: [0x08,0xf5,0x7f,0x42] 83@ CHECK: addw r2, r3, #257 @ encoding: [0x03,0xf2,0x01,0x12] 84@ CHECK: addw r2, r3, #257 @ encoding: [0x03,0xf2,0x01,0x12] 85@ CHECK: add.w r12, r6, #256 @ encoding: [0x06,0xf5,0x80,0x7c] 86@ CHECK: addw r12, r6, #256 @ encoding: [0x06,0xf2,0x00,0x1c] 87@ CHECK: adds.w r1, r2, #496 @ encoding: [0x12,0xf5,0xf8,0x71] 88 89 90@------------------------------------------------------------------------------ 91@ ADD (register) 92@------------------------------------------------------------------------------ 93 add r1, r2, r8 94 add r5, r9, r2, asr #32 95 adds r7, r3, r1, lsl #31 96 adds.w r0, r3, r6, lsr #25 97 add.w r4, r8, r1, ror #12 98 99@ CHECK: add.w r1, r2, r8 @ encoding: [0x02,0xeb,0x08,0x01] 100@ CHECK: add.w r5, r9, r2, asr #32 @ encoding: [0x09,0xeb,0x22,0x05] 101@ CHECK: adds.w r7, r3, r1, lsl #31 @ encoding: [0x13,0xeb,0xc1,0x77] 102@ CHECK: adds.w r0, r3, r6, lsr #25 @ encoding: [0x13,0xeb,0x56,0x60] 103@ CHECK: add.w r4, r8, r1, ror #12 @ encoding: [0x08,0xeb,0x31,0x34] 104 105 106@------------------------------------------------------------------------------ 107@ FIXME: ADR 108@------------------------------------------------------------------------------ 109 110 subw r11, pc, #3270 111 adr.w r11, #-826 112 113@ CHECK: subw r11, pc, #3270 @ encoding: [0xaf,0xf6,0xc6,0x4b] 114@ CHECK: adr.w r11, #-826 @ encoding: [0xaf,0xf2,0x3a,0x3b] 115 116@------------------------------------------------------------------------------ 117@ AND (immediate) 118@------------------------------------------------------------------------------ 119 and r2, r5, #0xff000 120 ands r3, r12, #0xf 121 and r1, #0xff 122 and r1, r1, #0xff 123 124@ CHECK: and r2, r5, #1044480 @ encoding: [0x05,0xf4,0x7f,0x22] 125@ CHECK: ands r3, r12, #15 @ encoding: [0x1c,0xf0,0x0f,0x03] 126@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01] 127@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01] 128 129 130@------------------------------------------------------------------------------ 131@ AND (register) 132@------------------------------------------------------------------------------ 133 and r4, r9, r8 134 and r1, r4, r8, asr #3 135 ands r2, r1, r7, lsl #1 136 ands.w r4, r5, r2, lsr #20 137 and.w r9, r12, r1, ror #17 138 139@ CHECK: and.w r4, r9, r8 @ encoding: [0x09,0xea,0x08,0x04] 140@ CHECK: and.w r1, r4, r8, asr #3 @ encoding: [0x04,0xea,0xe8,0x01] 141@ CHECK: ands.w r2, r1, r7, lsl #1 @ encoding: [0x11,0xea,0x47,0x02] 142@ CHECK: ands.w r4, r5, r2, lsr #20 @ encoding: [0x15,0xea,0x12,0x54] 143@ CHECK: and.w r9, r12, r1, ror #17 @ encoding: [0x0c,0xea,0x71,0x49] 144 145@------------------------------------------------------------------------------ 146@ ASR (immediate) 147@------------------------------------------------------------------------------ 148 asr r2, r3, #12 149 asrs r8, r3, #32 150 asrs.w r2, r3, #1 151 asr r2, r3, #4 152 asrs r2, r12, #15 153 154 asr r3, #19 155 asrs r8, #2 156 asrs.w r7, #5 157 asr.w r12, #21 158 159@ CHECK: asr.w r2, r3, #12 @ encoding: [0x4f,0xea,0x23,0x32] 160@ CHECK: asrs.w r8, r3, #32 @ encoding: [0x5f,0xea,0x23,0x08] 161@ CHECK: asrs.w r2, r3, #1 @ encoding: [0x5f,0xea,0x63,0x02] 162@ CHECK: asr.w r2, r3, #4 @ encoding: [0x4f,0xea,0x23,0x12] 163@ CHECK: asrs.w r2, r12, #15 @ encoding: [0x5f,0xea,0xec,0x32] 164 165@ CHECK: asr.w r3, r3, #19 @ encoding: [0x4f,0xea,0xe3,0x43] 166@ CHECK: asrs.w r8, r8, #2 @ encoding: [0x5f,0xea,0xa8,0x08] 167@ CHECK: asrs.w r7, r7, #5 @ encoding: [0x5f,0xea,0x67,0x17] 168@ CHECK: asr.w r12, r12, #21 @ encoding: [0x4f,0xea,0x6c,0x5c] 169 170 171@------------------------------------------------------------------------------ 172@ ASR (register) 173@------------------------------------------------------------------------------ 174 asr r3, r4, r2 175 asr.w r1, r2 176 asrs r3, r4, r8 177 178@ CHECK: asr.w r3, r4, r2 @ encoding: [0x44,0xfa,0x02,0xf3] 179@ CHECK: asr.w r1, r1, r2 @ encoding: [0x41,0xfa,0x02,0xf1] 180@ CHECK: asrs.w r3, r4, r8 @ encoding: [0x54,0xfa,0x08,0xf3] 181 182 183@------------------------------------------------------------------------------ 184@ B 185@------------------------------------------------------------------------------ 186 b.w _bar 187 beq.w _bar 188 it eq 189 beq.w _bar 190 bmi.w #-183396 191 192@ CHECK: b.w _bar @ encoding: [A,0xf0'A',A,0x90'A'] 193 @ fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch 194@ CHECK: beq.w _bar @ encoding: [A,0xf0'A',A,0x80'A'] 195 @ fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch 196@ CHECK: it eq @ encoding: [0x08,0xbf] 197@ CHECK: beq.w _bar @ encoding: [A,0xf0'A',A,0x90'A'] 198 @ fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch 199@ CHECK: bmi.w #-183396 @ encoding: [0x13,0xf5,0xce,0xa9] 200 201 202@------------------------------------------------------------------------------ 203@ BFC 204@------------------------------------------------------------------------------ 205 bfc r5, #3, #17 206 it lo 207 bfccc r5, #3, #17 208 209@ CHECK: bfc r5, #3, #17 @ encoding: [0x6f,0xf3,0xd3,0x05] 210@ CHECK: it lo @ encoding: [0x38,0xbf] 211@ CHECK: bfclo r5, #3, #17 @ encoding: [0x6f,0xf3,0xd3,0x05] 212 213 214@------------------------------------------------------------------------------ 215@ BFI 216@------------------------------------------------------------------------------ 217 bfi r5, r2, #3, #17 218 it ne 219 bfine r5, r2, #3, #17 220 221@ CHECK: bfi r5, r2, #3, #17 @ encoding: [0x62,0xf3,0xd3,0x05] 222@ CHECK: it ne @ encoding: [0x18,0xbf] 223@ CHECK: bfine r5, r2, #3, #17 @ encoding: [0x62,0xf3,0xd3,0x05] 224 225 226@------------------------------------------------------------------------------ 227@ BIC 228@------------------------------------------------------------------------------ 229 bic r10, r1, #0xf 230 bic r12, r3, r6 231 bic r11, r2, r6, lsl #12 232 bic r8, r4, r1, lsr #11 233 bic r7, r5, r7, lsr #15 234 bic r6, r7, r9, asr #32 235 bic r5, r6, r8, ror #1 236 237 @ destination register is optional 238 bic r1, #0xf 239 bic r1, r1 240 bic r4, r2, lsl #31 241 bic r6, r3, lsr #12 242 bic r7, r4, lsr #7 243 bic r8, r5, asr #15 244 bic r12, r6, ror #29 245 246@ CHECK: bic r10, r1, #15 @ encoding: [0x21,0xf0,0x0f,0x0a] 247@ CHECK: bic.w r12, r3, r6 @ encoding: [0x23,0xea,0x06,0x0c] 248@ CHECK: bic.w r11, r2, r6, lsl #12 @ encoding: [0x22,0xea,0x06,0x3b] 249@ CHECK: bic.w r8, r4, r1, lsr #11 @ encoding: [0x24,0xea,0xd1,0x28] 250@ CHECK: bic.w r7, r5, r7, lsr #15 @ encoding: [0x25,0xea,0xd7,0x37] 251@ CHECK: bic.w r6, r7, r9, asr #32 @ encoding: [0x27,0xea,0x29,0x06] 252@ CHECK: bic.w r5, r6, r8, ror #1 @ encoding: [0x26,0xea,0x78,0x05] 253 254@ CHECK: bic r1, r1, #15 @ encoding: [0x21,0xf0,0x0f,0x01] 255@ CHECK: bic.w r1, r1, r1 @ encoding: [0x21,0xea,0x01,0x01] 256@ CHECK: bic.w r4, r4, r2, lsl #31 @ encoding: [0x24,0xea,0xc2,0x74] 257@ CHECK: bic.w r6, r6, r3, lsr #12 @ encoding: [0x26,0xea,0x13,0x36] 258@ CHECK: bic.w r7, r7, r4, lsr #7 @ encoding: [0x27,0xea,0xd4,0x17] 259@ CHECK: bic.w r8, r8, r5, asr #15 @ encoding: [0x28,0xea,0xe5,0x38] 260@ CHECK: bic.w r12, r12, r6, ror #29 @ encoding: [0x2c,0xea,0x76,0x7c] 261 262@------------------------------------------------------------------------------ 263@ BKPT 264@------------------------------------------------------------------------------ 265 it pl 266 bkpt #234 267 268@ CHECK: it pl @ encoding: [0x58,0xbf] 269@ CHECK: bkpt #234 @ encoding: [0xea,0xbe] 270 271@------------------------------------------------------------------------------ 272@ BXJ 273@------------------------------------------------------------------------------ 274 bxj r5 275 it ne 276 bxjne r7 277 278@ CHECK: bxj r5 @ encoding: [0xc5,0xf3,0x00,0x8f] 279@ CHECK: it ne @ encoding: [0x18,0xbf] 280@ CHECK: bxjne r7 @ encoding: [0xc7,0xf3,0x00,0x8f] 281 282 283@------------------------------------------------------------------------------ 284@ CBZ/CBNZ 285@------------------------------------------------------------------------------ 286 cbnz r7, #6 287 cbnz r7, #12 288 cbz r6, _bar 289 cbnz r6, _bar 290 291@ CHECK: cbnz r7, #6 @ encoding: [0x1f,0xb9] 292@ CHECK: cbnz r7, #12 @ encoding: [0x37,0xb9] 293@ CHECK: cbz r6, _bar @ encoding: [0x06'A',0xb1'A'] 294 @ fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb 295@ CHECK: cbnz r6, _bar @ encoding: [0x06'A',0xb9'A'] 296 @ fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb 297 298 299@------------------------------------------------------------------------------ 300@ CDP/CDP2 301@------------------------------------------------------------------------------ 302 cdp p7, #1, c1, c1, c1, #4 303 cdp2 p7, #1, c1, c1, c1, #4 304 305@ CHECK: cdp p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xee,0x81,0x17] 306@ CHECK: cdp2 p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xfe,0x81,0x17] 307 308 309@------------------------------------------------------------------------------ 310@ CLREX 311@------------------------------------------------------------------------------ 312 clrex 313 it ne 314 clrexne 315 316@ CHECK: clrex @ encoding: [0xbf,0xf3,0x2f,0x8f] 317@ CHECK: it ne @ encoding: [0x18,0xbf] 318@ CHECK: clrexne @ encoding: [0xbf,0xf3,0x2f,0x8f] 319 320 321@------------------------------------------------------------------------------ 322@ CLZ 323@------------------------------------------------------------------------------ 324 clz r1, r2 325 it eq 326 clzeq r1, r2 327 328@ CHECK: clz r1, r2 @ encoding: [0xb2,0xfa,0x82,0xf1] 329@ CHECK: it eq @ encoding: [0x08,0xbf] 330@ CHECK: clzeq r1, r2 @ encoding: [0xb2,0xfa,0x82,0xf1] 331 332 333@------------------------------------------------------------------------------ 334@ CMN 335@------------------------------------------------------------------------------ 336 cmn r1, #0xf 337 cmn r8, r6 338 cmn r1, r6, lsl #10 339 cmn r1, r6, lsr #10 340 cmn sp, r6, lsr #10 341 cmn r1, r6, asr #10 342 cmn r1, r6, ror #10 343 344@ CHECK: cmn.w r1, #15 @ encoding: [0x11,0xf1,0x0f,0x0f] 345@ CHECK: cmn.w r8, r6 @ encoding: [0x18,0xeb,0x06,0x0f] 346@ CHECK: cmn.w r1, r6, lsl #10 @ encoding: [0x11,0xeb,0x86,0x2f] 347@ CHECK: cmn.w r1, r6, lsr #10 @ encoding: [0x11,0xeb,0x96,0x2f] 348@ CHECK: cmn.w sp, r6, lsr #10 @ encoding: [0x1d,0xeb,0x96,0x2f] 349@ CHECK: cmn.w r1, r6, asr #10 @ encoding: [0x11,0xeb,0xa6,0x2f] 350@ CHECK: cmn.w r1, r6, ror #10 @ encoding: [0x11,0xeb,0xb6,0x2f] 351 352 353@------------------------------------------------------------------------------ 354@ CMP 355@------------------------------------------------------------------------------ 356 cmp r5, #0xff00 357 cmp.w r4, r12 358 cmp r9, r6, lsl #12 359 cmp r3, r7, lsr #31 360 cmp sp, r6, lsr #1 361 cmp r2, r5, asr #24 362 cmp r1, r4, ror #15 363 364@ CHECK: cmp.w r5, #65280 @ encoding: [0xb5,0xf5,0x7f,0x4f] 365@ CHECK: cmp.w r4, r12 @ encoding: [0xb4,0xeb,0x0c,0x0f] 366@ CHECK: cmp.w r9, r6, lsl #12 @ encoding: [0xb9,0xeb,0x06,0x3f] 367@ CHECK: cmp.w r3, r7, lsr #31 @ encoding: [0xb3,0xeb,0xd7,0x7f] 368@ CHECK: cmp.w sp, r6, lsr #1 @ encoding: [0xbd,0xeb,0x56,0x0f] 369@ CHECK: cmp.w r2, r5, asr #24 @ encoding: [0xb2,0xeb,0x25,0x6f] 370@ CHECK: cmp.w r1, r4, ror #15 @ encoding: [0xb1,0xeb,0xf4,0x3f] 371 372 373@------------------------------------------------------------------------------ 374@ DBG 375@------------------------------------------------------------------------------ 376 dbg #5 377 dbg #0 378 dbg #15 379 380@ CHECK: dbg #5 @ encoding: [0xaf,0xf3,0xf5,0x80] 381@ CHECK: dbg #0 @ encoding: [0xaf,0xf3,0xf0,0x80] 382@ CHECK: dbg #15 @ encoding: [0xaf,0xf3,0xff,0x80] 383 384 385@------------------------------------------------------------------------------ 386@ DMB 387@------------------------------------------------------------------------------ 388 dmb sy 389 dmb st 390 dmb sh 391 dmb ish 392 dmb shst 393 dmb ishst 394 dmb un 395 dmb nsh 396 dmb unst 397 dmb nshst 398 dmb osh 399 dmb oshst 400 dmb 401 402@ CHECK: dmb sy @ encoding: [0xbf,0xf3,0x5f,0x8f] 403@ CHECK: dmb st @ encoding: [0xbf,0xf3,0x5e,0x8f] 404@ CHECK: dmb ish @ encoding: [0xbf,0xf3,0x5b,0x8f] 405@ CHECK: dmb ish @ encoding: [0xbf,0xf3,0x5b,0x8f] 406@ CHECK: dmb ishst @ encoding: [0xbf,0xf3,0x5a,0x8f] 407@ CHECK: dmb ishst @ encoding: [0xbf,0xf3,0x5a,0x8f] 408@ CHECK: dmb nsh @ encoding: [0xbf,0xf3,0x57,0x8f] 409@ CHECK: dmb nsh @ encoding: [0xbf,0xf3,0x57,0x8f] 410@ CHECK: dmb nshst @ encoding: [0xbf,0xf3,0x56,0x8f] 411@ CHECK: dmb nshst @ encoding: [0xbf,0xf3,0x56,0x8f] 412@ CHECK: dmb osh @ encoding: [0xbf,0xf3,0x53,0x8f] 413@ CHECK: dmb oshst @ encoding: [0xbf,0xf3,0x52,0x8f] 414@ CHECK: dmb sy @ encoding: [0xbf,0xf3,0x5f,0x8f] 415 416 417@------------------------------------------------------------------------------ 418@ DSB 419@------------------------------------------------------------------------------ 420 dsb sy 421 dsb st 422 dsb sh 423 dsb ish 424 dsb shst 425 dsb ishst 426 dsb un 427 dsb nsh 428 dsb unst 429 dsb nshst 430 dsb osh 431 dsb oshst 432 dsb 433 434@ CHECK: dsb sy @ encoding: [0xbf,0xf3,0x4f,0x8f] 435@ CHECK: dsb st @ encoding: [0xbf,0xf3,0x4e,0x8f] 436@ CHECK: dsb ish @ encoding: [0xbf,0xf3,0x4b,0x8f] 437@ CHECK: dsb ish @ encoding: [0xbf,0xf3,0x4b,0x8f] 438@ CHECK: dsb ishst @ encoding: [0xbf,0xf3,0x4a,0x8f] 439@ CHECK: dsb ishst @ encoding: [0xbf,0xf3,0x4a,0x8f] 440@ CHECK: dsb nsh @ encoding: [0xbf,0xf3,0x47,0x8f] 441@ CHECK: dsb nsh @ encoding: [0xbf,0xf3,0x47,0x8f] 442@ CHECK: dsb nshst @ encoding: [0xbf,0xf3,0x46,0x8f] 443@ CHECK: dsb nshst @ encoding: [0xbf,0xf3,0x46,0x8f] 444@ CHECK: dsb osh @ encoding: [0xbf,0xf3,0x43,0x8f] 445@ CHECK: dsb oshst @ encoding: [0xbf,0xf3,0x42,0x8f] 446@ CHECK: dsb sy @ encoding: [0xbf,0xf3,0x4f,0x8f] 447 448 449@------------------------------------------------------------------------------ 450@ EOR 451@------------------------------------------------------------------------------ 452 eor r4, r5, #0xf000 453 eor r4, r5, r6 454 eor r4, r5, r6, lsl #5 455 eor r4, r5, r6, lsr #5 456 eor r4, r5, r6, lsr #5 457 eor r4, r5, r6, asr #5 458 eor r4, r5, r6, ror #5 459 460@ CHECK: eor r4, r5, #61440 @ encoding: [0x85,0xf4,0x70,0x44] 461@ CHECK: eor.w r4, r5, r6 @ encoding: [0x85,0xea,0x06,0x04] 462@ CHECK: eor.w r4, r5, r6, lsl #5 @ encoding: [0x85,0xea,0x46,0x14] 463@ CHECK: eor.w r4, r5, r6, lsr #5 @ encoding: [0x85,0xea,0x56,0x14] 464@ CHECK: eor.w r4, r5, r6, lsr #5 @ encoding: [0x85,0xea,0x56,0x14] 465@ CHECK: eor.w r4, r5, r6, asr #5 @ encoding: [0x85,0xea,0x66,0x14] 466@ CHECK: eor.w r4, r5, r6, ror #5 @ encoding: [0x85,0xea,0x76,0x14] 467 468 469@------------------------------------------------------------------------------ 470@ ISB 471@------------------------------------------------------------------------------ 472 isb sy 473 isb 474 475@ CHECK: isb sy @ encoding: [0xbf,0xf3,0x6f,0x8f] 476@ CHECK: isb sy @ encoding: [0xbf,0xf3,0x6f,0x8f] 477 478 479@------------------------------------------------------------------------------ 480@ IT 481@------------------------------------------------------------------------------ 482@ Test encodings of a few full IT blocks, not just the IT instruction 483 484 iteet eq 485 addeq r0, r1, r2 486 nopne 487 subne r5, r6, r7 488 addeq r1, r2, #4 489 490@ CHECK: iteet eq @ encoding: [0x0d,0xbf] 491@ CHECK: addeq r0, r1, r2 @ encoding: [0x88,0x18] 492@ CHECK: nopne @ encoding: [0x00,0xbf] 493@ CHECK: subne r5, r6, r7 @ encoding: [0xf5,0x1b] 494@ CHECK: addeq r1, r2, #4 @ encoding: [0x11,0x1d] 495 496 497@------------------------------------------------------------------------------ 498@ LDMIA 499@------------------------------------------------------------------------------ 500 ldmia.w r4, {r4, r5, r8, r9} 501 ldmia.w r4, {r5, r6} 502 ldmia.w r5!, {r3, r8} 503 ldm.w r4, {r4, r5, r8, r9} 504 ldm.w r4, {r5, r6} 505 ldm.w r5!, {r3, r8} 506 ldm.w r5!, {r1, r2} 507 ldm.w r2, {r1, r2} 508 509 ldmia r4, {r4, r5, r8, r9} 510 ldmia r4, {r5, r6} 511 ldmia r5!, {r3, r8} 512 ldm r4, {r4, r5, r8, r9} 513 ldm r4, {r5, r6} 514 ldm r5!, {r3, r8} 515 ldmfd r5!, {r3, r8} 516 517@ CHECK: ldm.w r4, {r4, r5, r8, r9} @ encoding: [0x94,0xe8,0x30,0x03] 518@ CHECK: ldm.w r4, {r5, r6} @ encoding: [0x94,0xe8,0x60,0x00] 519@ CHECK: ldm.w r5!, {r3, r8} @ encoding: [0xb5,0xe8,0x08,0x01] 520@ CHECK: ldm.w r4, {r4, r5, r8, r9} @ encoding: [0x94,0xe8,0x30,0x03] 521@ CHECK: ldm.w r4, {r5, r6} @ encoding: [0x94,0xe8,0x60,0x00] 522@ CHECK: ldm.w r5!, {r3, r8} @ encoding: [0xb5,0xe8,0x08,0x01] 523@ CHECK: ldm.w r5!, {r1, r2} @ encoding: [0xb5,0xe8,0x06,0x00] 524@ CHECK: ldm.w r2, {r1, r2} @ encoding: [0x92,0xe8,0x06,0x00] 525 526@ CHECK: ldm.w r4, {r4, r5, r8, r9} @ encoding: [0x94,0xe8,0x30,0x03] 527@ CHECK: ldm.w r4, {r5, r6} @ encoding: [0x94,0xe8,0x60,0x00] 528@ CHECK: ldm.w r5!, {r3, r8} @ encoding: [0xb5,0xe8,0x08,0x01] 529@ CHECK: ldm.w r4, {r4, r5, r8, r9} @ encoding: [0x94,0xe8,0x30,0x03] 530@ CHECK: ldm.w r4, {r5, r6} @ encoding: [0x94,0xe8,0x60,0x00] 531@ CHECK: ldm.w r5!, {r3, r8} @ encoding: [0xb5,0xe8,0x08,0x01] 532@ CHECK: ldm.w r5!, {r3, r8} @ encoding: [0xb5,0xe8,0x08,0x01] 533 534 535@------------------------------------------------------------------------------ 536@ LDMDB 537@------------------------------------------------------------------------------ 538 ldmdb r4, {r4, r5, r8, r9} 539 ldmdb r4, {r5, r6} 540 ldmdb r5!, {r3, r8} 541 ldmea r5!, {r3, r8} 542 543@ CHECK: ldmdb r4, {r4, r5, r8, r9} @ encoding: [0x14,0xe9,0x30,0x03] 544@ CHECK: ldmdb r4, {r5, r6} @ encoding: [0x14,0xe9,0x60,0x00] 545@ CHECK: ldmdb r5!, {r3, r8} @ encoding: [0x35,0xe9,0x08,0x01] 546@ CHECK: ldmdb r5!, {r3, r8} @ encoding: [0x35,0xe9,0x08,0x01] 547 548 549@------------------------------------------------------------------------------ 550@ LDR(immediate) 551@------------------------------------------------------------------------------ 552 ldr r5, [r5, #-4] 553 ldr r5, [r6, #32] 554 ldr r5, [r6, #33] 555 ldr r5, [r6, #257] 556 ldr.w pc, [r7, #257] 557 558@ CHECK: ldr r5, [r5, #-4] @ encoding: [0x55,0xf8,0x04,0x5c] 559@ CHECK: ldr r5, [r6, #32] @ encoding: [0x35,0x6a] 560@ CHECK: ldr.w r5, [r6, #33] @ encoding: [0xd6,0xf8,0x21,0x50] 561@ CHECK: ldr.w r5, [r6, #257] @ encoding: [0xd6,0xf8,0x01,0x51] 562@ CHECK: ldr.w pc, [r7, #257] @ encoding: [0xd7,0xf8,0x01,0xf1] 563 564 565@------------------------------------------------------------------------------ 566@ LDR(literal) 567@------------------------------------------------------------------------------ 568 ldr.w r5, _foo 569 570@ CHECK: ldr.w r5, _foo @ encoding: [0x5f'A',0xf8'A',A,0x50'A'] 571 @ fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12 572 573 574@------------------------------------------------------------------------------ 575@ LDR(register) 576@------------------------------------------------------------------------------ 577 ldr r1, [r8, r1] 578 ldr.w r4, [r5, r2] 579 ldr r6, [r0, r2, lsl #3] 580 ldr r8, [r8, r2, lsl #2] 581 ldr r7, [sp, r2, lsl #1] 582 ldr r7, [sp, r2, lsl #0] 583 ldr r2, [r4, #255]! 584 ldr r8, [sp, #4]! 585 ldr lr, [sp, #-4]! 586 ldr r2, [r4], #255 587 ldr r8, [sp], #4 588 ldr lr, [sp], #-4 589 590@ CHECK: ldr.w r1, [r8, r1] @ encoding: [0x58,0xf8,0x01,0x10] 591@ CHECK: ldr.w r4, [r5, r2] @ encoding: [0x55,0xf8,0x02,0x40] 592@ CHECK: ldr.w r6, [r0, r2, lsl #3] @ encoding: [0x50,0xf8,0x32,0x60] 593@ CHECK: ldr.w r8, [r8, r2, lsl #2] @ encoding: [0x58,0xf8,0x22,0x80] 594@ CHECK: ldr.w r7, [sp, r2, lsl #1] @ encoding: [0x5d,0xf8,0x12,0x70] 595@ CHECK: ldr.w r7, [sp, r2] @ encoding: [0x5d,0xf8,0x02,0x70] 596@ CHECK: ldr r2, [r4, #255]! @ encoding: [0x54,0xf8,0xff,0x2f] 597@ CHECK: ldr r8, [sp, #4]! @ encoding: [0x5d,0xf8,0x04,0x8f] 598@ CHECK: ldr lr, [sp, #-4]! @ encoding: [0x5d,0xf8,0x04,0xed] 599@ CHECK: ldr r2, [r4], #255 @ encoding: [0x54,0xf8,0xff,0x2b] 600@ CHECK: ldr r8, [sp], #4 @ encoding: [0x5d,0xf8,0x04,0x8b] 601@ CHECK: ldr lr, [sp], #-4 @ encoding: [0x5d,0xf8,0x04,0xe9] 602 603 604@------------------------------------------------------------------------------ 605@ LDRB(immediate) 606@------------------------------------------------------------------------------ 607 ldrb r5, [r5, #-4] 608 ldrb r5, [r6, #32] 609 ldrb r5, [r6, #33] 610 ldrb r5, [r6, #257] 611 ldrb.w lr, [r7, #257] 612 613@ CHECK: ldrb r5, [r5, #-4] @ encoding: [0x15,0xf8,0x04,0x5c] 614@ CHECK: ldrb.w r5, [r6, #32] @ encoding: [0x96,0xf8,0x20,0x50] 615@ CHECK: ldrb.w r5, [r6, #33] @ encoding: [0x96,0xf8,0x21,0x50] 616@ CHECK: ldrb.w r5, [r6, #257] @ encoding: [0x96,0xf8,0x01,0x51] 617@ CHECK: ldrb.w lr, [r7, #257] @ encoding: [0x97,0xf8,0x01,0xe1] 618 619 620@------------------------------------------------------------------------------ 621@ LDRB(register) 622@------------------------------------------------------------------------------ 623 ldrb r1, [r8, r1] 624 ldrb.w r4, [r5, r2] 625 ldrb r6, [r0, r2, lsl #3] 626 ldrb r8, [r8, r2, lsl #2] 627 ldrb r7, [sp, r2, lsl #1] 628 ldrb r7, [sp, r2, lsl #0] 629 ldrb r5, [r8, #255]! 630 ldrb r2, [r5, #4]! 631 ldrb r1, [r4, #-4]! 632 ldrb lr, [r3], #255 633 ldrb r9, [r2], #4 634 ldrb r3, [sp], #-4 635 636@ CHECK: ldrb.w r1, [r8, r1] @ encoding: [0x18,0xf8,0x01,0x10] 637@ CHECK: ldrb.w r4, [r5, r2] @ encoding: [0x15,0xf8,0x02,0x40] 638@ CHECK: ldrb.w r6, [r0, r2, lsl #3] @ encoding: [0x10,0xf8,0x32,0x60] 639@ CHECK: ldrb.w r8, [r8, r2, lsl #2] @ encoding: [0x18,0xf8,0x22,0x80] 640@ CHECK: ldrb.w r7, [sp, r2, lsl #1] @ encoding: [0x1d,0xf8,0x12,0x70] 641@ CHECK: ldrb.w r7, [sp, r2] @ encoding: [0x1d,0xf8,0x02,0x70] 642@ CHECK: ldrb r5, [r8, #255]! @ encoding: [0x18,0xf8,0xff,0x5f] 643@ CHECK: ldrb r2, [r5, #4]! @ encoding: [0x15,0xf8,0x04,0x2f] 644@ CHECK: ldrb r1, [r4, #-4]! @ encoding: [0x14,0xf8,0x04,0x1d] 645@ CHECK: ldrb lr, [r3], #255 @ encoding: [0x13,0xf8,0xff,0xeb] 646@ CHECK: ldrb r9, [r2], #4 @ encoding: [0x12,0xf8,0x04,0x9b] 647@ CHECK: ldrb r3, [sp], #-4 @ encoding: [0x1d,0xf8,0x04,0x39] 648 649 650@------------------------------------------------------------------------------ 651@ LDRBT 652@------------------------------------------------------------------------------ 653 ldrbt r1, [r2] 654 ldrbt r1, [r8, #0] 655 ldrbt r1, [r8, #3] 656 ldrbt r1, [r8, #255] 657 658@ CHECK: ldrbt r1, [r2] @ encoding: [0x12,0xf8,0x00,0x1e] 659@ CHECK: ldrbt r1, [r8] @ encoding: [0x18,0xf8,0x00,0x1e] 660@ CHECK: ldrbt r1, [r8, #3] @ encoding: [0x18,0xf8,0x03,0x1e] 661@ CHECK: ldrbt r1, [r8, #255] @ encoding: [0x18,0xf8,0xff,0x1e] 662 663 664@------------------------------------------------------------------------------ 665@ LDRD(immediate) 666@------------------------------------------------------------------------------ 667 ldrd r3, r5, [r6, #24] 668 ldrd r3, r5, [r6, #24]! 669 ldrd r3, r5, [r6], #4 670 ldrd r3, r5, [r6], #-8 671 ldrd r3, r5, [r6] 672 ldrd r8, r1, [r3, #0] 673 674@ CHECK: ldrd r3, r5, [r6, #24] @ encoding: [0xd6,0xe9,0x06,0x35] 675@ CHECK: ldrd r3, r5, [r6, #24]! @ encoding: [0xf6,0xe9,0x06,0x35] 676@ CHECK: ldrd r3, r5, [r6], #4 @ encoding: [0xf6,0xe8,0x01,0x35] 677@ CHECK: ldrd r3, r5, [r6], #-8 @ encoding: [0x76,0xe8,0x02,0x35] 678@ CHECK: ldrd r3, r5, [r6] @ encoding: [0xd6,0xe9,0x00,0x35] 679@ CHECK: ldrd r8, r1, [r3] @ encoding: [0xd3,0xe9,0x00,0x81] 680 681 682@------------------------------------------------------------------------------ 683@ FIXME: LDRD(literal) 684@------------------------------------------------------------------------------ 685 686 687@------------------------------------------------------------------------------ 688@ LDREX/LDREXB/LDREXH/LDREXD 689@------------------------------------------------------------------------------ 690 ldrex r1, [r4] 691 ldrex r8, [r4, #0] 692 ldrex r2, [sp, #128] 693 ldrexb r5, [r7] 694 ldrexh r9, [r12] 695 ldrexd r9, r3, [r4] 696 697@ CHECK: ldrex r1, [r4] @ encoding: [0x54,0xe8,0x00,0x1f] 698@ CHECK: ldrex r8, [r4] @ encoding: [0x54,0xe8,0x00,0x8f] 699@ CHECK: ldrex r2, [sp, #128] @ encoding: [0x5d,0xe8,0x20,0x2f] 700@ CHECK: ldrexb r5, [r7] @ encoding: [0xd7,0xe8,0x4f,0x5f] 701@ CHECK: ldrexh r9, [r12] @ encoding: [0xdc,0xe8,0x5f,0x9f] 702@ CHECK: ldrexd r9, r3, [r4] @ encoding: [0xd4,0xe8,0x7f,0x93] 703 704 705@------------------------------------------------------------------------------ 706@ LDRH(immediate) 707@------------------------------------------------------------------------------ 708 ldrh r5, [r5, #-4] 709 ldrh r5, [r6, #32] 710 ldrh r5, [r6, #33] 711 ldrh r5, [r6, #257] 712 ldrh.w lr, [r7, #257] 713 714@ CHECK: ldrh r5, [r5, #-4] @ encoding: [0x35,0xf8,0x04,0x5c] 715@ CHECK: ldrh r5, [r6, #32] @ encoding: [0x35,0x8c] 716@ CHECK: ldrh.w r5, [r6, #33] @ encoding: [0xb6,0xf8,0x21,0x50] 717@ CHECK: ldrh.w r5, [r6, #257] @ encoding: [0xb6,0xf8,0x01,0x51] 718@ CHECK: ldrh.w lr, [r7, #257] @ encoding: [0xb7,0xf8,0x01,0xe1] 719 720 721@------------------------------------------------------------------------------ 722@ LDRH(register) 723@------------------------------------------------------------------------------ 724 ldrh r1, [r8, r1] 725 ldrh.w r4, [r5, r2] 726 ldrh r6, [r0, r2, lsl #3] 727 ldrh r8, [r8, r2, lsl #2] 728 ldrh r7, [sp, r2, lsl #1] 729 ldrh r7, [sp, r2, lsl #0] 730 ldrh r5, [r8, #255]! 731 ldrh r2, [r5, #4]! 732 ldrh r1, [r4, #-4]! 733 ldrh lr, [r3], #255 734 ldrh r9, [r2], #4 735 ldrh r3, [sp], #-4 736 737@ CHECK: ldrh.w r1, [r8, r1] @ encoding: [0x38,0xf8,0x01,0x10] 738@ CHECK: ldrh.w r4, [r5, r2] @ encoding: [0x35,0xf8,0x02,0x40] 739@ CHECK: ldrh.w r6, [r0, r2, lsl #3] @ encoding: [0x30,0xf8,0x32,0x60] 740@ CHECK: ldrh.w r8, [r8, r2, lsl #2] @ encoding: [0x38,0xf8,0x22,0x80] 741@ CHECK: ldrh.w r7, [sp, r2, lsl #1] @ encoding: [0x3d,0xf8,0x12,0x70] 742@ CHECK: ldrh.w r7, [sp, r2] @ encoding: [0x3d,0xf8,0x02,0x70] 743@ CHECK: ldrh r5, [r8, #255]! @ encoding: [0x38,0xf8,0xff,0x5f] 744@ CHECK: ldrh r2, [r5, #4]! @ encoding: [0x35,0xf8,0x04,0x2f] 745@ CHECK: ldrh r1, [r4, #-4]! @ encoding: [0x34,0xf8,0x04,0x1d] 746@ CHECK: ldrh lr, [r3], #255 @ encoding: [0x33,0xf8,0xff,0xeb] 747@ CHECK: ldrh r9, [r2], #4 @ encoding: [0x32,0xf8,0x04,0x9b] 748@ CHECK: ldrh r3, [sp], #-4 @ encoding: [0x3d,0xf8,0x04,0x39] 749 750 751@------------------------------------------------------------------------------ 752@ LDRH(literal) 753@------------------------------------------------------------------------------ 754 ldrh r5, _bar 755 756@ CHECK: ldrh.w r5, _bar @ encoding: [0xbf'A',0xf8'A',A,0x50'A'] 757@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12 758 759 760@------------------------------------------------------------------------------ 761@ LDRSB(immediate) 762@------------------------------------------------------------------------------ 763 ldrsb r5, [r5, #-4] 764 ldrsb r5, [r6, #32] 765 ldrsb r5, [r6, #33] 766 ldrsb r5, [r6, #257] 767 ldrsb.w lr, [r7, #257] 768 769@ CHECK: ldrsb r5, [r5, #-4] @ encoding: [0x15,0xf9,0x04,0x5c] 770@ CHECK: ldrsb.w r5, [r6, #32] @ encoding: [0x96,0xf9,0x20,0x50] 771@ CHECK: ldrsb.w r5, [r6, #33] @ encoding: [0x96,0xf9,0x21,0x50] 772@ CHECK: ldrsb.w r5, [r6, #257] @ encoding: [0x96,0xf9,0x01,0x51] 773@ CHECK: ldrsb.w lr, [r7, #257] @ encoding: [0x97,0xf9,0x01,0xe1] 774 775 776@------------------------------------------------------------------------------ 777@ LDRSB(register) 778@------------------------------------------------------------------------------ 779 ldrsb r1, [r8, r1] 780 ldrsb.w r4, [r5, r2] 781 ldrsb r6, [r0, r2, lsl #3] 782 ldrsb r8, [r8, r2, lsl #2] 783 ldrsb r7, [sp, r2, lsl #1] 784 ldrsb r7, [sp, r2, lsl #0] 785 ldrsb r5, [r8, #255]! 786 ldrsb r2, [r5, #4]! 787 ldrsb r1, [r4, #-4]! 788 ldrsb lr, [r3], #255 789 ldrsb r9, [r2], #4 790 ldrsb r3, [sp], #-4 791 792@ CHECK: ldrsb.w r1, [r8, r1] @ encoding: [0x18,0xf9,0x01,0x10] 793@ CHECK: ldrsb.w r4, [r5, r2] @ encoding: [0x15,0xf9,0x02,0x40] 794@ CHECK: ldrsb.w r6, [r0, r2, lsl #3] @ encoding: [0x10,0xf9,0x32,0x60] 795@ CHECK: ldrsb.w r8, [r8, r2, lsl #2] @ encoding: [0x18,0xf9,0x22,0x80] 796@ CHECK: ldrsb.w r7, [sp, r2, lsl #1] @ encoding: [0x1d,0xf9,0x12,0x70] 797@ CHECK: ldrsb.w r7, [sp, r2] @ encoding: [0x1d,0xf9,0x02,0x70] 798@ CHECK: ldrsb r5, [r8, #255]! @ encoding: [0x18,0xf9,0xff,0x5f] 799@ CHECK: ldrsb r2, [r5, #4]! @ encoding: [0x15,0xf9,0x04,0x2f] 800@ CHECK: ldrsb r1, [r4, #-4]! @ encoding: [0x14,0xf9,0x04,0x1d] 801@ CHECK: ldrsb lr, [r3], #255 @ encoding: [0x13,0xf9,0xff,0xeb] 802@ CHECK: ldrsb r9, [r2], #4 @ encoding: [0x12,0xf9,0x04,0x9b] 803@ CHECK: ldrsb r3, [sp], #-4 @ encoding: [0x1d,0xf9,0x04,0x39] 804 805 806@------------------------------------------------------------------------------ 807@ LDRSB(literal) 808@------------------------------------------------------------------------------ 809 ldrsb r5, _bar 810 811@ CHECK: ldrsb.w r5, _bar @ encoding: [0x9f'A',0xf9'A',A,0x50'A'] 812@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12 813 814 815@------------------------------------------------------------------------------ 816@ LDRSBT 817@------------------------------------------------------------------------------ 818 ldrsbt r1, [r2] 819 ldrsbt r1, [r8, #0] 820 ldrsbt r1, [r8, #3] 821 ldrsbt r1, [r8, #255] 822 823@ CHECK: ldrsbt r1, [r2] @ encoding: [0x12,0xf9,0x00,0x1e] 824@ CHECK: ldrsbt r1, [r8] @ encoding: [0x18,0xf9,0x00,0x1e] 825@ CHECK: ldrsbt r1, [r8, #3] @ encoding: [0x18,0xf9,0x03,0x1e] 826@ CHECK: ldrsbt r1, [r8, #255] @ encoding: [0x18,0xf9,0xff,0x1e] 827 828 829@------------------------------------------------------------------------------ 830@ LDRSH(immediate) 831@------------------------------------------------------------------------------ 832 ldrsh r5, [r5, #-4] 833 ldrsh r5, [r6, #32] 834 ldrsh r5, [r6, #33] 835 ldrsh r5, [r6, #257] 836 ldrsh.w lr, [r7, #257] 837 838@ CHECK: ldrsh r5, [r5, #-4] @ encoding: [0x35,0xf9,0x04,0x5c] 839@ CHECK: ldrsh.w r5, [r6, #32] @ encoding: [0xb6,0xf9,0x20,0x50] 840@ CHECK: ldrsh.w r5, [r6, #33] @ encoding: [0xb6,0xf9,0x21,0x50] 841@ CHECK: ldrsh.w r5, [r6, #257] @ encoding: [0xb6,0xf9,0x01,0x51] 842@ CHECK: ldrsh.w lr, [r7, #257] @ encoding: [0xb7,0xf9,0x01,0xe1] 843 844 845@------------------------------------------------------------------------------ 846@ LDRSH(register) 847@------------------------------------------------------------------------------ 848 ldrsh r1, [r8, r1] 849 ldrsh.w r4, [r5, r2] 850 ldrsh r6, [r0, r2, lsl #3] 851 ldrsh r8, [r8, r2, lsl #2] 852 ldrsh r7, [sp, r2, lsl #1] 853 ldrsh r7, [sp, r2, lsl #0] 854 ldrsh r5, [r8, #255]! 855 ldrsh r2, [r5, #4]! 856 ldrsh r1, [r4, #-4]! 857 ldrsh lr, [r3], #255 858 ldrsh r9, [r2], #4 859 ldrsh r3, [sp], #-4 860 861@ CHECK: ldrsh.w r1, [r8, r1] @ encoding: [0x38,0xf9,0x01,0x10] 862@ CHECK: ldrsh.w r4, [r5, r2] @ encoding: [0x35,0xf9,0x02,0x40] 863@ CHECK: ldrsh.w r6, [r0, r2, lsl #3] @ encoding: [0x30,0xf9,0x32,0x60] 864@ CHECK: ldrsh.w r8, [r8, r2, lsl #2] @ encoding: [0x38,0xf9,0x22,0x80] 865@ CHECK: ldrsh.w r7, [sp, r2, lsl #1] @ encoding: [0x3d,0xf9,0x12,0x70] 866@ CHECK: ldrsh.w r7, [sp, r2] @ encoding: [0x3d,0xf9,0x02,0x70] 867@ CHECK: ldrsh r5, [r8, #255]! @ encoding: [0x38,0xf9,0xff,0x5f] 868@ CHECK: ldrsh r2, [r5, #4]! @ encoding: [0x35,0xf9,0x04,0x2f] 869@ CHECK: ldrsh r1, [r4, #-4]! @ encoding: [0x34,0xf9,0x04,0x1d] 870@ CHECK: ldrsh lr, [r3], #255 @ encoding: [0x33,0xf9,0xff,0xeb] 871@ CHECK: ldrsh r9, [r2], #4 @ encoding: [0x32,0xf9,0x04,0x9b] 872@ CHECK: ldrsh r3, [sp], #-4 @ encoding: [0x3d,0xf9,0x04,0x39] 873 874 875@------------------------------------------------------------------------------ 876@ LDRSH(literal) 877@------------------------------------------------------------------------------ 878 ldrsh r5, _bar 879 ldrsh.w r4, #1435 880 881@ CHECK: ldrsh.w r5, _bar @ encoding: [0xbf'A',0xf9'A',A,0x50'A'] 882@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12 883@ CHECK: ldrsh.w r4, #1435 @ encoding: [0x3f,0xf9,0x9b,0x45] 884 885@------------------------------------------------------------------------------ 886@ LDRSHT 887@------------------------------------------------------------------------------ 888 ldrsht r1, [r2] 889 ldrsht r1, [r8, #0] 890 ldrsht r1, [r8, #3] 891 ldrsht r1, [r8, #255] 892 893@ CHECK: ldrsht r1, [r2] @ encoding: [0x32,0xf9,0x00,0x1e] 894@ CHECK: ldrsht r1, [r8] @ encoding: [0x38,0xf9,0x00,0x1e] 895@ CHECK: ldrsht r1, [r8, #3] @ encoding: [0x38,0xf9,0x03,0x1e] 896@ CHECK: ldrsht r1, [r8, #255] @ encoding: [0x38,0xf9,0xff,0x1e] 897 898 899@------------------------------------------------------------------------------ 900@ LDRT 901@------------------------------------------------------------------------------ 902 ldrt r1, [r2] 903 ldrt r2, [r6, #0] 904 ldrt r3, [r7, #3] 905 ldrt r4, [r9, #255] 906 907@ CHECK: ldrt r1, [r2] @ encoding: [0x52,0xf8,0x00,0x1e] 908@ CHECK: ldrt r2, [r6] @ encoding: [0x56,0xf8,0x00,0x2e] 909@ CHECK: ldrt r3, [r7, #3] @ encoding: [0x57,0xf8,0x03,0x3e] 910@ CHECK: ldrt r4, [r9, #255] @ encoding: [0x59,0xf8,0xff,0x4e] 911 912 913@------------------------------------------------------------------------------ 914@ LSL (immediate) 915@------------------------------------------------------------------------------ 916 lsl r2, r3, #12 917 lsls r8, r3, #31 918 lsls.w r2, r3, #1 919 lsl r2, r3, #4 920 lsls r2, r12, #15 921 922 lsl r3, #19 923 lsls r8, #2 924 lsls.w r7, #5 925 lsl.w r12, #21 926 927@ CHECK: lsl.w r2, r3, #12 @ encoding: [0x4f,0xea,0x03,0x32] 928@ CHECK: lsls.w r8, r3, #31 @ encoding: [0x5f,0xea,0xc3,0x78] 929@ CHECK: lsls.w r2, r3, #1 @ encoding: [0x5f,0xea,0x43,0x02] 930@ CHECK: lsl.w r2, r3, #4 @ encoding: [0x4f,0xea,0x03,0x12] 931@ CHECK: lsls.w r2, r12, #15 @ encoding: [0x5f,0xea,0xcc,0x32] 932 933@ CHECK: lsl.w r3, r3, #19 @ encoding: [0x4f,0xea,0xc3,0x43] 934@ CHECK: lsls.w r8, r8, #2 @ encoding: [0x5f,0xea,0x88,0x08] 935@ CHECK: lsls.w r7, r7, #5 @ encoding: [0x5f,0xea,0x47,0x17] 936@ CHECK: lsl.w r12, r12, #21 @ encoding: [0x4f,0xea,0x4c,0x5c] 937 938 939@------------------------------------------------------------------------------ 940@ LSL (register) 941@------------------------------------------------------------------------------ 942 lsl r3, r4, r2 943 lsl.w r1, r2 944 lsls r3, r4, r8 945 946@ CHECK: lsl.w r3, r4, r2 @ encoding: [0x04,0xfa,0x02,0xf3] 947@ CHECK: lsl.w r1, r1, r2 @ encoding: [0x01,0xfa,0x02,0xf1] 948@ CHECK: lsls.w r3, r4, r8 @ encoding: [0x14,0xfa,0x08,0xf3] 949 950 951@------------------------------------------------------------------------------ 952@ LSR (immediate) 953@------------------------------------------------------------------------------ 954 lsr r2, r3, #12 955 lsrs r8, r3, #32 956 lsrs.w r2, r3, #1 957 lsr r2, r3, #4 958 lsrs r2, r12, #15 959 960 lsr r3, #19 961 lsrs r8, #2 962 lsrs.w r7, #5 963 lsr.w r12, #21 964 965@ CHECK: lsr.w r2, r3, #12 @ encoding: [0x4f,0xea,0x13,0x32] 966@ CHECK: lsrs.w r8, r3, #32 @ encoding: [0x5f,0xea,0x13,0x08] 967@ CHECK: lsrs.w r2, r3, #1 @ encoding: [0x5f,0xea,0x53,0x02] 968@ CHECK: lsr.w r2, r3, #4 @ encoding: [0x4f,0xea,0x13,0x12] 969@ CHECK: lsrs.w r2, r12, #15 @ encoding: [0x5f,0xea,0xdc,0x32] 970 971@ CHECK: lsr.w r3, r3, #19 @ encoding: [0x4f,0xea,0xd3,0x43] 972@ CHECK: lsrs.w r8, r8, #2 @ encoding: [0x5f,0xea,0x98,0x08] 973@ CHECK: lsrs.w r7, r7, #5 @ encoding: [0x5f,0xea,0x57,0x17] 974@ CHECK: lsr.w r12, r12, #21 @ encoding: [0x4f,0xea,0x5c,0x5c] 975 976 977@------------------------------------------------------------------------------ 978@ LSR (register) 979@------------------------------------------------------------------------------ 980 lsr r3, r4, r2 981 lsr.w r1, r2 982 lsrs r3, r4, r8 983 984@ CHECK: lsr.w r3, r4, r2 @ encoding: [0x24,0xfa,0x02,0xf3] 985@ CHECK: lsr.w r1, r1, r2 @ encoding: [0x21,0xfa,0x02,0xf1] 986@ CHECK: lsrs.w r3, r4, r8 @ encoding: [0x34,0xfa,0x08,0xf3] 987 988@------------------------------------------------------------------------------ 989@ MCR/MCR2 990@------------------------------------------------------------------------------ 991 mcr p7, #1, r5, c1, c1, #4 992 mcr2 p7, #1, r5, c1, c1, #4 993 994@ CHECK: mcr p7, #1, r5, c1, c1, #4 @ encoding: [0x21,0xee,0x91,0x57] 995@ CHECK: mcr2 p7, #1, r5, c1, c1, #4 @ encoding: [0x21,0xfe,0x91,0x57] 996 997 998@------------------------------------------------------------------------------ 999@ MCRR/MCRR2 1000@------------------------------------------------------------------------------ 1001 mcrr p7, #15, r5, r4, c1 1002 mcrr2 p7, #15, r5, r4, c1 1003 1004@ CHECK: mcrr p7, #15, r5, r4, c1 @ encoding: [0x44,0xec,0xf1,0x57] 1005@ CHECK: mcrr2 p7, #15, r5, r4, c1 @ encoding: [0x44,0xfc,0xf1,0x57] 1006 1007 1008@------------------------------------------------------------------------------ 1009@ MLA/MLS 1010@------------------------------------------------------------------------------ 1011 mla r1,r2,r3,r4 1012 mls r1,r2,r3,r4 1013 1014@ CHECK: mla r1, r2, r3, r4 @ encoding: [0x02,0xfb,0x03,0x41] 1015@ CHECK: mls r1, r2, r3, r4 @ encoding: [0x02,0xfb,0x13,0x41] 1016 1017 1018@------------------------------------------------------------------------------ 1019@ MOV(immediate) 1020@------------------------------------------------------------------------------ 1021 movs r1, #21 1022 movs.w r1, #21 1023 movs r8, #21 1024 movw r0, #65535 1025 movw r1, #43777 1026 movw r1, #43792 1027 mov.w r0, #0x3fc0000 1028 mov r0, #0x3fc0000 1029 movs.w r0, #0x3fc0000 1030 itte eq 1031 movseq r1, #12 1032 moveq r1, #12 1033 movne.w r1, #12 1034 mov.w r6, #450 1035 1036@ CHECK: movs r1, #21 @ encoding: [0x15,0x21] 1037@ CHECK: movs.w r1, #21 @ encoding: [0x5f,0xf0,0x15,0x01] 1038@ CHECK: movs.w r8, #21 @ encoding: [0x5f,0xf0,0x15,0x08] 1039@ CHECK: movw r0, #65535 @ encoding: [0x4f,0xf6,0xff,0x70] 1040@ CHECK: movw r1, #43777 @ encoding: [0x4a,0xf6,0x01,0x31] 1041@ CHECK: movw r1, #43792 @ encoding: [0x4a,0xf6,0x10,0x31] 1042@ CHECK: mov.w r0, #66846720 @ encoding: [0x4f,0xf0,0x7f,0x70] 1043@ CHECK: mov.w r0, #66846720 @ encoding: [0x4f,0xf0,0x7f,0x70] 1044@ CHECK: movs.w r0, #66846720 @ encoding: [0x5f,0xf0,0x7f,0x70] 1045@ CHECK: itte eq @ encoding: [0x06,0xbf] 1046@ CHECK: movseq.w r1, #12 @ encoding: [0x5f,0xf0,0x0c,0x01] 1047@ CHECK: moveq r1, #12 @ encoding: [0x0c,0x21] 1048@ CHECK: movne.w r1, #12 @ encoding: [0x4f,0xf0,0x0c,0x01] 1049@ CHECK: mov.w r6, #450 @ encoding: [0x4f,0xf4,0xe1,0x76] 1050 1051 1052@------------------------------------------------------------------------------ 1053@ MOVT 1054@------------------------------------------------------------------------------ 1055 movt r3, #7 1056 movt r6, #0xffff 1057 it eq 1058 movteq r4, #0xff0 1059 1060@ CHECK: movt r3, #7 @ encoding: [0xc0,0xf2,0x07,0x03] 1061@ CHECK: movt r6, #65535 @ encoding: [0xcf,0xf6,0xff,0x76] 1062@ CHECK: it eq @ encoding: [0x08,0xbf] 1063@ CHECK: movteq r4, #4080 @ encoding: [0xc0,0xf6,0xf0,0x74] 1064 1065@------------------------------------------------------------------------------ 1066@ MRC/MRC2 1067@------------------------------------------------------------------------------ 1068 mrc p14, #0, r1, c1, c2, #4 1069 mrc2 p14, #0, r1, c1, c2, #4 1070 1071@ CHECK: mrc p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e] 1072@ CHECK: mrc2 p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e] 1073 1074 1075@------------------------------------------------------------------------------ 1076@ MRRC/MRRC2 1077@------------------------------------------------------------------------------ 1078 mrrc p7, #1, r5, r4, c1 1079 mrrc2 p7, #1, r5, r4, c1 1080 1081@ CHECK: mrrc p7, #1, r5, r4, c1 @ encoding: [0x54,0xec,0x11,0x57] 1082@ CHECK: mrrc2 p7, #1, r5, r4, c1 @ encoding: [0x54,0xfc,0x11,0x57] 1083 1084 1085@------------------------------------------------------------------------------ 1086@ MRS 1087@------------------------------------------------------------------------------ 1088 mrs r8, apsr 1089 mrs r8, cpsr 1090 mrs r8, spsr 1091 1092@ CHECK: mrs r8, apsr @ encoding: [0xef,0xf3,0x00,0x88] 1093@ CHECK: mrs r8, apsr @ encoding: [0xef,0xf3,0x00,0x88] 1094@ CHECK: mrs r8, spsr @ encoding: [0xff,0xf3,0x00,0x88] 1095 1096 1097@------------------------------------------------------------------------------ 1098@ MSR 1099@------------------------------------------------------------------------------ 1100 msr apsr, r1 1101 msr apsr_g, r2 1102 msr apsr_nzcvq, r3 1103 msr APSR_nzcvq, r4 1104 msr apsr_nzcvqg, r5 1105 msr cpsr_fc, r6 1106 msr cpsr_c, r7 1107 msr cpsr_x, r8 1108 msr cpsr_fc, r9 1109 msr cpsr_all, r11 1110 msr cpsr_fsx, r12 1111 msr spsr_fc, r0 1112 msr SPSR_fsxc, r5 1113 msr cpsr_fsxc, r8 1114 1115@ CHECK: msr APSR_nzcvq, r1 @ encoding: [0x81,0xf3,0x00,0x88] 1116@ CHECK: msr APSR_g, r2 @ encoding: [0x82,0xf3,0x00,0x84] 1117@ CHECK: msr APSR_nzcvq, r3 @ encoding: [0x83,0xf3,0x00,0x88] 1118@ CHECK: msr APSR_nzcvq, r4 @ encoding: [0x84,0xf3,0x00,0x88] 1119@ CHECK: msr APSR_nzcvqg, r5 @ encoding: [0x85,0xf3,0x00,0x8c] 1120@ CHECK: msr CPSR_fc, r6 @ encoding: [0x86,0xf3,0x00,0x89] 1121@ CHECK: msr CPSR_c, r7 @ encoding: [0x87,0xf3,0x00,0x81] 1122@ CHECK: msr CPSR_x, r8 @ encoding: [0x88,0xf3,0x00,0x82] 1123@ CHECK: msr CPSR_fc, r9 @ encoding: [0x89,0xf3,0x00,0x89] 1124@ CHECK: msr CPSR_fc, r11 @ encoding: [0x8b,0xf3,0x00,0x89] 1125@ CHECK: msr CPSR_fsx, r12 @ encoding: [0x8c,0xf3,0x00,0x8e] 1126@ CHECK: msr SPSR_fc, r0 @ encoding: [0x90,0xf3,0x00,0x89] 1127@ CHECK: msr SPSR_fsxc, r5 @ encoding: [0x95,0xf3,0x00,0x8f] 1128@ CHECK: msr CPSR_fsxc, r8 @ encoding: [0x88,0xf3,0x00,0x8f] 1129 1130 1131@------------------------------------------------------------------------------ 1132@ MUL 1133@------------------------------------------------------------------------------ 1134 muls r3, r4, r3 1135 mul r3, r4, r3 1136 mul r3, r4, r6 1137 it eq 1138 muleq r3, r4, r5 1139 1140@ CHECK: muls r3, r4, r3 @ encoding: [0x63,0x43] 1141@ CHECK: mul r3, r4, r3 @ encoding: [0x04,0xfb,0x03,0xf3] 1142@ CHECK: mul r3, r4, r6 @ encoding: [0x04,0xfb,0x06,0xf3] 1143@ CHECK: it eq @ encoding: [0x08,0xbf] 1144@ CHECK: muleq r3, r4, r5 @ encoding: [0x04,0xfb,0x05,0xf3] 1145 1146 1147@------------------------------------------------------------------------------ 1148@ MVN(immediate) 1149@------------------------------------------------------------------------------ 1150 mvns r8, #21 1151 mvn r0, #0x3fc0000 1152 mvns r0, #0x3fc0000 1153 itte eq 1154 mvnseq r1, #12 1155 mvneq r1, #12 1156 mvnne r1, #12 1157 1158@ CHECK: mvns r8, #21 @ encoding: [0x7f,0xf0,0x15,0x08] 1159@ CHECK: mvn r0, #66846720 @ encoding: [0x6f,0xf0,0x7f,0x70] 1160@ CHECK: mvns r0, #66846720 @ encoding: [0x7f,0xf0,0x7f,0x70] 1161@ CHECK: itte eq @ encoding: [0x06,0xbf] 1162@ CHECK: mvnseq r1, #12 @ encoding: [0x7f,0xf0,0x0c,0x01] 1163@ CHECK: mvneq r1, #12 @ encoding: [0x6f,0xf0,0x0c,0x01] 1164@ CHECK: mvnne r1, #12 @ encoding: [0x6f,0xf0,0x0c,0x01] 1165 1166 1167@------------------------------------------------------------------------------ 1168@ MVN(register) 1169@------------------------------------------------------------------------------ 1170 mvn r2, r3 1171 mvns r2, r3 1172 mvn r5, r6, lsl #19 1173 mvn r5, r6, lsr #9 1174 mvn r5, r6, asr #4 1175 mvn r5, r6, ror #6 1176 mvn r5, r6, rrx 1177 it eq 1178 mvneq r2, r3 1179 1180@ CHECK: mvn.w r2, r3 @ encoding: [0x6f,0xea,0x03,0x02] 1181@ CHECK: mvns r2, r3 @ encoding: [0xda,0x43] 1182@ CHECK: mvn.w r5, r6, lsl #19 @ encoding: [0x6f,0xea,0xc6,0x45] 1183@ CHECK: mvn.w r5, r6, lsr #9 @ encoding: [0x6f,0xea,0x56,0x25] 1184@ CHECK: mvn.w r5, r6, asr #4 @ encoding: [0x6f,0xea,0x26,0x15] 1185@ CHECK: mvn.w r5, r6, ror #6 @ encoding: [0x6f,0xea,0xb6,0x15] 1186@ CHECK: mvn.w r5, r6, rrx @ encoding: [0x6f,0xea,0x36,0x05] 1187@ CHECK: it eq @ encoding: [0x08,0xbf] 1188@ CHECK: mvneq r2, r3 @ encoding: [0xda,0x43] 1189 1190@------------------------------------------------------------------------------ 1191@ NOP 1192@------------------------------------------------------------------------------ 1193 nop.w 1194 1195@ CHECK: nop.w @ encoding: [0xaf,0xf3,0x00,0x80] 1196 1197 1198@------------------------------------------------------------------------------ 1199@ ORN 1200@------------------------------------------------------------------------------ 1201 orn r4, r5, #0xf000 1202 orn r4, r5, r6 1203 orns r4, r5, r6 1204 orn r4, r5, r6, lsl #5 1205 orns r4, r5, r6, lsr #5 1206 orn r4, r5, r6, lsr #5 1207 orns r4, r5, r6, asr #5 1208 orn r4, r5, r6, ror #5 1209 1210@ CHECK: orn r4, r5, #61440 @ encoding: [0x65,0xf4,0x70,0x44] 1211@ CHECK: orn r4, r5, r6 @ encoding: [0x65,0xea,0x06,0x04] 1212@ CHECK: orns r4, r5, r6 @ encoding: [0x75,0xea,0x06,0x04] 1213@ CHECK: orn r4, r5, r6, lsl #5 @ encoding: [0x65,0xea,0x46,0x14] 1214@ CHECK: orns r4, r5, r6, lsr #5 @ encoding: [0x75,0xea,0x56,0x14] 1215@ CHECK: orn r4, r5, r6, lsr #5 @ encoding: [0x65,0xea,0x56,0x14] 1216@ CHECK: orns r4, r5, r6, asr #5 @ encoding: [0x75,0xea,0x66,0x14] 1217@ CHECK: orn r4, r5, r6, ror #5 @ encoding: [0x65,0xea,0x76,0x14] 1218 1219 1220@------------------------------------------------------------------------------ 1221@ ORR 1222@------------------------------------------------------------------------------ 1223 orr r4, r5, #0xf000 1224 orr r4, r5, r6 1225 orr r4, r5, r6, lsl #5 1226 orrs r4, r5, r6, lsr #5 1227 orr r4, r5, r6, lsr #5 1228 orrs r4, r5, r6, asr #5 1229 orr r4, r5, r6, ror #5 1230 1231@ CHECK: orr r4, r5, #61440 @ encoding: [0x45,0xf4,0x70,0x44] 1232@ CHECK: orr.w r4, r5, r6 @ encoding: [0x45,0xea,0x06,0x04] 1233@ CHECK: orr.w r4, r5, r6, lsl #5 @ encoding: [0x45,0xea,0x46,0x14] 1234@ CHECK: orrs.w r4, r5, r6, lsr #5 @ encoding: [0x55,0xea,0x56,0x14] 1235@ CHECK: orr.w r4, r5, r6, lsr #5 @ encoding: [0x45,0xea,0x56,0x14] 1236@ CHECK: orrs.w r4, r5, r6, asr #5 @ encoding: [0x55,0xea,0x66,0x14] 1237@ CHECK: orr.w r4, r5, r6, ror #5 @ encoding: [0x45,0xea,0x76,0x14] 1238 1239 1240@------------------------------------------------------------------------------ 1241@ PKH 1242@------------------------------------------------------------------------------ 1243 pkhbt r2, r2, r3 1244 pkhbt r2, r2, r3, lsl #31 1245 pkhbt r2, r2, r3, lsl #0 1246 pkhbt r2, r2, r3, lsl #15 1247 1248 pkhtb r2, r2, r3 1249 pkhtb r2, r2, r3, asr #31 1250 pkhtb r2, r2, r3, asr #15 1251 1252@ CHECK: pkhbt r2, r2, r3 @ encoding: [0xc2,0xea,0x03,0x02] 1253@ CHECK: pkhbt r2, r2, r3, lsl #31 @ encoding: [0xc2,0xea,0xc3,0x72] 1254@ CHECK: pkhbt r2, r2, r3 @ encoding: [0xc2,0xea,0x03,0x02] 1255@ CHECK: pkhbt r2, r2, r3, lsl #15 @ encoding: [0xc2,0xea,0xc3,0x32] 1256 1257@ CHECK: pkhbt r2, r2, r3 @ encoding: [0xc2,0xea,0x03,0x02] 1258@ CHECK: pkhtb r2, r2, r3, asr #31 @ encoding: [0xc2,0xea,0xe3,0x72] 1259@ CHECK: pkhtb r2, r2, r3, asr #15 @ encoding: [0xc2,0xea,0xe3,0x32] 1260 1261 1262@------------------------------------------------------------------------------ 1263@ PLD(immediate) 1264@------------------------------------------------------------------------------ 1265 pld [r5, #-4] 1266 pld [r6, #32] 1267 pld [r6, #33] 1268 pld [r6, #257] 1269 pld [r7, #257] 1270 1271@ CHECK: pld [r5, #-4] @ encoding: [0x15,0xf8,0x04,0xfc] 1272@ CHECK: pld [r6, #32] @ encoding: [0x96,0xf8,0x20,0xf0] 1273@ CHECK: pld [r6, #33] @ encoding: [0x96,0xf8,0x21,0xf0] 1274@ CHECK: pld [r6, #257] @ encoding: [0x96,0xf8,0x01,0xf1] 1275@ CHECK: pld [r7, #257] @ encoding: [0x97,0xf8,0x01,0xf1] 1276 1277 1278@------------------------------------------------------------------------------ 1279@ PLD(literal) 1280@------------------------------------------------------------------------------ 1281 pld _foo 1282 1283@ CHECK: pld _foo @ encoding: [0x9f'A',0xf8'A',A,0xf0'A'] 1284 @ fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12 1285 1286 1287@------------------------------------------------------------------------------ 1288@ PLD(register) 1289@------------------------------------------------------------------------------ 1290 pld [r8, r1] 1291 pld [r5, r2] 1292 pld [r0, r2, lsl #3] 1293 pld [r8, r2, lsl #2] 1294 pld [sp, r2, lsl #1] 1295 pld [sp, r2, lsl #0] 1296 1297@ CHECK: pld [r8, r1] @ encoding: [0x18,0xf8,0x01,0xf0] 1298@ CHECK: pld [r5, r2] @ encoding: [0x15,0xf8,0x02,0xf0] 1299@ CHECK: pld [r0, r2, lsl #3] @ encoding: [0x10,0xf8,0x32,0xf0] 1300@ CHECK: pld [r8, r2, lsl #2] @ encoding: [0x18,0xf8,0x22,0xf0] 1301@ CHECK: pld [sp, r2, lsl #1] @ encoding: [0x1d,0xf8,0x12,0xf0] 1302@ CHECK: pld [sp, r2] @ encoding: [0x1d,0xf8,0x02,0xf0] 1303 1304@------------------------------------------------------------------------------ 1305@ PLI(immediate) 1306@------------------------------------------------------------------------------ 1307 pli [r5, #-4] 1308 pli [r6, #32] 1309 pli [r6, #33] 1310 pli [r6, #257] 1311 pli [r7, #257] 1312 1313@ CHECK: pli [r5, #-4] @ encoding: [0x15,0xf9,0x04,0xfc] 1314@ CHECK: pli [r6, #32] @ encoding: [0x96,0xf9,0x20,0xf0] 1315@ CHECK: pli [r6, #33] @ encoding: [0x96,0xf9,0x21,0xf0] 1316@ CHECK: pli [r6, #257] @ encoding: [0x96,0xf9,0x01,0xf1] 1317@ CHECK: pli [r7, #257] @ encoding: [0x97,0xf9,0x01,0xf1] 1318 1319 1320@------------------------------------------------------------------------------ 1321@ PLI(literal) 1322@------------------------------------------------------------------------------ 1323 pli _foo 1324 1325 1326@ CHECK: pli _foo @ encoding: [0x9f'A',0xf9'A',A,0xf0'A'] 1327 @ fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12 1328 1329 1330@------------------------------------------------------------------------------ 1331@ PLI(register) 1332@------------------------------------------------------------------------------ 1333 pli [r8, r1] 1334 pli [r5, r2] 1335 pli [r0, r2, lsl #3] 1336 pli [r8, r2, lsl #2] 1337 pli [sp, r2, lsl #1] 1338 pli [sp, r2, lsl #0] 1339 1340@ CHECK: pli [r8, r1] @ encoding: [0x18,0xf9,0x01,0xf0] 1341@ CHECK: pli [r5, r2] @ encoding: [0x15,0xf9,0x02,0xf0] 1342@ CHECK: pli [r0, r2, lsl #3] @ encoding: [0x10,0xf9,0x32,0xf0] 1343@ CHECK: pli [r8, r2, lsl #2] @ encoding: [0x18,0xf9,0x22,0xf0] 1344@ CHECK: pli [sp, r2, lsl #1] @ encoding: [0x1d,0xf9,0x12,0xf0] 1345@ CHECK: pli [sp, r2] @ encoding: [0x1d,0xf9,0x02,0xf0] 1346 1347 1348@------------------------------------------------------------------------------ 1349@ QADD/QADD16/QADD8 1350@------------------------------------------------------------------------------ 1351 qadd r1, r2, r3 1352 qadd16 r1, r2, r3 1353 qadd8 r1, r2, r3 1354 itte gt 1355 qaddgt r1, r2, r3 1356 qadd16gt r1, r2, r3 1357 qadd8le r1, r2, r3 1358 1359@ CHECK: qadd r1, r2, r3 @ encoding: [0x83,0xfa,0x82,0xf1] 1360@ CHECK: qadd16 r1, r2, r3 @ encoding: [0x92,0xfa,0x13,0xf1] 1361@ CHECK: qadd8 r1, r2, r3 @ encoding: [0x82,0xfa,0x13,0xf1] 1362@ CHECK: itte gt @ encoding: [0xc6,0xbf] 1363@ CHECK: qaddgt r1, r2, r3 @ encoding: [0x83,0xfa,0x82,0xf1] 1364@ CHECK: qadd16gt r1, r2, r3 @ encoding: [0x92,0xfa,0x13,0xf1] 1365@ CHECK: qadd8le r1, r2, r3 @ encoding: [0x82,0xfa,0x13,0xf1] 1366 1367 1368@------------------------------------------------------------------------------ 1369@ QDADD/QDSUB 1370@------------------------------------------------------------------------------ 1371 qdadd r6, r7, r8 1372 qdsub r6, r7, r8 1373 itt hi 1374 qdaddhi r6, r7, r8 1375 qdsubhi r6, r7, r8 1376 1377@ CHECK: qdadd r6, r7, r8 @ encoding: [0x88,0xfa,0x97,0xf6] 1378@ CHECK: qdsub r6, r7, r8 @ encoding: [0x88,0xfa,0xb7,0xf6] 1379@ CHECK: itt hi @ encoding: [0x84,0xbf] 1380@ CHECK: qdaddhi r6, r7, r8 @ encoding: [0x88,0xfa,0x97,0xf6] 1381@ CHECK: qdsubhi r6, r7, r8 @ encoding: [0x88,0xfa,0xb7,0xf6] 1382 1383 1384@------------------------------------------------------------------------------ 1385@ QSAX 1386@------------------------------------------------------------------------------ 1387 qsax r9, r12, r0 1388 it eq 1389 qsaxeq r9, r12, r0 1390 1391@ CHECK: qsax r9, r12, r0 @ encoding: [0xec,0xfa,0x10,0xf9] 1392@ CHECK: it eq @ encoding: [0x08,0xbf] 1393@ CHECK: qsaxeq r9, r12, r0 @ encoding: [0xec,0xfa,0x10,0xf9] 1394 1395 1396@------------------------------------------------------------------------------ 1397@ QSUB/QSUB16/QSUB8 1398@------------------------------------------------------------------------------ 1399 qsub r1, r2, r3 1400 qsub16 r1, r2, r3 1401 qsub8 r1, r2, r3 1402 itet le 1403 qsuble r1, r2, r3 1404 qsub16gt r1, r2, r3 1405 qsub8le r1, r2, r3 1406 1407@ CHECK: qsub r1, r2, r3 @ encoding: [0x83,0xfa,0xa2,0xf1] 1408@ CHECK: qsub16 r1, r2, r3 @ encoding: [0xd2,0xfa,0x13,0xf1] 1409@ CHECK: qsub8 r1, r2, r3 @ encoding: [0xc2,0xfa,0x13,0xf1] 1410@ CHECK: itet le @ encoding: [0xd6,0xbf] 1411@ CHECK: qsuble r1, r2, r3 @ encoding: [0x83,0xfa,0xa2,0xf1] 1412@ CHECK: qsub16gt r1, r2, r3 @ encoding: [0xd2,0xfa,0x13,0xf1] 1413@ CHECK: qsub8le r1, r2, r3 @ encoding: [0xc2,0xfa,0x13,0xf1] 1414 1415 1416@------------------------------------------------------------------------------ 1417@ RBIT 1418@------------------------------------------------------------------------------ 1419 rbit r1, r2 1420 it ne 1421 rbitne r1, r2 1422 1423@ CHECK: rbit r1, r2 @ encoding: [0x92,0xfa,0xa2,0xf1] 1424@ CHECK: it ne @ encoding: [0x18,0xbf] 1425@ CHECK: rbitne r1, r2 @ encoding: [0x92,0xfa,0xa2,0xf1] 1426 1427 1428@------------------------------------------------------------------------------ 1429@ REV 1430@------------------------------------------------------------------------------ 1431 rev.w r1, r2 1432 rev r2, r8 1433 itt ne 1434 revne r1, r2 1435 revne r1, r8 1436 1437@ CHECK: rev.w r1, r2 @ encoding: [0x92,0xfa,0x82,0xf1] 1438@ CHECK: rev.w r2, r8 @ encoding: [0x98,0xfa,0x88,0xf2] 1439@ CHECK: itt ne @ encoding: [0x1c,0xbf] 1440@ CHECK: revne r1, r2 @ encoding: [0x11,0xba] 1441@ CHECK: revne.w r1, r8 @ encoding: [0x98,0xfa,0x88,0xf1] 1442 1443 1444@------------------------------------------------------------------------------ 1445@ REV16 1446@------------------------------------------------------------------------------ 1447 rev16.w r1, r2 1448 rev16 r2, r8 1449 itt ne 1450 rev16ne r1, r2 1451 rev16ne r1, r8 1452 1453 rev16.w r1, r2 @ encoding: [0x92,0xfa,0x92,0xf1] 1454 rev16.w r2, r8 @ encoding: [0x98,0xfa,0x98,0xf2] 1455 itt ne @ encoding: [0x1c,0xbf] 1456 rev16ne r1, r2 @ encoding: [0x51,0xba] 1457 rev16ne.w r1, r8 @ encoding: [0x98,0xfa,0x98,0xf1] 1458 1459 1460@------------------------------------------------------------------------------ 1461@ REVSH 1462@------------------------------------------------------------------------------ 1463 revsh.w r1, r2 1464 revsh r2, r8 1465 itt ne 1466 revshne r1, r2 1467 revshne r1, r8 1468 1469 revsh.w r1, r2 @ encoding: [0x92,0xfa,0xb2,0xf1] 1470 revsh.w r2, r8 @ encoding: [0x98,0xfa,0xb8,0xf2] 1471 itt ne @ encoding: [0x1c,0xbf] 1472 revshne r1, r2 @ encoding: [0xd1,0xba] 1473 revshne.w r1, r8 @ encoding: [0x98,0xfa,0xb8,0xf1] 1474 1475 1476@------------------------------------------------------------------------------ 1477@ ROR (immediate) 1478@------------------------------------------------------------------------------ 1479 ror r2, r3, #12 1480 rors r8, r3, #31 1481 rors.w r2, r3, #1 1482 ror r2, r3, #4 1483 rors r2, r12, #15 1484 1485 ror r3, #19 1486 rors r8, #2 1487 rors.w r7, #5 1488 ror.w r12, #21 1489 1490@ CHECK: ror.w r2, r3, #12 @ encoding: [0x4f,0xea,0x33,0x32] 1491@ CHECK: rors.w r8, r3, #31 @ encoding: [0x5f,0xea,0xf3,0x78] 1492@ CHECK: rors.w r2, r3, #1 @ encoding: [0x5f,0xea,0x73,0x02] 1493@ CHECK: ror.w r2, r3, #4 @ encoding: [0x4f,0xea,0x33,0x12] 1494@ CHECK: rors.w r2, r12, #15 @ encoding: [0x5f,0xea,0xfc,0x32] 1495 1496@ CHECK: ror.w r3, r3, #19 @ encoding: [0x4f,0xea,0xf3,0x43] 1497@ CHECK: rors.w r8, r8, #2 @ encoding: [0x5f,0xea,0xb8,0x08] 1498@ CHECK: rors.w r7, r7, #5 @ encoding: [0x5f,0xea,0x77,0x17] 1499@ CHECK: ror.w r12, r12, #21 @ encoding: [0x4f,0xea,0x7c,0x5c] 1500 1501 1502@------------------------------------------------------------------------------ 1503@ ROR (register) 1504@------------------------------------------------------------------------------ 1505 ror r3, r4, r2 1506 ror.w r1, r2 1507 rors r3, r4, r8 1508 1509@ CHECK: ror.w r3, r4, r2 @ encoding: [0x64,0xfa,0x02,0xf3] 1510@ CHECK: ror.w r1, r1, r2 @ encoding: [0x61,0xfa,0x02,0xf1] 1511@ CHECK: rors.w r3, r4, r8 @ encoding: [0x74,0xfa,0x08,0xf3] 1512 1513 1514@------------------------------------------------------------------------------ 1515@ RRX 1516@------------------------------------------------------------------------------ 1517 rrx r1, r2 1518 rrxs r1, r2 1519 ite lt 1520 rrxlt r9, r12 1521 rrxsge r8, r3 1522 1523@ CHECK: rrx r1, r2 @ encoding: [0x4f,0xea,0x32,0x01] 1524@ CHECK: rrxs r1, r2 @ encoding: [0x5f,0xea,0x32,0x01] 1525@ CHECK: ite lt @ encoding: [0xb4,0xbf] 1526@ CHECK: rrxlt r9, r12 @ encoding: [0x4f,0xea,0x3c,0x09] 1527@ CHECK: rrxsge r8, r3 @ encoding: [0x5f,0xea,0x33,0x08] 1528 1529@------------------------------------------------------------------------------ 1530@ RSB (immediate) 1531@------------------------------------------------------------------------------ 1532 rsb r2, r5, #0xff000 1533 rsbs r3, r12, #0xf 1534 rsb r1, #0xff 1535 rsb r1, r1, #0xff 1536 1537@ CHECK: rsb.w r2, r5, #1044480 @ encoding: [0xc5,0xf5,0x7f,0x22] 1538@ CHECK: rsbs.w r3, r12, #15 @ encoding: [0xdc,0xf1,0x0f,0x03] 1539@ CHECK: rsb.w r1, r1, #255 @ encoding: [0xc1,0xf1,0xff,0x01] 1540@ CHECK: rsb.w r1, r1, #255 @ encoding: [0xc1,0xf1,0xff,0x01] 1541 1542 1543@------------------------------------------------------------------------------ 1544@ RSB (register) 1545@------------------------------------------------------------------------------ 1546 rsb r4, r8 1547 rsb r4, r9, r8 1548 rsb r1, r4, r8, asr #3 1549 rsbs r2, r1, r7, lsl #1 1550 1551@ CHECK: rsb r4, r4, r8 @ encoding: [0xc4,0xeb,0x08,0x04] 1552@ CHECK: rsb r4, r9, r8 @ encoding: [0xc9,0xeb,0x08,0x04] 1553@ CHECK: rsb r1, r4, r8, asr #3 @ encoding: [0xc4,0xeb,0xe8,0x01] 1554@ CHECK: rsbs r2, r1, r7, lsl #1 @ encoding: [0xd1,0xeb,0x47,0x02] 1555 1556 1557@------------------------------------------------------------------------------ 1558@ SADD16 1559@------------------------------------------------------------------------------ 1560 sadd16 r3, r4, r8 1561 it ne 1562 sadd16ne r3, r4, r8 1563 1564@ CHECK: sadd16 r3, r4, r8 @ encoding: [0x94,0xfa,0x08,0xf3] 1565@ CHECK: it ne @ encoding: [0x18,0xbf] 1566@ CHECK: sadd16ne r3, r4, r8 @ encoding: [0x94,0xfa,0x08,0xf3] 1567 1568 1569@------------------------------------------------------------------------------ 1570@ SADD8 1571@------------------------------------------------------------------------------ 1572 sadd8 r3, r4, r8 1573 it ne 1574 sadd8ne r3, r4, r8 1575 1576@ CHECK: sadd8 r3, r4, r8 @ encoding: [0x84,0xfa,0x08,0xf3] 1577@ CHECK: it ne @ encoding: [0x18,0xbf] 1578@ CHECK: sadd8ne r3, r4, r8 @ encoding: [0x84,0xfa,0x08,0xf3] 1579 1580 1581@------------------------------------------------------------------------------ 1582@ SASX 1583@------------------------------------------------------------------------------ 1584 saddsubx r9, r2, r7 1585 it ne 1586 saddsubxne r2, r5, r6 1587 sasx r9, r2, r7 1588 it ne 1589 sasxne r2, r5, r6 1590 1591@ CHECK: sasx r9, r2, r7 @ encoding: [0xa2,0xfa,0x07,0xf9] 1592@ CHECK: it ne @ encoding: [0x18,0xbf] 1593@ CHECK: sasxne r2, r5, r6 @ encoding: [0xa5,0xfa,0x06,0xf2] 1594@ CHECK: sasx r9, r2, r7 @ encoding: [0xa2,0xfa,0x07,0xf9] 1595@ CHECK: it ne @ encoding: [0x18,0xbf] 1596@ CHECK: sasxne r2, r5, r6 @ encoding: [0xa5,0xfa,0x06,0xf2] 1597 1598 1599@------------------------------------------------------------------------------ 1600@ SUB (register) 1601@------------------------------------------------------------------------------ 1602 sub.w r5, r2, r12, rrx 1603 1604@ CHECK: sub.w r5, r2, r12, rrx @ encoding: [0xa2,0xeb,0x3c,0x05] 1605 1606