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