Hello Joe Gross, Andreas Sandberg,

I'd like you to reexamine a change. Please visit

    https://gem5-review.googlesource.com/3501

to look at the new patch set (#2).

Change subject: x86: Rework how VEX prefixes are decoded.
......................................................................

x86: Rework how VEX prefixes are decoded.

Remove redundant information from the ExtMachInst, hash the vex
information to ensure the decode cache works properly, print the vex info
when printing an ExtMachInst, consider the vex info when comparing two
ExtMachInsts, fold the info from the vex prefixes into existing settings,
remove redundant decode code, handle vex prefixes one byte at a time and
don't bother building up the entire prefix, and let instructions that care
about vex use it in their implementation, instead of developing an entire
parallel decode tree.

This also eliminates the error prone vex immediate decode table which was
incomplete and would result in an out of bounds access for incorrectly
encoded instructions or when the CPU was mispeculating, as it was (as far
as I can tell) redundant with the tables that already existed for two and
three byte opcodes. There were differences, but I think those may have
been mistakes based on the documentation I found.

Also, in 32 bit mode, the VEX prefixes might actually be LDS or LES
instructions which are still legal in that mode. A valid VEX prefix would
look like an LDS/LES with an otherwise invalid modrm encoding, so use that
as a signal to abort processing the VEX and turn the instruction into an
LES/LDS as appropriate.

Change-Id: Icb367eaaa35590692df1c98862f315da4c139f5c
---
M src/arch/x86/decoder.cc
M src/arch/x86/decoder.hh
M src/arch/x86/decoder_tables.cc
M src/arch/x86/isa/bitfields.isa
M src/arch/x86/isa/decoder/decoder.isa
D src/arch/x86/isa/decoder/vex_opcodes.isa
M src/arch/x86/types.hh
7 files changed, 181 insertions(+), 1,658 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/3501
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Icb367eaaa35590692df1c98862f315da4c139f5c
Gerrit-Change-Number: 3501
Gerrit-PatchSet: 2
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Joe Gross <[email protected]>
Gerrit-CC: Jason Lowe-Power <[email protected]>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to