The current version of LLVM X86 disassembler incorrectly interprets some possible sets of x86 prefixes (see PR7709, 17697, 19251, 21640, etc.). This patch is the first step to resolve those issues. In particulary this patch could close the first two PRs from the above and should be able to close some others soon.
Details
Diff Detail
Event Timeline
I found one issue in the current version of the patch that's why I'm asking to postpone its review until the next version: hope to publish it in some hours or tomorrow.
lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp | ||
---|---|---|
295 | I was sure that SSE2, etc. work on 64-bit CPUs only but it seems I was wrong: Wikipedia says: The following IA-32 CPUs support SSE2: OK, I'll fix it. |
Please add a 32-bit mode test as well.
lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp | ||
---|---|---|
993 | Is this 64-bit mode checks till needed? |
lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp | ||
---|---|---|
993 | In fact we need ... else if (insn->mode != MODE_16BIT .... I'll do it. Tnx. |
The two I had were 0xf2666d and 0xf3666d that were broken with the earlier patch that I mentioned in my reversion email following up on the original.
What about 32-bit mode?