8164103: C2: Broken cmpxchgb encoding on x86
Reviewed-by: kvn, shade, psandoz
This commit is contained in:
parent
2eab293b99
commit
e3d5b655af
@ -986,7 +986,7 @@ void MachEpilogNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const
|
|||||||
emit_opcode(cbuf, 0x58 | RBP_enc);
|
emit_opcode(cbuf, 0x58 | RBP_enc);
|
||||||
|
|
||||||
if (StackReservedPages > 0 && C->has_reserved_stack_access()) {
|
if (StackReservedPages > 0 && C->has_reserved_stack_access()) {
|
||||||
__ reserved_stack_check();
|
__ reserved_stack_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_polling() && C->is_method_compilation()) {
|
if (do_polling() && C->is_method_compilation()) {
|
||||||
@ -7355,7 +7355,7 @@ instruct compareAndSwapB(rRegI res,
|
|||||||
"movzbl $res, $res" %}
|
"movzbl $res, $res" %}
|
||||||
opcode(0x0F, 0xB0);
|
opcode(0x0F, 0xB0);
|
||||||
ins_encode(lock_prefix,
|
ins_encode(lock_prefix,
|
||||||
REX_reg_mem(newval, mem_ptr),
|
REX_breg_mem(newval, mem_ptr),
|
||||||
OpcP, OpcS,
|
OpcP, OpcS,
|
||||||
reg_mem(newval, mem_ptr),
|
reg_mem(newval, mem_ptr),
|
||||||
REX_breg(res), Opcode(0x0F), Opcode(0x94), reg(res), // sete
|
REX_breg(res), Opcode(0x0F), Opcode(0x94), reg(res), // sete
|
||||||
@ -7380,7 +7380,7 @@ instruct compareAndSwapS(rRegI res,
|
|||||||
opcode(0x0F, 0xB1);
|
opcode(0x0F, 0xB1);
|
||||||
ins_encode(lock_prefix,
|
ins_encode(lock_prefix,
|
||||||
SizePrefix,
|
SizePrefix,
|
||||||
REX_reg_mem(newval, mem_ptr),
|
REX_reg_mem(newval, mem_ptr),
|
||||||
OpcP, OpcS,
|
OpcP, OpcS,
|
||||||
reg_mem(newval, mem_ptr),
|
reg_mem(newval, mem_ptr),
|
||||||
REX_breg(res), Opcode(0x0F), Opcode(0x94), reg(res), // sete
|
REX_breg(res), Opcode(0x0F), Opcode(0x94), reg(res), // sete
|
||||||
@ -7424,7 +7424,7 @@ instruct compareAndExchangeB(
|
|||||||
"If rax == $mem_ptr then store $newval into $mem_ptr\n\t" %}
|
"If rax == $mem_ptr then store $newval into $mem_ptr\n\t" %}
|
||||||
opcode(0x0F, 0xB0);
|
opcode(0x0F, 0xB0);
|
||||||
ins_encode(lock_prefix,
|
ins_encode(lock_prefix,
|
||||||
REX_reg_mem(newval, mem_ptr),
|
REX_breg_mem(newval, mem_ptr),
|
||||||
OpcP, OpcS,
|
OpcP, OpcS,
|
||||||
reg_mem(newval, mem_ptr) // lock cmpxchg
|
reg_mem(newval, mem_ptr) // lock cmpxchg
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user