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