| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
Original commits messages:
Add MRMXr/MRMXm form to X86 for use by instructions which treat the 'reg' field of modrm byte as a don't care value. Will allow for simplification of disassembler code.
Simplify a bunch of code by removing the need for the x86 disassembler table builder to know about extended opcodes. The modrm forms are sufficient to convey the information.
llvm-svn: 201065
|
| |
|
|
|
|
|
|
| |
r201059 appears to cause a crash in a bootstrapped build of clang. Craig
isn't available to look at it right now, so I'm reverting it while he
investigates.
llvm-svn: 201064
|
| |
|
|
|
|
| |
builder to know about extended opcodes. The modrm forms are sufficient to convey the information.
llvm-svn: 201060
|
| |
|
|
|
|
| |
field of modrm byte as a don't care value. Will allow for simplification of disassembler code.
llvm-svn: 201059
|
| |
|
|
|
|
| |
meaning no 0x66 prefix in any mode. Rename Opsize16->OpSize32 and OpSize->OpSize16. The classes now refer to their operand size rather than the mode in which they need a 0x66 prefix. Hopefully can merge REX_W into this as OpSize64.
llvm-svn: 200626
|
| |
|
|
| |
llvm-svn: 200625
|
| |
|
|
|
|
| |
in TSFlags.
llvm-svn: 200624
|
| |
|
|
|
|
| |
TSFlags. This greatly simplifies the switch statements in the disassembler tables and the code emitters.
llvm-svn: 200522
|
| |
|
|
|
|
| |
had special handling anyway and this enables a future patch.
llvm-svn: 200520
|
| |
|
|
| |
llvm-svn: 199806
|
| |
|
|
| |
llvm-svn: 199804
|
| |
|
|
| |
llvm-svn: 199803
|
| |
|
|
|
|
|
|
|
|
| |
The addition of IC_OPSIZE_ADSIZE in r198759 wasn't quite complete. It
also turns out to have been unnecessary. The disassembler handles the
AdSize prefix for itself, and doesn't care about the difference between
(e.g.) MOV8ao8 and MOB8ao8_16 definitions. So just let them coexist and
don't worry about it.
llvm-svn: 199654
|
| |
|
|
|
|
| |
encoded and disassembled with a segment override prefix. Fixes PR16962.
llvm-svn: 199364
|
| |
|
|
|
|
| |
TYPE_Rv/TYPE_R16/TYPE_R32 now that HasOpSizePrefix only means 16-bit instructions.
llvm-svn: 199295
|
| |
|
|
| |
llvm-svn: 199194
|
| |
|
|
|
|
|
|
| |
and the current mode from the concept of SSE instructions using 0x66 prefix as part of their encoding without being affected by the mode.
This should allow SSE instructions to be encoded correctly in 16-bit mode which r198586 probably broke.
llvm-svn: 199193
|
| |
|
|
|
|
|
|
|
|
| |
It seems there is no separate instruction class for having AdSize *and*
OpSize bits set, which is required in order to disambiguate between all
these instructions. So add that to the disassembler.
Hm, perhaps we do need an AdSize16 bit after all?
llvm-svn: 198759
|
| |
|
|
|
|
| |
being used.
llvm-svn: 198589
|
| |
|
|
| |
llvm-svn: 198550
|
| |
|
|
| |
llvm-svn: 198547
|
| |
|
|
| |
llvm-svn: 198546
|
| |
|
|
|
|
| |
disassembler without string matches.
llvm-svn: 198545
|
| |
|
|
|
|
| |
and remove disassmbler table emitter hack.
llvm-svn: 198544
|
| |
|
|
|
|
| |
instructions to go through to the disassembler tables without resorting to string matches. Apply flag to all _REV instructions.
llvm-svn: 198543
|
| |
|
|
|
|
| |
corresponding 32-bit versions with the same encodings Not64BitMode. Remove hack from tablegen disassembler table emitter. Fix bad test.
llvm-svn: 198530
|
| |
|
|
|
|
| |
Remove disassembler hack.
llvm-svn: 198515
|
| |
|
|
|
|
| |
won't be emitted correctly since it was set to NoImm. And I can't prove that gas accepts 'jmpq' with an immediate either. Remove the special case for it from the disassembler table generator.
llvm-svn: 198475
|
| |
|
|
| |
llvm-svn: 198336
|
| |
|
|
| |
llvm-svn: 198332
|
| |
|
|
|
|
| |
from the disassembler table builder.
llvm-svn: 198327
|
| |
|
|
| |
llvm-svn: 198325
|
| |
|
|
|
|
| |
table builder doesn't need to string match them to exclude them.
llvm-svn: 198323
|
| |
|
|
| |
llvm-svn: 198291
|
| |
|
|
|
|
| |
used. Removes ~11.5K from static tables.
llvm-svn: 198284
|
| |
|
|
|
|
| |
really more like OrRegFrm so we don't need a difference since we can just mask bits.
llvm-svn: 198278
|
| |
|
|
|
|
|
| |
Printing rounding control.
Enncoding for EVEX_RC (rounding control).
llvm-svn: 198277
|
| |
|
|
|
|
| |
instructions. These instructions can be handled by MRMXr instead.
llvm-svn: 198276
|
| |
|
|
|
|
| |
realized we had no FP disassembler test cases.
llvm-svn: 198265
|
| |
|
|
|
|
| |
can be handled by MRMXr instead.
llvm-svn: 198238
|
| |
|
|
|
|
| |
ExtendedFilter and ExactFilter. No functional change.
llvm-svn: 198226
|
| |
|
|
|
|
|
|
|
|
|
| |
That's what it actually means, and with 16-bit support it's going to be
a little more relevant since in a few corner cases we may actually want
to distinguish between 16-bit and 32-bit mode (for example the bare 'push'
aliases to pushw/pushl etc.)
Patch by David Woodhouse
llvm-svn: 197768
|
| |
|
|
|
|
|
|
|
| |
Added scalar compare VCMPSS, VCMPSD.
Implemented LowerSELECT for scalar FP operations.
I replaced FSETCCss, FSETCCsd with one node type FSETCCs.
Node extract_vector_elt(v16i1/v8i1, idx) returns an element of type i1.
llvm-svn: 197384
|
| |
|
|
|
|
| |
added EVEX_KZ to tablegen
llvm-svn: 193959
|
| |
|
|
|
|
| |
instructions to parse either GR32 or GR64 without resorting to duplicating instructions.
llvm-svn: 192567
|
| |
|
|
|
|
| |
CodeGenOnly.
llvm-svn: 192525
|
| |
|
|
|
|
| |
disassembler.
llvm-svn: 192522
|
| |
|
|
| |
llvm-svn: 192425
|
| |
|
|
| |
llvm-svn: 192339
|
| |
|
|
| |
llvm-svn: 192279
|