[PATCH] Fix ARM encoding constraints for Q register fields and VSTn instructions
Tim Northover
t.p.northover at gmail.com
Tue May 14 05:09:22 PDT 2013
Hi Mihail,
Although these are both changes to "fix VSTn disassembly", I think
they should probably be committed separately.
Both code changes look reasonable to me, but the test
invalid-VST2b32_UPD-arm.txt is semantically incorrect. The
disassembler will try to resynchronise the stream after the first
failure, but it will only skip 1 byte. So the file given won't
actually test what you think it does. The output of the llvm-mc
command is:
<stdin>:11:1: warning: invalid instruction encoding
0xb3 0x09 0x03 0xf4
^
<stdin>:11:6: warning: invalid instruction encoding
0xb3 0x09 0x03 0xf4
^
stmeq r3, {r0, r1, r10, r12, sp, lr, pc} ^
ldmeq r3!, {r0, r1, r10, r12, sp, lr, pc}
<stdin>:19:11: warning: invalid instruction encoding
0xb3 0x08 0x03 0xf4
^
<stdin>:19:16: warning: invalid instruction encoding
0xb3 0x08 0x03 0xf4
^
where those stmeq and ldmeq instructions come from disassembling
unintended sequences of bytes and the failures aren't for what you
think they should be.
Tim.
More information about the llvm-commits
mailing list