src/cpu/sparc/vm/sparc.ad

Print this page
rev 2575 : imported patch membar2
rev 2576 : imported patch membar3


6588   opcode(Assembler::stx_op3);
6589   ins_encode(simple_form3_mem_reg( mem, R_G0 ) );
6590   ins_pipe(fstoreD_mem_zero);
6591 %}
6592 
6593 
6594 //----------MemBar Instructions-----------------------------------------------
6595 // Memory barrier flavors
6596 
6597 instruct membar_acquire() %{
6598   match(MemBarAcquire);
6599   ins_cost(4*MEMORY_REF_COST);
6600 
6601   size(0);
6602   format %{ "MEMBAR-acquire" %}
6603   ins_encode( enc_membar_acquire );
6604   ins_pipe(long_memory_op);
6605 %}
6606 
6607 instruct membar_acquire_lock() %{
6608   match(MemBarAcquire);
6609   predicate(Matcher::prior_fast_lock(n));
6610   ins_cost(0);
6611 
6612   size(0);
6613   format %{ "!MEMBAR-acquire (CAS in prior FastLock so empty encoding)" %}
6614   ins_encode( );
6615   ins_pipe(empty);
6616 %}
6617 
6618 instruct membar_release() %{
6619   match(MemBarRelease);
6620   ins_cost(4*MEMORY_REF_COST);
6621 
6622   size(0);
6623   format %{ "MEMBAR-release" %}
6624   ins_encode( enc_membar_release );
6625   ins_pipe(long_memory_op);
6626 %}
6627 
6628 instruct membar_release_lock() %{
6629   match(MemBarRelease);
6630   predicate(Matcher::post_fast_unlock(n));
6631   ins_cost(0);
6632 
6633   size(0);
6634   format %{ "!MEMBAR-release (CAS in succeeding FastUnlock so empty encoding)" %}
6635   ins_encode( );
6636   ins_pipe(empty);
6637 %}
6638 
6639 instruct membar_volatile() %{
6640   match(MemBarVolatile);
6641   ins_cost(4*MEMORY_REF_COST);
6642 
6643   size(4);
6644   format %{ "MEMBAR-volatile" %}
6645   ins_encode( enc_membar_volatile );
6646   ins_pipe(long_memory_op);
6647 %}
6648 
6649 instruct unnecessary_membar_volatile() %{
6650   match(MemBarVolatile);




6588   opcode(Assembler::stx_op3);
6589   ins_encode(simple_form3_mem_reg( mem, R_G0 ) );
6590   ins_pipe(fstoreD_mem_zero);
6591 %}
6592 
6593 
6594 //----------MemBar Instructions-----------------------------------------------
6595 // Memory barrier flavors
6596 
6597 instruct membar_acquire() %{
6598   match(MemBarAcquire);
6599   ins_cost(4*MEMORY_REF_COST);
6600 
6601   size(0);
6602   format %{ "MEMBAR-acquire" %}
6603   ins_encode( enc_membar_acquire );
6604   ins_pipe(long_memory_op);
6605 %}
6606 
6607 instruct membar_acquire_lock() %{
6608   match(MemBarAcquireLock);

6609   ins_cost(0);
6610 
6611   size(0);
6612   format %{ "!MEMBAR-acquire (CAS in prior FastLock so empty encoding)" %}
6613   ins_encode( );
6614   ins_pipe(empty);
6615 %}
6616 
6617 instruct membar_release() %{
6618   match(MemBarRelease);
6619   ins_cost(4*MEMORY_REF_COST);
6620 
6621   size(0);
6622   format %{ "MEMBAR-release" %}
6623   ins_encode( enc_membar_release );
6624   ins_pipe(long_memory_op);
6625 %}
6626 
6627 instruct membar_release_lock() %{
6628   match(MemBarReleaseLock);

6629   ins_cost(0);
6630 
6631   size(0);
6632   format %{ "!MEMBAR-release (CAS in succeeding FastUnlock so empty encoding)" %}
6633   ins_encode( );
6634   ins_pipe(empty);
6635 %}
6636 
6637 instruct membar_volatile() %{
6638   match(MemBarVolatile);
6639   ins_cost(4*MEMORY_REF_COST);
6640 
6641   size(4);
6642   format %{ "MEMBAR-volatile" %}
6643   ins_encode( enc_membar_volatile );
6644   ins_pipe(long_memory_op);
6645 %}
6646 
6647 instruct unnecessary_membar_volatile() %{
6648   match(MemBarVolatile);