X86: Don't read in dest regs if all bits are replaced.
authorGabe Black <gblack@eecs.umich.edu>
Mon, 14 Feb 2011 01:44:24 +0000 (17:44 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 14 Feb 2011 01:44:24 +0000 (17:44 -0800)
commit4e1adf85f77edf761466af3568576d3f9134a14c
tree8427e201552cc31aef6dfec5fdf4e010d59ad5c7
parent399e095510ff6bc469c45b1e5afa96567d757004
X86: Don't read in dest regs if all bits are replaced.

In x86, 32 and 64 bit writes to registers in which registers appear to be 32 or
64 bits wide overwrite all bits of the destination register. This change
removes false dependencies in these cases where the previous value of a
register doesn't need to be read to write a new value. New versions of most
microops are created that have a "Big" suffix which simply overwrite their
destination, and the right version to use is selected during microop
allocation based on the selected data size.

This does not change the performance of the O3 CPU model significantly, I
assume because there are other false dependencies from the condition code bits
in the flags register.
src/arch/x86/isa/microops/ldstop.isa
src/arch/x86/isa/microops/limmop.isa
src/arch/x86/isa/microops/regop.isa