src/cpu/sparc/vm/sparc.ad
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6709165 Cdiff src/cpu/sparc/vm/sparc.ad
src/cpu/sparc/vm/sparc.ad
Print this page
*** 6675,6707 ****
enc_iflags_ne_to_boolean(res) );
#endif
ins_pipe( long_memory_op );
%}
! instruct compareAndSwapN_bool_comp(iRegP mem_ptr, iRegN oldval, iRegN newval, iRegI res, o7RegI tmp, flagsReg ccr ) %{
match(Set res (CompareAndSwapN mem_ptr (Binary oldval newval)));
! effect( USE mem_ptr, KILL ccr, KILL tmp);
!
format %{
"MOV $newval,O7\n\t"
"CASA [$mem_ptr],$oldval,O7\t! If $oldval==[$mem_ptr] Then store O7 into [$mem_ptr], set O7=[$mem_ptr] in any case\n\t"
"CMP $oldval,O7\t\t! See if we made progress\n\t"
"MOV 1,$res\n\t"
"MOVne icc,R_G0,$res"
%}
! ins_encode %{
! Register Rmem = reg_to_register_object($mem_ptr$$reg);
! Register Rold = reg_to_register_object($oldval$$reg);
! Register Rnew = reg_to_register_object($newval$$reg);
! Register Rres = reg_to_register_object($res$$reg);
!
! __ cas(Rmem, Rold, Rnew);
! __ cmp( Rold, Rnew );
! __ mov(1, Rres);
! __ movcc( Assembler::notEqual, false, Assembler::icc, G0, Rres );
! %}
!
ins_pipe( long_memory_op );
%}
//---------------------
// Subtraction Instructions
--- 6675,6696 ----
enc_iflags_ne_to_boolean(res) );
#endif
ins_pipe( long_memory_op );
%}
! instruct compareAndSwapN_bool(iRegP mem_ptr, iRegN oldval, iRegN newval, iRegI res, o7RegI tmp1, flagsReg ccr ) %{
match(Set res (CompareAndSwapN mem_ptr (Binary oldval newval)));
! effect( USE mem_ptr, KILL ccr, KILL tmp1);
format %{
"MOV $newval,O7\n\t"
"CASA [$mem_ptr],$oldval,O7\t! If $oldval==[$mem_ptr] Then store O7 into [$mem_ptr], set O7=[$mem_ptr] in any case\n\t"
"CMP $oldval,O7\t\t! See if we made progress\n\t"
"MOV 1,$res\n\t"
"MOVne icc,R_G0,$res"
%}
! ins_encode( enc_casi(mem_ptr, oldval, newval),
! enc_iflags_ne_to_boolean(res) );
ins_pipe( long_memory_op );
%}
//---------------------
// Subtraction Instructions
src/cpu/sparc/vm/sparc.ad
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File