OpenJDK / valhalla / valhalla
changeset 27414:39d976b80fb4
8059139: It should be possible to explicitly disable usage of TZCNT instr w/ -XX:-UseBMI1Instructions
Reviewed-by: iveresov
author | kvn |
---|---|
date | Fri, 17 Oct 2014 15:35:25 -0700 |
parents | 31d32b1d327b |
children | 42971a565f19 |
files | hotspot/src/cpu/x86/vm/vm_version_x86.cpp |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Fri Oct 17 10:09:43 2014 -1000 +++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Fri Oct 17 15:35:25 2014 -0700 @@ -865,14 +865,19 @@ if (supports_bmi1()) { // tzcnt does not require VEX prefix if (FLAG_IS_DEFAULT(UseCountTrailingZerosInstruction)) { - UseCountTrailingZerosInstruction = true; + if (!UseBMI1Instructions && !FLAG_IS_DEFAULT(UseBMI1Instructions)) { + // Don't use tzcnt if BMI1 is switched off on command line. + UseCountTrailingZerosInstruction = false; + } else { + UseCountTrailingZerosInstruction = true; + } } } else if (UseCountTrailingZerosInstruction) { warning("tzcnt instruction is not available on this CPU"); FLAG_SET_DEFAULT(UseCountTrailingZerosInstruction, false); } - // BMI instructions use an encoding with VEX prefix. + // BMI instructions (except tzcnt) use an encoding with VEX prefix. // VEX prefix is generated only when AVX > 0. if (supports_bmi1() && supports_avx()) { if (FLAG_IS_DEFAULT(UseBMI1Instructions)) {