< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page

        

*** 2907,2925 **** %} 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, 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, Assembler::byte, /*acquire*/ false, /*release*/ true, /*weak*/ false, noreg); %} --- 2907,2927 ---- %} enc_class aarch64_enc_cmpxchgs(memory mem, iRegINoSp oldval, iRegINoSp newval) %{ MacroAssembler _masm(&cbuf); guarantee($mem$$index == -1 && $mem$$disp == 0, "impossible encoding"); ! __ 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"); ! __ uxtbw(rscratch2, $oldval$$Register); ! __ cmpxchg($mem$$base$$Register, rscratch2, $newval$$Register, Assembler::byte, /*acquire*/ false, /*release*/ true, /*weak*/ false, noreg); %}
< prev index next >