mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
38c6ff6c11
This allows "llvm-mc -disassemble" to accept two new features: + Using comma as a byte separator + Grouping bytes with '[' and ']' pairs. The behaviour outside a [...] group is unchanged. But within the group once llvm-mc encounters a true error, it stops rather than trying to resynchronise the stream at the next byte. This is more useful for disassembly tests, where we have an almost-instruction in mind and don't care what the misaligned interpretation would be. Particularly if it means llvm-mc won't actually see the next intended almost-instruction. As a side effect, this means llvm-mc can disassemble its own -show-encoding output if copy-pasted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186661 91177308-0d34-0410-b5e6-96231b3b80d8
39 lines
1.7 KiB
Plaintext
39 lines
1.7 KiB
Plaintext
# RUN: llvm-mc -disassemble -triple thumbv7 2>&1 | FileCheck %s
|
|
# XFAIL: *
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Undefined encodings for ldrexd/strexd
|
|
#------------------------------------------------------------------------------
|
|
|
|
# FIXME: "ldrexd r8, r8, [r2]"
|
|
# Rt == Rt2 is UNPREDICTABLE
|
|
|
|
[0xd2 0xe8 0x7f 0x88]
|
|
# CHECK: potentially undefined instruction encoding
|
|
# CHECK-NEXT: [0xd2 0xe8 0x7f 0x88]
|
|
|
|
# Opcode=2127 Name=t2STREXB Format=ARM_FORMAT_THUMBFRM(25)
|
|
# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
# -------------------------------------------------------------------------------------------------
|
|
# | 1: 1: 1: 0| 1: 0: 0: 0| 1: 1: 0: 0| 0: 0: 1: 0| 1: 0: 0: 0| 1: 1: 1: 1| 0: 1: 0: 0| 0: 0: 1: 0|
|
|
# -------------------------------------------------------------------------------------------------
|
|
#
|
|
# if d == n || d == t then UNPREDICTABLE
|
|
|
|
[0xc2 0xe8 0x42 0x8f]
|
|
# CHECK: potentially undefined instruction encoding
|
|
# CHECK-NEXT: [0xc2 0xe8 0x42 0x8f]
|
|
|
|
# Opcode=2128 Name=t2STREXD Format=ARM_FORMAT_THUMBFRM(25)
|
|
# 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
# -------------------------------------------------------------------------------------------------
|
|
# | 1: 1: 1: 0| 1: 0: 0: 0| 1: 1: 0: 0| 0: 0: 1: 0| 0: 1: 1: 1| 1: 0: 0: 0| 0: 1: 1: 1| 1: 0: 0: 0|
|
|
# -------------------------------------------------------------------------------------------------
|
|
#
|
|
# if d == n || d == t || d == t2 then UNPREDICTABLE
|
|
|
|
# FIXME: should be unpredictable since it's "strexd r8, r7, r8, [r2]"
|
|
[0xc2 0xe8 0x78 0x78]
|
|
# CHECK: potentially undefined instruction encoding
|
|
# CHECK-NEXT: [0xc2 0xe8 0x78 0x78]
|