< prev index next >
src/hotspot/cpu/aarch64/aarch64.ad
Print this page
@@ -2907,19 +2907,21 @@
%}
enc_class aarch64_enc_cmpxchgs(memory mem, iRegINoSp oldval, iRegINoSp newval) %{
MacroAssembler _masm(&cbuf);
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
- __ cmpxchg($mem$$base$$Register, $oldval$$Register, $newval$$Register,
+ __ uxthw(rscratch2, $oldval$$Register);
+ __ cmpxchg($mem$$base$$Register, rscratch2, $newval$$Register,
Assembler::halfword, /*acquire*/ false, /*release*/ true,
/*weak*/ false, noreg);
%}
enc_class aarch64_enc_cmpxchgb(memory mem, iRegINoSp oldval, iRegINoSp newval) %{
MacroAssembler _masm(&cbuf);
guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding");
- __ cmpxchg($mem$$base$$Register, $oldval$$Register, $newval$$Register,
+ __ uxtbw(rscratch2, $oldval$$Register);
+ __ cmpxchg($mem$$base$$Register, rscratch2, $newval$$Register,
Assembler::byte, /*acquire*/ false, /*release*/ true,
/*weak*/ false, noreg);
%}
< prev index next >