thumb1.txt 13.3 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527
# RUN: llvm-mc -triple=thumbv6-apple-darwin -disassemble -show-encoding < %s | FileCheck %s

#------------------------------------------------------------------------------
# ADC (register)
#------------------------------------------------------------------------------
# CHECK: adcs r4, r6

0x74 0x41


#------------------------------------------------------------------------------
# ADD (immediate)
#------------------------------------------------------------------------------
# CHECK: adds r1, r2, #3
# CHECK: adds r2, r2, #3
# CHECK: adds r2, #8

0xd1 0x1c
0xd2 0x1c
0x08 0x32

#------------------------------------------------------------------------------
# ADD (register)
#------------------------------------------------------------------------------
# CHECK: adds r1, r2, r3
# CHECK: add r2, r8

0xd1 0x18
0x42 0x44

#------------------------------------------------------------------------------
# ADD (SP plus immediate)
#------------------------------------------------------------------------------
# CHECK: add sp, #508
# CHECK: add sp, #4
# CHECK: add r2, sp, #8
# CHECK: add r2, sp, #1020

0x7f 0xb0
0x01 0xb0
0x02 0xaa
0xff 0xaa


#------------------------------------------------------------------------------
# ADD (SP plus register)
#------------------------------------------------------------------------------
# CHECK: add sp, r3
# CHECK: add r2, sp, r2

0x9d 0x44
0x6a 0x44

#------------------------------------------------------------------------------
# ADR
#------------------------------------------------------------------------------
# CHECK: adr    r5, #0
# CHECK: adr    r2, #12
# CHECK: adr    r3, #1020
0x00 0xa5
0x03 0xa2
0xff 0xa3

#------------------------------------------------------------------------------
# ASR (immediate)
#------------------------------------------------------------------------------
# CHECK: asrs r2, r3, #32
# CHECK: asrs r2, r3, #5
# CHECK: asrs r2, r3, #1

0x1a 0x10
0x5a 0x11
0x5a 0x10

#------------------------------------------------------------------------------
# ASR (register)
#------------------------------------------------------------------------------
# CHECK: asrs r5, r2

0x15 0x41

#------------------------------------------------------------------------------
# BICS
#------------------------------------------------------------------------------
# CHECK: bics r1, r6

0xb1 0x43

#------------------------------------------------------------------------------
# B
#------------------------------------------------------------------------------
# CHECK: bls     #128                    @ encoding: [0x40,0xd9]
# CHECK: beq     #-256                   @ encoding: [0x80,0xd0]

0x40 0xd9
0x80 0xd0

#------------------------------------------------------------------------------
# BKPT
#------------------------------------------------------------------------------
# CHECK: bkpt #0
# CHECK: bkpt #255

0x00 0xbe
0xff 0xbe

#------------------------------------------------------------------------------
# BLX (register)
#------------------------------------------------------------------------------
# CHECK: blx r4

0xa0 0x47

#------------------------------------------------------------------------------
# BX
#------------------------------------------------------------------------------
# CHECK: bx r2

0x10 0x47

#------------------------------------------------------------------------------
# CMN
#------------------------------------------------------------------------------
# CHECK: cmn r5, r1

0xcd 0x42

#------------------------------------------------------------------------------
# CMP
#------------------------------------------------------------------------------
# CHECK: cmp r6, #32
# CHECK: cmp r3, r4
# CHECK: cmp r8, r1

0x20 0x2e
0xa3 0x42
0x88 0x45

#------------------------------------------------------------------------------
# EOR
#------------------------------------------------------------------------------
# CHECK: eors r4, r5

0x6c 0x40

#------------------------------------------------------------------------------
# LDM
#------------------------------------------------------------------------------
# CHECK: ldm r3, {r0, r1, r2, r3, r4, r5, r6, r7}
# CHECK: ldm r2!, {r1, r3, r4, r5, r7}
# CHECK: ldm r1, {r1}

0xff 0xcb
0xba 0xca
0x02 0xc9


#------------------------------------------------------------------------------
# LDR (immediate)
#------------------------------------------------------------------------------
# CHECK: ldr r1, [r5]
# CHECK: ldr r2, [r6, #32]
# CHECK: ldr r3, [r7, #124]
# CHECK: ldr r1, [sp]
# CHECK: ldr r2, [sp, #24]
# CHECK: ldr r3, [sp, #1020]
# CHECK: ldr r1, [pc, #12]


0x29 0x68
0x32 0x6a
0xfb 0x6f
0x00 0x99
0x06 0x9a
0xff 0x9b
0x03 0x49

#------------------------------------------------------------------------------
# LDR (register)
#------------------------------------------------------------------------------
# CHECK: ldr r1, [r2, r3]

0xd1 0x58


#------------------------------------------------------------------------------
# LDRB (immediate)
#------------------------------------------------------------------------------
# CHECK: ldrb r4, [r3]
# CHECK: ldrb r5, [r6]
# CHECK: ldrb r6, [r7, #31]

0x1c 0x78
0x35 0x78
0xfe 0x7f


#------------------------------------------------------------------------------
# LDRB (register)
#------------------------------------------------------------------------------
# CHECK: ldrb r6, [r4, r5]

0x66 0x5d


#------------------------------------------------------------------------------
# LDRH (immediate)
#------------------------------------------------------------------------------
# CHECK: ldrh r3, [r3]
# CHECK: ldrh r4, [r6, #2]
# CHECK: ldrh r5, [r7, #62]

0x1b 0x88
0x74 0x88
0xfd 0x8f

#------------------------------------------------------------------------------
# LDRH (register)
#------------------------------------------------------------------------------
# CHECK: ldrh r6, [r2, r6]

0x96 0x5b


#------------------------------------------------------------------------------
# LDRSB/LDRSH
#------------------------------------------------------------------------------
# CHECK: ldrsb r6, [r2, r6]
# CHECK: ldrsh r3, [r7, r1]

0x96 0x57
0x7b 0x5e

#------------------------------------------------------------------------------
# LSL (immediate)
#------------------------------------------------------------------------------
# CHECK: movs r4, r5
# CHECK: lsls r4, r5, #4

0x2c 0x00
0x2c 0x01


#------------------------------------------------------------------------------
# LSL (register)
#------------------------------------------------------------------------------
# CHECK: lsls r2, r6

0xb2 0x40


#------------------------------------------------------------------------------
# LSR (immediate)
#------------------------------------------------------------------------------
# CHECK: lsrs r1, r3, #1
# CHECK: lsrs r1, r3, #32

0x59 0x08
0x19 0x08


#------------------------------------------------------------------------------
# LSR (register)
#------------------------------------------------------------------------------
# CHECK: lsrs r2, r6

0xf2 0x40

#------------------------------------------------------------------------------
# MOV (immediate)
#------------------------------------------------------------------------------
# CHECK: movs r2, #0
# CHECK: movs r2, #255
# CHECK: movs r2, #23

0x00 0x22
0xff 0x22
0x17 0x22


#------------------------------------------------------------------------------
# MOV (register)
#------------------------------------------------------------------------------
# CHECK: mov r3, r4
# CHECK: movs r1, r3
# CHECK: mov r8, r8

0x23 0x46
0x19 0x00
0xc0 0x46


#------------------------------------------------------------------------------
# MUL
#------------------------------------------------------------------------------
# CHECK: muls r1, r2, r1
# CHECK: muls r3, r4

0x51 0x43
0x63 0x43


#------------------------------------------------------------------------------
# MVN
#------------------------------------------------------------------------------
# CHECK: mvns r6, r3

0xde 0x43

#------------------------------------------------------------------------------
# NEG
#------------------------------------------------------------------------------
# CHECK: rsbs r3, r4, #0

0x63 0x42


#------------------------------------------------------------------------------
# ORR
#------------------------------------------------------------------------------
# CHECK: orrs  r3, r4

0x23 0x43

#------------------------------------------------------------------------------
# POP
#------------------------------------------------------------------------------
# CHECK: pop {r2, r3, r6}

0x4c 0xbc


#------------------------------------------------------------------------------
# PUSH
#------------------------------------------------------------------------------
# CHECK: push {r1, r2, r7}

0x86 0xb4


#------------------------------------------------------------------------------
# REV/REV16/REVSH
#------------------------------------------------------------------------------
# CHECK: rev r6, r3
# CHECK: rev16 r7, r2
# CHECK: revsh r5, r1

0x1e 0xba
0x57 0xba
0xcd 0xba


#------------------------------------------------------------------------------
# ROR
#------------------------------------------------------------------------------
# CHECK: rors r2, r7

0xfa 0x41

#------------------------------------------------------------------------------
# RSB
#------------------------------------------------------------------------------
# CHECK: rsbs r1, r3, #0

0x59 0x42


#------------------------------------------------------------------------------
# SBC
#------------------------------------------------------------------------------
# CHECK: sbcs r4, r3

0x9c 0x41


#------------------------------------------------------------------------------
# SETEND
#------------------------------------------------------------------------------
# CHECK: setend be
# CHECK: setend le

0x58 0xb6
0x50 0xb6

#------------------------------------------------------------------------------
# STM
#------------------------------------------------------------------------------
# CHECK: stm r1!, {r2, r6}
# CHECK: stm r1!, {r1, r2, r3, r7}

0x44 0xc1
0x8e 0xc1


#------------------------------------------------------------------------------
# STR (immediate)
#------------------------------------------------------------------------------
# CHECK: str r2, [r7]
# CHECK: str r2, [r7]
# CHECK: str r5, [r1, #4]
# CHECK: str r3, [r7, #124]
# CHECK: str r2, [sp]
# CHECK: str r3, [sp]
# CHECK: str r4, [sp, #20]
# CHECK: str r5, [sp, #1020]

0x3a 0x60
0x3a 0x60
0x4d 0x60
0xfb 0x67
0x00 0x92
0x00 0x93
0x05 0x94
0xff 0x95


#------------------------------------------------------------------------------
# STR (register)
#------------------------------------------------------------------------------
# CHECK: str r2, [r7, r3]

0xfa 0x50


#------------------------------------------------------------------------------
# STRB (immediate)
#------------------------------------------------------------------------------
# CHECK: strb r4, [r3]
# CHECK: strb r5, [r6]
# CHECK: strb r6, [r7, #31]

0x1c 0x70
0x35 0x70
0xfe 0x77


#------------------------------------------------------------------------------
# STRB (register)
#------------------------------------------------------------------------------
# CHECK: strb r6, [r4, r5]

0x66 0x55


#------------------------------------------------------------------------------
# STRH (immediate)
#------------------------------------------------------------------------------
# CHECK: strh r3, [r3]
# CHECK: strh r4, [r6, #2]
# CHECK: strh r5, [r7, #62]

0x1b 0x80
0x74 0x80
0xfd 0x87


#------------------------------------------------------------------------------
# STRH (register)
#------------------------------------------------------------------------------
# CHECK: strh r6, [r2, r6]

0x96 0x53


#------------------------------------------------------------------------------
# SUB (immediate)
#------------------------------------------------------------------------------
# CHECK: subs r1, r2, #3
# CHECK: subs r2, #3
# CHECK: subs r2, #8

0xd1 0x1e
0x03 0x3a
0x08 0x3a

#------------------------------------------------------------------------------
# SUB (register)
#------------------------------------------------------------------------------
# CHECK: subs r1, r2, r3

0xd1 0x1a

#------------------------------------------------------------------------------
# SUB (SP minus immediate)
#------------------------------------------------------------------------------
# CHECK: sub sp, #12
# CHECK: sub sp, #508

0x83 0xb0
0xff 0xb0

#------------------------------------------------------------------------------
# SVC
#------------------------------------------------------------------------------
# CHECK: svc #0
# CHECK: svc #255

0x00 0xdf
0xff 0xdf


#------------------------------------------------------------------------------
# SXTB/SXTH
#------------------------------------------------------------------------------
# CHECK: sxtb r3, r5
# CHECK: sxth r3, r5

0x6b 0xb2
0x2b 0xb2


#------------------------------------------------------------------------------
# TST
#------------------------------------------------------------------------------
# CHECK: tst r6, r1

0x0e 0x42


#------------------------------------------------------------------------------
# UXTB/UXTH
#------------------------------------------------------------------------------
# CHECK: uxtb  r7, r2
# CHECK: uxth  r1, r4

0xd7 0xb2
0xa1 0xb2