* Masking of the VEX map with 0x3 to match an undocumented
implementation convention that can (and most likely will) change
as architectural map usage evolves.
Change-Id: I0a0494049884f94b3770d8f105d353e7b3a45070
(cherry picked from commit eac755ab42dc6e0f9bf187689fba70bb48428a6b)
* Add support for disassembling as a filter
Linux perf can output hex dumps of individual instructions, but it
doesn't have a full disassembler. Extend xed to allow filtering of
such dumps.
The instructions always have a specific format:
other file HEX-IP(optional) ... insn: byte1 byte2 ... other things
This patch adds a new -F prefix mode that looks for this
format and runs as a filter that replaces the insn: ... patterns
with disassembled instructions.
* xed: Add support for reading symbol tables from nm style dumps
When decoding Linux kernel dumps it can be useful to use the
symbol table in /proc/kallsyms. This is the same format
as output by `nm'. Add a new -S option to xed that reads
such a file and uses it to resolve symbols.
Right now this is only implemented in filter mode (-F)
VMCALL in root operation can only be executed from CPL=0
but that is a less used aspect of the instruction.
Change-Id: I8046b1fa2fbf49e61ab5b5e3dc541de70bce91f1
(cherry picked from commit 9ee396ed5cc43d57bfcf18dd74d7cfd82d5b1159)
* there were a few typos or things that got out of sync.
Change-Id: I3766ebb3283bb320cb712cd50f8279b76d1fb7b9
(cherry picked from commit 206c19c6dbd54c7c21401bb49b1cca5582e897cf)
* These 3 instr ignore the 66/F2/F3 prefixes if present.
* Recently, I pushed a commit ( 5b29d2b ) based on erroneous
information I received, adding no_refining_prefixes to these 3
instr.
Change-Id: I7f32cef7670b48740f29a3bcf5f79cd83a0c4772
(cherry picked from commit 242e8ce888fd7332d0f39ba45f3f73b664155ce1)
* improves isa & chip enums when building --no-amd
Change-Id: I2d302595e540775b591f65d2429e35aa50c89f71
(cherry picked from commit 351e20aeeb9918d991ab1bea7f222057588d6a44)
* for broadcast instructions and AVX512 ld-op instr with embedded
broadcast being used.
* xed_decoded_inst_is_broadcast_instruction(xedd) for pure broadcasts
* xed_decoded_inst_uses_embedded_broadcast(xedd) for AVX512 ld-op with embedded broadcast
* xed_decoded_inst_is_broadcast(xedd) for logical OR of the above two functions.
Change-Id: Icb8a0e20380156239be712a2542477fd79222fd9
(cherry picked from commit 2a4532c07443ba22db49ad9e21887a935ca52b1f)
* Slightly hacky to mention the uname NOP0F1F, but it is similar to
putting the "enc" decorator on the pattern. If we have to fiddle
with more priorites, we can think about a better mechanism.
Change-Id: I8c72e573183cb52e869c770852328f27e00f8b03
(cherry picked from commit 431b365cc9a1736b316f814376410b1577050849)
* the alnum_sort function did not handle numbers within names
properly nor did it handle underscores leading to
nondeterministic sorting. Came up as part of python3 conversion
effort. Just falling back on normal sort. If we ever have more
than 10 REG[0..9] operands (or any other sequence of operand
fields) we'll need to think about sorting those with a special
case sort function. But just those...
Change-Id: Ie8f6e2eca8b2eac6b0373f0494171fc61dfd1a1d
(cherry picked from commit 9a110642a93d24f560b8c2ab1a72ca86e9a4271f)
(cherry picked from commit 3efffc61666eff5e0633986bf42be939c77ee2ba)
* I noticed some iforms from different isa-sets were abiguous
and added a check.
* Did some minor clean up to the iform generation code, commenting,
dead code elim.
Change-Id: I2afb87c7c55c86a86ecc322c0dfc48939a47b16f
(cherry picked from commit 740e181330c06c078e4efc73063a97b4baa0f34b)
* only original AVX512 CPUID bits will omit underscores:
AVX512{F,DQ,BW,CD,PF,ER,VL}
Change-Id: I8865617769ee94d8b74c91613c657cb595a4ce23
(cherry picked from commit d50dfb5313d9b721c924482c95e13ba542359138)
* SNB had an errata where it would #UD when VEX.W=1 in 32b mode.
That was fixed on IVB. So IVB was essentially "WIG" (ignores
VEX.W in 32b mode).
Change-Id: I150520f664059c8ba4342fe4c91d2a91c04504a7
(cherry picked from commit c11a7b25dec5646469db5a5dac2c0f589781b3f1)