> At least on x86 it should also be a good idea to know which way
> the branch is going to go, because it doesn't have explicit branch
> hints, you really want to be able to optimize the cold branch
> predictor case if converting from cmov to conditional branches.

x86 as of Pentium 4 does have branch hint instruction prefixes, but their use 
is somewhat
discouraged:

from http://softwarecommunity.intel.com/articles/eng/3431.htm:
"
The Pentium® 4 Processor introduced new instructions for adding static hints to 
branches. It is
not recommended that a programmer use these instructions, as they add slightly 
to the size of the
code and are static hints only. It is best to use a conditional branch in the 
manner that the
static predictor expects, rather than adding these branch hints.

In the event that a branch hint is necessary, the following instruction 
prefixes can be added
before a branch instruction to change the way the static predictor behaves:

    * 0x3E – statically predict a branch as taken
    * 0x2E – statically predict a branch as not taken
"

see also section 2.1.1 Instruction Prefixes in
http://download.intel.com/design/processor/manuals/253666.pdf:
"
Branch hint prefixes (2EH, 3EH) allow a program to give a hint to the processor 
about
the most likely code path for a branch. Use these prefixes only with conditional
branch instructions (Jcc). Other use of branch hint prefixes and/or other 
undefined
opcodes with Intel 64 or IA-32 instructions is reserved; such use may cause 
unpre-
dictable behavior.
"



      
____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

Reply via email to