--- old/src/cpu/x86/vm/assembler_x86.hpp 2016-04-12 19:50:19.263635400 -0700 +++ new/src/cpu/x86/vm/assembler_x86.hpp 2016-04-12 19:50:18.988635400 -0700 @@ -1335,6 +1335,7 @@ void kmovbl(KRegister dst, Register src); void kmovbl(Register dst, KRegister src); void kmovwl(KRegister dst, Register src); + void kmovwl(KRegister dst, Address src); void kmovwl(Register dst, KRegister src); void kmovdl(KRegister dst, Register src); void kmovdl(Register dst, KRegister src); @@ -2075,6 +2076,7 @@ : _avx_vector_len(vector_len), _rex_vex_w(rex_vex_w), + _rex_vex_w_reverted(false), _legacy_mode(legacy_mode), _no_reg_mask(no_reg_mask), _uses_vl(uses_vl), @@ -2098,6 +2100,7 @@ private: int _avx_vector_len; bool _rex_vex_w; + bool _rex_vex_w_reverted; bool _legacy_mode; bool _no_reg_mask; bool _uses_vl; @@ -2114,6 +2117,7 @@ // query functions for field accessors int get_vector_len(void) const { return _avx_vector_len; } bool is_rex_vex_w(void) const { return _rex_vex_w; } + bool is_rex_vex_w_reverted(void) { return _rex_vex_w_reverted; } bool is_legacy_mode(void) const { return _legacy_mode; } bool is_no_reg_mask(void) const { return _no_reg_mask; } bool uses_vl(void) const { return _uses_vl; } @@ -2127,6 +2131,12 @@ // Set the vector len manually void set_vector_len(int vector_len) { _avx_vector_len = vector_len; } + // Set revert rex_vex_w for avx encoding + void set_rex_vex_w_reverted(void) { _rex_vex_w_reverted = true; } + + // Set rex_vex_w based on state + void set_rex_vex_w(bool state) { _rex_vex_w = state; } + // Set the instruction to be encoded in AVX mode void set_is_legacy_mode(void) { _legacy_mode = true; }