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);
|