1.1 --- a/src/cpu/sparc/vm/sparc.ad Wed Jun 04 14:03:48 2008 -0700 1.2 +++ b/src/cpu/sparc/vm/sparc.ad Wed Jun 04 21:56:27 2008 -0700 1.3 @@ -6677,10 +6677,9 @@ 1.4 ins_pipe( long_memory_op ); 1.5 %} 1.6 1.7 -instruct compareAndSwapN_bool_comp(iRegP mem_ptr, iRegN oldval, iRegN newval, iRegI res, o7RegI tmp, flagsReg ccr ) %{ 1.8 +instruct compareAndSwapN_bool(iRegP mem_ptr, iRegN oldval, iRegN newval, iRegI res, o7RegI tmp1, flagsReg ccr ) %{ 1.9 match(Set res (CompareAndSwapN mem_ptr (Binary oldval newval))); 1.10 - effect( USE mem_ptr, KILL ccr, KILL tmp); 1.11 - 1.12 + effect( USE mem_ptr, KILL ccr, KILL tmp1); 1.13 format %{ 1.14 "MOV $newval,O7\n\t" 1.15 "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" 1.16 @@ -6688,18 +6687,8 @@ 1.17 "MOV 1,$res\n\t" 1.18 "MOVne icc,R_G0,$res" 1.19 %} 1.20 - ins_encode %{ 1.21 - Register Rmem = reg_to_register_object($mem_ptr$$reg); 1.22 - Register Rold = reg_to_register_object($oldval$$reg); 1.23 - Register Rnew = reg_to_register_object($newval$$reg); 1.24 - Register Rres = reg_to_register_object($res$$reg); 1.25 - 1.26 - __ cas(Rmem, Rold, Rnew); 1.27 - __ cmp( Rold, Rnew ); 1.28 - __ mov(1, Rres); 1.29 - __ movcc( Assembler::notEqual, false, Assembler::icc, G0, Rres ); 1.30 - %} 1.31 - 1.32 + ins_encode( enc_casi(mem_ptr, oldval, newval), 1.33 + enc_iflags_ne_to_boolean(res) ); 1.34 ins_pipe( long_memory_op ); 1.35 %} 1.36