1@ RUN: llvm-mc -mcpu=cortex-a8 -triple thumb-unknown-unknown -show-encoding < %s | FileCheck %s 2@ XFAIL: * 3.code 16 4 5@ CHECK: adc r1, r1, #171 @ encoding: [0xab,0x01,0x41,0xf1] 6 adc r1, r1, #171 7@ CHECK: adc r1, r1, #1179666 @ encoding: [0x12,0x11,0x41,0xf1] 8 adc r1, r1, #1179666 9@ CHECK: adc r1, r1, #872428544 @ encoding: [0x34,0x21,0x41,0xf1] 10 adc r1, r1, #872428544 11@ CHECK: adc r1, r1, #1448498774 @ encoding: [0x56,0x31,0x41,0xf1] 12 adc r1, r1, #1448498774 13@ CHECK: adc r1, r1, #66846720 @ encoding: [0x7f,0x71,0x41,0xf1] 14 adc r1, r1, #66846720 15 16@ CHECK: mvn r0, #187 @ encoding: [0xbb,0x00,0x6f,0xf0] 17 mvn r0, #187 18@ CHECK: mvn r0, #11141290 @ encoding: [0xaa,0x10,0x6f,0xf0] 19 mvn r0, #11141290 20@ CHECK: mvn r0, #-872363008 @ encoding: [0xcc,0x20,0x6f,0xf0] 21 mvn r0, #-872363008 22@ CHECK: mvn r0, #1114112 @ encoding: [0x88,0x10,0x6f,0xf4] 23 mvn r0, #1114112 24 25@ CHECK: cmp.w r0, #11141290 @ encoding: [0xaa,0x1f,0xb0,0xf1] 26 cmp.w r0, #11141290 27@ CHECK: cmp.w r0, #-872363008 @ encoding: [0xcc,0x2f,0xb0,0xf1] 28 cmp.w r0, #-872363008 29@ CHECK: cmp.w r0, #-572662307 @ encoding: [0xdd,0x3f,0xb0,0xf1] 30 cmp.w r0, #-572662307 31@ CHECK: cmp.w r0, #1114112 @ encoding: [0x88,0x1f,0xb0,0xf5] 32 cmp.w r0, #1114112 33@ CHECK: cmp.w r0, r1, lsl #5 @ encoding: [0x41,0x1f,0xb0,0xeb] 34 cmp.w r0, r1, lsl #5 35 36@ CHECK: sxtab r0, r1, r0 @ encoding: [0x80,0xf0,0x41,0xfa] 37 sxtab r0, r1, r0 @ encoding: [0x80,0xf0,0x41,0xfa] 38 39@ CHECK: movw r0, #65535 @ encoding: [0xff,0x70,0x4f,0xf6] 40 movw r0, #65535 41@ CHECK: movw r1, #43777 @ encoding: [0x01,0x31,0x4a,0xf6] 42 movw r1, #43777 43@ CHECK: movt r1, #427 @ encoding: [0xab,0x11,0xc0,0xf2] 44 movt r1, #427 45@ CHECK: movw r1, #43792 @ encoding: [0x10,0x31,0x4a,0xf6] 46 movw r1, #43792 47@ CHECK: movt r1, #4267 @ encoding: [0xab,0x01,0xc0,0xf2] 48 movt r1, #4267 49@ CHECK: mov.w r0, #66846720 @ encoding: [0x7f,0x70,0x4f,0xf0] 50 mov.w r0, #66846720 51 52@ Aliases w/ the vanilla 'mov' mnemonic, and explicit alternative selection. 53 mov r2, #0xbf000000 54 mov r1, #0x100 55 mov r3, #32 56 mov.w r3, #32 57 movw r3, #32 58 59@ CHECK: mov.w r2, #3204448256 @ encoding: [0x4f,0xf0,0x3f,0x42] 60@ CHECK: mov.w r1, #256 @ encoding: [0x4f,0xf4,0x80,0x71] 61@ CHECK: mov r3, #32 @ encoding: [0x20,0x23] 62@ CHECK: mov.w r3, #32 @ encoding: [0x4f,0xf0,0x20,0x03] 63@ CHECK: movw r3, #32 @ encoding: [0x40,0xf2,0x20,0x03] 64 65 66 67 68@ CHECK: rrx r0, r0 @ encoding: [0x30,0x00,0x4f,0xea] 69 rrx r0, r0 70 71@ CHECK: bfc r0, #4, #20 @ encoding: [0x17,0x10,0x6f,0xf3] 72 bfc r0, #4, #20 73@ CHECK: bfc r0, #0, #23 @ encoding: [0x16,0x00,0x6f,0xf3] 74 bfc r0, #0, #23 75@ CHECK: bfc r0, #12, #20 @ encoding: [0x1f,0x30,0x6f,0xf3] 76 bfc r0, #12, #20 77 78@ CHECK: sbfx r0, r0, #7, #11 @ encoding: [0xca,0x10,0x40,0xf3] 79 sbfx r0, r0, #7, #11 80@ CHECK: ubfx r0, r0, #7, #11 @ encoding: [0xca,0x10,0xc0,0xf3] 81 ubfx r0, r0, #7, #11 82 83@ CHECK: mla r0, r0, r1, r2 @ encoding: [0x01,0x20,0x00,0xfb] 84 mla r0, r0, r1, r2 85@ CHECK: mls r0, r0, r1, r2 @ encoding: [0x11,0x20,0x00,0xfb] 86 mls r0, r0, r1, r2 87 88@ CHECK: smlabt r0, r1, r2, r0 @ encoding: [0x12,0x00,0x11,0xfb] 89 smlabt r0, r1, r2, r0 90 91@ CHECK: clz r0, r0 @ encoding: [0x80,0xf0,0xb0,0xfa] 92 clz r0, r0 93 94@ CHECK: pkhbt r0, r0, r1, lsl #16 @ encoding: [0x01,0x40,0xc0,0xea] 95 pkhbt r0, r0, r1, lsl #16 96@ CHECK: pkhbt r0, r0, r1, lsl #12 @ encoding: [0x01,0x30,0xc0,0xea] 97 pkhbt r0, r0, r1, lsl #16 98@ CHECK: pkhbt r0, r0, r1, lsl #18 @ encoding: [0x81,0x40,0xc0,0xea] 99 pkhbt r0, r0, r1, lsl #18 100@ CHECK: pkhbt r0, r0, r1 @ encoding: [0x01,0x00,0xc0,0xea] 101 pkhbt r0, r0, r1 102@ CHECK: pkhtb r0, r0, r1, asr #16 @ encoding: [0x21,0x40,0xc0,0xea] 103 pkhtb r0, r0, r1, asr #16 104@ CHECK: pkhtb r0, r0, r1, asr #12 @ encoding: [0x21,0x30,0xc0,0xea] 105 pkhtb r0, r0, r1, asr #12 106@ CHECK: pkhtb r0, r0, r1, asr #18 @ encoding: [0xa1,0x40,0xc0,0xea] 107 pkhtb r0, r0, r1, asr #18 108@ CHECK: pkhtb r0, r0, r1, asr #22 @ encoding: [0xa1,0x50,0xc0,0xea] 109 pkhtb r0, r0, r1, asr #22 110 111@ CHECK: str.w r0, [r1, #4092] @ encoding: [0xfc,0x0f,0xc1,0xf8] 112 str.w r0, [r1, #4092] 113@ CHECK: str r0, [r1, #-128] @ encoding: [0x80,0x0c,0x41,0xf8] 114 str r0, [r1, #-128] 115@ CHECK: str.w r0, [r1, r2, lsl #2] @ encoding: [0x22,0x00,0x41,0xf8 116 str.w r0, [r1, r2, lsl #2] 117 118@ CHECK: ldr.w r0, [r0, #4092] @ encoding: [0xfc,0x0f,0xd0,0xf8] 119 ldr.w r0, [r0, #4092] 120@ CHECK: ldr r0, [r0, #-128] @ encoding: [0x80,0x0c,0x50,0xf8] 121 ldr r0, [r0, #-128] 122@ CHECK: ldr.w r0, [r0, r1, lsl #2] @ encoding: [0x21,0x00,0x50,0xf8] 123 ldr.w r0, [r0, r1, lsl #2] 124 125@ CHECK: str r1, [r0, #16]! @ encoding: [0x10,0x1f,0x40,0xf8] 126 str r1, [r0, #16]! 127@ CHECK: strh r1, [r0, #8]! @ encoding: [0x08,0x1f,0x20,0xf8] 128 strh r1, [r0, #8]! 129@ CHECK: strh r2, [r0], #-4 @ encoding: [0x04,0x29,0x20,0xf8] 130 strh r2, [r0], #-4 131@ CHECK: str r2, [r0], #-4 @ encoding: [0x04,0x29,0x40,0xf8] 132 str r2, [r0], #-4 133 134@ CHECK: ldr r2, [r0, #16]! @ encoding: [0x10,0x2f,0x50,0xf8] 135 ldr r2, [r0, #16]! 136@ CHECK: ldr r2, [r0, #-64]! @ encoding: [0x40,0x2d,0x50,0xf8] 137 ldr r2, [r0, #-64]! 138@ CHECK: ldrsb r2, [r0, #4]! @ encoding: [0x04,0x2f,0x10,0xf9] 139 ldrsb r2, [r0, #4]! 140 141@ CHECK: strb.w r0, [r1, #4092] @ encoding: [0xfc,0x0f,0x81,0xf8] 142 strb.w r0, [r1, #4092] 143@ CHECK: strb r0, [r1, #-128] @ encoding: [0x80,0x0c,0x01,0xf8] 144 strb r0, [r1, #-128] 145@ CHECK: strb.w r0, [r1, r2, lsl #2] @ encoding: [0x22,0x00,0x01,0xf8] 146 strb.w r0, [r1, r2, lsl #2] 147@ CHECK: strh.w r0, [r1, #4092] @ encoding: [0xfc,0x0f,0xa1,0xf8] 148 strh.w r0, [r1, #4092] 149@ CHECK: strh r0, [r1, #-128] @ encoding: [0x80,0x0c,0x21,0xf8] 150 strh r0, [r1, #-128] 151@ CHECK: strh r0, [r1, #-128] @ encoding: [0x80,0x0c,0x21,0xf8] 152 strh r0, [r1, #-128] 153@ CHECK: strh.w r0, [r1, r2, lsl #2] @ encoding: [0x22,0x00,0x21,0xf8] 154 strh.w r0, [r1, r2, lsl #2] 155 156@ CHECK: ldrb r0, [r0, #-1] @ encoding: [0x01,0x0c,0x10,0xf8] 157 ldrb r0, [r0, #-1] 158@ CHECK: ldrb r0, [r0, #-128] @ encoding: [0x80,0x0c,0x10,0xf8] 159 ldrb r0, [r0, #-128] 160@ CHECK: ldrb.w r0, [r0, r1, lsl #2] @ encoding: [0x21,0x00,0x10,0xf8] 161 ldrb.w r0, [r0, r1, lsl #2] 162@ CHECK: ldrh.w r0, [r0, #2046] @ encoding: [0xfe,0x07,0xb0,0xf8] 163 ldrh.w r0, [r0, #2046] 164@ CHECK: ldrh r0, [r0, #-128] @ encoding: [0x80,0x0c,0x30,0xf8] 165 ldrh r0, [r0, #-128] 166@ CHECK: ldrh.w r0, [r0, r1, lsl #2] @ encoding: [0x21,0x00,0x30,0xf8] 167 ldrh.w r0, [r0, r1, lsl #2] 168@ CHECK: ldrsb.w r0, [r0] @ encoding: [0x00,0x00,0x90,0xf9] 169 ldrsb.w r0, [r0] 170@ CHECK: ldrsh.w r0, [r0] @ encoding: [0x00,0x00,0xb0,0xf9] 171 ldrsh.w r0, [r0] 172@ CHECK: bfi r0, r0, #5, #7 @ encoding: [0x60,0xf3,0x4b,0x10] 173 bfi r0, r0, #5, #7 174@ CHECK: isb @ encoding: [0xbf,0xf3,0x6f,0x8f] 175 isb 176@ CHECK: mrs r0, cpsr @ encoding: [0xef,0xf3,0x00,0x80] 177 mrs r0, cpsr 178@ CHECK: vmrs r0, fpscr @ encoding: [0xf1,0xee,0x10,0x0a] 179 vmrs r0, fpscr 180@ CHECK: vmrs r0, fpexc @ encoding: [0xf8,0xee,0x10,0x0a] 181 vmrs r0, fpexc 182@ CHECK: vmrs r0, fpsid @ encoding: [0xf0,0xee,0x10,0x0a] 183 vmrs r0, fpsid 184 185@ CHECK: vmsr fpscr, r0 @ encoding: [0xe1,0xee,0x10,0x0a] 186 vmsr fpscr, r0 187@ CHECK: vmsr fpexc, r0 @ encoding: [0xe8,0xee,0x10,0x0a] 188 vmsr fpexc, r0 189@ CHECK: vmsr fpsid, r0 @ encoding: [0xe0,0xee,0x10,0x0a] 190 vmsr fpsid, r0 191 192@ CHECK: mcr p7, #1, r5, c1, c1, #4 @ encoding: [0x21,0xee,0x91,0x57] 193 mcr p7, #1, r5, c1, c1, #4 194 195@ CHECK: mrc p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e] 196 mrc p14, #0, r1, c1, c2, #4 197 198@ CHECK: mcrr p7, #1, r5, r4, c1 @ encoding: [0x44,0xec,0x11,0x57] 199 mcrr p7, #1, r5, r4, c1 200 201@ CHECK: mrrc p7, #1, r5, r4, c1 @ encoding: [0x54,0xec,0x11,0x57] 202 mrrc p7, #1, r5, r4, c1 203 204@ CHECK: mcr2 p7, #1, r5, c1, c1, #4 @ encoding: [0x21,0xfe,0x91,0x57] 205 mcr2 p7, #1, r5, c1, c1, #4 206 207@ CHECK: mrc2 p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e] 208 mrc2 p14, #0, r1, c1, c2, #4 209 210@ CHECK: mcrr2 p7, #1, r5, r4, c1 @ encoding: [0x44,0xfc,0x11,0x57] 211 mcrr2 p7, #1, r5, r4, c1 212 213@ CHECK: mrrc2 p7, #1, r5, r4, c1 @ encoding: [0x54,0xfc,0x11,0x57] 214 mrrc2 p7, #1, r5, r4, c1 215 216@ CHECK: cdp p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xee,0x81,0x17] 217 cdp p7, #1, c1, c1, c1, #4 218 219@ CHECK: cdp2 p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xfe,0x81,0x17] 220 cdp2 p7, #1, c1, c1, c1, #4 221 222@ CHECK: clrex @ encoding: [0xbf,0xf3,0x2f,0x8f] 223 clrex 224 225@ CHECK: clz r9, r0 @ encoding: [0xb0,0xfa,0x80,0xf9] 226 clz r9, r0 227 228@ CHECK: qadd r1, r2, r3 @ encoding: [0x83,0xfa,0x82,0xf1] 229 qadd r1, r2, r3 230 231@ CHECK: qsub r1, r2, r3 @ encoding: [0x83,0xfa,0xa2,0xf1] 232 qsub r1, r2, r3 233 234@ CHECK: qdadd r1, r2, r3 @ encoding: [0x83,0xfa,0x92,0xf1] 235 qdadd r1, r2, r3 236 237@ CHECK: qdsub r1, r2, r3 @ encoding: [0x83,0xfa,0xb2,0xf1] 238 qdsub r1, r2, r3 239 240@ CHECK: nop.w @ encoding: [0xaf,0xf3,0x00,0x80] 241 nop.w 242 243@ CHECK: yield.w @ encoding: [0xaf,0xf3,0x01,0x80] 244 yield.w 245 246@ CHECK: wfe.w @ encoding: [0xaf,0xf3,0x02,0x80] 247 wfe.w 248 249@ CHECK: wfi.w @ encoding: [0xaf,0xf3,0x03,0x80] 250 wfi.w 251 252@ CHECK: dmb sy @ encoding: [0xbf,0xf3,0x5f,0x8f] 253 dmb sy 254@ CHECK: dmb st @ encoding: [0xbf,0xf3,0x5e,0x8f] 255 dmb st 256@ CHECK: dmb ish @ encoding: [0xbf,0xf3,0x5b,0x8f] 257 dmb ish 258@ CHECK: dmb ishst @ encoding: [0xbf,0xf3,0x5a,0x8f] 259 dmb ishst 260@ CHECK: dmb nsh @ encoding: [0xbf,0xf3,0x57,0x8f] 261 dmb nsh 262@ CHECK: dmb nshst @ encoding: [0xbf,0xf3,0x56,0x8f] 263 dmb nshst 264@ CHECK: dmb osh @ encoding: [0xbf,0xf3,0x53,0x8f] 265 dmb osh 266@ CHECK: dmb oshst @ encoding: [0xbf,0xf3,0x52,0x8f] 267 dmb oshst 268 269@ CHECK: dsb sy @ encoding: [0xbf,0xf3,0x4f,0x8f] 270 dsb sy 271@ CHECK: dsb st @ encoding: [0xbf,0xf3,0x4e,0x8f] 272 dsb st 273@ CHECK: dsb ish @ encoding: [0xbf,0xf3,0x4b,0x8f] 274 dsb ish 275@ CHECK: dsb ishst @ encoding: [0xbf,0xf3,0x4a,0x8f] 276 dsb ishst 277@ CHECK: dsb nsh @ encoding: [0xbf,0xf3,0x47,0x8f] 278 dsb nsh 279@ CHECK: dsb nshst @ encoding: [0xbf,0xf3,0x46,0x8f] 280 dsb nshst 281@ CHECK: dsb osh @ encoding: [0xbf,0xf3,0x43,0x8f] 282 dsb osh 283@ CHECK: dsb oshst @ encoding: [0xbf,0xf3,0x42,0x8f] 284 dsb oshst 285 286@ CHECK: cpsie.w aif @ encoding: [0xaf,0xf3,0xe0,0x84] 287 cpsie.w aif 288@ CHECK: cps #15 @ encoding: [0xaf,0xf3,0x0f,0x81] 289 cps #15 290@ CHECK: cpsie.w if, #10 @ encoding: [0xaf,0xf3,0x6a,0x85] 291 cpsie.w if, #10 292 293@ CHECK: msr cpsr_fc, r0 @ encoding: [0x80,0xf3,0x00,0x89] 294 msr apsr, r0 295@ CHECK: msr cpsr_s, r0 @ encoding: [0x80,0xf3,0x00,0x84] 296 msr apsr_g, r0 297@ CHECK: msr cpsr_f, r0 @ encoding: [0x80,0xf3,0x00,0x88] 298 msr apsr_nzcvq, r0 299@ CHECK: msr cpsr_fs, r0 @ encoding: [0x80,0xf3,0x00,0x8c] 300 msr apsr_nzcvqg, r0 301@ CHECK: msr cpsr_fc, r0 @ encoding: [0x80,0xf3,0x00,0x89] 302 msr cpsr_fc, r0 303@ CHECK: msr cpsr_c, r0 @ encoding: [0x80,0xf3,0x00,0x81] 304 msr cpsr_c, r0 305@ CHECK: msr cpsr_x, r0 @ encoding: [0x80,0xf3,0x00,0x82] 306 msr cpsr_x, r0 307@ CHECK: msr cpsr_fc, r0 @ encoding: [0x80,0xf3,0x00,0x89] 308 msr cpsr_fc, r0 309@ CHECK: msr cpsr_fsx, r0 @ encoding: [0x80,0xf3,0x00,0x8e] 310 msr cpsr_fsx, r0 311@ CHECK: msr spsr_fc, r0 @ encoding: [0x90,0xf3,0x00,0x89] 312 msr spsr_fc, r0 313@ CHECK: msr spsr_fsxc, r0 @ encoding: [0x90,0xf3,0x00,0x8f] 314 msr spsr_fsxc, r0 315@ CHECK: msr cpsr_fsxc, r0 @ encoding: [0x80,0xf3,0x00,0x8f] 316 msr cpsr_fsxc, r0 317 318@ CHECK: strexb r0, r1, [r2] @ encoding: [0xc2,0xe8,0x40,0x1f] 319 strexb r0, r1, [r2] 320@ CHECK: strexh r0, r1, [r2] @ encoding: [0xc2,0xe8,0x50,0x1f] 321 strexh r0, r1, [r2] 322@ CHECK: strex r0, r1, [r2] @ encoding: [0x42,0xe8,0x00,0x10] 323 strex r0, r1, [r2] 324@ CHECK: strexd r0, r2, r3, [r1] @ encoding: [0xc1,0xe8,0x70,0x23] 325 strexd r0, r2, r3, [r1] 326@ CHECK: ldrexb r0, [r0] @ encoding: [0xd0,0xe8,0x4f,0x0f] 327 ldrexb r0, [r0] 328@ CHECK: ldrexh r0, [r0] @ encoding: [0xd0,0xe8,0x5f,0x0f] 329 ldrexh r0, [r0] 330@ CHECK: ldrex r0, [r0] @ encoding: [0x50,0xe8,0x00,0x0f] 331 ldrex r0, [r0] 332@ CHECK: ldrexd r0, r1, [r0] @ encoding: [0xd0,0xe8,0x7f,0x01] 333 ldrexd r0, r1, [r0] 334@ CHECK: ssat16 r0, #7, r0 @ encoding: [0x20,0xf3,0x06,0x00] 335 ssat16 r0, #7, r0 336 337 and r1, #0xff 338 and r1, r1, #0xff 339 orr r1, 0x100 340 orr r1, r1, 0x100 341 eor r1, 0x100 342 eor r1, r1, 0x100 343 bic r1, 0x100 344 bic r1, r1, 0x100 345 346@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01] 347@ CHECK: and r1, r1, #255 @ encoding: [0x01,0xf0,0xff,0x01] 348@ CHECK: orr r1, r1, #256 @ encoding: [0x41,0xf4,0x80,0x71] 349@ CHECK: orr r1, r1, #256 @ encoding: [0x41,0xf4,0x80,0x71] 350@ CHECK: eor r1, r1, #256 @ encoding: [0x81,0xf4,0x80,0x71] 351@ CHECK: eor r1, r1, #256 @ encoding: [0x81,0xf4,0x80,0x71] 352@ CHECK: bic r1, r1, #256 @ encoding: [0x21,0xf4,0x80,0x71] 353@ CHECK: bic r1, r1, #256 @ encoding: [0x21,0xf4,0x80,0x71] 354 355 356