basic-arm-instructions.s revision 8ed97ef5f6980c689a5770ec30488601201e17c3
1@ RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s 2 .syntax unified 3 .globl _func 4 5@ Check that the assembler can handle the documented syntax from the ARM ARM. 6@ For complex constructs like shifter operands, check more thoroughly for them 7@ once then spot check that following instructions accept the form generally. 8@ This gives us good coverage while keeping the overall size of the test 9@ more reasonable. 10 11_func: 12@ CHECK: _func 13 14@------------------------------------------------------------------------------ 15@ ADC (immediate) 16@------------------------------------------------------------------------------ 17 adc r1, r2, #0xf 18 adc r1, r2, #0xf0 19 adc r1, r2, #0xf00 20 adc r1, r2, #0xf000 21 adc r1, r2, #0xf0000 22 adc r1, r2, #0xf00000 23 adc r1, r2, #0xf000000 24 adc r1, r2, #0xf0000000 25 adc r1, r2, #0xf000000f 26 adcs r1, r2, #0xf00 27 adcseq r1, r2, #0xf00 28 adceq r1, r2, #0xf00 29 30@ CHECK: adc r1, r2, #15 @ encoding: [0x0f,0x10,0xa2,0xe2] 31@ CHECK: adc r1, r2, #240 @ encoding: [0xf0,0x10,0xa2,0xe2] 32@ CHECK: adc r1, r2, #3840 @ encoding: [0x0f,0x1c,0xa2,0xe2] 33@ CHECK: adc r1, r2, #61440 @ encoding: [0x0f,0x1a,0xa2,0xe2] 34@ CHECK: adc r1, r2, #983040 @ encoding: [0x0f,0x18,0xa2,0xe2] 35@ CHECK: adc r1, r2, #15728640 @ encoding: [0x0f,0x16,0xa2,0xe2] 36@ CHECK: adc r1, r2, #251658240 @ encoding: [0x0f,0x14,0xa2,0xe2] 37@ CHECK: adc r1, r2, #4026531840 @ encoding: [0x0f,0x12,0xa2,0xe2] 38@ CHECK: adc r1, r2, #4026531855 @ encoding: [0xff,0x12,0xa2,0xe2] 39 40@ CHECK: adcs r1, r2, #3840 @ encoding: [0x0f,0x1c,0xb2,0xe2] 41@ CHECK: adcseq r1, r2, #3840 @ encoding: [0x0f,0x1c,0xb2,0x02] 42@ CHECK: adceq r1, r2, #3840 @ encoding: [0x0f,0x1c,0xa2,0x02] 43 44@------------------------------------------------------------------------------ 45@ ADC (register) 46@ ADC (shifted register) 47@------------------------------------------------------------------------------ 48 adc r4, r5, r6 49 @ Constant shifts 50 adc r4, r5, r6, lsl #1 51 adc r4, r5, r6, lsl #31 52 adc r4, r5, r6, lsr #1 53 adc r4, r5, r6, lsr #31 54 adc r4, r5, r6, lsr #32 55 adc r4, r5, r6, asr #1 56 adc r4, r5, r6, asr #31 57 adc r4, r5, r6, asr #32 58 adc r4, r5, r6, ror #1 59 adc r4, r5, r6, ror #31 60 61 @ Register shifts 62 adc r6, r7, r8, lsl r9 63 adc r6, r7, r8, lsr r9 64 adc r6, r7, r8, asr r9 65 adc r6, r7, r8, ror r9 66 adc r4, r5, r6, rrx 67 68 @ Destination register is optional 69 adc r5, r6 70 adc r4, r5, lsl #1 71 adc r4, r5, lsl #31 72 adc r4, r5, lsr #1 73 adc r4, r5, lsr #31 74 adc r4, r5, lsr #32 75 adc r4, r5, asr #1 76 adc r4, r5, asr #31 77 adc r4, r5, asr #32 78 adc r4, r5, ror #1 79 adc r4, r5, ror #31 80 adc r4, r5, rrx 81 adc r6, r7, lsl r9 82 adc r6, r7, lsr r9 83 adc r6, r7, asr r9 84 adc r6, r7, ror r9 85 adc r4, r5, rrx 86 87@ CHECK: adc r4, r5, r6 @ encoding: [0x06,0x40,0xa5,0xe0] 88 89@ CHECK: adc r4, r5, r6, lsl #1 @ encoding: [0x86,0x40,0xa5,0xe0] 90@ CHECK: adc r4, r5, r6, lsl #31 @ encoding: [0x86,0x4f,0xa5,0xe0] 91@ CHECK: adc r4, r5, r6, lsr #1 @ encoding: [0xa6,0x40,0xa5,0xe0] 92@ CHECK: adc r4, r5, r6, lsr #31 @ encoding: [0xa6,0x4f,0xa5,0xe0] 93@ CHECK: adc r4, r5, r6, lsr #32 @ encoding: [0x26,0x40,0xa5,0xe0] 94@ CHECK: adc r4, r5, r6, asr #1 @ encoding: [0xc6,0x40,0xa5,0xe0] 95@ CHECK: adc r4, r5, r6, asr #31 @ encoding: [0xc6,0x4f,0xa5,0xe0] 96@ CHECK: adc r4, r5, r6, asr #32 @ encoding: [0x46,0x40,0xa5,0xe0] 97@ CHECK: adc r4, r5, r6, ror #1 @ encoding: [0xe6,0x40,0xa5,0xe0] 98@ CHECK: adc r4, r5, r6, ror #31 @ encoding: [0xe6,0x4f,0xa5,0xe0] 99 100@ CHECK: adc r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0xa7,0xe0] 101@ CHECK: adc r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0xa7,0xe0] 102@ CHECK: adc r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0xa7,0xe0] 103@ CHECK: adc r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0xa7,0xe0] 104@ CHECK: adc r4, r5, r6, rrx @ encoding: [0x66,0x40,0xa5,0xe0] 105 106@ CHECK: adc r5, r5, r6 @ encoding: [0x06,0x50,0xa5,0xe0] 107@ CHECK: adc r4, r4, r5, lsl #1 @ encoding: [0x85,0x40,0xa4,0xe0] 108@ CHECK: adc r4, r4, r5, lsl #31 @ encoding: [0x85,0x4f,0xa4,0xe0] 109@ CHECK: adc r4, r4, r5, lsr #1 @ encoding: [0xa5,0x40,0xa4,0xe0] 110@ CHECK: adc r4, r4, r5, lsr #31 @ encoding: [0xa5,0x4f,0xa4,0xe0] 111@ CHECK: adc r4, r4, r5, lsr #32 @ encoding: [0x25,0x40,0xa4,0xe0] 112@ CHECK: adc r4, r4, r5, asr #1 @ encoding: [0xc5,0x40,0xa4,0xe0] 113@ CHECK: adc r4, r4, r5, asr #31 @ encoding: [0xc5,0x4f,0xa4,0xe0] 114@ CHECK: adc r4, r4, r5, asr #32 @ encoding: [0x45,0x40,0xa4,0xe0] 115@ CHECK: adc r4, r4, r5, ror #1 @ encoding: [0xe5,0x40,0xa4,0xe0] 116@ CHECK: adc r4, r4, r5, ror #31 @ encoding: [0xe5,0x4f,0xa4,0xe0] 117@ CHECK: adc r4, r4, r5, rrx @ encoding: [0x65,0x40,0xa4,0xe0] 118@ CHECK: adc r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0xa6,0xe0] 119@ CHECK: adc r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0xa6,0xe0] 120@ CHECK: adc r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0xa6,0xe0] 121@ CHECK: adc r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0xa6,0xe0] 122@ CHECK: adc r4, r4, r5, rrx @ encoding: [0x65,0x40,0xa4,0xe0] 123 124 125@------------------------------------------------------------------------------ 126@ ADR 127@------------------------------------------------------------------------------ 128Lback: 129 adr r2, Lback 130 adr r3, Lforward 131Lforward: 132 adr r2, #3 133 adr r2, #-3 134 135@ CHECK: Lback: 136@ CHECK: adr r2, Lback @ encoding: [A,0x20'A',0x0f'A',0xe2'A'] 137@ CHECK: @ fixup A - offset: 0, value: Lback, kind: fixup_arm_adr_pcrel_12 138@ CHECK: adr r3, Lforward @ encoding: [A,0x30'A',0x0f'A',0xe2'A'] 139@ CHECK: @ fixup A - offset: 0, value: Lforward, kind: fixup_arm_adr_pcrel_12 140@ CHECK: Lforward: 141@ CHECK: adr r2, #3 @ encoding: [0x03,0x20,0x8f,0xe2] 142@ CHECK: adr r2, #-3 @ encoding: [0x03,0x20,0x4f,0xe2] 143 144 145@------------------------------------------------------------------------------ 146@ ADD 147@------------------------------------------------------------------------------ 148 add r4, r5, #0xf000 149 add r4, r5, r6 150 add r4, r5, r6, lsl #5 151 add r4, r5, r6, lsr #5 152 add r4, r5, r6, lsr #5 153 add r4, r5, r6, asr #5 154 add r4, r5, r6, ror #5 155 add r6, r7, r8, lsl r9 156 add r4, r4, r3, asl r9 157 add r6, r7, r8, lsr r9 158 add r6, r7, r8, asr r9 159 add r6, r7, r8, ror r9 160 add r4, r5, r6, rrx 161 162 @ destination register is optional 163 add r5, #0xf000 164 add r4, r5 165 add r4, r5, lsl #5 166 add r4, r5, lsr #5 167 add r4, r5, lsr #5 168 add r4, r5, asr #5 169 add r4, r5, ror #5 170 add r6, r7, lsl r9 171 add r6, r7, lsr r9 172 add r6, r7, asr r9 173 add r6, r7, ror r9 174 add r4, r5, rrx 175 176 add r0, #-4 177 add r4, r5, #-21 178 179@ CHECK: add r4, r5, #61440 @ encoding: [0x0f,0x4a,0x85,0xe2] 180@ CHECK: add r4, r5, r6 @ encoding: [0x06,0x40,0x85,0xe0] 181@ CHECK: add r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0x85,0xe0] 182@ CHECK: add r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x85,0xe0] 183@ CHECK: add r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x85,0xe0] 184@ CHECK: add r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0x85,0xe0] 185@ CHECK: add r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0x85,0xe0] 186@ CHECK: add r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0x87,0xe0] 187@ CHECK: add r4, r4, r3, lsl r9 @ encoding: [0x13,0x49,0x84,0xe0] 188@ CHECK: add r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0x87,0xe0] 189@ CHECK: add r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0x87,0xe0] 190@ CHECK: add r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0x87,0xe0] 191@ CHECK: add r4, r5, r6, rrx @ encoding: [0x66,0x40,0x85,0xe0] 192 193@ CHECK: add r5, r5, #61440 @ encoding: [0x0f,0x5a,0x85,0xe2] 194@ CHECK: add r4, r4, r5 @ encoding: [0x05,0x40,0x84,0xe0] 195@ CHECK: add r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0x84,0xe0] 196@ CHECK: add r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x84,0xe0] 197@ CHECK: add r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x84,0xe0] 198@ CHECK: add r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0x84,0xe0] 199@ CHECK: add r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0x84,0xe0] 200@ CHECK: add r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0x86,0xe0] 201@ CHECK: add r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0x86,0xe0] 202@ CHECK: add r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0x86,0xe0] 203@ CHECK: add r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0x86,0xe0] 204@ CHECK: add r4, r4, r5, rrx @ encoding: [0x65,0x40,0x84,0xe0] 205 206@ CHECK: sub r0, r0, #4 @ encoding: [0x04,0x00,0x40,0xe2] 207@ CHECK: sub r4, r5, #21 @ encoding: [0x15,0x40,0x45,0xe2] 208 209 @ Test right shift by 32, which is encoded as 0 210 add r3, r1, r2, lsr #32 211 add r3, r1, r2, asr #32 212@ CHECK: add r3, r1, r2, lsr #32 @ encoding: [0x22,0x30,0x81,0xe0] 213@ CHECK: add r3, r1, r2, asr #32 @ encoding: [0x42,0x30,0x81,0xe0] 214 215@------------------------------------------------------------------------------ 216@ AND 217@------------------------------------------------------------------------------ 218 and r10, r1, #0xf 219 and r10, r1, r6 220 and r10, r1, r6, lsl #10 221 and r10, r1, r6, lsr #10 222 and r10, r1, r6, lsr #10 223 and r10, r1, r6, asr #10 224 and r10, r1, r6, ror #10 225 and r6, r7, r8, lsl r2 226 and r6, r7, r8, lsr r2 227 and r6, r7, r8, asr r2 228 and r6, r7, r8, ror r2 229 and r10, r1, r6, rrx 230 and r2, r3, #0x7fffffff 231 232 @ destination register is optional 233 and r1, #0xf 234 and r10, r1 235 and r10, r1, lsl #10 236 and r10, r1, lsr #10 237 and r10, r1, lsr #10 238 and r10, r1, asr #10 239 and r10, r1, ror #10 240 and r6, r7, lsl r2 241 and r6, r7, lsr r2 242 and r6, r7, asr r2 243 and r6, r7, ror r2 244 and r10, r1, rrx 245 246@ CHECK: and r10, r1, #15 @ encoding: [0x0f,0xa0,0x01,0xe2] 247@ CHECK: and r10, r1, r6 @ encoding: [0x06,0xa0,0x01,0xe0] 248@ CHECK: and r10, r1, r6, lsl #10 @ encoding: [0x06,0xa5,0x01,0xe0] 249@ CHECK: and r10, r1, r6, lsr #10 @ encoding: [0x26,0xa5,0x01,0xe0] 250@ CHECK: and r10, r1, r6, lsr #10 @ encoding: [0x26,0xa5,0x01,0xe0] 251@ CHECK: and r10, r1, r6, asr #10 @ encoding: [0x46,0xa5,0x01,0xe0] 252@ CHECK: and r10, r1, r6, ror #10 @ encoding: [0x66,0xa5,0x01,0xe0] 253@ CHECK: and r6, r7, r8, lsl r2 @ encoding: [0x18,0x62,0x07,0xe0] 254@ CHECK: and r6, r7, r8, lsr r2 @ encoding: [0x38,0x62,0x07,0xe0] 255@ CHECK: and r6, r7, r8, asr r2 @ encoding: [0x58,0x62,0x07,0xe0] 256@ CHECK: and r6, r7, r8, ror r2 @ encoding: [0x78,0x62,0x07,0xe0] 257@ CHECK: and r10, r1, r6, rrx @ encoding: [0x66,0xa0,0x01,0xe0] 258@ CHECK: bic r2, r3, #-2147483648 @ encoding: [0x02,0x21,0xc3,0xe3] 259 260@ CHECK: and r1, r1, #15 @ encoding: [0x0f,0x10,0x01,0xe2] 261@ CHECK: and r10, r10, r1 @ encoding: [0x01,0xa0,0x0a,0xe0] 262@ CHECK: and r10, r10, r1, lsl #10 @ encoding: [0x01,0xa5,0x0a,0xe0] 263@ CHECK: and r10, r10, r1, lsr #10 @ encoding: [0x21,0xa5,0x0a,0xe0] 264@ CHECK: and r10, r10, r1, lsr #10 @ encoding: [0x21,0xa5,0x0a,0xe0] 265@ CHECK: and r10, r10, r1, asr #10 @ encoding: [0x41,0xa5,0x0a,0xe0] 266@ CHECK: and r10, r10, r1, ror #10 @ encoding: [0x61,0xa5,0x0a,0xe0] 267@ CHECK: and r6, r6, r7, lsl r2 @ encoding: [0x17,0x62,0x06,0xe0] 268@ CHECK: and r6, r6, r7, lsr r2 @ encoding: [0x37,0x62,0x06,0xe0] 269@ CHECK: and r6, r6, r7, asr r2 @ encoding: [0x57,0x62,0x06,0xe0] 270@ CHECK: and r6, r6, r7, ror r2 @ encoding: [0x77,0x62,0x06,0xe0] 271@ CHECK: and r10, r10, r1, rrx @ encoding: [0x61,0xa0,0x0a,0xe0] 272 273 @ Test right shift by 32, which is encoded as 0 274 and r3, r1, r2, lsr #32 275 and r3, r1, r2, asr #32 276@ CHECK: and r3, r1, r2, lsr #32 @ encoding: [0x22,0x30,0x01,0xe0] 277@ CHECK: and r3, r1, r2, asr #32 @ encoding: [0x42,0x30,0x01,0xe0] 278 279@------------------------------------------------------------------------------ 280@ ASR 281@------------------------------------------------------------------------------ 282 asr r2, r4, #32 283 asr r2, r4, #2 284 asr r2, r4, #0 285 asr r4, #2 286 287@ CHECK: asr r2, r4, #32 @ encoding: [0x44,0x20,0xa0,0xe1] 288@ CHECK: asr r2, r4, #2 @ encoding: [0x44,0x21,0xa0,0xe1] 289@ CHECK: mov r2, r4 @ encoding: [0x04,0x20,0xa0,0xe1] 290@ CHECK: asr r4, r4, #2 @ encoding: [0x44,0x41,0xa0,0xe1] 291 292 293@------------------------------------------------------------------------------ 294@ B 295@------------------------------------------------------------------------------ 296 b _bar 297 beq _baz 298 299@ CHECK: b _bar @ encoding: [A,A,A,0xea] 300 @ fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch 301@ CHECK: beq _baz @ encoding: [A,A,A,0x0a] 302 @ fixup A - offset: 0, value: _baz, kind: fixup_arm_condbranch 303 304 305@------------------------------------------------------------------------------ 306@ BFC 307@------------------------------------------------------------------------------ 308 bfc r5, #3, #17 309 bfccc r5, #3, #17 310 311@ CHECK: bfc r5, #3, #17 @ encoding: [0x9f,0x51,0xd3,0xe7] 312@ CHECK: bfclo r5, #3, #17 @ encoding: [0x9f,0x51,0xd3,0x37] 313 314 315@------------------------------------------------------------------------------ 316@ BFI 317@------------------------------------------------------------------------------ 318 bfi r5, r2, #3, #17 319 bfine r5, r2, #3, #17 320 321@ CHECK: bfi r5, r2, #3, #17 @ encoding: [0x92,0x51,0xd3,0xe7] 322@ CHECK: bfine r5, r2, #3, #17 @ encoding: [0x92,0x51,0xd3,0x17] 323 324 325@------------------------------------------------------------------------------ 326@ BIC 327@------------------------------------------------------------------------------ 328 bic r10, r1, #0xf 329 bic r10, r1, r6 330 bic r10, r1, r6, lsl #10 331 bic r10, r1, r6, lsr #10 332 bic r10, r1, r6, lsr #10 333 bic r10, r1, r6, asr #10 334 bic r10, r1, r6, ror #10 335 bic r6, r7, r8, lsl r2 336 bic r6, r7, r8, lsr r2 337 bic r6, r7, r8, asr r2 338 bic r6, r7, r8, ror r2 339 bic r10, r1, r6, rrx 340 341 @ destination register is optional 342 bic r1, #0xf 343 bic r10, r1 344 bic r10, r1, lsl #10 345 bic r10, r1, lsr #10 346 bic r10, r1, lsr #10 347 bic r10, r1, asr #10 348 bic r10, r1, ror #10 349 bic r6, r7, lsl r2 350 bic r6, r7, lsr r2 351 bic r6, r7, asr r2 352 bic r6, r7, ror r2 353 bic r10, r1, rrx 354 355@ CHECK: bic r10, r1, #15 @ encoding: [0x0f,0xa0,0xc1,0xe3] 356@ CHECK: bic r10, r1, r6 @ encoding: [0x06,0xa0,0xc1,0xe1] 357@ CHECK: bic r10, r1, r6, lsl #10 @ encoding: [0x06,0xa5,0xc1,0xe1] 358@ CHECK: bic r10, r1, r6, lsr #10 @ encoding: [0x26,0xa5,0xc1,0xe1] 359@ CHECK: bic r10, r1, r6, lsr #10 @ encoding: [0x26,0xa5,0xc1,0xe1] 360@ CHECK: bic r10, r1, r6, asr #10 @ encoding: [0x46,0xa5,0xc1,0xe1] 361@ CHECK: bic r10, r1, r6, ror #10 @ encoding: [0x66,0xa5,0xc1,0xe1] 362@ CHECK: bic r6, r7, r8, lsl r2 @ encoding: [0x18,0x62,0xc7,0xe1] 363@ CHECK: bic r6, r7, r8, lsr r2 @ encoding: [0x38,0x62,0xc7,0xe1] 364@ CHECK: bic r6, r7, r8, asr r2 @ encoding: [0x58,0x62,0xc7,0xe1] 365@ CHECK: bic r6, r7, r8, ror r2 @ encoding: [0x78,0x62,0xc7,0xe1] 366@ CHECK: bic r10, r1, r6, rrx @ encoding: [0x66,0xa0,0xc1,0xe1] 367 368 369@ CHECK: bic r1, r1, #15 @ encoding: [0x0f,0x10,0xc1,0xe3] 370@ CHECK: bic r10, r10, r1 @ encoding: [0x01,0xa0,0xca,0xe1] 371@ CHECK: bic r10, r10, r1, lsl #10 @ encoding: [0x01,0xa5,0xca,0xe1] 372@ CHECK: bic r10, r10, r1, lsr #10 @ encoding: [0x21,0xa5,0xca,0xe1] 373@ CHECK: bic r10, r10, r1, lsr #10 @ encoding: [0x21,0xa5,0xca,0xe1] 374@ CHECK: bic r10, r10, r1, asr #10 @ encoding: [0x41,0xa5,0xca,0xe1] 375@ CHECK: bic r10, r10, r1, ror #10 @ encoding: [0x61,0xa5,0xca,0xe1] 376@ CHECK: bic r6, r6, r7, lsl r2 @ encoding: [0x17,0x62,0xc6,0xe1] 377@ CHECK: bic r6, r6, r7, lsr r2 @ encoding: [0x37,0x62,0xc6,0xe1] 378@ CHECK: bic r6, r6, r7, asr r2 @ encoding: [0x57,0x62,0xc6,0xe1] 379@ CHECK: bic r6, r6, r7, ror r2 @ encoding: [0x77,0x62,0xc6,0xe1] 380@ CHECK: bic r10, r10, r1, rrx @ encoding: [0x61,0xa0,0xca,0xe1] 381 382 @ Test right shift by 32, which is encoded as 0 383 bic r3, r1, r2, lsr #32 384 bic r3, r1, r2, asr #32 385@ CHECK: bic r3, r1, r2, lsr #32 @ encoding: [0x22,0x30,0xc1,0xe1] 386@ CHECK: bic r3, r1, r2, asr #32 @ encoding: [0x42,0x30,0xc1,0xe1] 387 388@------------------------------------------------------------------------------ 389@ BKPT 390@------------------------------------------------------------------------------ 391 bkpt #10 392 bkpt #65535 393 394@ CHECK: bkpt #10 @ encoding: [0x7a,0x00,0x20,0xe1] 395@ CHECK: bkpt #65535 @ encoding: [0x7f,0xff,0x2f,0xe1] 396 397@------------------------------------------------------------------------------ 398@ BL/BLX (immediate) 399@------------------------------------------------------------------------------ 400 401 bl _bar 402 bleq _bar 403 blx _bar 404 blls #28634268 405 blx #32424576 406 blx #16212288 407 408@ CHECK: bl _bar @ encoding: [A,A,A,0xeb] 409@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbl 410@ CHECK: bleq _bar @ encoding: [A,A,A,0x0b] 411@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_arm_condbl 412@ CHECK: blx _bar @ encoding: [A,A,A,0xfa] 413 @ fixup A - offset: 0, value: _bar, kind: fixup_arm_blx 414@ CHECK: blls #28634268 @ encoding: [0x27,0x3b,0x6d,0x9b] 415@ CHECK: blx #32424576 @ encoding: [0xa0,0xb0,0x7b,0xfa] 416@ CHECK: blx #16212288 @ encoding: [0x50,0xd8,0x3d,0xfa] 417@------------------------------------------------------------------------------ 418@ BLX (register) 419@------------------------------------------------------------------------------ 420 blx r2 421 blxne r2 422 423@ CHECK: blx r2 @ encoding: [0x32,0xff,0x2f,0xe1] 424@ CHECK: blxne r2 @ encoding: [0x32,0xff,0x2f,0x11] 425 426@------------------------------------------------------------------------------ 427@ BX 428@------------------------------------------------------------------------------ 429 bx r2 430 bxne r2 431 432@ CHECK: bx r2 @ encoding: [0x12,0xff,0x2f,0xe1] 433@ CHECK: bxne r2 @ encoding: [0x12,0xff,0x2f,0x11] 434 435@------------------------------------------------------------------------------ 436@ BXJ 437@------------------------------------------------------------------------------ 438 bxj r2 439 bxjne r2 440 441@ CHECK: bxj r2 @ encoding: [0x22,0xff,0x2f,0xe1] 442@ CHECK: bxjne r2 @ encoding: [0x22,0xff,0x2f,0x11] 443 444 445@------------------------------------------------------------------------------ 446@ CDP/CDP2 447@------------------------------------------------------------------------------ 448 cdp p7, #1, c1, c1, c1, #4 449 cdp2 p7, #1, c1, c1, c1, #4 450 451@ CHECK: cdp p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xee] 452@ CHECK: cdp2 p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xfe] 453 454 455@------------------------------------------------------------------------------ 456@ CLREX 457@------------------------------------------------------------------------------ 458 clrex 459 460@ CHECK: clrex @ encoding: [0x1f,0xf0,0x7f,0xf5] 461 462 463@------------------------------------------------------------------------------ 464@ CLZ 465@------------------------------------------------------------------------------ 466 clz r1, r2 467 clzeq r1, r2 468 469@ CHECK: clz r1, r2 @ encoding: [0x12,0x1f,0x6f,0xe1] 470@ CHECK: clzeq r1, r2 @ encoding: [0x12,0x1f,0x6f,0x01] 471 472@------------------------------------------------------------------------------ 473@ CMN 474@------------------------------------------------------------------------------ 475 cmn r1, #0xf 476 cmn r1, r6 477 cmn r1, r6, lsl #10 478 cmn r1, r6, lsr #10 479 cmn sp, r6, lsr #10 480 cmn r1, r6, asr #10 481 cmn r1, r6, ror #10 482 cmn r7, r8, lsl r2 483 cmn sp, r8, lsr r2 484 cmn r7, r8, asr r2 485 cmn r7, r8, ror r2 486 cmn r1, r6, rrx 487 488@ CHECK: cmn r1, #15 @ encoding: [0x0f,0x00,0x71,0xe3] 489@ CHECK: cmn r1, r6 @ encoding: [0x06,0x00,0x71,0xe1] 490@ CHECK: cmn r1, r6, lsl #10 @ encoding: [0x06,0x05,0x71,0xe1] 491@ CHECK: cmn r1, r6, lsr #10 @ encoding: [0x26,0x05,0x71,0xe1] 492@ CHECK: cmn sp, r6, lsr #10 @ encoding: [0x26,0x05,0x7d,0xe1] 493@ CHECK: cmn r1, r6, asr #10 @ encoding: [0x46,0x05,0x71,0xe1] 494@ CHECK: cmn r1, r6, ror #10 @ encoding: [0x66,0x05,0x71,0xe1] 495@ CHECK: cmn r7, r8, lsl r2 @ encoding: [0x18,0x02,0x77,0xe1] 496@ CHECK: cmn sp, r8, lsr r2 @ encoding: [0x38,0x02,0x7d,0xe1] 497@ CHECK: cmn r7, r8, asr r2 @ encoding: [0x58,0x02,0x77,0xe1] 498@ CHECK: cmn r7, r8, ror r2 @ encoding: [0x78,0x02,0x77,0xe1] 499@ CHECK: cmn r1, r6, rrx @ encoding: [0x66,0x00,0x71,0xe1] 500 501@------------------------------------------------------------------------------ 502@ CMP 503@------------------------------------------------------------------------------ 504 cmp r1, #0xf 505 cmp r1, r6 506 cmp r1, r6, lsl #10 507 cmp r1, r6, lsr #10 508 cmp sp, r6, lsr #10 509 cmp r1, r6, asr #10 510 cmp r1, r6, ror #10 511 cmp r7, r8, lsl r2 512 cmp sp, r8, lsr r2 513 cmp r7, r8, asr r2 514 cmp r7, r8, ror r2 515 cmp r1, r6, rrx 516 cmp r0, #-2 517 cmp lr, #0 518 519@ CHECK: cmp r1, #15 @ encoding: [0x0f,0x00,0x51,0xe3] 520@ CHECK: cmp r1, r6 @ encoding: [0x06,0x00,0x51,0xe1] 521@ CHECK: cmp r1, r6, lsl #10 @ encoding: [0x06,0x05,0x51,0xe1] 522@ CHECK: cmp r1, r6, lsr #10 @ encoding: [0x26,0x05,0x51,0xe1] 523@ CHECK: cmp sp, r6, lsr #10 @ encoding: [0x26,0x05,0x5d,0xe1] 524@ CHECK: cmp r1, r6, asr #10 @ encoding: [0x46,0x05,0x51,0xe1] 525@ CHECK: cmp r1, r6, ror #10 @ encoding: [0x66,0x05,0x51,0xe1] 526@ CHECK: cmp r7, r8, lsl r2 @ encoding: [0x18,0x02,0x57,0xe1] 527@ CHECK: cmp sp, r8, lsr r2 @ encoding: [0x38,0x02,0x5d,0xe1] 528@ CHECK: cmp r7, r8, asr r2 @ encoding: [0x58,0x02,0x57,0xe1] 529@ CHECK: cmp r7, r8, ror r2 @ encoding: [0x78,0x02,0x57,0xe1] 530@ CHECK: cmp r1, r6, rrx @ encoding: [0x66,0x00,0x51,0xe1] 531@ CHECK: cmn r0, #2 @ encoding: [0x02,0x00,0x70,0xe3] 532@ CHECK: cmp lr, #0 @ encoding: [0x00,0x00,0x5e,0xe3] 533 534 535@------------------------------------------------------------------------------ 536@ CPS 537@------------------------------------------------------------------------------ 538 cpsie aif 539 cps #15 540 cpsid if, #10 541 542@ CHECK: cpsie aif @ encoding: [0xc0,0x01,0x08,0xf1] 543@ CHECK: cps #15 @ encoding: [0x0f,0x00,0x02,0xf1] 544@ CHECK: cpsid if, #10 @ encoding: [0xca,0x00,0x0e,0xf1] 545 546 547@------------------------------------------------------------------------------ 548@ DBG 549@------------------------------------------------------------------------------ 550 dbg #0 551 dbg #5 552 dbg #15 553 554@ CHECK: dbg #0 @ encoding: [0xf0,0xf0,0x20,0xe3] 555@ CHECK: dbg #5 @ encoding: [0xf5,0xf0,0x20,0xe3] 556@ CHECK: dbg #15 @ encoding: [0xff,0xf0,0x20,0xe3] 557 558 559@------------------------------------------------------------------------------ 560@ DMB 561@------------------------------------------------------------------------------ 562 dmb sy 563 dmb st 564 dmb sh 565 dmb ish 566 dmb shst 567 dmb ishst 568 dmb un 569 dmb nsh 570 dmb unst 571 dmb nshst 572 dmb osh 573 dmb oshst 574 dmb 575 576@ CHECK: dmb sy @ encoding: [0x5f,0xf0,0x7f,0xf5] 577@ CHECK: dmb st @ encoding: [0x5e,0xf0,0x7f,0xf5] 578@ CHECK: dmb ish @ encoding: [0x5b,0xf0,0x7f,0xf5] 579@ CHECK: dmb ish @ encoding: [0x5b,0xf0,0x7f,0xf5] 580@ CHECK: dmb ishst @ encoding: [0x5a,0xf0,0x7f,0xf5] 581@ CHECK: dmb ishst @ encoding: [0x5a,0xf0,0x7f,0xf5] 582@ CHECK: dmb nsh @ encoding: [0x57,0xf0,0x7f,0xf5] 583@ CHECK: dmb nsh @ encoding: [0x57,0xf0,0x7f,0xf5] 584@ CHECK: dmb nshst @ encoding: [0x56,0xf0,0x7f,0xf5] 585@ CHECK: dmb nshst @ encoding: [0x56,0xf0,0x7f,0xf5] 586@ CHECK: dmb osh @ encoding: [0x53,0xf0,0x7f,0xf5] 587@ CHECK: dmb oshst @ encoding: [0x52,0xf0,0x7f,0xf5] 588@ CHECK: dmb sy @ encoding: [0x5f,0xf0,0x7f,0xf5] 589 590@------------------------------------------------------------------------------ 591@ DSB 592@------------------------------------------------------------------------------ 593 dsb sy 594 dsb st 595 dsb sh 596 dsb ish 597 dsb shst 598 dsb ishst 599 dsb un 600 dsb nsh 601 dsb unst 602 dsb nshst 603 dsb osh 604 dsb oshst 605 dsb 606 607@ CHECK: dsb sy @ encoding: [0x4f,0xf0,0x7f,0xf5] 608@ CHECK: dsb st @ encoding: [0x4e,0xf0,0x7f,0xf5] 609@ CHECK: dsb ish @ encoding: [0x4b,0xf0,0x7f,0xf5] 610@ CHECK: dsb ish @ encoding: [0x4b,0xf0,0x7f,0xf5] 611@ CHECK: dsb ishst @ encoding: [0x4a,0xf0,0x7f,0xf5] 612@ CHECK: dsb ishst @ encoding: [0x4a,0xf0,0x7f,0xf5] 613@ CHECK: dsb nsh @ encoding: [0x47,0xf0,0x7f,0xf5] 614@ CHECK: dsb nsh @ encoding: [0x47,0xf0,0x7f,0xf5] 615@ CHECK: dsb nshst @ encoding: [0x46,0xf0,0x7f,0xf5] 616@ CHECK: dsb nshst @ encoding: [0x46,0xf0,0x7f,0xf5] 617@ CHECK: dsb osh @ encoding: [0x43,0xf0,0x7f,0xf5] 618@ CHECK: dsb oshst @ encoding: [0x42,0xf0,0x7f,0xf5] 619@ CHECK: dsb sy @ encoding: [0x4f,0xf0,0x7f,0xf5] 620 621@ With capitals 622 dsb SY 623 dsb OSHST 624 625@ CHECK: dsb sy @ encoding: [0x4f,0xf0,0x7f,0xf5] 626@ CHECK: dsb oshst @ encoding: [0x42,0xf0,0x7f,0xf5] 627@------------------------------------------------------------------------------ 628@ EOR 629@------------------------------------------------------------------------------ 630 eor r4, r5, #0xf000 631 eor r4, r5, r6 632 eor r4, r5, r6, lsl #5 633 eor r4, r5, r6, lsr #5 634 eor r4, r5, r6, lsr #5 635 eor r4, r5, r6, asr #5 636 eor r4, r5, r6, ror #5 637 eor r6, r7, r8, lsl r9 638 eor r6, r7, r8, lsr r9 639 eor r6, r7, r8, asr r9 640 eor r6, r7, r8, ror r9 641 eor r4, r5, r6, rrx 642 643 @ destination register is optional 644 eor r5, #0xf000 645 eor r4, r5 646 eor r4, r5, lsl #5 647 eor r4, r5, lsr #5 648 eor r4, r5, lsr #5 649 eor r4, r5, asr #5 650 eor r4, r5, ror #5 651 eor r6, r7, lsl r9 652 eor r6, r7, lsr r9 653 eor r6, r7, asr r9 654 eor r6, r7, ror r9 655 eor r4, r5, rrx 656 657@ CHECK: eor r4, r5, #61440 @ encoding: [0x0f,0x4a,0x25,0xe2] 658@ CHECK: eor r4, r5, r6 @ encoding: [0x06,0x40,0x25,0xe0] 659@ CHECK: eor r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0x25,0xe0] 660@ CHECK: eor r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x25,0xe0] 661@ CHECK: eor r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x25,0xe0] 662@ CHECK: eor r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0x25,0xe0] 663@ CHECK: eor r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0x25,0xe0] 664@ CHECK: eor r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0x27,0xe0] 665@ CHECK: eor r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0x27,0xe0] 666@ CHECK: eor r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0x27,0xe0] 667@ CHECK: eor r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0x27,0xe0] 668@ CHECK: eor r4, r5, r6, rrx @ encoding: [0x66,0x40,0x25,0xe0] 669 670 671@ CHECK: eor r5, r5, #61440 @ encoding: [0x0f,0x5a,0x25,0xe2] 672@ CHECK: eor r4, r4, r5 @ encoding: [0x05,0x40,0x24,0xe0] 673@ CHECK: eor r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0x24,0xe0] 674@ CHECK: eor r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x24,0xe0] 675@ CHECK: eor r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x24,0xe0] 676@ CHECK: eor r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0x24,0xe0] 677@ CHECK: eor r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0x24,0xe0] 678@ CHECK: eor r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0x26,0xe0] 679@ CHECK: eor r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0x26,0xe0] 680@ CHECK: eor r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0x26,0xe0] 681@ CHECK: eor r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0x26,0xe0] 682@ CHECK: eor r4, r4, r5, rrx @ encoding: [0x65,0x40,0x24,0xe0] 683 684 @ Test right shift by 32, which is encoded as 0 685 eor r3, r1, r2, lsr #32 686 eor r3, r1, r2, asr #32 687@ CHECK: eor r3, r1, r2, lsr #32 @ encoding: [0x22,0x30,0x21,0xe0] 688@ CHECK: eor r3, r1, r2, asr #32 @ encoding: [0x42,0x30,0x21,0xe0] 689 690@------------------------------------------------------------------------------ 691@ ISB 692@------------------------------------------------------------------------------ 693 isb sy 694 isb 695 696@ CHECK: isb sy @ encoding: [0x6f,0xf0,0x7f,0xf5] 697@ CHECK: isb sy @ encoding: [0x6f,0xf0,0x7f,0xf5] 698 699 700@------------------------------------------------------------------------------ 701@ LDC{L}/LDC2{L} 702@------------------------------------------------------------------------------ 703 ldc2 p0, c8, [r1, #4] 704 ldc2 p1, c7, [r2] 705 ldc2 p2, c6, [r3, #-224] 706 ldc2 p3, c5, [r4, #-120]! 707 ldc2 p4, c4, [r5], #16 708 ldc2 p5, c3, [r6], #-72 709 ldc2l p6, c2, [r7, #4] 710 ldc2l p7, c1, [r8] 711 ldc2l p8, c0, [r9, #-224] 712 ldc2l p9, c1, [r10, #-120]! 713 ldc2l p10, c2, [r11], #16 714 ldc2l p11, c3, [r12], #-72 715 716 ldc p12, c4, [r0, #4] 717 ldc p13, c5, [r1] 718 ldc p14, c6, [r2, #-224] 719 ldc p15, c7, [r3, #-120]! 720 ldc p5, c8, [r4], #16 721 ldc p4, c9, [r5], #-72 722 ldcl p3, c10, [r6, #4] 723 ldcl p2, c11, [r7] 724 ldcl p1, c12, [r8, #-224] 725 ldcl p0, c13, [r9, #-120]! 726 ldcl p6, c14, [r10], #16 727 ldcl p7, c15, [r11], #-72 728 729 ldclo p12, c4, [r0, #4] 730 ldchi p13, c5, [r1] 731 ldccs p14, c6, [r2, #-224] 732 ldccc p15, c7, [r3, #-120]! 733 ldceq p5, c8, [r4], #16 734 ldcgt p4, c9, [r5], #-72 735 ldcllt p3, c10, [r6, #4] 736 ldclge p2, c11, [r7] 737 ldclle p1, c12, [r8, #-224] 738 ldclne p0, c13, [r9, #-120]! 739 ldcleq p6, c14, [r10], #16 740 ldclhi p7, c15, [r11], #-72 741 742 ldc2 p2, c8, [r1], { 25 } 743 744@ CHECK: ldc2 p0, c8, [r1, #4] @ encoding: [0x01,0x80,0x91,0xfd] 745@ CHECK: ldc2 p1, c7, [r2] @ encoding: [0x00,0x71,0x92,0xfd] 746@ CHECK: ldc2 p2, c6, [r3, #-224] @ encoding: [0x38,0x62,0x13,0xfd] 747@ CHECK: ldc2 p3, c5, [r4, #-120]! @ encoding: [0x1e,0x53,0x34,0xfd] 748@ CHECK: ldc2 p4, c4, [r5], #16 @ encoding: [0x04,0x44,0xb5,0xfc] 749@ CHECK: ldc2 p5, c3, [r6], #-72 @ encoding: [0x12,0x35,0x36,0xfc] 750@ CHECK: ldc2l p6, c2, [r7, #4] @ encoding: [0x01,0x26,0xd7,0xfd] 751@ CHECK: ldc2l p7, c1, [r8] @ encoding: [0x00,0x17,0xd8,0xfd] 752@ CHECK: ldc2l p8, c0, [r9, #-224] @ encoding: [0x38,0x08,0x59,0xfd] 753@ CHECK: ldc2l p9, c1, [r10, #-120]! @ encoding: [0x1e,0x19,0x7a,0xfd] 754@ CHECK: ldc2l p10, c2, [r11], #16 @ encoding: [0x04,0x2a,0xfb,0xfc] 755@ CHECK: ldc2l p11, c3, [r12], #-72 @ encoding: [0x12,0x3b,0x7c,0xfc] 756 757@ CHECK: ldc p12, c4, [r0, #4] @ encoding: [0x01,0x4c,0x90,0xed] 758@ CHECK: ldc p13, c5, [r1] @ encoding: [0x00,0x5d,0x91,0xed] 759@ CHECK: ldc p14, c6, [r2, #-224] @ encoding: [0x38,0x6e,0x12,0xed] 760@ CHECK: ldc p15, c7, [r3, #-120]! @ encoding: [0x1e,0x7f,0x33,0xed] 761@ CHECK: ldc p5, c8, [r4], #16 @ encoding: [0x04,0x85,0xb4,0xec] 762@ CHECK: ldc p4, c9, [r5], #-72 @ encoding: [0x12,0x94,0x35,0xec] 763@ CHECK: ldcl p3, c10, [r6, #4] @ encoding: [0x01,0xa3,0xd6,0xed] 764@ CHECK: ldcl p2, c11, [r7] @ encoding: [0x00,0xb2,0xd7,0xed] 765@ CHECK: ldcl p1, c12, [r8, #-224] @ encoding: [0x38,0xc1,0x58,0xed] 766@ CHECK: ldcl p0, c13, [r9, #-120]! @ encoding: [0x1e,0xd0,0x79,0xed] 767@ CHECK: ldcl p6, c14, [r10], #16 @ encoding: [0x04,0xe6,0xfa,0xec] 768@ CHECK: ldcl p7, c15, [r11], #-72 @ encoding: [0x12,0xf7,0x7b,0xec] 769 770@ CHECK: ldclo p12, c4, [r0, #4] @ encoding: [0x01,0x4c,0x90,0x3d] 771@ CHECK: ldchi p13, c5, [r1] @ encoding: [0x00,0x5d,0x91,0x8d] 772@ CHECK: ldchs p14, c6, [r2, #-224] @ encoding: [0x38,0x6e,0x12,0x2d] 773@ CHECK: ldclo p15, c7, [r3, #-120]! @ encoding: [0x1e,0x7f,0x33,0x3d] 774@ CHECK: ldceq p5, c8, [r4], #16 @ encoding: [0x04,0x85,0xb4,0x0c] 775@ CHECK: ldcgt p4, c9, [r5], #-72 @ encoding: [0x12,0x94,0x35,0xcc] 776@ CHECK: ldcllt p3, c10, [r6, #4] @ encoding: [0x01,0xa3,0xd6,0xbd] 777@ CHECK: ldclge p2, c11, [r7] @ encoding: [0x00,0xb2,0xd7,0xad] 778@ CHECK: ldclle p1, c12, [r8, #-224] @ encoding: [0x38,0xc1,0x58,0xdd] 779@ CHECK: ldclne p0, c13, [r9, #-120]! @ encoding: [0x1e,0xd0,0x79,0x1d] 780@ CHECK: ldcleq p6, c14, [r10], #16 @ encoding: [0x04,0xe6,0xfa,0x0c] 781@ CHECK: ldclhi p7, c15, [r11], #-72 @ encoding: [0x12,0xf7,0x7b,0x8c] 782 783@ CHECK: ldc2 p2, c8, [r1], {25} @ encoding: [0x19,0x82,0x91,0xfc] 784 785 786@------------------------------------------------------------------------------ 787@ LDM* 788@------------------------------------------------------------------------------ 789 ldm r2, {r1,r3-r6,sp} 790 ldmia r2, {r1,r3-r6,sp} 791 ldmib r2, {r1,r3-r6,sp} 792 ldmda r2, {r1,r3-r6,sp} 793 ldmdb r2, {r1,r3-r6,sp} 794 ldmfd r2, {r1,r3-r6,sp} 795 796 @ with update 797 ldm r2!, {r1,r3-r6,sp} 798 ldmib r2!, {r1,r3-r6,sp} 799 ldmda r2!, {r1,r3-r6,sp} 800 ldmdb r2!, {r1,r3-r6,sp} 801 802 @ system version 803 ldm r0, {r0, r2, lr}^ 804 ldm sp!, {r0-r3, pc}^ 805 806@ CHECK: ldm r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8] 807@ CHECK: ldm r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8] 808@ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9] 809@ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8] 810@ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9] 811@ CHECK: ldm r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8] 812 813@ CHECK: ldm r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8] 814@ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9] 815@ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8] 816@ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9] 817@ CHECK: ldm r0, {lr, r0, r2} ^ @ encoding: [0x05,0x40,0xd0,0xe8] 818@ CHECK: ldm sp!, {pc, r0, r1, r2, r3} ^ @ encoding: [0x0f,0x80,0xfd,0xe8] 819 820 821@------------------------------------------------------------------------------ 822@ LDREX/LDREXB/LDREXH/LDREXD 823@------------------------------------------------------------------------------ 824 ldrexb r3, [r4] 825 ldrexh r2, [r5] 826 ldrex r1, [r7] 827 ldrexd r6, r7, [r8] 828 829@ CHECK: ldrexb r3, [r4] @ encoding: [0x9f,0x3f,0xd4,0xe1] 830@ CHECK: ldrexh r2, [r5] @ encoding: [0x9f,0x2f,0xf5,0xe1] 831@ CHECK: ldrex r1, [r7] @ encoding: [0x9f,0x1f,0x97,0xe1] 832@ CHECK: ldrexd r6, r7, [r8] @ encoding: [0x9f,0x6f,0xb8,0xe1] 833 834@------------------------------------------------------------------------------ 835@ LDRHT 836@------------------------------------------------------------------------------ 837 ldrhthi r8, [r11], #-0 838 ldrhthi r8, [r11], #0 839 840@ CHECK: ldrhthi r8, [r11], #-0 @ encoding: [0xb0,0x80,0x7b,0x80] 841@ CHECK: ldrhthi r8, [r11], #0 @ encoding: [0xb0,0x80,0xfb,0x80] 842 843@------------------------------------------------------------------------------ 844@ LSL 845@------------------------------------------------------------------------------ 846 lsl r2, r4, #31 847 lsl r2, r4, #1 848 lsl r2, r4, #0 849 lsl r4, #1 850 851@ CHECK: lsl r2, r4, #31 @ encoding: [0x84,0x2f,0xa0,0xe1] 852@ CHECK: lsl r2, r4, #1 @ encoding: [0x84,0x20,0xa0,0xe1] 853@ CHECK: mov r2, r4 @ encoding: [0x04,0x20,0xa0,0xe1] 854@ CHECK: lsl r4, r4, #1 @ encoding: [0x84,0x40,0xa0,0xe1] 855 856 857@------------------------------------------------------------------------------ 858@ LSR 859@------------------------------------------------------------------------------ 860 lsr r2, r4, #32 861 lsr r2, r4, #2 862 lsr r2, r4, #0 863 lsr r4, #2 864 865@ CHECK: lsr r2, r4, #32 @ encoding: [0x24,0x20,0xa0,0xe1] 866@ CHECK: lsr r2, r4, #2 @ encoding: [0x24,0x21,0xa0,0xe1] 867@ CHECK: mov r2, r4 @ encoding: [0x04,0x20,0xa0,0xe1] 868@ CHECK: lsr r4, r4, #2 @ encoding: [0x24,0x41,0xa0,0xe1] 869 870 871@------------------------------------------------------------------------------ 872@ MCR/MCR2 873@------------------------------------------------------------------------------ 874 mcr p7, #1, r5, c1, c1, #4 875 mcr2 p7, #1, r5, c1, c1, #4 876 877@ CHECK: mcr p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee] 878@ CHECK: mcr2 p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe] 879 880@------------------------------------------------------------------------------ 881@ MCRR/MCRR2 882@------------------------------------------------------------------------------ 883 mcrr p7, #15, r5, r4, c1 884 mcrr2 p7, #15, r5, r4, c1 885 886@ CHECK: mcrr p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xec] 887@ CHECK: mcrr2 p7, #15, r5, r4, c1 @ encoding: [0xf1,0x57,0x44,0xfc] 888 889 890@------------------------------------------------------------------------------ 891@ MLA 892@------------------------------------------------------------------------------ 893 mla r1,r2,r3,r4 894 mlas r1,r2,r3,r4 895 mlane r1,r2,r3,r4 896 mlasne r1,r2,r3,r4 897 898@ CHECK: mla r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0xe0] 899@ CHECK: mlas r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0] 900@ CHECK: mlane r1, r2, r3, r4 @ encoding: [0x92,0x43,0x21,0x10] 901@ CHECK: mlasne r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0x10] 902 903@------------------------------------------------------------------------------ 904@ MLS 905@------------------------------------------------------------------------------ 906 mls r2,r5,r6,r3 907 mlsne r2,r5,r6,r3 908 909@ CHECK: mls r2, r5, r6, r3 @ encoding: [0x95,0x36,0x62,0xe0] 910@ CHECK: mlsne r2, r5, r6, r3 @ encoding: [0x95,0x36,0x62,0x10] 911 912@------------------------------------------------------------------------------ 913@ MOV (immediate) 914@------------------------------------------------------------------------------ 915 mov r3, #7 916 mov r4, #0xff0 917 mov r5, #0xff0000 918 mov r6, #0xffff 919 movw r9, #0xffff 920 movs r3, #7 921 moveq r4, #0xff0 922 movseq r5, #0xff0000 923 924@ CHECK: mov r3, #7 @ encoding: [0x07,0x30,0xa0,0xe3] 925@ CHECK: mov r4, #4080 @ encoding: [0xff,0x4e,0xa0,0xe3] 926@ CHECK: mov r5, #16711680 @ encoding: [0xff,0x58,0xa0,0xe3] 927@ CHECK: movw r6, #65535 @ encoding: [0xff,0x6f,0x0f,0xe3] 928@ CHECK: movw r9, #65535 @ encoding: [0xff,0x9f,0x0f,0xe3] 929@ CHECK: movs r3, #7 @ encoding: [0x07,0x30,0xb0,0xe3] 930@ CHECK: moveq r4, #4080 @ encoding: [0xff,0x4e,0xa0,0x03] 931@ CHECK: movseq r5, #16711680 @ encoding: [0xff,0x58,0xb0,0x03] 932 933@------------------------------------------------------------------------------ 934@ MOV (register) 935@------------------------------------------------------------------------------ 936 mov r2, r3 937 movs r2, r3 938 moveq r2, r3 939 movseq r2, r3 940 mov r12, r8, lsl #(2 - 2) 941 lsl r2, r3, #(2 - 2) 942 mov r12, r8, lsr #(2 - 2) 943 lsr r2, r3, #(2 - 2) 944 mov r12, r8, asr #(2 - 2) 945 asr r2, r3, #(2 - 2) 946 mov r12, r8, ror #(2 - 2) 947 ror r2, r3, #(2 - 2) 948 949@ CHECK: mov r2, r3 @ encoding: [0x03,0x20,0xa0,0xe1] 950@ CHECK: movs r2, r3 @ encoding: [0x03,0x20,0xb0,0xe1] 951@ CHECK: moveq r2, r3 @ encoding: [0x03,0x20,0xa0,0x01] 952@ CHECK: movseq r2, r3 @ encoding: [0x03,0x20,0xb0,0x01] 953@ CHECK: mov r12, r8 @ encoding: [0x08,0xc0,0xa0,0xe1] 954@ CHECK: mov r2, r3 @ encoding: [0x03,0x20,0xa0,0xe1] 955@ CHECK: mov r12, r8 @ encoding: [0x08,0xc0,0xa0,0xe1] 956@ CHECK: mov r2, r3 @ encoding: [0x03,0x20,0xa0,0xe1] 957@ CHECK: mov r12, r8 @ encoding: [0x08,0xc0,0xa0,0xe1] 958@ CHECK: mov r2, r3 @ encoding: [0x03,0x20,0xa0,0xe1] 959@ CHECK: mov r12, r8 @ encoding: [0x08,0xc0,0xa0,0xe1] 960@ CHECK: mov r2, r3 @ encoding: [0x03,0x20,0xa0,0xe1] 961 962 963@------------------------------------------------------------------------------ 964@ MOVT 965@------------------------------------------------------------------------------ 966 movt r3, #7 967 movt r6, #0xffff 968 movteq r4, #0xff0 969 970@ CHECK: movt r3, #7 @ encoding: [0x07,0x30,0x40,0xe3] 971@ CHECK: movt r6, #65535 @ encoding: [0xff,0x6f,0x4f,0xe3] 972@ CHECK: movteq r4, #4080 @ encoding: [0xf0,0x4f,0x40,0x03] 973 974 975@------------------------------------------------------------------------------ 976@ MRC/MRC2 977@------------------------------------------------------------------------------ 978 mrc p14, #0, r1, c1, c2, #4 979 mrc2 p14, #0, r1, c1, c2, #4 980 981@ CHECK: mrc p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xee] 982@ CHECK: mrc2 p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xfe] 983 984@------------------------------------------------------------------------------ 985@ MRRC/MRRC2 986@------------------------------------------------------------------------------ 987 mrrc p7, #1, r5, r4, c1 988 mrrc2 p7, #1, r5, r4, c1 989 990@ CHECK: mrrc p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xec] 991@ CHECK: mrrc2 p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xfc] 992 993 994@------------------------------------------------------------------------------ 995@ MRS 996@------------------------------------------------------------------------------ 997 mrs r8, apsr 998 mrs r8, cpsr 999 mrs r8, spsr 1000@ CHECK: mrs r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1] 1001@ CHECK: mrs r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1] 1002@ CHECK: mrs r8, spsr @ encoding: [0x00,0x80,0x4f,0xe1] 1003 1004 1005 1006@------------------------------------------------------------------------------ 1007@ MSR 1008@------------------------------------------------------------------------------ 1009 1010 msr apsr, #5 1011 msr apsr_g, #5 1012 msr apsr_nzcvq, #5 1013 msr APSR_nzcvq, #5 1014 msr apsr_nzcvqg, #5 1015 msr cpsr_fc, #5 1016 msr cpsr_c, #5 1017 msr cpsr_x, #5 1018 msr cpsr_fc, #5 1019 msr cpsr_all, #5 1020 msr cpsr_fsx, #5 1021 msr spsr_fc, #5 1022 msr SPSR_fsxc, #5 1023 msr cpsr_fsxc, #5 1024 1025@ CHECK: msr APSR_nzcvq, #5 @ encoding: [0x05,0xf0,0x28,0xe3] 1026@ CHECK: msr APSR_g, #5 @ encoding: [0x05,0xf0,0x24,0xe3] 1027@ CHECK: msr APSR_nzcvq, #5 @ encoding: [0x05,0xf0,0x28,0xe3] 1028@ CHECK: msr APSR_nzcvq, #5 @ encoding: [0x05,0xf0,0x28,0xe3] 1029@ CHECK: msr APSR_nzcvqg, #5 @ encoding: [0x05,0xf0,0x2c,0xe3] 1030@ CHECK: msr CPSR_fc, #5 @ encoding: [0x05,0xf0,0x29,0xe3] 1031@ CHECK: msr CPSR_c, #5 @ encoding: [0x05,0xf0,0x21,0xe3] 1032@ CHECK: msr CPSR_x, #5 @ encoding: [0x05,0xf0,0x22,0xe3] 1033@ CHECK: msr CPSR_fc, #5 @ encoding: [0x05,0xf0,0x29,0xe3] 1034@ CHECK: msr CPSR_fc, #5 @ encoding: [0x05,0xf0,0x29,0xe3] 1035@ CHECK: msr CPSR_fsx, #5 @ encoding: [0x05,0xf0,0x2e,0xe3] 1036@ CHECK: msr SPSR_fc, #5 @ encoding: [0x05,0xf0,0x69,0xe3] 1037@ CHECK: msr SPSR_fsxc, #5 @ encoding: [0x05,0xf0,0x6f,0xe3] 1038@ CHECK: msr CPSR_fsxc, #5 @ encoding: [0x05,0xf0,0x2f,0xe3] 1039 1040 msr apsr, r0 1041 msr apsr_g, r0 1042 msr apsr_nzcvq, r0 1043 msr APSR_nzcvq, r0 1044 msr apsr_nzcvqg, r0 1045 msr cpsr_fc, r0 1046 msr cpsr_c, r0 1047 msr cpsr_x, r0 1048 msr cpsr_fc, r0 1049 msr cpsr_all, r0 1050 msr cpsr_fsx, r0 1051 msr spsr_fc, r0 1052 msr SPSR_fsxc, r0 1053 msr cpsr_fsxc, r0 1054 1055@ CHECK: msr APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1] 1056@ CHECK: msr APSR_g, r0 @ encoding: [0x00,0xf0,0x24,0xe1] 1057@ CHECK: msr APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1] 1058@ CHECK: msr APSR_nzcvq, r0 @ encoding: [0x00,0xf0,0x28,0xe1] 1059@ CHECK: msr APSR_nzcvqg, r0 @ encoding: [0x00,0xf0,0x2c,0xe1] 1060@ CHECK: msr CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1] 1061@ CHECK: msr CPSR_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1] 1062@ CHECK: msr CPSR_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1] 1063@ CHECK: msr CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1] 1064@ CHECK: msr CPSR_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1] 1065@ CHECK: msr CPSR_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1] 1066@ CHECK: msr SPSR_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1] 1067@ CHECK: msr SPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1] 1068@ CHECK: msr CPSR_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1] 1069 1070@------------------------------------------------------------------------------ 1071@ MUL 1072@------------------------------------------------------------------------------ 1073 mul r5, r6, r7 1074 muls r5, r6, r7 1075 mulgt r5, r6, r7 1076 mulsle r5, r6, r7 1077 mul r11, r5 1078 1079@ CHECK: mul r5, r6, r7 @ encoding: [0x96,0x07,0x05,0xe0] 1080@ CHECK: muls r5, r6, r7 @ encoding: [0x96,0x07,0x15,0xe0] 1081@ CHECK: mulgt r5, r6, r7 @ encoding: [0x96,0x07,0x05,0xc0] 1082@ CHECK: mulsle r5, r6, r7 @ encoding: [0x96,0x07,0x15,0xd0] 1083 1084 1085@------------------------------------------------------------------------------ 1086@ MVN (immediate) 1087@------------------------------------------------------------------------------ 1088 mvn r3, #7 1089 mvn r4, #0xff0 1090 mvn r5, #0xff0000 1091 mvns r3, #7 1092 mvneq r4, #0xff0 1093 mvnseq r5, #0xff0000 1094 1095@ CHECK: mvn r3, #7 @ encoding: [0x07,0x30,0xe0,0xe3] 1096@ CHECK: mvn r4, #4080 @ encoding: [0xff,0x4e,0xe0,0xe3] 1097@ CHECK: mvn r5, #16711680 @ encoding: [0xff,0x58,0xe0,0xe3] 1098@ CHECK: mvns r3, #7 @ encoding: [0x07,0x30,0xf0,0xe3] 1099@ CHECK: mvneq r4, #4080 @ encoding: [0xff,0x4e,0xe0,0x03] 1100@ CHECK: mvnseq r5, #16711680 @ encoding: [0xff,0x58,0xf0,0x03] 1101 1102 1103@------------------------------------------------------------------------------ 1104@ MVN (register) 1105@------------------------------------------------------------------------------ 1106 mvn r2, r3 1107 mvns r2, r3 1108 mvn r5, r6, lsl #19 1109 mvn r5, r6, lsr #9 1110 mvn r5, r6, asr #4 1111 mvn r5, r6, ror #6 1112 mvn r5, r6, rrx 1113 mvneq r2, r3 1114 mvnseq r2, r3, lsl #10 1115 1116@ CHECK: mvn r2, r3 @ encoding: [0x03,0x20,0xe0,0xe1] 1117@ CHECK: mvns r2, r3 @ encoding: [0x03,0x20,0xf0,0xe1] 1118@ CHECK: mvn r5, r6, lsl #19 @ encoding: [0x86,0x59,0xe0,0xe1] 1119@ CHECK: mvn r5, r6, lsr #9 @ encoding: [0xa6,0x54,0xe0,0xe1] 1120@ CHECK: mvn r5, r6, asr #4 @ encoding: [0x46,0x52,0xe0,0xe1] 1121@ CHECK: mvn r5, r6, ror #6 @ encoding: [0x66,0x53,0xe0,0xe1] 1122@ CHECK: mvn r5, r6, rrx @ encoding: [0x66,0x50,0xe0,0xe1] 1123@ CHECK: mvneq r2, r3 @ encoding: [0x03,0x20,0xe0,0x01] 1124@ CHECK: mvnseq r2, r3, lsl #10 @ encoding: [0x03,0x25,0xf0,0x01] 1125 1126 1127@------------------------------------------------------------------------------ 1128@ MVN (shifted register) 1129@------------------------------------------------------------------------------ 1130 mvn r5, r6, lsl r7 1131 mvns r5, r6, lsr r7 1132 mvngt r5, r6, asr r7 1133 mvnslt r5, r6, ror r7 1134 1135@ CHECK: mvn r5, r6, lsl r7 @ encoding: [0x16,0x57,0xe0,0xe1] 1136@ CHECK: mvns r5, r6, lsr r7 @ encoding: [0x36,0x57,0xf0,0xe1] 1137@ CHECK: mvngt r5, r6, asr r7 @ encoding: [0x56,0x57,0xe0,0xc1] 1138@ CHECK: mvnslt r5, r6, ror r7 @ encoding: [0x76,0x57,0xf0,0xb1] 1139 1140@------------------------------------------------------------------------------ 1141@ NEG 1142@------------------------------------------------------------------------------ 1143 neg r5, r8 1144 1145@ CHECK: rsb r5, r8, #0 @ encoding: [0x00,0x50,0x68,0xe2] 1146 1147 1148@------------------------------------------------------------------------------ 1149@ NOP 1150@------------------------------------------------------------------------------ 1151 nop 1152 nopgt 1153 1154@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3] 1155@ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3] 1156 1157 1158@------------------------------------------------------------------------------ 1159@ ORR 1160@------------------------------------------------------------------------------ 1161 orr r4, r5, #0xf000 1162 orr r4, r5, r6 1163 orr r4, r5, r6, lsl #5 1164 orr r4, r5, r6, lsr #5 1165 orr r4, r5, r6, lsr #5 1166 orr r4, r5, r6, asr #5 1167 orr r4, r5, r6, ror #5 1168 orr r6, r7, r8, lsl r9 1169 orr r6, r7, r8, lsr r9 1170 orr r6, r7, r8, asr r9 1171 orr r6, r7, r8, ror r9 1172 orr r4, r5, r6, rrx 1173 1174 @ destination register is optional 1175 orr r5, #0xf000 1176 orr r4, r5 1177 orr r4, r5, lsl #5 1178 orr r4, r5, lsr #5 1179 orr r4, r5, lsr #5 1180 orr r4, r5, asr #5 1181 orr r4, r5, ror #5 1182 orr r6, r7, lsl r9 1183 orr r6, r7, lsr r9 1184 orr r6, r7, asr r9 1185 orr r6, r7, ror r9 1186 orr r4, r5, rrx 1187 1188@ CHECK: orr r4, r5, #61440 @ encoding: [0x0f,0x4a,0x85,0xe3] 1189@ CHECK: orr r4, r5, r6 @ encoding: [0x06,0x40,0x85,0xe1] 1190@ CHECK: orr r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0x85,0xe1] 1191@ CHECK: orr r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x85,0xe1] 1192@ CHECK: orr r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x85,0xe1] 1193@ CHECK: orr r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0x85,0xe1] 1194@ CHECK: orr r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0x85,0xe1] 1195@ CHECK: orr r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0x87,0xe1] 1196@ CHECK: orr r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0x87,0xe1] 1197@ CHECK: orr r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0x87,0xe1] 1198@ CHECK: orr r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0x87,0xe1] 1199@ CHECK: orr r4, r5, r6, rrx @ encoding: [0x66,0x40,0x85,0xe1] 1200 1201@ CHECK: orr r5, r5, #61440 @ encoding: [0x0f,0x5a,0x85,0xe3] 1202@ CHECK: orr r4, r4, r5 @ encoding: [0x05,0x40,0x84,0xe1] 1203@ CHECK: orr r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0x84,0xe1] 1204@ CHECK: orr r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x84,0xe1] 1205@ CHECK: orr r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x84,0xe1] 1206@ CHECK: orr r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0x84,0xe1] 1207@ CHECK: orr r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0x84,0xe1] 1208@ CHECK: orr r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0x86,0xe1] 1209@ CHECK: orr r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0x86,0xe1] 1210@ CHECK: orr r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0x86,0xe1] 1211@ CHECK: orr r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0x86,0xe1] 1212@ CHECK: orr r4, r4, r5, rrx @ encoding: [0x65,0x40,0x84,0xe1] 1213 1214 orrseq r4, r5, #0xf000 1215 orrne r4, r5, r6 1216 orrseq r4, r5, r6, lsl #5 1217 orrlo r6, r7, r8, ror r9 1218 orrshi r4, r5, r6, rrx 1219 orrcs r5, #0xf000 1220 orrseq r4, r5 1221 orrne r6, r7, asr r9 1222 orrslt r6, r7, ror r9 1223 orrsgt r4, r5, rrx 1224 1225@ CHECK: orrseq r4, r5, #61440 @ encoding: [0x0f,0x4a,0x95,0x03] 1226@ CHECK: orrne r4, r5, r6 @ encoding: [0x06,0x40,0x85,0x11] 1227@ CHECK: orrseq r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0x95,0x01] 1228@ CHECK: orrlo r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0x87,0x31] 1229@ CHECK: orrshi r4, r5, r6, rrx @ encoding: [0x66,0x40,0x95,0x81] 1230@ CHECK: orrhs r5, r5, #61440 @ encoding: [0x0f,0x5a,0x85,0x23] 1231@ CHECK: orrseq r4, r4, r5 @ encoding: [0x05,0x40,0x94,0x01] 1232@ CHECK: orrne r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0x86,0x11] 1233@ CHECK: orrslt r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0x96,0xb1] 1234@ CHECK: orrsgt r4, r4, r5, rrx @ encoding: [0x65,0x40,0x94,0xc1] 1235 1236 @ Test right shift by 32, which is encoded as 0 1237 orr r3, r1, r2, lsr #32 1238 orr r3, r1, r2, asr #32 1239@ CHECK: orr r3, r1, r2, lsr #32 @ encoding: [0x22,0x30,0x81,0xe1] 1240@ CHECK: orr r3, r1, r2, asr #32 @ encoding: [0x42,0x30,0x81,0xe1] 1241 1242@------------------------------------------------------------------------------ 1243@ PKH 1244@------------------------------------------------------------------------------ 1245 pkhbt r2, r2, r3 1246 pkhbt r2, r2, r3, lsl #31 1247 pkhbt r2, r2, r3, lsl #0 1248 pkhbt r2, r2, r3, lsl #15 1249 1250 pkhtb r2, r2, r3 1251 pkhtb r2, r2, r3, asr #31 1252 pkhtb r2, r2, r3, asr #15 1253 1254@ CHECK: pkhbt r2, r2, r3 @ encoding: [0x13,0x20,0x82,0xe6] 1255@ CHECK: pkhbt r2, r2, r3, lsl #31 @ encoding: [0x93,0x2f,0x82,0xe6] 1256@ CHECK: pkhbt r2, r2, r3 @ encoding: [0x13,0x20,0x82,0xe6] 1257@ CHECK: pkhbt r2, r2, r3, lsl #15 @ encoding: [0x93,0x27,0x82,0xe6] 1258 1259@ CHECK: pkhbt r2, r2, r3 @ encoding: [0x13,0x20,0x82,0xe6] 1260@ CHECK: pkhtb r2, r2, r3, asr #31 @ encoding: [0xd3,0x2f,0x82,0xe6] 1261@ CHECK: pkhtb r2, r2, r3, asr #15 @ encoding: [0xd3,0x27,0x82,0xe6] 1262 1263@------------------------------------------------------------------------------ 1264@ FIXME: PLD 1265@------------------------------------------------------------------------------ 1266@------------------------------------------------------------------------------ 1267@ FIXME: PLI 1268@------------------------------------------------------------------------------ 1269 1270 1271@------------------------------------------------------------------------------ 1272@ POP 1273@------------------------------------------------------------------------------ 1274 pop {r7} 1275 pop {r7, r8, r9, r10} 1276 1277@ CHECK: pop {r7} @ encoding: [0x04,0x70,0x9d,0xe4] 1278@ CHECK: pop {r7, r8, r9, r10} @ encoding: [0x80,0x07,0xbd,0xe8] 1279 1280 1281@------------------------------------------------------------------------------ 1282@ PUSH 1283@------------------------------------------------------------------------------ 1284 push {r7} 1285 push {r7, r8, r9, r10} 1286 1287@ CHECK: push {r7} @ encoding: [0x04,0x70,0x2d,0xe5] 1288@ CHECK: push {r7, r8, r9, r10} @ encoding: [0x80,0x07,0x2d,0xe9] 1289 1290 1291@------------------------------------------------------------------------------ 1292@ QADD/QADD16/QADD8 1293@------------------------------------------------------------------------------ 1294 qadd r1, r2, r3 1295 qaddne r1, r2, r3 1296 qadd16 r1, r2, r3 1297 qadd16gt r1, r2, r3 1298 qadd8 r1, r2, r3 1299 qadd8le r1, r2, r3 1300 1301@ CHECK: qadd r1, r2, r3 @ encoding: [0x52,0x10,0x03,0xe1] 1302@ CHECK: qaddne r1, r2, r3 @ encoding: [0x52,0x10,0x03,0x11] 1303@ CHECK: qadd16 r1, r2, r3 @ encoding: [0x13,0x1f,0x22,0xe6] 1304@ CHECK: qadd16gt r1, r2, r3 @ encoding: [0x13,0x1f,0x22,0xc6] 1305@ CHECK: qadd8 r1, r2, r3 @ encoding: [0x93,0x1f,0x22,0xe6] 1306@ CHECK: qadd8le r1, r2, r3 @ encoding: [0x93,0x1f,0x22,0xd6] 1307 1308 1309@------------------------------------------------------------------------------ 1310@ QDADD/QDSUB 1311@------------------------------------------------------------------------------ 1312 qdadd r6, r7, r8 1313 qdaddhi r6, r7, r8 1314 qdsub r6, r7, r8 1315 qdsubhi r6, r7, r8 1316 1317@ CHECK: qdadd r6, r7, r8 @ encoding: [0x57,0x60,0x48,0xe1] 1318@ CHECK: qdaddhi r6, r7, r8 @ encoding: [0x57,0x60,0x48,0x81] 1319@ CHECK: qdsub r6, r7, r8 @ encoding: [0x57,0x60,0x68,0xe1] 1320@ CHECK: qdsubhi r6, r7, r8 @ encoding: [0x57,0x60,0x68,0x81] 1321 1322 1323@------------------------------------------------------------------------------ 1324@ QSAX 1325@------------------------------------------------------------------------------ 1326 qsax r9, r12, r0 1327 qsaxeq r9, r12, r0 1328 1329@ CHECK: qsax r9, r12, r0 @ encoding: [0x50,0x9f,0x2c,0xe6] 1330@ CHECK: qsaxeq r9, r12, r0 @ encoding: [0x50,0x9f,0x2c,0x06] 1331 1332 1333@------------------------------------------------------------------------------ 1334@ QSUB/QSUB16/QSUB8 1335@------------------------------------------------------------------------------ 1336 qsub r1, r2, r3 1337 qsubne r1, r2, r3 1338 qsub16 r1, r2, r3 1339 qsub16gt r1, r2, r3 1340 qsub8 r1, r2, r3 1341 qsub8le r1, r2, r3 1342 1343@ CHECK: qsub r1, r2, r3 @ encoding: [0x52,0x10,0x23,0xe1] 1344@ CHECK: qsubne r1, r2, r3 @ encoding: [0x52,0x10,0x23,0x11] 1345@ CHECK: qsub16 r1, r2, r3 @ encoding: [0x73,0x1f,0x22,0xe6] 1346@ CHECK: qsub16gt r1, r2, r3 @ encoding: [0x73,0x1f,0x22,0xc6] 1347@ CHECK: qsub8 r1, r2, r3 @ encoding: [0xf3,0x1f,0x22,0xe6] 1348@ CHECK: qsub8le r1, r2, r3 @ encoding: [0xf3,0x1f,0x22,0xd6] 1349 1350 1351@------------------------------------------------------------------------------ 1352@ RBIT 1353@------------------------------------------------------------------------------ 1354 rbit r1, r2 1355 rbitne r1, r2 1356 1357@ CHECK: rbit r1, r2 @ encoding: [0x32,0x1f,0xff,0xe6] 1358@ CHECK: rbitne r1, r2 @ encoding: [0x32,0x1f,0xff,0x16] 1359 1360 1361@------------------------------------------------------------------------------ 1362@ REV/REV16/REVSH 1363@------------------------------------------------------------------------------ 1364 rev r1, r9 1365 revne r1, r5 1366 rev16 r8, r3 1367 rev16ne r12, r4 1368 revsh r4, r9 1369 revshne r9, r1 1370 1371@ CHECK: rev r1, r9 @ encoding: [0x39,0x1f,0xbf,0xe6] 1372@ CHECK: revne r1, r5 @ encoding: [0x35,0x1f,0xbf,0x16] 1373@ CHECK: rev16 r8, r3 @ encoding: [0xb3,0x8f,0xbf,0xe6] 1374@ CHECK: rev16ne r12, r4 @ encoding: [0xb4,0xcf,0xbf,0x16] 1375@ CHECK: revsh r4, r9 @ encoding: [0xb9,0x4f,0xff,0xe6] 1376@ CHECK: revshne r9, r1 @ encoding: [0xb1,0x9f,0xff,0x16] 1377 1378 1379@------------------------------------------------------------------------------ 1380@ RFE 1381@------------------------------------------------------------------------------ 1382 rfeda r2 1383 rfedb r3 1384 rfeia r5 1385 rfeib r6 1386 1387 rfeda r4! 1388 rfedb r7! 1389 rfeia r9! 1390 rfeib r8! 1391 1392 rfefa r2 1393 rfeea r3 1394 rfefd r5 1395 rfeed r6 1396 1397 rfefa r4! 1398 rfeea r7! 1399 rfefd r9! 1400 rfeed r8! 1401 1402 rfe r1 1403 rfe r1! 1404 1405@ CHECK: rfeda r2 @ encoding: [0x00,0x0a,0x12,0xf8] 1406@ CHECK: rfedb r3 @ encoding: [0x00,0x0a,0x13,0xf9] 1407@ CHECK: rfeia r5 @ encoding: [0x00,0x0a,0x95,0xf8] 1408@ CHECK: rfeib r6 @ encoding: [0x00,0x0a,0x96,0xf9] 1409 1410@ CHECK: rfeda r4! @ encoding: [0x00,0x0a,0x34,0xf8] 1411@ CHECK: rfedb r7! @ encoding: [0x00,0x0a,0x37,0xf9] 1412@ CHECK: rfeia r9! @ encoding: [0x00,0x0a,0xb9,0xf8] 1413@ CHECK: rfeib r8! @ encoding: [0x00,0x0a,0xb8,0xf9] 1414 1415@ CHECK: rfeda r2 @ encoding: [0x00,0x0a,0x12,0xf8] 1416@ CHECK: rfedb r3 @ encoding: [0x00,0x0a,0x13,0xf9] 1417@ CHECK: rfeia r5 @ encoding: [0x00,0x0a,0x95,0xf8] 1418@ CHECK: rfeib r6 @ encoding: [0x00,0x0a,0x96,0xf9] 1419 1420@ CHECK: rfeda r4! @ encoding: [0x00,0x0a,0x34,0xf8] 1421@ CHECK: rfedb r7! @ encoding: [0x00,0x0a,0x37,0xf9] 1422@ CHECK: rfeia r9! @ encoding: [0x00,0x0a,0xb9,0xf8] 1423@ CHECK: rfeib r8! @ encoding: [0x00,0x0a,0xb8,0xf9] 1424 1425@ CHECK: rfeia r1 @ encoding: [0x00,0x0a,0x91,0xf8] 1426@ CHECK: rfeia r1! @ encoding: [0x00,0x0a,0xb1,0xf8] 1427 1428 1429@------------------------------------------------------------------------------ 1430@ ROR 1431@------------------------------------------------------------------------------ 1432 ror r2, r4, #31 1433 ror r2, r4, #1 1434 ror r2, r4, #0 1435 ror r4, #1 1436 1437@ CHECK: ror r2, r4, #31 @ encoding: [0xe4,0x2f,0xa0,0xe1] 1438@ CHECK: ror r2, r4, #1 @ encoding: [0xe4,0x20,0xa0,0xe1] 1439@ CHECK: mov r2, r4 @ encoding: [0x04,0x20,0xa0,0xe1] 1440@ CHECK: ror r4, r4, #1 @ encoding: [0xe4,0x40,0xa0,0xe1] 1441 1442 1443@------------------------------------------------------------------------------ 1444@ RSB 1445@------------------------------------------------------------------------------ 1446 rsb r4, r5, #0xf000 1447 rsb r4, r5, r6 1448 rsb r4, r5, r6, lsl #5 1449 rsblo r4, r5, r6, lsr #5 1450 rsb r4, r5, r6, lsr #5 1451 rsb r4, r5, r6, asr #5 1452 rsb r4, r5, r6, ror #5 1453 rsb r6, r7, r8, lsl r9 1454 rsb r6, r7, r8, lsr r9 1455 rsb r6, r7, r8, asr r9 1456 rsble r6, r7, r8, ror r9 1457 rsb r4, r5, r6, rrx 1458 1459 @ destination register is optional 1460 rsb r5, #0xf000 1461 rsb r4, r5 1462 rsb r4, r5, lsl #5 1463 rsb r4, r5, lsr #5 1464 rsbne r4, r5, lsr #5 1465 rsb r4, r5, asr #5 1466 rsb r4, r5, ror #5 1467 rsbgt r6, r7, lsl r9 1468 rsb r6, r7, lsr r9 1469 rsb r6, r7, asr r9 1470 rsb r6, r7, ror r9 1471 rsb r4, r5, rrx 1472 1473@ CHECK: rsb r4, r5, #61440 @ encoding: [0x0f,0x4a,0x65,0xe2] 1474@ CHECK: rsb r4, r5, r6 @ encoding: [0x06,0x40,0x65,0xe0] 1475@ CHECK: rsb r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0x65,0xe0] 1476@ CHECK: rsblo r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x65,0x30] 1477@ CHECK: rsb r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x65,0xe0] 1478@ CHECK: rsb r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0x65,0xe0] 1479@ CHECK: rsb r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0x65,0xe0] 1480@ CHECK: rsb r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0x67,0xe0] 1481@ CHECK: rsb r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0x67,0xe0] 1482@ CHECK: rsb r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0x67,0xe0] 1483@ CHECK: rsble r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0x67,0xd0] 1484@ CHECK: rsb r4, r5, r6, rrx @ encoding: [0x66,0x40,0x65,0xe0] 1485 1486@ CHECK: rsb r5, r5, #61440 @ encoding: [0x0f,0x5a,0x65,0xe2] 1487@ CHECK: rsb r4, r4, r5 @ encoding: [0x05,0x40,0x64,0xe0] 1488@ CHECK: rsb r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0x64,0xe0] 1489@ CHECK: rsb r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x64,0xe0] 1490@ CHECK: rsbne r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x64,0x10] 1491@ CHECK: rsb r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0x64,0xe0] 1492@ CHECK: rsb r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0x64,0xe0] 1493@ CHECK: rsbgt r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0x66,0xc0] 1494@ CHECK: rsb r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0x66,0xe0] 1495@ CHECK: rsb r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0x66,0xe0] 1496@ CHECK: rsb r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0x66,0xe0] 1497@ CHECK: rsb r4, r4, r5, rrx @ encoding: [0x65,0x40,0x64,0xe0] 1498 1499@------------------------------------------------------------------------------ 1500@ RSC 1501@------------------------------------------------------------------------------ 1502 rsc r4, r5, #0xf000 1503 rsc r4, r5, r6 1504 rsc r4, r5, r6, lsl #5 1505 rsclo r4, r5, r6, lsr #5 1506 rsc r4, r5, r6, lsr #5 1507 rsc r4, r5, r6, asr #5 1508 rsc r4, r5, r6, ror #5 1509 rsc r6, r7, r8, lsl r9 1510 rsc r6, r7, r8, lsr r9 1511 rsc r6, r7, r8, asr r9 1512 rscle r6, r7, r8, ror r9 1513 rscs r1, r8, #4064 1514 1515 @ destination register is optional 1516 rsc r5, #0xf000 1517 rsc r4, r5 1518 rsc r4, r5, lsl #5 1519 rsc r4, r5, lsr #5 1520 rscne r4, r5, lsr #5 1521 rsc r4, r5, asr #5 1522 rsc r4, r5, ror #5 1523 rscgt r6, r7, lsl r9 1524 rsc r6, r7, lsr r9 1525 rsc r6, r7, asr r9 1526 rsc r6, r7, ror r9 1527 1528@ CHECK: rsc r4, r5, #61440 @ encoding: [0x0f,0x4a,0xe5,0xe2] 1529@ CHECK: rsc r4, r5, r6 @ encoding: [0x06,0x40,0xe5,0xe0] 1530@ CHECK: rsc r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0xe5,0xe0] 1531@ CHECK: rsclo r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0xe5,0x30] 1532@ CHECK: rsc r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0xe5,0xe0] 1533@ CHECK: rsc r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0xe5,0xe0] 1534@ CHECK: rsc r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0xe5,0xe0] 1535@ CHECK: rsc r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0xe7,0xe0] 1536@ CHECK: rsc r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0xe7,0xe0] 1537@ CHECK: rsc r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0xe7,0xe0] 1538@ CHECK: rscle r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0xe7,0xd0] 1539@ CHECK: rscs r1, r8, #4064 @ encoding: [0xfe,0x1e,0xf8,0xe2] 1540 1541@ CHECK: rsc r5, r5, #61440 @ encoding: [0x0f,0x5a,0xe5,0xe2] 1542@ CHECK: rsc r4, r4, r5 @ encoding: [0x05,0x40,0xe4,0xe0] 1543@ CHECK: rsc r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0xe4,0xe0] 1544@ CHECK: rsc r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0xe4,0xe0] 1545@ CHECK: rscne r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0xe4,0x10] 1546@ CHECK: rsc r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0xe4,0xe0] 1547@ CHECK: rsc r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0xe4,0xe0] 1548@ CHECK: rscgt r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0xe6,0xc0] 1549@ CHECK: rsc r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0xe6,0xe0] 1550@ CHECK: rsc r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0xe6,0xe0] 1551@ CHECK: rsc r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0xe6,0xe0] 1552 1553@------------------------------------------------------------------------------ 1554@ SADD16/SADD8 1555@------------------------------------------------------------------------------ 1556 sadd16 r1, r2, r3 1557 sadd16gt r1, r2, r3 1558 sadd8 r1, r2, r3 1559 sadd8le r1, r2, r3 1560 1561@ CHECK: sadd16 r1, r2, r3 @ encoding: [0x13,0x1f,0x12,0xe6] 1562@ CHECK: sadd16gt r1, r2, r3 @ encoding: [0x13,0x1f,0x12,0xc6] 1563@ CHECK: sadd8 r1, r2, r3 @ encoding: [0x93,0x1f,0x12,0xe6] 1564@ CHECK: sadd8le r1, r2, r3 @ encoding: [0x93,0x1f,0x12,0xd6] 1565 1566 1567@------------------------------------------------------------------------------ 1568@ SASX 1569@------------------------------------------------------------------------------ 1570 sasx r9, r12, r0 1571 sasxeq r9, r12, r0 1572 1573@ CHECK: sasx r9, r12, r0 @ encoding: [0x30,0x9f,0x1c,0xe6] 1574@ CHECK: sasxeq r9, r12, r0 @ encoding: [0x30,0x9f,0x1c,0x06] 1575 1576 1577@------------------------------------------------------------------------------ 1578@ SBC 1579@------------------------------------------------------------------------------ 1580 sbc r4, r5, #0xf000 1581 sbc r4, r5, r6 1582 sbc r4, r5, r6, lsl #5 1583 sbc r4, r5, r6, lsr #5 1584 sbc r4, r5, r6, lsr #5 1585 sbc r4, r5, r6, asr #5 1586 sbc r4, r5, r6, ror #5 1587 sbc r6, r7, r8, lsl r9 1588 sbc r6, r7, r8, lsr r9 1589 sbc r6, r7, r8, asr r9 1590 sbc r6, r7, r8, ror r9 1591 1592 @ destination register is optional 1593 sbc r5, #0xf000 1594 sbc r4, r5 1595 sbc r4, r5, lsl #5 1596 sbc r4, r5, lsr #5 1597 sbc r4, r5, lsr #5 1598 sbc r4, r5, asr #5 1599 sbc r4, r5, ror #5 1600 sbc r6, r7, lsl r9 1601 sbc r6, r7, lsr r9 1602 sbc r6, r7, asr r9 1603 sbc r6, r7, ror r9 1604 1605@ CHECK: sbc r4, r5, #61440 @ encoding: [0x0f,0x4a,0xc5,0xe2] 1606@ CHECK: sbc r4, r5, r6 @ encoding: [0x06,0x40,0xc5,0xe0] 1607@ CHECK: sbc r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0xc5,0xe0] 1608@ CHECK: sbc r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0xc5,0xe0] 1609@ CHECK: sbc r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0xc5,0xe0] 1610@ CHECK: sbc r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0xc5,0xe0] 1611@ CHECK: sbc r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0xc5,0xe0] 1612@ CHECK: sbc r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0xc7,0xe0] 1613@ CHECK: sbc r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0xc7,0xe0] 1614@ CHECK: sbc r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0xc7,0xe0] 1615@ CHECK: sbc r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0xc7,0xe0] 1616 1617@ CHECK: sbc r5, r5, #61440 @ encoding: [0x0f,0x5a,0xc5,0xe2] 1618@ CHECK: sbc r4, r4, r5 @ encoding: [0x05,0x40,0xc4,0xe0] 1619@ CHECK: sbc r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0xc4,0xe0] 1620@ CHECK: sbc r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0xc4,0xe0] 1621@ CHECK: sbc r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0xc4,0xe0] 1622@ CHECK: sbc r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0xc4,0xe0] 1623@ CHECK: sbc r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0xc4,0xe0] 1624@ CHECK: sbc r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0xc6,0xe0] 1625@ CHECK: sbc r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0xc6,0xe0] 1626@ CHECK: sbc r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0xc6,0xe0] 1627@ CHECK: sbc r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0xc6,0xe0] 1628 1629 1630@------------------------------------------------------------------------------ 1631@ SBFX 1632@------------------------------------------------------------------------------ 1633 sbfx r4, r5, #16, #1 1634 sbfxgt r4, r5, #16, #16 1635 1636@ CHECK: sbfx r4, r5, #16, #1 @ encoding: [0x55,0x48,0xa0,0xe7] 1637@ CHECK: sbfxgt r4, r5, #16, #16 @ encoding: [0x55,0x48,0xaf,0xc7] 1638 1639 1640@------------------------------------------------------------------------------ 1641@ SEL 1642@------------------------------------------------------------------------------ 1643 sel r9, r2, r1 1644 selne r9, r2, r1 1645 1646@ CHECK: sel r9, r2, r1 @ encoding: [0xb1,0x9f,0x82,0xe6] 1647@ CHECK: selne r9, r2, r1 @ encoding: [0xb1,0x9f,0x82,0x16] 1648 1649 1650@------------------------------------------------------------------------------ 1651@ SETEND 1652@------------------------------------------------------------------------------ 1653 setend be 1654 setend le 1655 1656@ CHECK: setend be @ encoding: [0x00,0x02,0x01,0xf1] 1657@ CHECK: setend le @ encoding: [0x00,0x00,0x01,0xf1] 1658 1659 1660@------------------------------------------------------------------------------ 1661@ SEV 1662@------------------------------------------------------------------------------ 1663 sev 1664 seveq 1665 1666@ CHECK: sev @ encoding: [0x04,0xf0,0x20,0xe3] 1667@ CHECK: seveq @ encoding: [0x04,0xf0,0x20,0x03] 1668 1669 1670@------------------------------------------------------------------------------ 1671@ SHADD16/SHADD8 1672@------------------------------------------------------------------------------ 1673 shadd16 r4, r8, r2 1674 shadd16gt r4, r8, r2 1675 shadd8 r4, r8, r2 1676 shadd8gt r4, r8, r2 1677 1678@ CHECK: shadd16 r4, r8, r2 @ encoding: [0x12,0x4f,0x38,0xe6] 1679@ CHECK: shadd16gt r4, r8, r2 @ encoding: [0x12,0x4f,0x38,0xc6] 1680@ CHECK: shadd8 r4, r8, r2 @ encoding: [0x92,0x4f,0x38,0xe6] 1681@ CHECK: shadd8gt r4, r8, r2 @ encoding: [0x92,0x4f,0x38,0xc6] 1682 1683 1684@------------------------------------------------------------------------------ 1685@ SHASX 1686@------------------------------------------------------------------------------ 1687 shasx r4, r8, r2 1688 shasxgt r4, r8, r2 1689 1690@ CHECK: shasx r4, r8, r2 @ encoding: [0x32,0x4f,0x38,0xe6] 1691@ CHECK: shasxgt r4, r8, r2 @ encoding: [0x32,0x4f,0x38,0xc6] 1692 1693 1694@------------------------------------------------------------------------------ 1695@ SHSUB16/SHSUB8 1696@------------------------------------------------------------------------------ 1697 shsub16 r4, r8, r2 1698 shsub16gt r4, r8, r2 1699 shsub8 r4, r8, r2 1700 shsub8gt r4, r8, r2 1701 1702@ CHECK: shsub16 r4, r8, r2 @ encoding: [0x72,0x4f,0x38,0xe6] 1703@ CHECK: shsub16gt r4, r8, r2 @ encoding: [0x72,0x4f,0x38,0xc6] 1704@ CHECK: shsub8 r4, r8, r2 @ encoding: [0xf2,0x4f,0x38,0xe6] 1705@ CHECK: shsub8gt r4, r8, r2 @ encoding: [0xf2,0x4f,0x38,0xc6] 1706 1707@------------------------------------------------------------------------------ 1708@ SMC 1709@------------------------------------------------------------------------------ 1710 smc #0xf 1711 smceq #0 1712 1713@ CHECK: smc #15 @ encoding: [0x7f,0x00,0x60,0xe1] 1714@ CHECK: smceq #0 @ encoding: [0x70,0x00,0x60,0x01] 1715 1716@------------------------------------------------------------------------------ 1717@ SMLABB/SMLABT/SMLATB/SMLATT 1718@------------------------------------------------------------------------------ 1719 smlabb r3, r1, r9, r0 1720 smlabt r5, r6, r4, r1 1721 smlatb r4, r2, r3, r2 1722 smlatt r8, r3, r8, r4 1723 smlabbge r3, r1, r9, r0 1724 smlabtle r5, r6, r4, r1 1725 smlatbne r4, r2, r3, r2 1726 smlatteq r8, r3, r8, r4 1727 1728@ CHECK: smlabb r3, r1, r9, r0 @ encoding: [0x81,0x09,0x03,0xe1] 1729@ CHECK: smlabt r5, r6, r4, r1 @ encoding: [0xc6,0x14,0x05,0xe1] 1730@ CHECK: smlatb r4, r2, r3, r2 @ encoding: [0xa2,0x23,0x04,0xe1] 1731@ CHECK: smlatt r8, r3, r8, r4 @ encoding: [0xe3,0x48,0x08,0xe1] 1732@ CHECK: smlabbge r3, r1, r9, r0 @ encoding: [0x81,0x09,0x03,0xa1] 1733@ CHECK: smlabtle r5, r6, r4, r1 @ encoding: [0xc6,0x14,0x05,0xd1] 1734@ CHECK: smlatbne r4, r2, r3, r2 @ encoding: [0xa2,0x23,0x04,0x11] 1735@ CHECK: smlatteq r8, r3, r8, r4 @ encoding: [0xe3,0x48,0x08,0x01] 1736 1737@------------------------------------------------------------------------------ 1738@ SMLAD/SMLADX 1739@------------------------------------------------------------------------------ 1740 smlad r2, r3, r5, r8 1741 smladx r2, r3, r5, r8 1742 smladeq r2, r3, r5, r8 1743 smladxhi r2, r3, r5, r8 1744 1745@ CHECK: smlad r2, r3, r5, r8 @ encoding: [0x13,0x85,0x02,0xe7] 1746@ CHECK: smladx r2, r3, r5, r8 @ encoding: [0x33,0x85,0x02,0xe7] 1747@ CHECK: smladeq r2, r3, r5, r8 @ encoding: [0x13,0x85,0x02,0x07] 1748@ CHECK: smladxhi r2, r3, r5, r8 @ encoding: [0x33,0x85,0x02,0x87] 1749 1750 1751@------------------------------------------------------------------------------ 1752@ SMLAL 1753@------------------------------------------------------------------------------ 1754 smlal r2, r3, r5, r8 1755 smlals r2, r3, r5, r8 1756 smlaleq r2, r3, r5, r8 1757 smlalshi r2, r3, r5, r8 1758 1759@ CHECK: smlal r2, r3, r5, r8 @ encoding: [0x95,0x28,0xe3,0xe0] 1760@ CHECK: smlals r2, r3, r5, r8 @ encoding: [0x95,0x28,0xf3,0xe0] 1761@ CHECK: smlaleq r2, r3, r5, r8 @ encoding: [0x95,0x28,0xe3,0x00] 1762@ CHECK: smlalshi r2, r3, r5, r8 @ encoding: [0x95,0x28,0xf3,0x80] 1763 1764 1765@------------------------------------------------------------------------------ 1766@ SMLALBB/SMLALBT/SMLALTB/SMLALTT 1767@------------------------------------------------------------------------------ 1768 smlalbb r3, r1, r9, r0 1769 smlalbt r5, r6, r4, r1 1770 smlaltb r4, r2, r3, r2 1771 smlaltt r8, r3, r8, r4 1772 smlalbbge r3, r1, r9, r0 1773 smlalbtle r5, r6, r4, r1 1774 smlaltbne r4, r2, r3, r2 1775 smlaltteq r8, r3, r8, r4 1776 1777@ CHECK: smlalbb r3, r1, r9, r0 @ encoding: [0x89,0x30,0x41,0xe1] 1778@ CHECK: smlalbt r5, r6, r4, r1 @ encoding: [0xc4,0x51,0x46,0xe1] 1779@ CHECK: smlaltb r4, r2, r3, r2 @ encoding: [0xa3,0x42,0x42,0xe1] 1780@ CHECK: smlaltt r8, r3, r8, r4 @ encoding: [0xe8,0x84,0x43,0xe1] 1781@ CHECK: smlalbbge r3, r1, r9, r0 @ encoding: [0x89,0x30,0x41,0xa1] 1782@ CHECK: smlalbtle r5, r6, r4, r1 @ encoding: [0xc4,0x51,0x46,0xd1] 1783@ CHECK: smlaltbne r4, r2, r3, r2 @ encoding: [0xa3,0x42,0x42,0x11] 1784@ CHECK: smlaltteq r8, r3, r8, r4 @ encoding: [0xe8,0x84,0x43,0x01] 1785 1786 1787@------------------------------------------------------------------------------ 1788@ SMLALD/SMLALDX 1789@------------------------------------------------------------------------------ 1790 smlald r2, r3, r5, r8 1791 smlaldx r2, r3, r5, r8 1792 smlaldeq r2, r3, r5, r8 1793 smlaldxhi r2, r3, r5, r8 1794 1795@ CHECK: smlald r2, r3, r5, r8 @ encoding: [0x15,0x28,0x43,0xe7] 1796@ CHECK: smlaldx r2, r3, r5, r8 @ encoding: [0x35,0x28,0x43,0xe7] 1797@ CHECK: smlaldeq r2, r3, r5, r8 @ encoding: [0x15,0x28,0x43,0x07] 1798@ CHECK: smlaldxhi r2, r3, r5, r8 @ encoding: [0x35,0x28,0x43,0x87] 1799 1800 1801@------------------------------------------------------------------------------ 1802@ SMLAWB/SMLAWT 1803@------------------------------------------------------------------------------ 1804 smlawb r2, r3, r10, r8 1805 smlawt r8, r3, r5, r9 1806 smlawbeq r2, r7, r5, r8 1807 smlawthi r1, r3, r0, r8 1808 1809@ CHECK: smlawb r2, r3, r10, r8 @ encoding: [0x83,0x8a,0x22,0xe1] 1810@ CHECK: smlawt r8, r3, r5, r9 @ encoding: [0xc3,0x95,0x28,0xe1] 1811@ CHECK: smlawbeq r2, r7, r5, r8 @ encoding: [0x87,0x85,0x22,0x01] 1812@ CHECK: smlawthi r1, r3, r0, r8 @ encoding: [0xc3,0x80,0x21,0x81] 1813 1814 1815@------------------------------------------------------------------------------ 1816@ SMLSD/SMLSDX 1817@------------------------------------------------------------------------------ 1818 smlsd r2, r3, r5, r8 1819 smlsdx r2, r3, r5, r8 1820 smlsdeq r2, r3, r5, r8 1821 smlsdxhi r2, r3, r5, r8 1822 1823@ CHECK: smlsd r2, r3, r5, r8 @ encoding: [0x53,0x85,0x02,0xe7] 1824@ CHECK: smlsdx r2, r3, r5, r8 @ encoding: [0x73,0x85,0x02,0xe7] 1825@ CHECK: smlsdeq r2, r3, r5, r8 @ encoding: [0x53,0x85,0x02,0x07] 1826@ CHECK: smlsdxhi r2, r3, r5, r8 @ encoding: [0x73,0x85,0x02,0x87] 1827 1828 1829@------------------------------------------------------------------------------ 1830@ SMLSLD/SMLSLDX 1831@------------------------------------------------------------------------------ 1832 smlsld r2, r9, r5, r1 1833 smlsldx r4, r11, r2, r8 1834 smlsldeq r8, r2, r5, r6 1835 smlsldxhi r1, r0, r3, r8 1836 1837@ CHECK: smlsld r2, r9, r5, r1 @ encoding: [0x55,0x21,0x49,0xe7] 1838@ CHECK: smlsldx r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7] 1839@ CHECK: smlsldeq r8, r2, r5, r6 @ encoding: [0x55,0x86,0x42,0x07] 1840@ CHECK: smlsldxhi r1, r0, r3, r8 @ encoding: [0x73,0x18,0x40,0x87] 1841 1842 1843@------------------------------------------------------------------------------ 1844@ SMMLA/SMMLAR 1845@------------------------------------------------------------------------------ 1846 smmla r1, r2, r3, r4 1847 smmlar r4, r3, r2, r1 1848 smmlalo r1, r2, r3, r4 1849 smmlarcs r4, r3, r2, r1 1850 1851@ CHECK: smmla r1, r2, r3, r4 @ encoding: [0x12,0x43,0x51,0xe7] 1852@ CHECK: smmlar r4, r3, r2, r1 @ encoding: [0x33,0x12,0x54,0xe7] 1853@ CHECK: smmlalo r1, r2, r3, r4 @ encoding: [0x12,0x43,0x51,0x37] 1854@ CHECK: smmlarhs r4, r3, r2, r1 @ encoding: [0x33,0x12,0x54,0x27] 1855 1856 1857@------------------------------------------------------------------------------ 1858@ SMMLS/SMMLSR 1859@------------------------------------------------------------------------------ 1860 smmls r1, r2, r3, r4 1861 smmlsr r4, r3, r2, r1 1862 smmlslo r1, r2, r3, r4 1863 smmlsrcs r4, r3, r2, r1 1864 1865@ CHECK: smmls r1, r2, r3, r4 @ encoding: [0xd2,0x43,0x51,0xe7] 1866@ CHECK: smmlsr r4, r3, r2, r1 @ encoding: [0xf3,0x12,0x54,0xe7] 1867@ CHECK: smmlslo r1, r2, r3, r4 @ encoding: [0xd2,0x43,0x51,0x37] 1868@ CHECK: smmlsrhs r4, r3, r2, r1 @ encoding: [0xf3,0x12,0x54,0x27] 1869 1870 1871@------------------------------------------------------------------------------ 1872@ SMMUL/SMMULR 1873@------------------------------------------------------------------------------ 1874 smmul r2, r3, r4 1875 smmulr r3, r2, r1 1876 smmulcc r2, r3, r4 1877 smmulrhs r3, r2, r1 1878 1879@ CHECK: smmul r2, r3, r4 @ encoding: [0x13,0xf4,0x52,0xe7] 1880@ CHECK: smmulr r3, r2, r1 @ encoding: [0x32,0xf1,0x53,0xe7] 1881@ CHECK: smmullo r2, r3, r4 @ encoding: [0x13,0xf4,0x52,0x37] 1882@ CHECK: smmulrhs r3, r2, r1 @ encoding: [0x32,0xf1,0x53,0x27] 1883 1884 1885@------------------------------------------------------------------------------ 1886@ SMUAD/SMUADX 1887@------------------------------------------------------------------------------ 1888 smuad r2, r3, r4 1889 smuadx r3, r2, r1 1890 smuadlt r2, r3, r4 1891 smuadxge r3, r2, r1 1892 1893@ CHECK: smuad r2, r3, r4 @ encoding: [0x13,0xf4,0x02,0xe7] 1894@ CHECK: smuadx r3, r2, r1 @ encoding: [0x32,0xf1,0x03,0xe7] 1895@ CHECK: smuadlt r2, r3, r4 @ encoding: [0x13,0xf4,0x02,0xb7] 1896@ CHECK: smuadxge r3, r2, r1 @ encoding: [0x32,0xf1,0x03,0xa7] 1897 1898 1899@------------------------------------------------------------------------------ 1900@ SMULBB/SMULBT/SMULTB/SMULTT 1901@------------------------------------------------------------------------------ 1902 smulbb r3, r9, r0 1903 smulbt r5, r4, r1 1904 smultb r4, r2, r2 1905 smultt r8, r3, r4 1906 smulbbge r1, r9, r0 1907 smulbtle r5, r6, r4 1908 smultbne r2, r3, r2 1909 smultteq r8, r3, r4 1910 1911@ CHECK: smulbb r3, r9, r0 @ encoding: [0x89,0x00,0x63,0xe1] 1912@ CHECK: smulbt r5, r4, r1 @ encoding: [0xc4,0x01,0x65,0xe1] 1913@ CHECK: smultb r4, r2, r2 @ encoding: [0xa2,0x02,0x64,0xe1] 1914@ CHECK: smultt r8, r3, r4 @ encoding: [0xe3,0x04,0x68,0xe1] 1915@ CHECK: smulbbge r1, r9, r0 @ encoding: [0x89,0x00,0x61,0xa1] 1916@ CHECK: smulbtle r5, r6, r4 @ encoding: [0xc6,0x04,0x65,0xd1] 1917@ CHECK: smultbne r2, r3, r2 @ encoding: [0xa3,0x02,0x62,0x11] 1918@ CHECK: smultteq r8, r3, r4 @ encoding: [0xe3,0x04,0x68,0x01] 1919 1920 1921@------------------------------------------------------------------------------ 1922@ SMULL 1923@------------------------------------------------------------------------------ 1924 smull r3, r9, r0, r1 1925 smulls r3, r9, r0, r2 1926 smulleq r8, r3, r4, r5 1927 smullseq r8, r3, r4, r3 1928 1929@ CHECK: smull r3, r9, r0, r1 @ encoding: [0x90,0x31,0xc9,0xe0] 1930@ CHECK: smulls r3, r9, r0, r2 @ encoding: [0x90,0x32,0xd9,0xe0] 1931@ CHECK: smulleq r8, r3, r4, r5 @ encoding: [0x94,0x85,0xc3,0x00] 1932@ CHECK: smullseq r8, r3, r4, r3 @ encoding: [0x94,0x83,0xd3,0x00] 1933 1934 1935@------------------------------------------------------------------------------ 1936@ SMULWB/SMULWT 1937@------------------------------------------------------------------------------ 1938 smulwb r3, r9, r0 1939 smulwt r3, r9, r2 1940 1941@ CHECK: smulwb r3, r9, r0 @ encoding: [0xa9,0x00,0x23,0xe1] 1942@ CHECK: smulwt r3, r9, r2 @ encoding: [0xe9,0x02,0x23,0xe1] 1943 1944 1945@------------------------------------------------------------------------------ 1946@ SMUSD/SMUSDX 1947@------------------------------------------------------------------------------ 1948 smusd r3, r0, r1 1949 smusdx r3, r9, r2 1950 smusdeq r8, r3, r2 1951 smusdxne r7, r4, r3 1952 1953@ CHECK: smusd r3, r0, r1 @ encoding: [0x50,0xf1,0x03,0xe7] 1954@ CHECK: smusdx r3, r9, r2 @ encoding: [0x79,0xf2,0x03,0xe7] 1955@ CHECK: smusdeq r8, r3, r2 @ encoding: [0x53,0xf2,0x08,0x07] 1956@ CHECK: smusdxne r7, r4, r3 @ encoding: [0x74,0xf3,0x07,0x17] 1957 1958 1959@------------------------------------------------------------------------------ 1960@ SRS 1961@------------------------------------------------------------------------------ 1962 srsda sp, #5 1963 srsdb sp, #1 1964 srsia sp, #0 1965 srsib sp, #15 1966 1967 srsda sp!, #31 1968 srsdb sp!, #19 1969 srsia sp!, #2 1970 srsib sp!, #14 1971 1972 srsfa sp, #11 1973 srsea sp, #10 1974 srsfd sp, #9 1975 srsed sp, #5 1976 1977 srsfa sp!, #5 1978 srsea sp!, #5 1979 srsfd sp!, #5 1980 srsed sp!, #5 1981 1982 srs sp, #5 1983 srs sp!, #5 1984 1985@ CHECK: srsda sp, #5 @ encoding: [0x05,0x05,0x4d,0xf8] 1986@ CHECK: srsdb sp, #1 @ encoding: [0x01,0x05,0x4d,0xf9] 1987@ CHECK: srsia sp, #0 @ encoding: [0x00,0x05,0xcd,0xf8] 1988@ CHECK: srsib sp, #15 @ encoding: [0x0f,0x05,0xcd,0xf9] 1989 1990@ CHECK: srsda sp!, #31 @ encoding: [0x1f,0x05,0x6d,0xf8] 1991@ CHECK: srsdb sp!, #19 @ encoding: [0x13,0x05,0x6d,0xf9] 1992@ CHECK: srsia sp!, #2 @ encoding: [0x02,0x05,0xed,0xf8] 1993@ CHECK: srsib sp!, #14 @ encoding: [0x0e,0x05,0xed,0xf9] 1994 1995@ CHECK: srsda sp, #11 @ encoding: [0x0b,0x05,0x4d,0xf8] 1996@ CHECK: srsdb sp, #10 @ encoding: [0x0a,0x05,0x4d,0xf9] 1997@ CHECK: srsia sp, #9 @ encoding: [0x09,0x05,0xcd,0xf8] 1998@ CHECK: srsib sp, #5 @ encoding: [0x05,0x05,0xcd,0xf9] 1999 2000@ CHECK: srsda sp!, #5 @ encoding: [0x05,0x05,0x6d,0xf8] 2001@ CHECK: srsdb sp!, #5 @ encoding: [0x05,0x05,0x6d,0xf9] 2002@ CHECK: srsia sp!, #5 @ encoding: [0x05,0x05,0xed,0xf8] 2003@ CHECK: srsib sp!, #5 @ encoding: [0x05,0x05,0xed,0xf9] 2004 2005@ CHECK: srsia sp, #5 @ encoding: [0x05,0x05,0xcd,0xf8] 2006@ CHECK: srsia sp!, #5 @ encoding: [0x05,0x05,0xed,0xf8] 2007 2008 2009@------------------------------------------------------------------------------ 2010@ SSAT 2011@------------------------------------------------------------------------------ 2012 ssat r8, #1, r10 2013 ssat r8, #1, r10, lsl #0 2014 ssat r8, #1, r10, lsl #31 2015 ssat r8, #1, r10, asr #32 2016 ssat r8, #1, r10, asr #1 2017 2018@ CHECK: ssat r8, #1, r10 @ encoding: [0x1a,0x80,0xa0,0xe6] 2019@ CHECK: ssat r8, #1, r10 @ encoding: [0x1a,0x80,0xa0,0xe6] 2020@ CHECK: ssat r8, #1, r10, lsl #31 @ encoding: [0x9a,0x8f,0xa0,0xe6] 2021@ CHECK: ssat r8, #1, r10, asr #32 @ encoding: [0x5a,0x80,0xa0,0xe6] 2022@ CHECK: ssat r8, #1, r10, asr #1 @ encoding: [0xda,0x80,0xa0,0xe6] 2023 2024 2025@------------------------------------------------------------------------------ 2026@ SSAT16 2027@------------------------------------------------------------------------------ 2028 ssat16 r2, #1, r7 2029 ssat16 r3, #16, r5 2030 2031@ CHECK: ssat16 r2, #1, r7 @ encoding: [0x37,0x2f,0xa0,0xe6] 2032@ CHECK: ssat16 r3, #16, r5 @ encoding: [0x35,0x3f,0xaf,0xe6] 2033 2034 2035@------------------------------------------------------------------------------ 2036@ SSAX 2037@------------------------------------------------------------------------------ 2038 ssax r2, r3, r4 2039 ssaxlt r2, r3, r4 2040 2041@ CHECK: ssax r2, r3, r4 @ encoding: [0x54,0x2f,0x13,0xe6] 2042@ CHECK: ssaxlt r2, r3, r4 @ encoding: [0x54,0x2f,0x13,0xb6] 2043 2044@------------------------------------------------------------------------------ 2045@ SSUB16/SSUB8 2046@------------------------------------------------------------------------------ 2047 ssub16 r1, r0, r6 2048 ssub16ne r5, r3, r2 2049 ssub8 r9, r2, r4 2050 ssub8eq r5, r1, r2 2051 2052@ CHECK: ssub16 r1, r0, r6 @ encoding: [0x76,0x1f,0x10,0xe6] 2053@ CHECK: ssub16ne r5, r3, r2 @ encoding: [0x72,0x5f,0x13,0x16] 2054@ CHECK: ssub8 r9, r2, r4 @ encoding: [0xf4,0x9f,0x12,0xe6] 2055@ CHECK: ssub8eq r5, r1, r2 @ encoding: [0xf2,0x5f,0x11,0x06] 2056 2057@------------------------------------------------------------------------------ 2058@ STC{L}/STC2{L} 2059@------------------------------------------------------------------------------ 2060 stc2 p0, c8, [r1, #4] 2061 stc2 p1, c7, [r2] 2062 stc2 p2, c6, [r3, #-224] 2063 stc2 p3, c5, [r4, #-120]! 2064 stc2 p4, c4, [r5], #16 2065 stc2 p5, c3, [r6], #-72 2066 stc2l p6, c2, [r7, #4] 2067 stc2l p7, c1, [r8] 2068 stc2l p8, c0, [r9, #-224] 2069 stc2l p9, c1, [r10, #-120]! 2070 stc2l p10, c2, [r11], #16 2071 stc2l p11, c3, [r12], #-72 2072 2073 stc p12, c4, [r0, #4] 2074 stc p13, c5, [r1] 2075 stc p14, c6, [r2, #-224] 2076 stc p15, c7, [r3, #-120]! 2077 stc p5, c8, [r4], #16 2078 stc p4, c9, [r5], #-72 2079 stcl p3, c10, [r6, #4] 2080 stcl p2, c11, [r7] 2081 stcl p1, c12, [r8, #-224] 2082 stcl p0, c13, [r9, #-120]! 2083 stcl p6, c14, [r10], #16 2084 stcl p7, c15, [r11], #-72 2085 2086 stclo p12, c4, [r0, #4] 2087 stchi p13, c5, [r1] 2088 stccs p14, c6, [r2, #-224] 2089 stccc p15, c7, [r3, #-120]! 2090 stceq p5, c8, [r4], #16 2091 stcgt p4, c9, [r5], #-72 2092 stcllt p3, c10, [r6, #4] 2093 stclge p2, c11, [r7] 2094 stclle p1, c12, [r8, #-224] 2095 stclne p0, c13, [r9, #-120]! 2096 stcleq p6, c14, [r10], #16 2097 stclhi p7, c15, [r11], #-72 2098 2099 stc2 p2, c8, [r1], { 25 } 2100 2101@ CHECK: stc2 p0, c8, [r1, #4] @ encoding: [0x01,0x80,0x81,0xfd] 2102@ CHECK: stc2 p1, c7, [r2] @ encoding: [0x00,0x71,0x82,0xfd] 2103@ CHECK: stc2 p2, c6, [r3, #-224] @ encoding: [0x38,0x62,0x03,0xfd] 2104@ CHECK: stc2 p3, c5, [r4, #-120]! @ encoding: [0x1e,0x53,0x24,0xfd] 2105@ CHECK: stc2 p4, c4, [r5], #16 @ encoding: [0x04,0x44,0xa5,0xfc] 2106@ CHECK: stc2 p5, c3, [r6], #-72 @ encoding: [0x12,0x35,0x26,0xfc] 2107@ CHECK: stc2l p6, c2, [r7, #4] @ encoding: [0x01,0x26,0xc7,0xfd] 2108@ CHECK: stc2l p7, c1, [r8] @ encoding: [0x00,0x17,0xc8,0xfd] 2109@ CHECK: stc2l p8, c0, [r9, #-224] @ encoding: [0x38,0x08,0x49,0xfd] 2110@ CHECK: stc2l p9, c1, [r10, #-120]! @ encoding: [0x1e,0x19,0x6a,0xfd] 2111@ CHECK: stc2l p10, c2, [r11], #16 @ encoding: [0x04,0x2a,0xeb,0xfc] 2112@ CHECK: stc2l p11, c3, [r12], #-72 @ encoding: [0x12,0x3b,0x6c,0xfc] 2113 2114@ CHECK: stc p12, c4, [r0, #4] @ encoding: [0x01,0x4c,0x80,0xed] 2115@ CHECK: stc p13, c5, [r1] @ encoding: [0x00,0x5d,0x81,0xed] 2116@ CHECK: stc p14, c6, [r2, #-224] @ encoding: [0x38,0x6e,0x02,0xed] 2117@ CHECK: stc p15, c7, [r3, #-120]! @ encoding: [0x1e,0x7f,0x23,0xed] 2118@ CHECK: stc p5, c8, [r4], #16 @ encoding: [0x04,0x85,0xa4,0xec] 2119@ CHECK: stc p4, c9, [r5], #-72 @ encoding: [0x12,0x94,0x25,0xec] 2120@ CHECK: stcl p3, c10, [r6, #4] @ encoding: [0x01,0xa3,0xc6,0xed] 2121@ CHECK: stcl p2, c11, [r7] @ encoding: [0x00,0xb2,0xc7,0xed] 2122@ CHECK: stcl p1, c12, [r8, #-224] @ encoding: [0x38,0xc1,0x48,0xed] 2123@ CHECK: stcl p0, c13, [r9, #-120]! @ encoding: [0x1e,0xd0,0x69,0xed] 2124@ CHECK: stcl p6, c14, [r10], #16 @ encoding: [0x04,0xe6,0xea,0xec] 2125@ CHECK: stcl p7, c15, [r11], #-72 @ encoding: [0x12,0xf7,0x6b,0xec] 2126 2127@ CHECK: stclo p12, c4, [r0, #4] @ encoding: [0x01,0x4c,0x80,0x3d] 2128@ CHECK: stchi p13, c5, [r1] @ encoding: [0x00,0x5d,0x81,0x8d] 2129@ CHECK: stchs p14, c6, [r2, #-224] @ encoding: [0x38,0x6e,0x02,0x2d] 2130@ CHECK: stclo p15, c7, [r3, #-120]! @ encoding: [0x1e,0x7f,0x23,0x3d] 2131@ CHECK: stceq p5, c8, [r4], #16 @ encoding: [0x04,0x85,0xa4,0x0c] 2132@ CHECK: stcgt p4, c9, [r5], #-72 @ encoding: [0x12,0x94,0x25,0xcc] 2133@ CHECK: stcllt p3, c10, [r6, #4] @ encoding: [0x01,0xa3,0xc6,0xbd] 2134@ CHECK: stclge p2, c11, [r7] @ encoding: [0x00,0xb2,0xc7,0xad] 2135@ CHECK: stclle p1, c12, [r8, #-224] @ encoding: [0x38,0xc1,0x48,0xdd] 2136@ CHECK: stclne p0, c13, [r9, #-120]! @ encoding: [0x1e,0xd0,0x69,0x1d] 2137@ CHECK: stcleq p6, c14, [r10], #16 @ encoding: [0x04,0xe6,0xea,0x0c] 2138@ CHECK: stclhi p7, c15, [r11], #-72 @ encoding: [0x12,0xf7,0x6b,0x8c] 2139 2140@ CHECK: stc2 p2, c8, [r1], {25} @ encoding: [0x19,0x82,0x81,0xfc] 2141 2142 2143@------------------------------------------------------------------------------ 2144@ STM* 2145@------------------------------------------------------------------------------ 2146 stm r2, {r1,r3-r6,sp} 2147 stmia r3, {r1,r3-r6,lr} 2148 stmib r4, {r1,r3-r6,sp} 2149 stmda r5, {r1,r3-r6,sp} 2150 stmdb r6, {r1,r3-r6,r8} 2151 stmfd sp, {r1,r3-r6,sp} 2152 2153 @ with update 2154 stm r8!, {r1,r3-r6,sp} 2155 stmib r9!, {r1,r3-r6,sp} 2156 stmda sp!, {r1,r3-r6} 2157 stmdb r0!, {r1,r5,r7,sp} 2158 2159@ CHECK: stm r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8] 2160@ CHECK: stm r3, {lr, r1, r3, r4, r5, r6} @ encoding: [0x7a,0x40,0x83,0xe8] 2161@ CHECK: stmib r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9] 2162@ CHECK: stmda r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8] 2163@ CHECK: stmdb r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9] 2164@ CHECK: stmdb sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9] 2165 2166@ CHECK: stm r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8] 2167@ CHECK: stmib r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9] 2168@ CHECK: stmda sp!, {r1, r3, r4, r5, r6} @ encoding: [0x7a,0x00,0x2d,0xe8] 2169@ CHECK: stmdb r0!, {r1, r5, r7, sp} @ encoding: [0xa2,0x20,0x20,0xe9] 2170 2171 2172@------------------------------------------------------------------------------ 2173@ STREX/STREXB/STREXH/STREXD 2174@------------------------------------------------------------------------------ 2175 strexb r1, r3, [r4] 2176 strexh r4, r2, [r5] 2177 strex r2, r1, [r7] 2178 strexd r6, r2, r3, [r8] 2179 2180@ CHECK: strexb r1, r3, [r4] @ encoding: [0x93,0x1f,0xc4,0xe1] 2181@ CHECK: strexh r4, r2, [r5] @ encoding: [0x92,0x4f,0xe5,0xe1] 2182@ CHECK: strex r2, r1, [r7] @ encoding: [0x91,0x2f,0x87,0xe1] 2183@ CHECK: strexd r6, r2, r3, [r8] @ encoding: [0x92,0x6f,0xa8,0xe1] 2184 2185@------------------------------------------------------------------------------ 2186@ STR 2187@------------------------------------------------------------------------------ 2188 strpl r3, [r10, #-0]! 2189 strpl r3, [r10, #0]! 2190 2191@ CHECK: strpl r3, [r10, #-0]! @ encoding: [0x00,0x30,0x2a,0x55] 2192@ CHECK: strpl r3, [r10]! @ encoding: [0x00,0x30,0xaa,0x55] 2193 2194@------------------------------------------------------------------------------ 2195@ SUB 2196@------------------------------------------------------------------------------ 2197 sub r4, r5, #0xf000 2198 sub r4, r5, r6 2199 sub r4, r5, r6, lsl #5 2200 sub r4, r5, r6, lsr #5 2201 sub r4, r5, r6, lsr #5 2202 sub r4, r5, r6, asr #5 2203 sub r4, r5, r6, ror #5 2204 sub r6, r7, r8, lsl r9 2205 sub r6, r7, r8, lsr r9 2206 sub r6, r7, r8, asr r9 2207 sub r6, r7, r8, ror r9 2208 2209 @ destination register is optional 2210 sub r5, #0xf000 2211 sub r4, r5 2212 sub r4, r5, lsl #5 2213 sub r4, r5, lsr #5 2214 sub r4, r5, lsr #5 2215 sub r4, r5, asr #5 2216 sub r4, r5, ror #5 2217 sub r6, r7, lsl r9 2218 sub r6, r7, lsr r9 2219 sub r6, r7, asr r9 2220 sub r6, r7, ror r9 2221 2222@ CHECK: sub r4, r5, #61440 @ encoding: [0x0f,0x4a,0x45,0xe2] 2223@ CHECK: sub r4, r5, r6 @ encoding: [0x06,0x40,0x45,0xe0] 2224@ CHECK: sub r4, r5, r6, lsl #5 @ encoding: [0x86,0x42,0x45,0xe0] 2225@ CHECK: sub r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x45,0xe0] 2226@ CHECK: sub r4, r5, r6, lsr #5 @ encoding: [0xa6,0x42,0x45,0xe0] 2227@ CHECK: sub r4, r5, r6, asr #5 @ encoding: [0xc6,0x42,0x45,0xe0] 2228@ CHECK: sub r4, r5, r6, ror #5 @ encoding: [0xe6,0x42,0x45,0xe0] 2229@ CHECK: sub r6, r7, r8, lsl r9 @ encoding: [0x18,0x69,0x47,0xe0] 2230@ CHECK: sub r6, r7, r8, lsr r9 @ encoding: [0x38,0x69,0x47,0xe0] 2231@ CHECK: sub r6, r7, r8, asr r9 @ encoding: [0x58,0x69,0x47,0xe0] 2232@ CHECK: sub r6, r7, r8, ror r9 @ encoding: [0x78,0x69,0x47,0xe0] 2233 2234 2235@ CHECK: sub r5, r5, #61440 @ encoding: [0x0f,0x5a,0x45,0xe2] 2236@ CHECK: sub r4, r4, r5 @ encoding: [0x05,0x40,0x44,0xe0] 2237@ CHECK: sub r4, r4, r5, lsl #5 @ encoding: [0x85,0x42,0x44,0xe0] 2238@ CHECK: sub r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x44,0xe0] 2239@ CHECK: sub r4, r4, r5, lsr #5 @ encoding: [0xa5,0x42,0x44,0xe0] 2240@ CHECK: sub r4, r4, r5, asr #5 @ encoding: [0xc5,0x42,0x44,0xe0] 2241@ CHECK: sub r4, r4, r5, ror #5 @ encoding: [0xe5,0x42,0x44,0xe0] 2242@ CHECK: sub r6, r6, r7, lsl r9 @ encoding: [0x17,0x69,0x46,0xe0] 2243@ CHECK: sub r6, r6, r7, lsr r9 @ encoding: [0x37,0x69,0x46,0xe0] 2244@ CHECK: sub r6, r6, r7, asr r9 @ encoding: [0x57,0x69,0x46,0xe0] 2245@ CHECK: sub r6, r6, r7, ror r9 @ encoding: [0x77,0x69,0x46,0xe0] 2246 2247 @ Test right shift by 32, which is encoded as 0 2248 sub r3, r1, r2, lsr #32 2249 sub r3, r1, r2, asr #32 2250@ CHECK: sub r3, r1, r2, lsr #32 @ encoding: [0x22,0x30,0x41,0xe0] 2251@ CHECK: sub r3, r1, r2, asr #32 @ encoding: [0x42,0x30,0x41,0xe0] 2252 2253@------------------------------------------------------------------------------ 2254@ SVC 2255@------------------------------------------------------------------------------ 2256 svc #16 2257 svc #0 2258 svc #0xffffff 2259 2260@ CHECK: svc #16 @ encoding: [0x10,0x00,0x00,0xef] 2261@ CHECK: svc #0 @ encoding: [0x00,0x00,0x00,0xef] 2262@ CHECK: svc #16777215 @ encoding: [0xff,0xff,0xff,0xef] 2263 2264 2265@------------------------------------------------------------------------------ 2266@ SWP/SWPB 2267@------------------------------------------------------------------------------ 2268 swp r1, r2, [r3] 2269 swp r4, r4, [r6] 2270 swpb r5, r1, [r9] 2271 2272@ CHECK: swp r1, r2, [r3] @ encoding: [0x92,0x10,0x03,0xe1] 2273@ CHECK: swp r4, r4, [r6] @ encoding: [0x94,0x40,0x06,0xe1] 2274@ CHECK: swpb r5, r1, [r9] @ encoding: [0x91,0x50,0x49,0xe1] 2275 2276 2277@------------------------------------------------------------------------------ 2278@ SXTAB 2279@------------------------------------------------------------------------------ 2280 sxtab r2, r3, r4 2281 sxtab r4, r5, r6, ror #0 2282 sxtablt r6, r2, r9, ror #8 2283 sxtab r5, r1, r4, ror #16 2284 sxtab r7, r8, r3, ror #24 2285 2286@ CHECK: sxtab r2, r3, r4 @ encoding: [0x74,0x20,0xa3,0xe6] 2287@ CHECK: sxtab r4, r5, r6 @ encoding: [0x76,0x40,0xa5,0xe6] 2288@ CHECK: sxtablt r6, r2, r9, ror #8 @ encoding: [0x79,0x64,0xa2,0xb6] 2289@ CHECK: sxtab r5, r1, r4, ror #16 @ encoding: [0x74,0x58,0xa1,0xe6] 2290@ CHECK: sxtab r7, r8, r3, ror #24 @ encoding: [0x73,0x7c,0xa8,0xe6] 2291 2292 2293@------------------------------------------------------------------------------ 2294@ SXTAB16 2295@------------------------------------------------------------------------------ 2296 sxtab16ge r0, r1, r4 2297 sxtab16 r6, r2, r7, ror #0 2298 sxtab16 r3, r5, r8, ror #8 2299 sxtab16 r3, r2, r1, ror #16 2300 sxtab16eq r1, r2, r3, ror #24 2301 2302@ CHECK: sxtab16ge r0, r1, r4 @ encoding: [0x74,0x00,0x81,0xa6] 2303@ CHECK: sxtab16 r6, r2, r7 @ encoding: [0x77,0x60,0x82,0xe6] 2304@ CHECK: sxtab16 r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0x85,0xe6] 2305@ CHECK: sxtab16 r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0x82,0xe6] 2306@ CHECK: sxtab16eq r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0x82,0x06] 2307 2308@------------------------------------------------------------------------------ 2309@ SXTAH 2310@------------------------------------------------------------------------------ 2311 sxtah r1, r3, r9 2312 sxtahhi r6, r1, r6, ror #0 2313 sxtah r3, r8, r3, ror #8 2314 sxtahlo r2, r2, r4, ror #16 2315 sxtah r9, r3, r3, ror #24 2316 2317@ CHECK: sxtah r1, r3, r9 @ encoding: [0x79,0x10,0xb3,0xe6] 2318@ CHECK: sxtahhi r6, r1, r6 @ encoding: [0x76,0x60,0xb1,0x86] 2319@ CHECK: sxtah r3, r8, r3, ror #8 @ encoding: [0x73,0x34,0xb8,0xe6] 2320@ CHECK: sxtahlo r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xb2,0x36] 2321@ CHECK: sxtah r9, r3, r3, ror #24 @ encoding: [0x73,0x9c,0xb3,0xe6] 2322 2323@------------------------------------------------------------------------------ 2324@ SXTB 2325@------------------------------------------------------------------------------ 2326 sxtbge r2, r4 2327 sxtb r5, r6, ror #0 2328 sxtb r6, r9, ror #8 2329 sxtbcc r5, r1, ror #16 2330 sxtb r8, r3, ror #24 2331 2332@ CHECK: sxtbge r2, r4 @ encoding: [0x74,0x20,0xaf,0xa6] 2333@ CHECK: sxtb r5, r6 @ encoding: [0x76,0x50,0xaf,0xe6] 2334@ CHECK: sxtb r6, r9, ror #8 @ encoding: [0x79,0x64,0xaf,0xe6] 2335@ CHECK: sxtblo r5, r1, ror #16 @ encoding: [0x71,0x58,0xaf,0x36] 2336@ CHECK: sxtb r8, r3, ror #24 @ encoding: [0x73,0x8c,0xaf,0xe6] 2337 2338 2339@------------------------------------------------------------------------------ 2340@ SXTB16 2341@------------------------------------------------------------------------------ 2342 sxtb16 r1, r4 2343 sxtb16 r6, r7, ror #0 2344 sxtb16cs r3, r5, ror #8 2345 sxtb16 r3, r1, ror #16 2346 sxtb16ge r2, r3, ror #24 2347 2348@ CHECK: sxtb16 r1, r4 @ encoding: [0x74,0x10,0x8f,0xe6] 2349@ CHECK: sxtb16 r6, r7 @ encoding: [0x77,0x60,0x8f,0xe6] 2350@ CHECK: sxtb16hs r3, r5, ror #8 @ encoding: [0x75,0x34,0x8f,0x26] 2351@ CHECK: sxtb16 r3, r1, ror #16 @ encoding: [0x71,0x38,0x8f,0xe6] 2352@ CHECK: sxtb16ge r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6] 2353 2354 2355@------------------------------------------------------------------------------ 2356@ SXTH 2357@------------------------------------------------------------------------------ 2358 sxthne r3, r9 2359 sxth r1, r6, ror #0 2360 sxth r3, r8, ror #8 2361 sxthle r2, r2, ror #16 2362 sxth r9, r3, ror #24 2363 2364@ CHECK: sxthne r3, r9 @ encoding: [0x79,0x30,0xbf,0x16] 2365@ CHECK: sxth r1, r6 @ encoding: [0x76,0x10,0xbf,0xe6] 2366@ CHECK: sxth r3, r8, ror #8 @ encoding: [0x78,0x34,0xbf,0xe6] 2367@ CHECK: sxthle r2, r2, ror #16 @ encoding: [0x72,0x28,0xbf,0xd6] 2368@ CHECK: sxth r9, r3, ror #24 @ encoding: [0x73,0x9c,0xbf,0xe6] 2369 2370 2371@------------------------------------------------------------------------------ 2372@ TEQ 2373@------------------------------------------------------------------------------ 2374 teq r5, #0xf000 2375 teq r4, r5 2376 teq r4, r5, lsl #5 2377 teq r4, r5, lsr #5 2378 teq r4, r5, lsr #5 2379 teq r4, r5, asr #5 2380 teq r4, r5, ror #5 2381 teq r6, r7, lsl r9 2382 teq r6, r7, lsr r9 2383 teq r6, r7, asr r9 2384 teq r6, r7, ror r9 2385 2386@ CHECK: teq r5, #61440 @ encoding: [0x0f,0x0a,0x35,0xe3] 2387@ CHECK: teq r4, r5 @ encoding: [0x05,0x00,0x34,0xe1] 2388@ CHECK: teq r4, r5, lsl #5 @ encoding: [0x85,0x02,0x34,0xe1] 2389@ CHECK: teq r4, r5, lsr #5 @ encoding: [0xa5,0x02,0x34,0xe1] 2390@ CHECK: teq r4, r5, lsr #5 @ encoding: [0xa5,0x02,0x34,0xe1] 2391@ CHECK: teq r4, r5, asr #5 @ encoding: [0xc5,0x02,0x34,0xe1] 2392@ CHECK: teq r4, r5, ror #5 @ encoding: [0xe5,0x02,0x34,0xe1] 2393@ CHECK: teq r6, r7, lsl r9 @ encoding: [0x17,0x09,0x36,0xe1] 2394@ CHECK: teq r6, r7, lsr r9 @ encoding: [0x37,0x09,0x36,0xe1] 2395@ CHECK: teq r6, r7, asr r9 @ encoding: [0x57,0x09,0x36,0xe1] 2396@ CHECK: teq r6, r7, ror r9 @ encoding: [0x77,0x09,0x36,0xe1] 2397 2398 2399@------------------------------------------------------------------------------ 2400@ TST 2401@------------------------------------------------------------------------------ 2402 tst r5, #0xf000 2403 tst r4, r5 2404 tst r4, r5, lsl #5 2405 tst r4, r5, lsr #5 2406 tst r4, r5, lsr #5 2407 tst r4, r5, asr #5 2408 tst r4, r5, ror #5 2409 tst r6, r7, lsl r9 2410 tst r6, r7, lsr r9 2411 tst r6, r7, asr r9 2412 tst r6, r7, ror r9 2413 2414@ CHECK: tst r5, #61440 @ encoding: [0x0f,0x0a,0x15,0xe3] 2415@ CHECK: tst r4, r5 @ encoding: [0x05,0x00,0x14,0xe1] 2416@ CHECK: tst r4, r5, lsl #5 @ encoding: [0x85,0x02,0x14,0xe1] 2417@ CHECK: tst r4, r5, lsr #5 @ encoding: [0xa5,0x02,0x14,0xe1] 2418@ CHECK: tst r4, r5, lsr #5 @ encoding: [0xa5,0x02,0x14,0xe1] 2419@ CHECK: tst r4, r5, asr #5 @ encoding: [0xc5,0x02,0x14,0xe1] 2420@ CHECK: tst r4, r5, ror #5 @ encoding: [0xe5,0x02,0x14,0xe1] 2421@ CHECK: tst r6, r7, lsl r9 @ encoding: [0x17,0x09,0x16,0xe1] 2422@ CHECK: tst r6, r7, lsr r9 @ encoding: [0x37,0x09,0x16,0xe1] 2423@ CHECK: tst r6, r7, asr r9 @ encoding: [0x57,0x09,0x16,0xe1] 2424@ CHECK: tst r6, r7, ror r9 @ encoding: [0x77,0x09,0x16,0xe1] 2425 2426 2427@------------------------------------------------------------------------------ 2428@ UADD16/UADD8 2429@------------------------------------------------------------------------------ 2430 uadd16 r1, r2, r3 2431 uadd16gt r1, r2, r3 2432 uadd8 r1, r2, r3 2433 uadd8le r1, r2, r3 2434 2435@ CHECK: uadd16 r1, r2, r3 @ encoding: [0x13,0x1f,0x52,0xe6] 2436@ CHECK: uadd16gt r1, r2, r3 @ encoding: [0x13,0x1f,0x52,0xc6] 2437@ CHECK: uadd8 r1, r2, r3 @ encoding: [0x93,0x1f,0x52,0xe6] 2438@ CHECK: uadd8le r1, r2, r3 @ encoding: [0x93,0x1f,0x52,0xd6] 2439 2440 2441@------------------------------------------------------------------------------ 2442@ UASX 2443@------------------------------------------------------------------------------ 2444 uasx r9, r12, r0 2445 uasxeq r9, r12, r0 2446 2447@ CHECK: uasx r9, r12, r0 @ encoding: [0x30,0x9f,0x5c,0xe6] 2448@ CHECK: uasxeq r9, r12, r0 @ encoding: [0x30,0x9f,0x5c,0x06] 2449 2450 2451@------------------------------------------------------------------------------ 2452@ UBFX 2453@------------------------------------------------------------------------------ 2454 ubfx r4, r5, #16, #1 2455 ubfxgt r4, r5, #16, #16 2456 2457@ CHECK: ubfx r4, r5, #16, #1 @ encoding: [0x55,0x48,0xe0,0xe7] 2458@ CHECK: ubfxgt r4, r5, #16, #16 @ encoding: [0x55,0x48,0xef,0xc7] 2459 2460 2461@------------------------------------------------------------------------------ 2462@ UHADD16/UHADD8 2463@------------------------------------------------------------------------------ 2464 uhadd16 r4, r8, r2 2465 uhadd16gt r4, r8, r2 2466 uhadd8 r4, r8, r2 2467 uhadd8gt r4, r8, r2 2468 2469@ CHECK: uhadd16 r4, r8, r2 @ encoding: [0x12,0x4f,0x78,0xe6] 2470@ CHECK: uhadd16gt r4, r8, r2 @ encoding: [0x12,0x4f,0x78,0xc6] 2471@ CHECK: uhadd8 r4, r8, r2 @ encoding: [0x92,0x4f,0x78,0xe6] 2472@ CHECK: uhadd8gt r4, r8, r2 @ encoding: [0x92,0x4f,0x78,0xc6] 2473 2474 2475@------------------------------------------------------------------------------ 2476@ UHASX 2477@------------------------------------------------------------------------------ 2478 uhasx r4, r8, r2 2479 uhasxgt r4, r8, r2 2480 2481@ CHECK: uhasx r4, r8, r2 @ encoding: [0x32,0x4f,0x78,0xe6] 2482@ CHECK: uhasxgt r4, r8, r2 @ encoding: [0x32,0x4f,0x78,0xc6] 2483 2484 2485@------------------------------------------------------------------------------ 2486@ UHSUB16/UHSUB8 2487@------------------------------------------------------------------------------ 2488 uhsub16 r4, r8, r2 2489 uhsub16gt r4, r8, r2 2490 uhsub8 r4, r8, r2 2491 uhsub8gt r4, r8, r2 2492 2493@ CHECK: uhsub16 r4, r8, r2 @ encoding: [0x72,0x4f,0x78,0xe6] 2494@ CHECK: uhsub16gt r4, r8, r2 @ encoding: [0x72,0x4f,0x78,0xc6] 2495@ CHECK: uhsub8 r4, r8, r2 @ encoding: [0xf2,0x4f,0x78,0xe6] 2496@ CHECK: uhsub8gt r4, r8, r2 @ encoding: [0xf2,0x4f,0x78,0xc6] 2497 2498 2499@------------------------------------------------------------------------------ 2500@ UMAAL 2501@------------------------------------------------------------------------------ 2502 umaal r3, r4, r5, r6 2503 umaallt r3, r4, r5, r6 2504 2505@ CHECK: umaal r3, r4, r5, r6 @ encoding: [0x95,0x36,0x44,0xe0] 2506@ CHECK: umaallt r3, r4, r5, r6 @ encoding: [0x95,0x36,0x44,0xb0] 2507 2508 2509@------------------------------------------------------------------------------ 2510@ UMLAL 2511@------------------------------------------------------------------------------ 2512 umlal r2, r4, r6, r8 2513 umlalgt r6, r1, r2, r6 2514 umlals r2, r9, r2, r3 2515 umlalseq r3, r5, r1, r2 2516 2517@ CHECK: umlal r2, r4, r6, r8 @ encoding: [0x96,0x28,0xa4,0xe0] 2518@ CHECK: umlalgt r6, r1, r2, r6 @ encoding: [0x92,0x66,0xa1,0xc0] 2519@ CHECK: umlals r2, r9, r2, r3 @ encoding: [0x92,0x23,0xb9,0xe0] 2520@ CHECK: umlalseq r3, r5, r1, r2 @ encoding: [0x91,0x32,0xb5,0x00] 2521 2522 2523@------------------------------------------------------------------------------ 2524@ UMULL 2525@------------------------------------------------------------------------------ 2526 umull r2, r4, r6, r8 2527 umullgt r6, r1, r2, r6 2528 umulls r2, r9, r2, r3 2529 umullseq r3, r5, r1, r2 2530 2531@ CHECK: umull r2, r4, r6, r8 @ encoding: [0x96,0x28,0x84,0xe0] 2532@ CHECK: umullgt r6, r1, r2, r6 @ encoding: [0x92,0x66,0x81,0xc0] 2533@ CHECK: umulls r2, r9, r2, r3 @ encoding: [0x92,0x23,0x99,0xe0] 2534@ CHECK: umullseq r3, r5, r1, r2 @ encoding: [0x91,0x32,0x95,0x00] 2535 2536 2537@------------------------------------------------------------------------------ 2538@ UQADD16/UQADD8 2539@------------------------------------------------------------------------------ 2540 uqadd16 r1, r2, r3 2541 uqadd16gt r4, r7, r9 2542 uqadd8 r3, r4, r8 2543 uqadd8le r8, r1, r2 2544 2545 2546@ CHECK: uqadd16 r1, r2, r3 @ encoding: [0x13,0x1f,0x62,0xe6] 2547@ CHECK: uqadd16gt r4, r7, r9 @ encoding: [0x19,0x4f,0x67,0xc6] 2548@ CHECK: uqadd8 r3, r4, r8 @ encoding: [0x98,0x3f,0x64,0xe6] 2549@ CHECK: uqadd8le r8, r1, r2 @ encoding: [0x92,0x8f,0x61,0xd6] 2550 2551 2552@------------------------------------------------------------------------------ 2553@ UQASX 2554@------------------------------------------------------------------------------ 2555 uqasx r2, r4, r1 2556 uqasxhi r5, r2, r9 2557 2558@ CHECK: uqasx r2, r4, r1 @ encoding: [0x31,0x2f,0x64,0xe6] 2559@ CHECK: uqasxhi r5, r2, r9 @ encoding: [0x39,0x5f,0x62,0x86] 2560 2561 2562@------------------------------------------------------------------------------ 2563@ UQSAX 2564@------------------------------------------------------------------------------ 2565 uqsax r1, r3, r7 2566 uqsaxal r3, r6, r2 2567 2568@ CHECK: uqsax r1, r3, r7 @ encoding: [0x57,0x1f,0x63,0xe6] 2569@ CHECK: uqsax r3, r6, r2 @ encoding: [0x52,0x3f,0x66,0xe6] 2570 2571 2572@------------------------------------------------------------------------------ 2573@ UQSUB16/UQSUB8 2574@------------------------------------------------------------------------------ 2575 uqsub16 r1, r5, r3 2576 uqsub16gt r3, r2, r5 2577 uqsub8 r2, r1, r4 2578 uqsub8le r4, r6, r9 2579 2580@ CHECK: uqsub16 r1, r5, r3 @ encoding: [0x73,0x1f,0x65,0xe6] 2581@ CHECK: uqsub16gt r3, r2, r5 @ encoding: [0x75,0x3f,0x62,0xc6] 2582@ CHECK: uqsub8 r2, r1, r4 @ encoding: [0xf4,0x2f,0x61,0xe6] 2583@ CHECK: uqsub8le r4, r6, r9 @ encoding: [0xf9,0x4f,0x66,0xd6] 2584 2585 2586@------------------------------------------------------------------------------ 2587@ USADA8/USAD8 2588@------------------------------------------------------------------------------ 2589 usad8 r2, r1, r4 2590 usad8le r4, r6, r9 2591 usada8 r1, r5, r3, r7 2592 usada8gt r3, r2, r5, r1 2593 2594@ CHECK: usad8 r2, r1, r4 @ encoding: [0x11,0xf4,0x82,0xe7] 2595@ CHECK: usad8le r4, r6, r9 @ encoding: [0x16,0xf9,0x84,0xd7] 2596@ CHECK: usada8 r1, r5, r3, r7 @ encoding: [0x15,0x73,0x81,0xe7] 2597@ CHECK: usada8gt r3, r2, r5, r1 @ encoding: [0x12,0x15,0x83,0xc7] 2598 2599 2600@------------------------------------------------------------------------------ 2601@ USAT 2602@------------------------------------------------------------------------------ 2603 usat r8, #1, r10 2604 usat r8, #4, r10, lsl #0 2605 usat r8, #5, r10, lsl #31 2606 usat r8, #31, r10, asr #32 2607 usat r8, #16, r10, asr #1 2608 2609@ CHECK: usat r8, #1, r10 @ encoding: [0x1a,0x80,0xe1,0xe6] 2610@ CHECK: usat r8, #4, r10 @ encoding: [0x1a,0x80,0xe4,0xe6] 2611@ CHECK: usat r8, #5, r10, lsl #31 @ encoding: [0x9a,0x8f,0xe5,0xe6] 2612@ CHECK: usat r8, #31, r10, asr #32 @ encoding: [0x5a,0x80,0xff,0xe6] 2613@ CHECK: usat r8, #16, r10, asr #1 @ encoding: [0xda,0x80,0xf0,0xe6] 2614 2615 2616@------------------------------------------------------------------------------ 2617@ USAT16 2618@------------------------------------------------------------------------------ 2619 usat16 r2, #2, r7 2620 usat16 r3, #15, r5 2621 2622@ CHECK: usat16 r2, #2, r7 @ encoding: [0x37,0x2f,0xe2,0xe6] 2623@ CHECK: usat16 r3, #15, r5 @ encoding: [0x35,0x3f,0xef,0xe6] 2624 2625 2626@------------------------------------------------------------------------------ 2627@ USAX 2628@------------------------------------------------------------------------------ 2629 usax r2, r3, r4 2630 usaxne r2, r3, r4 2631 2632@ CHECK: usax r2, r3, r4 @ encoding: [0x54,0x2f,0x53,0xe6] 2633@ CHECK: usaxne r2, r3, r4 @ encoding: [0x54,0x2f,0x53,0x16] 2634 2635@------------------------------------------------------------------------------ 2636@ USUB16/USUB8 2637@------------------------------------------------------------------------------ 2638 usub16 r4, r2, r7 2639 usub16hi r1, r1, r3 2640 usub8 r1, r8, r5 2641 usub8le r9, r2, r3 2642 2643@ CHECK: usub16 r4, r2, r7 @ encoding: [0x77,0x4f,0x52,0xe6] 2644@ CHECK: usub16hi r1, r1, r3 @ encoding: [0x73,0x1f,0x51,0x86] 2645@ CHECK: usub8 r1, r8, r5 @ encoding: [0xf5,0x1f,0x58,0xe6] 2646@ CHECK: usub8le r9, r2, r3 @ encoding: [0xf3,0x9f,0x52,0xd6] 2647 2648 2649@------------------------------------------------------------------------------ 2650@ UXTAB 2651@------------------------------------------------------------------------------ 2652 uxtab r2, r3, r4 2653 uxtab r4, r5, r6, ror #0 2654 uxtablt r6, r2, r9, ror #8 2655 uxtab r5, r1, r4, ror #16 2656 uxtab r7, r8, r3, ror #24 2657 2658@ CHECK: uxtab r2, r3, r4 @ encoding: [0x74,0x20,0xe3,0xe6] 2659@ CHECK: uxtab r4, r5, r6 @ encoding: [0x76,0x40,0xe5,0xe6] 2660@ CHECK: uxtablt r6, r2, r9, ror #8 @ encoding: [0x79,0x64,0xe2,0xb6] 2661@ CHECK: uxtab r5, r1, r4, ror #16 @ encoding: [0x74,0x58,0xe1,0xe6] 2662@ CHECK: uxtab r7, r8, r3, ror #24 @ encoding: [0x73,0x7c,0xe8,0xe6] 2663 2664 2665@------------------------------------------------------------------------------ 2666@ UXTAB16 2667@------------------------------------------------------------------------------ 2668 uxtab16ge r0, r1, r4 2669 uxtab16 r6, r2, r7, ror #0 2670 uxtab16 r3, r5, r8, ror #8 2671 uxtab16 r3, r2, r1, ror #16 2672 uxtab16eq r1, r2, r3, ror #24 2673 2674@ CHECK: uxtab16ge r0, r1, r4 @ encoding: [0x74,0x00,0xc1,0xa6] 2675@ CHECK: uxtab16 r6, r2, r7 @ encoding: [0x77,0x60,0xc2,0xe6] 2676@ CHECK: uxtab16 r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6] 2677@ CHECK: uxtab16 r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6] 2678@ CHECK: uxtab16eq r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06] 2679 2680 2681@------------------------------------------------------------------------------ 2682@ UXTAH 2683@------------------------------------------------------------------------------ 2684 uxtah r1, r3, r9 2685 uxtahhi r6, r1, r6, ror #0 2686 uxtah r3, r8, r3, ror #8 2687 uxtahlo r2, r2, r4, ror #16 2688 uxtah r9, r3, r3, ror #24 2689 2690@ CHECK: uxtah r1, r3, r9 @ encoding: [0x79,0x10,0xf3,0xe6] 2691@ CHECK: uxtahhi r6, r1, r6 @ encoding: [0x76,0x60,0xf1,0x86] 2692@ CHECK: uxtah r3, r8, r3, ror #8 @ encoding: [0x73,0x34,0xf8,0xe6] 2693@ CHECK: uxtahlo r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36] 2694@ CHECK: uxtah r9, r3, r3, ror #24 @ encoding: [0x73,0x9c,0xf3,0xe6] 2695 2696@------------------------------------------------------------------------------ 2697@ UXTB 2698@------------------------------------------------------------------------------ 2699 uxtbge r2, r4 2700 uxtb r5, r6, ror #0 2701 uxtb r6, r9, ror #8 2702 uxtbcc r5, r1, ror #16 2703 uxtb r8, r3, ror #24 2704 2705@ CHECK: uxtbge r2, r4 @ encoding: [0x74,0x20,0xef,0xa6] 2706@ CHECK: uxtb r5, r6 @ encoding: [0x76,0x50,0xef,0xe6] 2707@ CHECK: uxtb r6, r9, ror #8 @ encoding: [0x79,0x64,0xef,0xe6] 2708@ CHECK: uxtblo r5, r1, ror #16 @ encoding: [0x71,0x58,0xef,0x36] 2709@ CHECK: uxtb r8, r3, ror #24 @ encoding: [0x73,0x8c,0xef,0xe6] 2710 2711 2712@------------------------------------------------------------------------------ 2713@ UXTB16 2714@------------------------------------------------------------------------------ 2715 uxtb16 r1, r4 2716 uxtb16 r6, r7, ror #0 2717 uxtb16cs r3, r5, ror #8 2718 uxtb16 r3, r1, ror #16 2719 uxtb16ge r2, r3, ror #24 2720 2721@ CHECK: uxtb16 r1, r4 @ encoding: [0x74,0x10,0xcf,0xe6] 2722@ CHECK: uxtb16 r6, r7 @ encoding: [0x77,0x60,0xcf,0xe6] 2723@ CHECK: uxtb16hs r3, r5, ror #8 @ encoding: [0x75,0x34,0xcf,0x26] 2724@ CHECK: uxtb16 r3, r1, ror #16 @ encoding: [0x71,0x38,0xcf,0xe6] 2725@ CHECK: uxtb16ge r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6] 2726 2727 2728@------------------------------------------------------------------------------ 2729@ UXTH 2730@------------------------------------------------------------------------------ 2731 uxthne r3, r9 2732 uxth r1, r6, ror #0 2733 uxth r3, r8, ror #8 2734 uxthle r2, r2, ror #16 2735 uxth r9, r3, ror #24 2736 2737@ CHECK: uxthne r3, r9 @ encoding: [0x79,0x30,0xff,0x16] 2738@ CHECK: uxth r1, r6 @ encoding: [0x76,0x10,0xff,0xe6] 2739@ CHECK: uxth r3, r8, ror #8 @ encoding: [0x78,0x34,0xff,0xe6] 2740@ CHECK: uxthle r2, r2, ror #16 @ encoding: [0x72,0x28,0xff,0xd6] 2741@ CHECK: uxth r9, r3, ror #24 @ encoding: [0x73,0x9c,0xff,0xe6] 2742 2743 2744@------------------------------------------------------------------------------ 2745@ WFE/WFI/YIELD 2746@------------------------------------------------------------------------------ 2747 wfe 2748 wfehi 2749 wfi 2750 wfilt 2751 yield 2752 yieldne 2753 hint #5 2754 hint #4 2755 hint #3 2756 hint #2 2757 hint #1 2758 hint #0 2759 2760@ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3] 2761@ CHECK: wfehi @ encoding: [0x02,0xf0,0x20,0x83] 2762@ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3] 2763@ CHECK: wfilt @ encoding: [0x03,0xf0,0x20,0xb3] 2764@ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3] 2765@ CHECK: yieldne @ encoding: [0x01,0xf0,0x20,0x13] 2766@ CHECK: hint #5 @ encoding: [0x05,0xf0,0x20,0xe3] 2767@ CHECK: sev @ encoding: [0x04,0xf0,0x20,0xe3] 2768@ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3] 2769@ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3] 2770@ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3] 2771@ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3] 2772