Mercurial > hg > truffle
diff src/cpu/x86/vm/x86_64.ad @ 4047:d8cb48376797
7097546: Optimize use of CMOVE instructions
Summary: Avoid CMove in a loop if possible. May generate CMove if it could be moved outside a loop.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 26 Oct 2011 06:08:56 -0700 |
parents | 1af104d6cf99 |
children | 6729bbc1fcd6 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/x86_64.ad Tue Oct 25 12:51:13 2011 -0700 +++ b/src/cpu/x86/vm/x86_64.ad Wed Oct 26 06:08:56 2011 -0700 @@ -1993,6 +1993,12 @@ // Threshold size for cleararray. const int Matcher::init_array_short_size = 8 * BytesPerLong; +// No additional cost for CMOVL. +const int Matcher::long_cmove_cost() { return 0; } + +// No CMOVF/CMOVD with SSE2 +const int Matcher::float_cmove_cost() { return ConditionalMoveLimit; } + // Should the Matcher clone shifts on addressing modes, expecting them // to be subsumed into complex addressing expressions or compute them // into registers? True for Intel but false for most RISCs