X86: Make not taken conditional moves leave the destination alone. Adjust CMOVcc.
authorGabe Black <gblack@eecs.umich.edu>
Sun, 9 Aug 2009 00:23:19 +0000 (17:23 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 9 Aug 2009 00:23:19 +0000 (17:23 -0700)
commit6e97feb8a546544172661bee2c75ce87ffbf33cf
treed0095489a92597cc8798244f970b2001f4fabe2d
parent7c606e3835bac328bad4dc13abfb770903f0a43f
X86: Make not taken conditional moves leave the destination alone. Adjust CMOVcc.
The manuals from both AMD and Intel say that when writing to a 32 bit
destination in 64 bit mode, the upper 32 bits of the register are filled with
zeros. They also both say that the CMOV instructions leave their destination
alone when their condition fails. Unfortunately, it seems that CMOV will zero
extend its destination register whether or not it was supposed to actually do
a move on both platforms. This seems to be the only case where this happens,
but it would be hard to say for sure.
src/arch/x86/isa/insts/general_purpose/data_transfer/conditional_move.py
src/arch/x86/isa/microops/regop.isa