[aarch64-port-dev ] New instruction costs

Andrew Haley aph at redhat.com
Wed Apr 9 13:41:37 UTC 2014


These are based on the Cortex-A57 costs in GCC and a little bit of
guesswork.  It doesn't make very much difference to the generated
code, but it's better than using PowerPC costs.

Andrew.
-------------- next part --------------
# HG changeset patch
# User aph
# Date 1396965510 -3600
#      Tue Apr 08 14:58:30 2014 +0100
# Node ID a16c651450e4b0822cfabb248e19f3b371582fce
# Parent  5a8c184c37d4fc7d6c91b9c79401bd7d8242f4e8
New cost model for instruction selection.

diff -r 5a8c184c37d4 -r a16c651450e4 src/cpu/aarch64/vm/aarch64.ad
--- a/src/cpu/aarch64/vm/aarch64.ad	Thu Apr 03 22:51:42 2014 +0100
+++ b/src/cpu/aarch64/vm/aarch64.ad	Tue Apr 08 14:58:30 2014 +0100
@@ -703,18 +703,11 @@
 // something
 
 definitions %{
-  // The default cost (of an ALU instruction).
-  int_def DEFAULT_COST_LOW        (     30,      30);
-  int_def DEFAULT_COST            (    100,     100);
-  int_def HUGE_COST               (1000000, 1000000);
-
-  // Memory refs
-  int_def MEMORY_REF_COST_LOW     (    200, DEFAULT_COST * 2);
-  int_def MEMORY_REF_COST         (    300, DEFAULT_COST * 3);
-
-  // Branches are even more expensive.
-  int_def BRANCH_COST             (    900, DEFAULT_COST * 9);
-  int_def CALL_COST               (   1300, DEFAULT_COST * 13);
+  // The default cost (of a register move instruction).
+  int_def INSN_COST            (    100,     100);
+  int_def BRANCH_COST          (    200,     2 * INSN_COST);
+  int_def CALL_COST            (    200,     2 * INSN_COST);
+  int_def VOLATILE_REF_COST    (   1000,     10 * INSN_COST);
 %}
 
 
@@ -3301,7 +3294,7 @@
 op_attrib op_cost(1);        // Required cost attribute
 
 //----------Instruction Attributes---------------------------------------------
-ins_attrib ins_cost(DEFAULT_COST); // Required cost attribute
+ins_attrib ins_cost(INSN_COST); // Required cost attribute
 ins_attrib ins_size(32);        // Required size attribute (in bits)
 ins_attrib ins_short_branch(0); // Required flag: is this instruction
                                 // a non-matching short branch variant
@@ -3327,26 +3320,15 @@
 %{
   match(ConI);
 
-  op_cost(10);
-  format %{ %}
-  interface(CONST_INTER);
-%}
-
-// 32 bit zero
-operand immI0()
-%{
-  predicate(n->get_int() == 0);
-  match(ConI);
-
   op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
 
-// 32 bit unit increment
-operand immI_1()
-%{
-  predicate(n->get_int() == 1);
+// 32 bit zero
+operand immI0()
+%{
+  predicate(n->get_int() == 0);
   match(ConI);
 
   op_cost(0);
@@ -3354,10 +3336,10 @@
   interface(CONST_INTER);
 %}
 
-// 32 bit unit decrement
-operand immI_M1()
-%{
-  predicate(n->get_int() == -1);
+// 32 bit unit increment
+operand immI_1()
+%{
+  predicate(n->get_int() == 1);
   match(ConI);
 
   op_cost(0);
@@ -3365,9 +3347,10 @@
   interface(CONST_INTER);
 %}
 
-operand immI_8()
-%{
-  predicate(n->get_int() == 8);
+// 32 bit unit decrement
+operand immI_M1()
+%{
+  predicate(n->get_int() == -1);
   match(ConI);
 
   op_cost(0);
@@ -3375,9 +3358,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_16()
-%{
-  predicate(n->get_int() == 16);
+operand immI_8()
+%{
+  predicate(n->get_int() == 8);
   match(ConI);
 
   op_cost(0);
@@ -3385,9 +3368,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_24()
-%{
-  predicate(n->get_int() == 24);
+operand immI_16()
+%{
+  predicate(n->get_int() == 16);
   match(ConI);
 
   op_cost(0);
@@ -3395,9 +3378,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_32()
-%{
-  predicate(n->get_int() == 32);
+operand immI_24()
+%{
+  predicate(n->get_int() == 24);
   match(ConI);
 
   op_cost(0);
@@ -3405,9 +3388,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_48()
-%{
-  predicate(n->get_int() == 48);
+operand immI_32()
+%{
+  predicate(n->get_int() == 32);
   match(ConI);
 
   op_cost(0);
@@ -3415,9 +3398,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_56()
-%{
-  predicate(n->get_int() == 56);
+operand immI_48()
+%{
+  predicate(n->get_int() == 48);
   match(ConI);
 
   op_cost(0);
@@ -3425,9 +3408,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_64()
-%{
-  predicate(n->get_int() == 64);
+operand immI_56()
+%{
+  predicate(n->get_int() == 56);
   match(ConI);
 
   op_cost(0);
@@ -3435,9 +3418,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_255()
-%{
-  predicate(n->get_int() == 255);
+operand immI_64()
+%{
+  predicate(n->get_int() == 64);
   match(ConI);
 
   op_cost(0);
@@ -3445,9 +3428,9 @@
   interface(CONST_INTER);
 %}
 
-operand immI_65535()
-%{
-  predicate(n->get_int() == 65535);
+operand immI_255()
+%{
+  predicate(n->get_int() == 255);
   match(ConI);
 
   op_cost(0);
@@ -3455,9 +3438,9 @@
   interface(CONST_INTER);
 %}
 
-operand immL_255()
-%{
-  predicate(n->get_int() == 255);
+operand immI_65535()
+%{
+  predicate(n->get_int() == 65535);
   match(ConI);
 
   op_cost(0);
@@ -3465,19 +3448,19 @@
   interface(CONST_INTER);
 %}
 
-operand immL_65535()
-%{
-  predicate(n->get_long() == 65535L);
-  match(ConL);
+operand immL_255()
+%{
+  predicate(n->get_int() == 255);
+  match(ConI);
 
   op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
 
-operand immL_4294967295()
-%{
-  predicate(n->get_long() == 4294967295L);
+operand immL_65535()
+%{
+  predicate(n->get_long() == 65535L);
   match(ConL);
 
   op_cost(0);
@@ -3485,6 +3468,16 @@
   interface(CONST_INTER);
 %}
 
+operand immL_4294967295()
+%{
+  predicate(n->get_long() == 4294967295L);
+  match(ConL);
+
+  op_cost(0);
+  format %{ %}
+  interface(CONST_INTER);
+%}
+
 operand immL_bitmask()
 %{
   predicate(((n->get_long() & 0xc000000000000000l) == 0)
@@ -3513,6 +3506,7 @@
   predicate(0 <= n->get_int() && (n->get_int() <= 3));
   match(ConI);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3523,6 +3517,7 @@
   predicate(((-(1 << 25)) <= n->get_int()) && (n->get_int() < (1 << 25)));
   match(ConI);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3533,6 +3528,7 @@
   predicate(((-(1 << 18)) <= n->get_int()) && (n->get_int() < (1 << 18)));
   match(ConI);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3543,6 +3539,7 @@
   predicate((0 <= n->get_int()) && (n->get_int() < (1 << 12)));
   match(ConI);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3552,6 +3549,7 @@
   predicate((0 <= n->get_long()) && (n->get_long() < (1 << 12)));
   match(ConL);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3562,6 +3560,7 @@
   predicate(Address::offset_ok_for_immed(n->get_int()));
   match(ConI);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3571,6 +3570,7 @@
   predicate(Address::offset_ok_for_immed(n->get_long()));
   match(ConL);
 
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3591,6 +3591,7 @@
 %{
   predicate(Assembler::operand_valid_for_logical_immediate(/*is32*/true, (unsigned long)n->get_int()));
   match(ConI);
+
   op_cost(0);
   format %{ %}
   interface(CONST_INTER);
@@ -3602,7 +3603,7 @@
 %{
   match(ConL);
 
-  op_cost(20);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3689,7 +3690,7 @@
 %{
   match(ConP);
 
-  op_cost(10);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3700,7 +3701,7 @@
   predicate(n->get_ptr() == 0);
   match(ConP);
 
-  op_cost(5);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3712,7 +3713,7 @@
   predicate(n->get_ptr() == 1);
   match(ConP);
 
-  op_cost(5);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3724,7 +3725,7 @@
   predicate(n->get_ptr() == -1);
   match(ConP);
 
-  op_cost(5);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3736,7 +3737,7 @@
   predicate(n->get_ptr() == -2);
   match(ConP);
 
-  op_cost(5);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3746,7 +3747,7 @@
 operand immD()
 %{
   match(ConD);
-  op_cost(40);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3776,7 +3777,7 @@
 operand immF()
 %{
   match(ConF);
-  op_cost(40);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3808,7 +3809,7 @@
 %{
   match(ConN);
 
-  op_cost(10);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3819,7 +3820,7 @@
   predicate(n->get_narrowcon() == 0);
   match(ConN);
 
-  op_cost(5);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3828,7 +3829,7 @@
 %{
   match(ConNKlass);
 
-  op_cost(10);
+  op_cost(0);
   format %{ %}
   interface(CONST_INTER);
 %}
@@ -3840,6 +3841,7 @@
   constraint(ALLOC_IN_RC(any_reg32));
   match(RegI);
   match(iRegINoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3849,6 +3851,7 @@
 %{
   constraint(ALLOC_IN_RC(no_special_reg32));
   match(RegI);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3860,6 +3863,7 @@
   constraint(ALLOC_IN_RC(any_reg));
   match(RegL);
   match(iRegLNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3885,6 +3889,7 @@
   //match(iRegP_R4);
   //match(iRegP_R5);
   match(thread_RegP);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3900,6 +3905,7 @@
   // match(iRegP_R4);
   // match(iRegP_R5);
   // match(thread_RegP);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3911,6 +3917,7 @@
   match(RegP);
   // match(iRegP);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3922,6 +3929,7 @@
   match(RegP);
   // match(iRegP);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3933,6 +3941,7 @@
   match(RegP);
   // match(iRegP);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3944,6 +3953,7 @@
   match(RegP);
   // match(iRegP);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3955,6 +3965,7 @@
   match(RegP);
   // match(iRegP);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3965,6 +3976,7 @@
   constraint(ALLOC_IN_RC(r11_reg));
   match(RegL);
   match(iRegLNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3975,6 +3987,7 @@
   constraint(ALLOC_IN_RC(fp_reg));
   match(RegP);
   // match(iRegP);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3985,6 +3998,7 @@
   constraint(ALLOC_IN_RC(r0_reg));
   match(RegI);
   match(iRegINoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -3996,6 +4010,7 @@
   constraint(ALLOC_IN_RC(any_reg32));
   match(RegN);
   match(iRegNNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4005,6 +4020,7 @@
 %{
   constraint(ALLOC_IN_RC(no_special_reg32));
   match(RegN);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4015,6 +4031,7 @@
 %{
   constraint(ALLOC_IN_RC(heapbase_reg));
   match(RegI);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4026,6 +4043,7 @@
   constraint(ALLOC_IN_RC(float_reg));
   match(RegF);
 
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4037,6 +4055,7 @@
   constraint(ALLOC_IN_RC(double_reg));
   match(RegD);
 
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4065,6 +4084,7 @@
   constraint(ALLOC_IN_RC(int_flags));
   match(RegFlags);
 
+  op_cost(0);
   format %{ "RFLAGS" %}
   interface(REG_INTER);
 %}
@@ -4075,6 +4095,7 @@
   constraint(ALLOC_IN_RC(int_flags));
   match(RegFlags);
 
+  op_cost(0);
   format %{ "RFLAGSU" %}
   interface(REG_INTER);
 %}
@@ -4087,6 +4108,7 @@
   constraint(ALLOC_IN_RC(method_reg)); // inline_cache_reg
   match(reg);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4096,6 +4118,7 @@
   constraint(ALLOC_IN_RC(method_reg)); // interpreter_method_oop_reg
   match(reg);
   match(iRegPNoSp);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4105,6 +4128,7 @@
 %{
   constraint(ALLOC_IN_RC(thread_reg)); // link_reg
   match(reg);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4113,6 +4137,7 @@
 %{
   constraint(ALLOC_IN_RC(lr_reg)); // link_reg
   match(reg);
+  op_cost(0);
   format %{ %}
   interface(REG_INTER);
 %}
@@ -4137,7 +4162,7 @@
 %{
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP (AddP reg (LShiftL lreg scale)) off);
-  op_cost(DEFAULT_COST);
+  op_cost(INSN_COST);
   format %{ "$reg, $lreg lsl($scale), $off" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4151,7 +4176,7 @@
 %{
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP (AddP reg (LShiftL lreg scale)) off);
-  op_cost(DEFAULT_COST);
+  op_cost(INSN_COST);
   format %{ "$reg, $lreg lsl($scale), $off" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4165,7 +4190,7 @@
 %{
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP (AddP reg (LShiftL (ConvI2L ireg) scale)) off);
-  op_cost(DEFAULT_COST);
+  op_cost(INSN_COST);
   format %{ "$reg, $ireg sxtw($scale), $off I2L" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4221,7 +4246,7 @@
 %{
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP reg off);
-  op_cost(0);
+  op_cost(INSN_COST);
   format %{ "[$reg, $off]" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4266,7 +4291,7 @@
   predicate(Universe::narrow_oop_shift() == 0);
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP (AddP (DecodeN reg) (LShiftL lreg scale)) off);
-  op_cost(DEFAULT_COST);
+  op_cost(0);
   format %{ "$reg, $lreg lsl($scale), $off\t# narrow" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4281,7 +4306,7 @@
   predicate(Universe::narrow_oop_shift() == 0);
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP (AddP (DecodeN reg) (LShiftL lreg scale)) off);
-  op_cost(DEFAULT_COST);
+  op_cost(INSN_COST);
   format %{ "$reg, $lreg lsl($scale), $off\t# narrow" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4296,7 +4321,7 @@
   predicate(Universe::narrow_oop_shift() == 0);
   constraint(ALLOC_IN_RC(ptr_reg));
   match(AddP (AddP (DecodeN reg) (LShiftL (ConvI2L ireg) scale)) off);
-  op_cost(DEFAULT_COST);
+  op_cost(INSN_COST);
   format %{ "$reg, $ireg sxtw($scale), $off I2L\t# narrow" %}
   interface(MEMORY_INTER) %{
     base($reg);
@@ -4695,7 +4720,7 @@
   match(Set dst (LoadB mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrsbw  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldrsbw(dst, mem));
@@ -4709,7 +4734,7 @@
   match(Set dst (ConvI2L (LoadB mem)));
   predicate(!treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrsb  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldrsb(dst, mem));
@@ -4723,7 +4748,7 @@
   match(Set dst (LoadUB mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrbw  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldrb(dst, mem));
@@ -4737,7 +4762,7 @@
   match(Set dst (ConvI2L (LoadUB mem)));
   predicate(!treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrb  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldrb(dst, mem));
@@ -4751,7 +4776,7 @@
   match(Set dst (LoadS mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrshw  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldrshw(dst, mem));
@@ -4765,7 +4790,7 @@
   match(Set dst (ConvI2L (LoadS mem)));
   predicate(!treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrsh  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldrsh(dst, mem));
@@ -4779,7 +4804,7 @@
   match(Set dst (LoadUS mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrh  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldrh(dst, mem));
@@ -4793,7 +4818,7 @@
   match(Set dst (ConvI2L (LoadUS mem)));
   predicate(!treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrh  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldrh(dst, mem));
@@ -4807,7 +4832,7 @@
   match(Set dst (LoadI mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrw  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldrw(dst, mem));
@@ -4821,7 +4846,7 @@
   match(Set dst (ConvI2L (LoadI mem)));
   predicate(!treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrsw  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldrsw(dst, mem));
@@ -4835,7 +4860,7 @@
   match(Set dst (AndL (ConvI2L (LoadI mem)) mask));
   predicate(!treat_as_volatile(((MemNode*)(n->in(1))->in(1))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrw  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldrw(dst, mem));
@@ -4849,7 +4874,7 @@
   match(Set dst (LoadL mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldr  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldr(dst, mem));
@@ -4862,7 +4887,7 @@
 %{
   match(Set dst (LoadRange mem));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrw  $dst, $mem\t# range" %}
 
   ins_encode(aarch64_enc_ldrw(dst, mem));
@@ -4876,7 +4901,7 @@
   match(Set dst (LoadP mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldr  $dst, $mem\t# ptr" %}
 
   ins_encode(aarch64_enc_ldr(dst, mem));
@@ -4890,7 +4915,7 @@
   match(Set dst (LoadN mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrw  $dst, $mem\t# compressed ptr" %}
 
   ins_encode(aarch64_enc_ldrw(dst, mem));
@@ -4904,7 +4929,7 @@
   match(Set dst (LoadKlass mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldr  $dst, $mem\t# class" %}
 
   ins_encode(aarch64_enc_ldr(dst, mem));
@@ -4918,7 +4943,7 @@
   match(Set dst (LoadNKlass mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrw  $dst, $mem\t# compressed class ptr" %}
 
   ins_encode(aarch64_enc_ldrw(dst, mem));
@@ -4932,7 +4957,7 @@
   match(Set dst (LoadF mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrs  $dst, $mem\t# float" %}
 
   ins_encode( aarch64_enc_ldrs(dst, mem) );
@@ -4946,7 +4971,7 @@
   match(Set dst (LoadD mem));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ldrd  $dst, $mem\t# double" %}
 
   ins_encode( aarch64_enc_ldrd(dst, mem) );
@@ -4960,7 +4985,7 @@
 %{
   match(Set dst src);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "mov $dst, $src\t# int" %}
 
   ins_encode( aarch64_enc_movw_imm(dst, src) );
@@ -4973,7 +4998,7 @@
 %{
   match(Set dst src);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "mov $dst, $src\t# long" %}
 
   ins_encode( aarch64_enc_mov_imm(dst, src) );
@@ -4987,7 +5012,7 @@
 %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 4);
   format %{
     "mov  $dst, $con\t# ptr\n\t"
   %}
@@ -5003,7 +5028,7 @@
 %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST_LOW);
+  ins_cost(INSN_COST);
   format %{ "mov  $dst, $con\t# NULL ptr" %}
 
   ins_encode(aarch64_enc_mov_p0(dst, con));
@@ -5017,7 +5042,7 @@
 %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST_LOW);
+  ins_cost(INSN_COST);
   format %{ "mov  $dst, $con\t# NULL ptr" %}
 
   ins_encode(aarch64_enc_mov_p1(dst, con));
@@ -5031,7 +5056,7 @@
 %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 4);
   format %{ "mov  $dst, $con\t# compressed ptr" %}
 
   ins_encode(aarch64_enc_mov_n(dst, con));
@@ -5045,7 +5070,7 @@
 %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST_LOW);
+  ins_cost(INSN_COST);
   format %{ "mov  $dst, $con\t# compressed NULL ptr" %}
 
   ins_encode(aarch64_enc_mov_n0(dst, con));
@@ -5059,7 +5084,7 @@
 %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "mov  $dst, $con\t# compressed klass ptr" %}
 
   ins_encode(aarch64_enc_mov_nk(dst, con));
@@ -5071,7 +5096,7 @@
 
 instruct loadConF_packed(vRegF dst, immFPacked con) %{
   match(Set dst con);
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 4);
   format %{ "fmovs  $dst, $con"%}
   ins_encode %{
     __ fmovs(as_FloatRegister($dst$$reg), (double)$con$$constant);
@@ -5085,7 +5110,7 @@
 instruct loadConF(vRegF dst, immF con) %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST * 2);
+  ins_cost(INSN_COST * 4);
 
   format %{
     "ldrs $dst, [$constantaddress]\t# load from constant table: float=$con\n\t"
@@ -5102,7 +5127,7 @@
 
 instruct loadConD_packed(vRegD dst, immDPacked con) %{
   match(Set dst con);
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "fmovd  $dst, $con"%}
   ins_encode %{
     __ fmovd(as_FloatRegister($dst$$reg), $con$$constant);
@@ -5116,7 +5141,7 @@
 instruct loadConD(vRegD dst, immD con) %{
   match(Set dst con);
 
-  ins_cost(DEFAULT_COST * 2);
+  ins_cost(INSN_COST * 5);
   format %{
     "ldrd $dst, [$constantaddress]\t# load from constant table: float=$con\n\t"
   %}
@@ -5135,7 +5160,7 @@
 %{
   match(Set mem (StoreCM mem zero));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strb zr, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_strb0(mem));
@@ -5149,7 +5174,7 @@
   match(Set mem (StoreB mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strb  $src, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_strb(src, mem));
@@ -5163,7 +5188,7 @@
   match(Set mem (StoreB mem zero));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strb zr, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_strb0(mem));
@@ -5177,7 +5202,7 @@
   match(Set mem (StoreC mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strh  $src, $mem\t# short" %}
 
   ins_encode(aarch64_enc_strh(src, mem));
@@ -5190,7 +5215,7 @@
   match(Set mem (StoreC mem zero));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strh  zr, $mem\t# short" %}
 
   ins_encode(aarch64_enc_strh0(mem));
@@ -5205,7 +5230,7 @@
   match(Set mem(StoreI mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strw  $src, $mem\t# int" %}
 
   ins_encode(aarch64_enc_strw(src, mem));
@@ -5218,7 +5243,7 @@
   match(Set mem(StoreI mem zero));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strw  zr, $mem\t# int" %}
 
   ins_encode(aarch64_enc_strw0(mem));
@@ -5232,7 +5257,7 @@
   match(Set mem (StoreL mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "str  $src, $mem\t# int" %}
 
   ins_encode(aarch64_enc_str(src, mem));
@@ -5246,7 +5271,7 @@
   match(Set mem (StoreL mem zero));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "str  zr, $mem\t# int" %}
 
   ins_encode(aarch64_enc_str0(mem));
@@ -5260,7 +5285,7 @@
   match(Set mem (StoreP mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "str  $src, $mem\t# ptr" %}
 
   ins_encode(aarch64_enc_str(src, mem));
@@ -5274,7 +5299,7 @@
   match(Set mem (StoreP mem zero));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "str zr, $mem\t# ptr" %}
 
   ins_encode(aarch64_enc_str0(mem));
@@ -5301,7 +5326,7 @@
 %{
   match(Set mem (StoreP mem dummy_m1));
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
   format %{ "str  ., $mem\t# save pc to thread (no ret addr)" %}
 
   // use opcode to indicate that we have no return address argument
@@ -5316,7 +5341,7 @@
 %{
   match(Set mem (StoreP mem dummy_m2));
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
   format %{ "str  ., $mem\t# save pc to thread (w ret addr)" %}
 
   // use opcode to indicate that we have a return address argument
@@ -5333,7 +5358,7 @@
   match(Set mem (StoreN mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strw  $src, $mem\t# compressed ptr" %}
 
   ins_encode(aarch64_enc_strw(src, mem));
@@ -5348,7 +5373,7 @@
             Universe::narrow_klass_base() == NULL &&
             !((MemNode*)n)->is_volatile());
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
   format %{ "strw  rheapbase, $mem\t# compressed ptr (rheapbase==0)" %}
 
   ins_encode(aarch64_enc_strw(heapbase, mem));
@@ -5362,7 +5387,7 @@
   match(Set mem (StoreF mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strs  $src, $mem\t# float" %}
 
   ins_encode( aarch64_enc_strs(src, mem) );
@@ -5379,7 +5404,7 @@
   match(Set mem (StoreD mem src));
   predicate(!treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strd  $src, $mem\t# double" %}
 
   ins_encode( aarch64_enc_strd(src, mem) );
@@ -5392,7 +5417,7 @@
 %{
   match(Set mem (StoreNKlass mem src));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(INSN_COST);
   format %{ "strw  $src, $mem\t# compressed klass ptr" %}
 
   ins_encode(aarch64_enc_strw(src, mem));
@@ -5409,6 +5434,7 @@
 instruct prefetchr( memory mem ) %{
   match(PrefetchRead mem);
 
+  ins_cost(INSN_COST);
   format %{ "prfm $mem, PLDL1KEEP\t# Prefetch into level 1 cache read keep" %}
 
   ins_encode( aarch64_enc_prefetchr(mem) );
@@ -5419,6 +5445,7 @@
 instruct prefetchw( memory mem ) %{
   match(PrefetchAllocation mem);
 
+  ins_cost(INSN_COST);
   format %{ "prfm $mem, PSTL1KEEP\t# Prefetch into level 1 cache write keep" %}
 
   ins_encode( aarch64_enc_prefetchw(mem) );
@@ -5429,6 +5456,7 @@
 instruct prefetchnta( memory mem ) %{
   match(PrefetchWrite mem);
 
+  ins_cost(INSN_COST);
   format %{ "prfm $mem, PSTL1STRM\t# Prefetch into level 1 cache write streaming" %}
 
   ins_encode( aarch64_enc_prefetchnta(mem) );
@@ -5444,7 +5472,7 @@
   match(Set dst (LoadB mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarsb  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldarsb(dst, mem));
@@ -5458,7 +5486,7 @@
   match(Set dst (ConvI2L (LoadB mem)));
   predicate(treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarsb  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldarsb(dst, mem));
@@ -5472,7 +5500,7 @@
   match(Set dst (LoadUB mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarb  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldarb(dst, mem));
@@ -5486,7 +5514,7 @@
   match(Set dst (ConvI2L (LoadUB mem)));
   predicate(treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarb  $dst, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_ldarb(dst, mem));
@@ -5500,7 +5528,7 @@
   match(Set dst (LoadS mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarshw  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldarshw(dst, mem));
@@ -5513,7 +5541,7 @@
   match(Set dst (LoadUS mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarhw  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldarhw(dst, mem));
@@ -5527,7 +5555,7 @@
   match(Set dst (ConvI2L (LoadUS mem)));
   predicate(treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarh  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldarh(dst, mem));
@@ -5541,7 +5569,7 @@
   match(Set dst (ConvI2L (LoadS mem)));
   predicate(treat_as_volatile(((MemNode*)(n->in(1)))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarh  $dst, $mem\t# short" %}
 
   ins_encode(aarch64_enc_ldarsh(dst, mem));
@@ -5555,7 +5583,7 @@
   match(Set dst (LoadI mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarw  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldarw(dst, mem));
@@ -5569,7 +5597,7 @@
   match(Set dst (AndL (ConvI2L (LoadI mem)) mask));
   predicate(treat_as_volatile(((MemNode*)(n->in(1))->in(1))));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarw  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldarw(dst, mem));
@@ -5583,7 +5611,7 @@
   match(Set dst (LoadL mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldar  $dst, $mem\t# int" %}
 
   ins_encode(aarch64_enc_ldar(dst, mem));
@@ -5597,7 +5625,7 @@
   match(Set dst (LoadP mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldar  $dst, $mem\t# ptr" %}
 
   ins_encode(aarch64_enc_ldar(dst, mem));
@@ -5611,7 +5639,7 @@
   match(Set dst (LoadN mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldarw  $dst, $mem\t# compressed ptr" %}
 
   ins_encode(aarch64_enc_ldarw(dst, mem));
@@ -5625,7 +5653,7 @@
   match(Set dst (LoadF mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldars  $dst, $mem\t# float" %}
 
   ins_encode( aarch64_enc_fldars(dst, mem) );
@@ -5639,7 +5667,7 @@
   match(Set dst (LoadD mem));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "ldard  $dst, $mem\t# double" %}
 
   ins_encode( aarch64_enc_fldard(dst, mem) );
@@ -5653,7 +5681,7 @@
   match(Set mem (StoreB mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlrb  $src, $mem\t# byte" %}
 
   ins_encode(aarch64_enc_stlrb(src, mem));
@@ -5667,7 +5695,7 @@
   match(Set mem (StoreC mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlrh  $src, $mem\t# short" %}
 
   ins_encode(aarch64_enc_stlrh(src, mem));
@@ -5682,7 +5710,7 @@
   match(Set mem(StoreI mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlrw  $src, $mem\t# int" %}
 
   ins_encode(aarch64_enc_stlrw(src, mem));
@@ -5696,7 +5724,7 @@
   match(Set mem (StoreL mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlr  $src, $mem\t# int" %}
 
   ins_encode(aarch64_enc_stlr(src, mem));
@@ -5710,7 +5738,7 @@
   match(Set mem (StoreP mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlr  $src, $mem\t# ptr" %}
 
   ins_encode(aarch64_enc_stlr(src, mem));
@@ -5724,7 +5752,7 @@
   match(Set mem (StoreN mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlrw  $src, $mem\t# compressed ptr" %}
 
   ins_encode(aarch64_enc_stlrw(src, mem));
@@ -5738,7 +5766,7 @@
   match(Set mem (StoreF mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlrs  $src, $mem\t# float" %}
 
   ins_encode( aarch64_enc_fstlrs(src, mem) );
@@ -5755,7 +5783,7 @@
   match(Set mem (StoreD mem src));
   predicate(treat_as_volatile(((MemNode*)n)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
   format %{ "stlrd  $src, $mem\t# double" %}
 
   ins_encode( aarch64_enc_fstlrd(src, mem) );
@@ -5771,7 +5799,7 @@
 instruct bytes_reverse_int(iRegINoSp dst) %{
   match(Set dst (ReverseBytesI dst));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "revw  $dst, $dst" %}
 
   ins_encode %{
@@ -5784,7 +5812,7 @@
 instruct bytes_reverse_long(iRegLNoSp dst) %{
   match(Set dst (ReverseBytesL dst));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "rev  $dst, $dst" %}
 
   ins_encode %{
@@ -5797,7 +5825,7 @@
 instruct bytes_reverse_unsigned_short(iRegINoSp dst) %{
   match(Set dst (ReverseBytesUS dst));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "rev16w  $dst, $dst" %}
 
   ins_encode %{
@@ -5810,7 +5838,7 @@
 instruct bytes_reverse_short(iRegINoSp dst) %{
   match(Set dst (ReverseBytesS dst));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "rev16w  $dst, $dst\n\t"
             "sbfmw $dst, $dst, #0, #15" %}
 
@@ -5828,7 +5856,7 @@
 instruct membar_acquire()
 %{
   match(MemBarAcquire);
-  ins_cost(4*MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   format %{ "MEMBAR-acquire\t# ???" %}
 
@@ -5845,7 +5873,7 @@
 instruct membar_release()
 %{
   match(MemBarRelease);
-  ins_cost(4*MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   format %{ "MEMBAR-release" %}
   ins_encode %{
@@ -5859,7 +5887,7 @@
 
 instruct membar_volatile() %{
   match(MemBarVolatile);
-  ins_cost(4*MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   format %{ "MEMBAR-volatile?" %}
 
@@ -5883,7 +5911,7 @@
 
 instruct membar_storestore() %{
   match(MemBarStoreStore);
-  ins_cost(4*MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   ins_encode %{
     __ membar(Assembler::StoreStore);
@@ -5899,7 +5927,7 @@
 
   ins_encode %{
     __ block_comment("membar-acquire-lock");
-    __ membar(Assembler::Membar_mask_bits(Assembler::LoadLoad|Assembler::LoadStore));
+    // __ membar(Assembler::Membar_mask_bits(Assembler::LoadLoad|Assembler::LoadStore));
   %}
 
   ins_pipe(pipe_class_memory);
@@ -5912,7 +5940,7 @@
 
   ins_encode %{
     __ block_comment("MEMBAR-release-lock");
-    __ membar(Assembler::AnyAny);
+    // __ membar(Assembler::AnyAny);
   %}
 
   ins_pipe(pipe_class_memory);
@@ -5924,7 +5952,7 @@
 instruct castX2P(iRegPNoSp dst, iRegL src) %{
   match(Set dst (CastX2P src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "mov $dst, $src\t# long -> ptr" %}
 
   ins_encode %{
@@ -5939,7 +5967,7 @@
 instruct castP2X(iRegLNoSp dst, iRegP src) %{
   match(Set dst (CastP2X src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "mov $dst, $src\t# ptr -> long" %}
 
   ins_encode %{
@@ -5955,7 +5983,7 @@
 instruct convP2I(iRegINoSp dst, iRegP src) %{
   match(Set dst (ConvL2I (CastP2X src)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "movw $dst, $src\t# ptr -> int" %}
   ins_encode %{
     __ movw($dst$$Register, $src$$Register);
@@ -5971,7 +5999,7 @@
   predicate(Universe::narrow_oop_shift() == 0);
   match(Set dst (ConvL2I (CastP2X (DecodeN src))));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "mov dst, $src\t# compressed ptr -> int" %}
   ins_encode %{
     __ movw($dst$$Register, $src$$Register);
@@ -5986,7 +6014,7 @@
   predicate(n->bottom_type()->make_ptr()->ptr() != TypePtr::NotNull);
   match(Set dst (EncodeP src));
   effect(KILL cr);
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(INSN_COST * 3);
   format %{ "encode_heap_oop $dst, $src" %}
   ins_encode %{
     Register s = $src$$Register;
@@ -5999,7 +6027,7 @@
 instruct encodeHeapOop_not_null(iRegNNoSp dst, iRegP src, rFlagsReg cr) %{
   predicate(n->bottom_type()->make_ptr()->ptr() == TypePtr::NotNull);
   match(Set dst (EncodeP src));
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(INSN_COST * 3);
   format %{ "encode_heap_oop_not_null $dst, $src" %}
   ins_encode %{
     __ encode_heap_oop_not_null($dst$$Register, $src$$Register);
@@ -6011,7 +6039,7 @@
   predicate(n->bottom_type()->is_ptr()->ptr() != TypePtr::NotNull &&
             n->bottom_type()->is_ptr()->ptr() != TypePtr::Constant);
   match(Set dst (DecodeN src));
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(INSN_COST * 3);
   format %{ "decode_heap_oop $dst, $src" %}
   ins_encode %{
     Register s = $src$$Register;
@@ -6025,7 +6053,7 @@
   predicate(n->bottom_type()->is_ptr()->ptr() == TypePtr::NotNull ||
             n->bottom_type()->is_ptr()->ptr() == TypePtr::Constant);
   match(Set dst (DecodeN src));
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(INSN_COST * 3);
   format %{ "decode_heap_oop_not_null $dst, $src" %}
   ins_encode %{
     Register s = $src$$Register;
@@ -6042,7 +6070,7 @@
 instruct encodeKlass_not_null(iRegNNoSp dst, iRegP src) %{
   match(Set dst (EncodePKlass src));
 
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(INSN_COST * 3);
   format %{ "encode_klass_not_null $dst,$src" %}
 
   ins_encode %{
@@ -6057,7 +6085,7 @@
 instruct decodeKlass_not_null(iRegPNoSp dst, iRegN src) %{
   match(Set dst (DecodeNKlass src));
 
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(INSN_COST * 3);
   format %{ "decode_klass_not_null $dst,$src" %}
 
   ins_encode %{
@@ -6141,7 +6169,7 @@
 %{
   match(Set dst (LoadPLocked mem));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   format %{ "ldaxr $dst, $mem\t# ptr linked acquire" %}
 
@@ -6159,7 +6187,7 @@
 %{
   match(Set cr (StorePConditional heap_top_ptr (Binary oldval newval)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
  // TODO
  // do we need to do a store-conditional release or can we just use a
@@ -6180,7 +6208,7 @@
 %{
   match(Set cr (StoreLConditional mem (Binary oldval newval)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   format %{
     "cmpxchg rscratch1, $mem, $oldval, $newval, $mem\t# if $mem == $oldval then $mem <-- $newval"
@@ -6197,7 +6225,7 @@
 %{
   match(Set cr (StoreIConditional mem (Binary oldval newval)));
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(VOLATILE_REF_COST);
 
   format %{
     "cmpxchgw rscratch1, $mem, $oldval, $newval, $mem\t# if $mem == $oldval then $mem <-- $newval"
@@ -6304,7 +6332,7 @@
 instruct cmovI_reg_reg(cmpOp cmp, rFlagsReg cr, iRegINoSp dst, iRegI src1, iRegI src2) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, $src1 $cmp\t# signed, int"  %}
 
   ins_encode %{
@@ -6320,7 +6348,7 @@
 instruct cmovUI_reg_reg(cmpOpU cmp, rFlagsRegU cr, iRegINoSp dst, iRegI src1, iRegI src2) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, $src1 $cmp\t# unsigned, int"  %}
 
   ins_encode %{
@@ -6345,7 +6373,7 @@
 instruct cmovI_zero_reg(cmpOp cmp, rFlagsReg cr, iRegINoSp dst, immI0 zero, iRegI src2) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, zr $cmp\t# signed, int"  %}
 
   ins_encode %{
@@ -6361,7 +6389,7 @@
 instruct cmovUI_zero_reg(cmpOpU cmp, rFlagsRegU cr, iRegINoSp dst, immI0 zero, iRegI src2) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, zr $cmp\t# unsigned, int"  %}
 
   ins_encode %{
@@ -6377,7 +6405,7 @@
 instruct cmovI_reg_zero(cmpOp cmp, rFlagsReg cr, iRegINoSp dst, iRegI src1, immI0 zero) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, zr, $src1 $cmp\t# signed, int"  %}
 
   ins_encode %{
@@ -6393,7 +6421,7 @@
 instruct cmovUI_reg_zero(cmpOpU cmp, rFlagsRegU cr, iRegINoSp dst, iRegI src1, immI0 zero) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, zr, $src1 $cmp\t# unsigned, int"  %}
 
   ins_encode %{
@@ -6414,7 +6442,7 @@
 instruct cmovI_reg_zero_one(cmpOp cmp, rFlagsReg cr, iRegINoSp dst, immI0 zero, immI_1 one) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary one zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csincw $dst, zr, zr $cmp\t# signed, int"  %}
 
   ins_encode %{
@@ -6433,7 +6461,7 @@
 instruct cmovUI_reg_zero_one(cmpOpU cmp, rFlagsRegU cr, iRegINoSp dst, immI0 zero, immI_1 one) %{
   match(Set dst (CMoveI (Binary cmp cr) (Binary one zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csincw $dst, zr, zr $cmp\t# unsigned, int"  %}
 
   ins_encode %{
@@ -6452,7 +6480,7 @@
 instruct cmovL_reg_reg(cmpOp cmp, rFlagsReg cr, iRegLNoSp dst, iRegL src1, iRegL src2) %{
   match(Set dst (CMoveL (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, $src1 $cmp\t# signed, long"  %}
 
   ins_encode %{
@@ -6468,7 +6496,7 @@
 instruct cmovUL_reg_reg(cmpOpU cmp, rFlagsRegU cr, iRegLNoSp dst, iRegL src1, iRegL src2) %{
   match(Set dst (CMoveL (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, $src1 $cmp\t# unsigned, long"  %}
 
   ins_encode %{
@@ -6486,7 +6514,7 @@
 instruct cmovL_reg_zero(cmpOp cmp, rFlagsReg cr, iRegLNoSp dst, iRegL src1, immL0 zero) %{
   match(Set dst (CMoveL (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, zr, $src1 $cmp\t# signed, long"  %}
 
   ins_encode %{
@@ -6502,7 +6530,7 @@
 instruct cmovUL_reg_zero(cmpOpU cmp, rFlagsRegU cr, iRegLNoSp dst, iRegL src1, immL0 zero) %{
   match(Set dst (CMoveL (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, zr, $src1 $cmp\t# unsigned, long"  %}
 
   ins_encode %{
@@ -6518,7 +6546,7 @@
 instruct cmovL_zero_reg(cmpOp cmp, rFlagsReg cr, iRegLNoSp dst, immL0 zero, iRegL src2) %{
   match(Set dst (CMoveL (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, zr $cmp\t# signed, long"  %}
 
   ins_encode %{
@@ -6534,7 +6562,7 @@
 instruct cmovUL_zero_reg(cmpOpU cmp, rFlagsRegU cr, iRegLNoSp dst, immL0 zero, iRegL src2) %{
   match(Set dst (CMoveL (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, zr $cmp\t# unsigned, long"  %}
 
   ins_encode %{
@@ -6550,7 +6578,7 @@
 instruct cmovP_reg_reg(cmpOp cmp, rFlagsReg cr, iRegPNoSp dst, iRegP src1, iRegP src2) %{
   match(Set dst (CMoveP (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, $src1 $cmp\t# signed, ptr"  %}
 
   ins_encode %{
@@ -6566,7 +6594,7 @@
 instruct cmovUP_reg_reg(cmpOpU cmp, rFlagsRegU cr, iRegPNoSp dst, iRegP src1, iRegP src2) %{
   match(Set dst (CMoveP (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, $src1 $cmp\t# unsigned, ptr"  %}
 
   ins_encode %{
@@ -6584,7 +6612,7 @@
 instruct cmovP_reg_zero(cmpOp cmp, rFlagsReg cr, iRegPNoSp dst, iRegP src1, immP0 zero) %{
   match(Set dst (CMoveP (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, zr, $src1 $cmp\t# signed, ptr"  %}
 
   ins_encode %{
@@ -6600,7 +6628,7 @@
 instruct cmovUP_reg_zero(cmpOpU cmp, rFlagsRegU cr, iRegPNoSp dst, iRegP src1, immP0 zero) %{
   match(Set dst (CMoveP (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, zr, $src1 $cmp\t# unsigned, ptr"  %}
 
   ins_encode %{
@@ -6616,7 +6644,7 @@
 instruct cmovP_zero_reg(cmpOp cmp, rFlagsReg cr, iRegPNoSp dst, immP0 zero, iRegP src2) %{
   match(Set dst (CMoveP (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, zr $cmp\t# signed, ptr"  %}
 
   ins_encode %{
@@ -6632,7 +6660,7 @@
 instruct cmovUP_zero_reg(cmpOpU cmp, rFlagsRegU cr, iRegPNoSp dst, immP0 zero, iRegP src2) %{
   match(Set dst (CMoveP (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "csel $dst, $src2, zr $cmp\t# unsigned, ptr"  %}
 
   ins_encode %{
@@ -6648,7 +6676,7 @@
 instruct cmovN_reg_reg(cmpOp cmp, rFlagsReg cr, iRegNNoSp dst, iRegN src1, iRegN src2) %{
   match(Set dst (CMoveN (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, $src1 $cmp\t# signed, compressed ptr"  %}
 
   ins_encode %{
@@ -6664,7 +6692,7 @@
 instruct cmovUN_reg_reg(cmpOpU cmp, rFlagsRegU cr, iRegNNoSp dst, iRegN src1, iRegN src2) %{
   match(Set dst (CMoveN (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, $src1 $cmp\t# signed, compressed ptr"  %}
 
   ins_encode %{
@@ -6682,7 +6710,7 @@
 instruct cmovN_reg_zero(cmpOp cmp, rFlagsReg cr, iRegNNoSp dst, iRegN src1, immN0 zero) %{
   match(Set dst (CMoveN (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, zr, $src1 $cmp\t# signed, compressed ptr"  %}
 
   ins_encode %{
@@ -6698,7 +6726,7 @@
 instruct cmovUN_reg_zero(cmpOpU cmp, rFlagsRegU cr, iRegNNoSp dst, iRegN src1, immN0 zero) %{
   match(Set dst (CMoveN (Binary cmp cr) (Binary src1 zero)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, zr, $src1 $cmp\t# unsigned, compressed ptr"  %}
 
   ins_encode %{
@@ -6714,7 +6742,7 @@
 instruct cmovN_zero_reg(cmpOp cmp, rFlagsReg cr, iRegNNoSp dst, immN0 zero, iRegN src2) %{
   match(Set dst (CMoveN (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, zr $cmp\t# signed, compressed ptr"  %}
 
   ins_encode %{
@@ -6730,7 +6758,7 @@
 instruct cmovUN_zero_reg(cmpOpU cmp, rFlagsRegU cr, iRegNNoSp dst, immN0 zero, iRegN src2) %{
   match(Set dst (CMoveN (Binary cmp cr) (Binary zero src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "cselw $dst, $src2, zr $cmp\t# unsigned, compressed ptr"  %}
 
   ins_encode %{
@@ -6747,7 +6775,7 @@
 %{
   match(Set dst (CMoveF (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
 
   format %{ "fcsels $dst, $src1, $src2, $cmp\t# signed cmove float\n\t" %}
   ins_encode %{
@@ -6765,7 +6793,7 @@
 %{
   match(Set dst (CMoveF (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
 
   format %{ "fcsels $dst, $src1, $src2, $cmp\t# unsigned cmove float\n\t" %}
   ins_encode %{
@@ -6783,7 +6811,7 @@
 %{
   match(Set dst (CMoveD (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
 
   format %{ "fcseld $dst, $src1, $src2, $cmp\t# signed cmove float\n\t" %}
   ins_encode %{
@@ -6801,7 +6829,7 @@
 %{
   match(Set dst (CMoveD (Binary cmp cr) (Binary src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
 
   format %{ "fcseld $dst, $src1, $src2, $cmp\t# unsigned cmove float\n\t" %}
   ins_encode %{
@@ -6858,7 +6886,7 @@
 instruct addI_reg_reg(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (AddI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -6873,7 +6901,7 @@
 instruct addI_reg_imm(iRegINoSp dst, iRegI src1, immIAddSub src2) %{
   match(Set dst (AddI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw $dst, $src1, $src2" %}
 
   // use opcode to indicate that this is an add not a sub
@@ -6887,7 +6915,7 @@
 instruct addI_reg_imm_i2l(iRegINoSp dst, iRegL src1, immIAddSub src2) %{
   match(Set dst (AddI (ConvL2I src1) src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw $dst, $src1, $src2" %}
 
   // use opcode to indicate that this is an add not a sub
@@ -6902,7 +6930,7 @@
 instruct addP_reg_reg(iRegPNoSp dst, iRegP src1, iRegL src2) %{
   match(Set dst (AddP src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add $dst, $src1, $src2\t# ptr" %}
 
   ins_encode %{
@@ -6917,7 +6945,7 @@
 instruct addP_reg_reg_ext(iRegPNoSp dst, iRegP src1, iRegIorL2I src2) %{
   match(Set dst (AddP src1 (ConvI2L src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add $dst, $src1, $src2\t# ptr" %}
 
   ins_encode %{
@@ -6932,7 +6960,7 @@
 instruct addP_reg_reg_lsl(iRegPNoSp dst, iRegP src1, iRegL src2, immIScale scale) %{
   match(Set dst (AddP src1 (LShiftL src2 scale)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add $dst, $src1, $src2, LShiftL $scale\t# ptr" %}
 
   ins_encode %{
@@ -6947,7 +6975,7 @@
 instruct addP_reg_reg_ext_shift(iRegPNoSp dst, iRegP src1, iRegIorL2I src2, immIScale scale) %{
   match(Set dst (AddP src1 (LShiftL (ConvI2L src2) scale)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add $dst, $src1, $src2, I2L $scale\t# ptr" %}
 
   ins_encode %{
@@ -6962,7 +6990,7 @@
 instruct lshift_ext(iRegLNoSp dst, iRegIorL2I src, immI scale, rFlagsReg cr) %{
   match(Set dst (LShiftL (ConvI2L src) scale));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sbfiz $dst, $src, $scale & 63, -$scale & 63\t" %}
 
   ins_encode %{
@@ -6980,7 +7008,7 @@
 instruct addP_reg_imm(iRegPNoSp dst, iRegP src1, immLAddSub src2) %{
   match(Set dst (AddP src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add $dst, $src1, $src2\t# ptr" %}
 
   // use opcode to indicate that this is an add not a sub
@@ -6996,7 +7024,7 @@
 
   match(Set dst (AddL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7012,7 +7040,7 @@
 instruct addL_reg_imm(iRegLNoSp dst, iRegL src1, immLAddSub src2) %{
   match(Set dst (AddL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add $dst, $src1, $src2" %}
 
   // use opcode to indicate that this is an add not a sub
@@ -7027,7 +7055,7 @@
 instruct subI_reg_reg(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (SubI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7043,7 +7071,7 @@
 instruct subI_reg_imm(iRegINoSp dst, iRegIorL2I src1, immIAddSub src2) %{
   match(Set dst (SubI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw $dst, $src1, $src2" %}
 
   // use opcode to indicate that this is a sub not an add
@@ -7059,7 +7087,7 @@
 
   match(Set dst (SubL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7075,7 +7103,7 @@
 instruct subL_reg_imm(iRegLNoSp dst, iRegL src1, immLAddSub src2) %{
   match(Set dst (SubL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub$dst, $src1, $src2" %}
 
   // use opcode to indicate that this is a sub not an add
@@ -7091,7 +7119,7 @@
 instruct negI_reg(iRegINoSp dst, iRegIorL2I src, immI0 zero, rFlagsReg cr) %{
   match(Set dst (SubI zero src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "negw $dst, $src\t# int" %}
 
   ins_encode %{
@@ -7107,7 +7135,7 @@
 instruct negL_reg(iRegLNoSp dst, iRegIorL2I src, immL0 zero, rFlagsReg cr) %{
   match(Set dst (SubL zero src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "neg $dst, $src\t# long" %}
 
   ins_encode %{
@@ -7123,7 +7151,7 @@
 instruct mulI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (MulI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
   format %{ "mulw  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7140,7 +7168,7 @@
 instruct mulL(iRegLNoSp dst, iRegL src1, iRegL src2) %{
   match(Set dst (MulL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "mul  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7156,7 +7184,7 @@
 %{
   match(Set dst (MulHiL src1 src2));
 
-  ins_cost(2 * DEFAULT_COST);
+  ins_cost(INSN_COST * 7);
   format %{ "smulh   $dst, $src1, $src2, \t# mulhi" %}
 
   ins_encode %{
@@ -7173,7 +7201,7 @@
 instruct maddI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2, iRegIorL2I src3) %{
   match(Set dst (AddI src3 (MulI src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
   format %{ "madd  $dst, $src1, $src2, $src3" %}
 
   ins_encode %{
@@ -7189,7 +7217,7 @@
 instruct msubI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2, iRegIorL2I src3) %{
   match(Set dst (SubI src3 (MulI src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
   format %{ "msub  $dst, $src1, $src2, $src3" %}
 
   ins_encode %{
@@ -7207,7 +7235,7 @@
 instruct maddL(iRegLNoSp dst, iRegL src1, iRegL src2, iRegL src3) %{
   match(Set dst (AddL src3 (MulL src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "madd  $dst, $src1, $src2, $src3" %}
 
   ins_encode %{
@@ -7223,7 +7251,7 @@
 instruct msubL(iRegLNoSp dst, iRegL src1, iRegL src2, iRegL src3) %{
   match(Set dst (SubL src3 (MulL src1 src2)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "msub  $dst, $src1, $src2, $src3" %}
 
   ins_encode %{
@@ -7241,15 +7269,8 @@
 instruct divI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (DivI src1 src2));
 
-  ins_cost(10*DEFAULT_COST);
-  format %{ "cmpw   $src1, #0x80000000\t# idiv\n\t"
-            "bne    normal\n\t"
-            "cmnw   $src2, #1\n\t"
-            "beq    normal\n\t"
-            "movw   $dst, $src1\n\t"
-            "b      done\n"
-    "normal: sdivw  $dst, $src1, $src2\n"
-    "done:" %}
+  ins_cost(INSN_COST * 19);
+  format %{ "sdivw  $dst, $src1, $src2" %}
 
   ins_encode(aarch64_enc_divw(dst, src1, src2));
   ins_pipe(pipe_class_default);
@@ -7260,15 +7281,8 @@
 instruct divL(iRegLNoSp dst, iRegL src1, iRegL src2) %{
   match(Set dst (DivL src1 src2));
 
-  ins_cost(10*DEFAULT_COST);
-  format %{ "cmp    $src1, #0x8000000000000000\t# ldiv\n\t"
-            "bne    normal\n\t"
-            "cmn    $src2, #1\n\t"
-            "beq    normal\n\t"
-            "mov    $dst, $src1\n\t"
-            "b      done\n"
-    "normal: sdiv   $dst, $src1, $src2\n"
-    "done:" %}
+  ins_cost(INSN_COST * 35);
+  format %{ "sdiv   $dst, $src1, $src2" %}
 
   ins_encode(aarch64_enc_div(dst, src1, src2));
   ins_pipe(pipe_class_default);
@@ -7279,15 +7293,9 @@
 instruct modI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (ModI src1 src2));
 
-  format %{ "cmpw   $src1, #0x80000000\t# imod\n\t"
-            "bne    normal\n\t"
-            "cmnw   $src2, #1\n\t"
-            "beq    normal\n\t"
-            "movw   $dst, zr\n\t"
-            "b      done\n"
-    "normal: sdivw  rscratch1, $src1, $src2\n\t"
-            "msubw($dst, rscratch1, $src2, $src1"
-    "done:" %}
+  ins_cost(INSN_COST * 22);
+  format %{ "sdivw  rscratch1, $src1, $src2\n\t"
+            "msubw($dst, rscratch1, $src2, $src1" %}
 
   ins_encode(aarch64_enc_modw(dst, src1, src2));
   ins_pipe(pipe_class_default);
@@ -7298,16 +7306,9 @@
 instruct modL(iRegLNoSp dst, iRegL src1, iRegL src2) %{
   match(Set dst (ModL src1 src2));
 
-  ins_cost(10*DEFAULT_COST);
-  format %{ "cmp    $src1, #0x8000000000000000\t# lmod\n\t"
-            "bne    normal\n\t"
-            "cmn    $src2, #1\n\t"
-            "beq    normal\n\t"
-            "mov    $dst, zr\n\t"
-            "b      done\n"
-    "normal: sdiv   rscratch1, $src1, $src2\n"
-            "msub($dst, rscratch1, $src2, $src1"
-    "done:" %}
+  ins_cost(INSN_COST * 38);
+  format %{ "sdiv   rscratch1, $src1, $src2\n"
+            "msub($dst, rscratch1, $src2, $src1" %}
 
   ins_encode(aarch64_enc_mod(dst, src1, src2));
   ins_pipe(pipe_class_default);
@@ -7319,7 +7320,7 @@
 instruct lShiftI_reg_reg(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (LShiftI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "lslvw  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7335,6 +7336,7 @@
 instruct lShiftI_reg_imm(iRegINoSp dst, iRegIorL2I src1, immI src2) %{
   match(Set dst (LShiftI src1 src2));
 
+  ins_cost(INSN_COST);
   format %{ "lslw $dst, $src1, ($src2 & 0x1f)" %}
 
   ins_encode %{
@@ -7350,7 +7352,7 @@
 instruct urShiftI_reg_reg(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (URShiftI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "lsrvw  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7366,6 +7368,7 @@
 instruct urShiftI_reg_imm(iRegINoSp dst, iRegIorL2I src1, immI src2) %{
   match(Set dst (URShiftI src1 src2));
 
+  ins_cost(INSN_COST);
   format %{ "lsrw $dst, $src1, ($src2 & 0x1f)" %}
 
   ins_encode %{
@@ -7381,7 +7384,7 @@
 instruct rShiftI_reg_reg(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
   match(Set dst (RShiftI src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "asrvw  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7397,6 +7400,7 @@
 instruct rShiftI_reg_imm(iRegINoSp dst, iRegIorL2I src1, immI src2) %{
   match(Set dst (RShiftI src1 src2));
 
+  ins_cost(INSN_COST);
   format %{ "asrw $dst, $src1, ($src2 & 0x1f)" %}
 
   ins_encode %{
@@ -7417,7 +7421,7 @@
 instruct lShiftL_reg_reg(iRegLNoSp dst, iRegL src1, iRegIorL2I src2) %{
   match(Set dst (LShiftL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "lslv  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7433,6 +7437,7 @@
 instruct lShiftL_reg_imm(iRegLNoSp dst, iRegL src1, immI src2) %{
   match(Set dst (LShiftL src1 src2));
 
+  ins_cost(INSN_COST);
   format %{ "lsl $dst, $src1, ($src2 & 0x3f)" %}
 
   ins_encode %{
@@ -7448,7 +7453,7 @@
 instruct urShiftL_reg_reg(iRegLNoSp dst, iRegL src1, iRegIorL2I src2) %{
   match(Set dst (URShiftL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "lsrv  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7464,6 +7469,7 @@
 instruct urShiftL_reg_imm(iRegLNoSp dst, iRegL src1, immI src2) %{
   match(Set dst (URShiftL src1 src2));
 
+  ins_cost(INSN_COST);
   format %{ "lsr $dst, $src1, ($src2 & 0x3f)" %}
 
   ins_encode %{
@@ -7479,7 +7485,7 @@
 instruct rShiftL_reg_reg(iRegLNoSp dst, iRegL src1, iRegIorL2I src2) %{
   match(Set dst (RShiftL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "asrv  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7495,6 +7501,7 @@
 instruct rShiftL_reg_imm(iRegLNoSp dst, iRegL src1, immI src2) %{
   match(Set dst (RShiftL src1 src2));
 
+  ins_cost(INSN_COST);
   format %{ "asr $dst, $src1, ($src2 & 0x3f)" %}
 
   ins_encode %{
@@ -7512,7 +7519,7 @@
                          iRegL src1, immL_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (XorL src1 m1));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eon  $dst, $src1, zr" %}
 
   ins_encode %{
@@ -7528,7 +7535,7 @@
                          iRegI src1, immI_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (XorI src1 m1));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eonw  $dst, $src1, zr" %}
 
   ins_encode %{
@@ -7545,7 +7552,7 @@
                          iRegI src1, iRegI src2, immI_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (AndI src1 (XorI src2 m1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bic  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7562,7 +7569,7 @@
                          iRegL src1, iRegL src2, immL_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (AndL src1 (XorL src2 m1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bic  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7579,7 +7586,7 @@
                          iRegI src1, iRegI src2, immI_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (OrI src1 (XorI src2 m1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orn  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7596,7 +7603,7 @@
                          iRegL src1, iRegL src2, immL_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (OrL src1 (XorL src2 m1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orn  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7613,7 +7620,7 @@
                          iRegI src1, iRegI src2, immI_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (XorI m1 (XorI src2 src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eon  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7630,7 +7637,7 @@
                          iRegL src1, iRegL src2, immL_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (XorL m1 (XorL src2 src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eon  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -7647,7 +7654,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (AndI src1 (XorI(URShiftI src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bicw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7665,7 +7672,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (AndL src1 (XorL(URShiftL src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bic  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7683,7 +7690,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (AndI src1 (XorI(RShiftI src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bicw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -7701,7 +7708,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (AndL src1 (XorL(RShiftL src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bic  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -7719,7 +7726,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (AndI src1 (XorI(LShiftI src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bicw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -7737,7 +7744,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (AndL src1 (XorL(LShiftL src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "bic  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -7755,7 +7762,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (XorI src4 (XorI(URShiftI src2 src3) src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eonw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7773,7 +7780,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (XorL src4 (XorL(URShiftL src2 src3) src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eon  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7791,7 +7798,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (XorI src4 (XorI(RShiftI src2 src3) src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eonw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -7809,7 +7816,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (XorL src4 (XorL(RShiftL src2 src3) src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eon  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -7827,7 +7834,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (XorI src4 (XorI(LShiftI src2 src3) src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eonw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -7845,7 +7852,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (XorL src4 (XorL(LShiftL src2 src3) src1)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eon  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -7863,7 +7870,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (OrI src1 (XorI(URShiftI src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "ornw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7881,7 +7888,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (OrL src1 (XorL(URShiftL src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orn  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7899,7 +7906,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (OrI src1 (XorI(RShiftI src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "ornw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -7917,7 +7924,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (OrL src1 (XorL(RShiftL src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orn  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -7935,7 +7942,7 @@
                          iRegI src1, iRegI src2,
                          immI src3, immI_M1 src4, rFlagsReg cr) %{
   match(Set dst (OrI src1 (XorI(LShiftI src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "ornw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -7953,7 +7960,7 @@
                          iRegL src1, iRegL src2,
                          immI src3, immL_M1 src4, rFlagsReg cr) %{
   match(Set dst (OrL src1 (XorL(LShiftL src2 src3) src4)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orn  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -7972,7 +7979,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AndI src1 (URShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "andw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -7991,7 +7998,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AndL src1 (URShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "andr  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8010,7 +8017,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AndI src1 (RShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "andw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8029,7 +8036,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AndL src1 (RShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "andr  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8048,7 +8055,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AndI src1 (LShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "andw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8067,7 +8074,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AndL src1 (LShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "andr  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8086,7 +8093,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (XorI src1 (URShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eorw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8105,7 +8112,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (XorL src1 (URShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eor  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8124,7 +8131,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (XorI src1 (RShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eorw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8143,7 +8150,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (XorL src1 (RShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eor  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8162,7 +8169,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (XorI src1 (LShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eorw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8181,7 +8188,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (XorL src1 (LShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eor  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8200,7 +8207,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (OrI src1 (URShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orrw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8219,7 +8226,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (OrL src1 (URShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orr  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8238,7 +8245,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (OrI src1 (RShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orrw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8257,7 +8264,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (OrL src1 (RShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orr  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8276,7 +8283,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (OrI src1 (LShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orrw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8295,7 +8302,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (OrL src1 (LShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "orr  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8314,7 +8321,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AddI src1 (URShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8333,7 +8340,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AddL src1 (URShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8352,7 +8359,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AddI src1 (RShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8371,7 +8378,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AddL src1 (RShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8390,7 +8397,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AddI src1 (LShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8409,7 +8416,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (AddL src1 (LShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8428,7 +8435,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (SubI src1 (URShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8447,7 +8454,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (SubL src1 (URShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2, LSR $src3" %}
 
   ins_encode %{
@@ -8466,7 +8473,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (SubI src1 (RShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8485,7 +8492,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (SubL src1 (RShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2, ASR $src3" %}
 
   ins_encode %{
@@ -8504,7 +8511,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (SubI src1 (LShiftI src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8523,7 +8530,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst (SubL src1 (LShiftL src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2, LSL $src3" %}
 
   ins_encode %{
@@ -8548,7 +8555,7 @@
   predicate((unsigned int)n->in(2)->get_int() <= 63
             && (unsigned int)n->in(1)->in(2)->get_int() <= 63);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "sbfm  $dst, $src, $rshift_count - $lshift_count, #63 - $lshift_count" %}
   ins_encode %{
     int lshift = $lshift_count$$constant, rshift = $rshift_count$$constant;
@@ -8571,7 +8578,7 @@
   predicate((unsigned int)n->in(2)->get_int() <= 31
             && (unsigned int)n->in(1)->in(2)->get_int() <= 31);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "sbfmw  $dst, $src, $rshift_count - $lshift_count, #31 - $lshift_count" %}
   ins_encode %{
     int lshift = $lshift_count$$constant, rshift = $rshift_count$$constant;
@@ -8594,7 +8601,7 @@
   predicate((unsigned int)n->in(2)->get_int() <= 63
             && (unsigned int)n->in(1)->in(2)->get_int() <= 63);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "ubfm  $dst, $src, $rshift_count - $lshift_count, #63 - $lshift_count" %}
   ins_encode %{
     int lshift = $lshift_count$$constant, rshift = $rshift_count$$constant;
@@ -8617,7 +8624,7 @@
   predicate((unsigned int)n->in(2)->get_int() <= 31
             && (unsigned int)n->in(1)->in(2)->get_int() <= 31);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "ubfmw  $dst, $src, $rshift_count - $lshift_count, #31 - $lshift_count" %}
   ins_encode %{
     int lshift = $lshift_count$$constant, rshift = $rshift_count$$constant;
@@ -8636,7 +8643,7 @@
 %{
   match(Set dst (AndI (URShiftI src rshift) mask));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "ubfxw $dst, $src, $mask" %}
   ins_encode %{
     int rshift = $rshift$$constant;
@@ -8651,7 +8658,7 @@
 %{
   match(Set dst (AndL (URShiftL src rshift) mask));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "ubfx $dst, $src, $mask" %}
   ins_encode %{
     int rshift = $rshift$$constant;
@@ -8669,7 +8676,7 @@
 %{
   match(Set dst (ConvI2L (AndI (URShiftI src rshift) mask)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "ubfx $dst, $src, $mask" %}
   ins_encode %{
     int rshift = $rshift$$constant;
@@ -8688,7 +8695,7 @@
   match(Set dst (OrL (LShiftL src1 lshift) (URShiftL src2 rshift)));
   predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & 63));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "extr $dst, $src1, $src2, #$rshift" %}
 
   ins_encode %{
@@ -8703,7 +8710,7 @@
   match(Set dst (OrI (LShiftI src1 lshift) (URShiftI src2 rshift)));
   predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & 31));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "extr $dst, $src1, $src2, #$rshift" %}
 
   ins_encode %{
@@ -8718,7 +8725,7 @@
   match(Set dst (AddL (LShiftL src1 lshift) (URShiftL src2 rshift)));
   predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & 63));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "extr $dst, $src1, $src2, #$rshift" %}
 
   ins_encode %{
@@ -8733,7 +8740,7 @@
   match(Set dst (AddI (LShiftI src1 lshift) (URShiftI src2 rshift)));
   predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & 31));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "extr $dst, $src1, $src2, #$rshift" %}
 
   ins_encode %{
@@ -8751,7 +8758,7 @@
   effect(DEF dst, USE src, USE shift);
 
   format %{ "rol    $dst, $src, $shift" %}
-  ins_cost(2*DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
   ins_encode %{
     __ subw(rscratch1, zr, as_Register($shift$$reg));
     __ rorv(as_Register($dst$$reg), as_Register($src$$reg),
@@ -8767,7 +8774,7 @@
   effect(DEF dst, USE src, USE shift);
 
   format %{ "rol    $dst, $src, $shift" %}
-  ins_cost(2*DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
   ins_encode %{
     __ subw(rscratch1, zr, as_Register($shift$$reg));
     __ rorvw(as_Register($dst$$reg), as_Register($src$$reg),
@@ -8819,7 +8826,7 @@
   effect(DEF dst, USE src, USE shift);
 
   format %{ "ror    $dst, $src, $shift" %}
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   ins_encode %{
     __ rorv(as_Register($dst$$reg), as_Register($src$$reg),
 	    as_Register($shift$$reg));
@@ -8834,7 +8841,7 @@
   effect(DEF dst, USE src, USE shift);
 
   format %{ "ror    $dst, $src, $shift" %}
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   ins_encode %{
     __ rorvw(as_Register($dst$$reg), as_Register($src$$reg),
 	    as_Register($shift$$reg));
@@ -8883,7 +8890,7 @@
 instruct AddExtI(iRegLNoSp dst, iRegL src1, iRegIorL2I src2, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (ConvI2L src2)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1,  $src2" %}
 
    ins_encode %{
@@ -8896,7 +8903,7 @@
 instruct SubExtI(iRegLNoSp dst, iRegL src1, iRegIorL2I src2, rFlagsReg cr)
 %{
   match(Set dst (SubL src1 (ConvI2L src2)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1,  $src2" %}
 
    ins_encode %{
@@ -8910,7 +8917,7 @@
 instruct AddExtI_sxth(iRegINoSp dst, iRegI src1, iRegI src2, immI_16 lshift, immI_16 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddI src1 (RShiftI (LShiftI src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, sxth $src2" %}
 
    ins_encode %{
@@ -8923,7 +8930,7 @@
 instruct AddExtI_sxtb(iRegINoSp dst, iRegI src1, iRegI src2, immI_24 lshift, immI_24 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddI src1 (RShiftI (LShiftI src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, sxtb $src2" %}
 
    ins_encode %{
@@ -8936,7 +8943,7 @@
 instruct AddExtI_uxtb(iRegINoSp dst, iRegI src1, iRegI src2, immI_24 lshift, immI_24 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddI src1 (URShiftI (LShiftI src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, uxtb $src2" %}
 
    ins_encode %{
@@ -8949,7 +8956,7 @@
 instruct AddExtL_sxth(iRegLNoSp dst, iRegL src1, iRegL src2, immI_48 lshift, immI_48 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (RShiftL (LShiftL src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, sxth $src2" %}
 
    ins_encode %{
@@ -8962,7 +8969,7 @@
 instruct AddExtL_sxtw(iRegLNoSp dst, iRegL src1, iRegL src2, immI_32 lshift, immI_32 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (RShiftL (LShiftL src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, sxtw $src2" %}
 
    ins_encode %{
@@ -8975,7 +8982,7 @@
 instruct AddExtL_sxtb(iRegLNoSp dst, iRegL src1, iRegL src2, immI_56 lshift, immI_56 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (RShiftL (LShiftL src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, sxtb $src2" %}
 
    ins_encode %{
@@ -8988,7 +8995,7 @@
 instruct AddExtL_uxtb(iRegLNoSp dst, iRegL src1, iRegL src2, immI_56 lshift, immI_56 rshift, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (URShiftL (LShiftL src2 lshift) rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, uxtb $src2" %}
 
    ins_encode %{
@@ -9002,7 +9009,7 @@
 instruct AddExtI_uxtb_and(iRegINoSp dst, iRegI src1, iRegI src2, immI_255 mask, rFlagsReg cr)
 %{
   match(Set dst (AddI src1 (AndI src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw  $dst, $src1, $src2, uxtb" %}
 
    ins_encode %{
@@ -9015,7 +9022,7 @@
 instruct AddExtI_uxth_and(iRegINoSp dst, iRegI src1, iRegI src2, immI_65535 mask, rFlagsReg cr)
 %{
   match(Set dst (AddI src1 (AndI src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "addw  $dst, $src1, $src2, uxth" %}
 
    ins_encode %{
@@ -9028,7 +9035,7 @@
 instruct AddExtL_uxtb_and(iRegLNoSp dst, iRegL src1, iRegL src2, immL_255 mask, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (AndL src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2, uxtb" %}
 
    ins_encode %{
@@ -9041,7 +9048,7 @@
 instruct AddExtL_uxth_and(iRegLNoSp dst, iRegL src1, iRegL src2, immL_65535 mask, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (AndL src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2, uxth" %}
 
    ins_encode %{
@@ -9054,7 +9061,7 @@
 instruct AddExtL_uxtw_and(iRegLNoSp dst, iRegL src1, iRegL src2, immL_4294967295 mask, rFlagsReg cr)
 %{
   match(Set dst (AddL src1 (AndL src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "add  $dst, $src1, $src2, uxtw" %}
 
    ins_encode %{
@@ -9067,7 +9074,7 @@
 instruct SubExtI_uxtb_and(iRegINoSp dst, iRegI src1, iRegI src2, immI_255 mask, rFlagsReg cr)
 %{
   match(Set dst (SubI src1 (AndI src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw  $dst, $src1, $src2, uxtb" %}
 
    ins_encode %{
@@ -9080,7 +9087,7 @@
 instruct SubExtI_uxth_and(iRegINoSp dst, iRegI src1, iRegI src2, immI_65535 mask, rFlagsReg cr)
 %{
   match(Set dst (SubI src1 (AndI src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "subw  $dst, $src1, $src2, uxth" %}
 
    ins_encode %{
@@ -9093,7 +9100,7 @@
 instruct SubExtL_uxtb_and(iRegLNoSp dst, iRegL src1, iRegL src2, immL_255 mask, rFlagsReg cr)
 %{
   match(Set dst (SubL src1 (AndL src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2, uxtb" %}
 
    ins_encode %{
@@ -9106,7 +9113,7 @@
 instruct SubExtL_uxth_and(iRegLNoSp dst, iRegL src1, iRegL src2, immL_65535 mask, rFlagsReg cr)
 %{
   match(Set dst (SubL src1 (AndL src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2, uxth" %}
 
    ins_encode %{
@@ -9119,7 +9126,7 @@
 instruct SubExtL_uxtw_and(iRegLNoSp dst, iRegL src1, iRegL src2, immL_4294967295 mask, rFlagsReg cr)
 %{
   match(Set dst (SubL src1 (AndL src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sub  $dst, $src1, $src2, uxtw" %}
 
    ins_encode %{
@@ -9132,16 +9139,13 @@
 // END This section of the file is automatically generated. Do not edit --------------
 
 
-// Combined Long Mask and Right Shift (using UBFM)
-// TODO
-
-
 // ============================================================================
 // Floating Point Arithmetic Instructions
 
 instruct addF_reg_reg(vRegF dst, vRegF src1, vRegF src2) %{
   match(Set dst (AddF src1 src2));
 
+  ins_cost(INSN_COST * 5);
   format %{ "fadds   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9156,6 +9160,7 @@
 instruct addD_reg_reg(vRegD dst, vRegD src1, vRegD src2) %{
   match(Set dst (AddD src1 src2));
 
+  ins_cost(INSN_COST * 5);
   format %{ "faddd   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9170,6 +9175,7 @@
 instruct subF_reg_reg(vRegF dst, vRegF src1, vRegF src2) %{
   match(Set dst (SubF src1 src2));
 
+  ins_cost(INSN_COST * 5);
   format %{ "fsubs   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9184,6 +9190,7 @@
 instruct subD_reg_reg(vRegD dst, vRegD src1, vRegD src2) %{
   match(Set dst (SubD src1 src2));
 
+  ins_cost(INSN_COST * 5);
   format %{ "fsubd   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9198,6 +9205,7 @@
 instruct mulF_reg_reg(vRegF dst, vRegF src1, vRegF src2) %{
   match(Set dst (MulF src1 src2));
 
+  ins_cost(INSN_COST * 6);
   format %{ "fmuls   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9212,6 +9220,7 @@
 instruct mulD_reg_reg(vRegD dst, vRegD src1, vRegD src2) %{
   match(Set dst (MulD src1 src2));
 
+  ins_cost(INSN_COST * 6);
   format %{ "fmuld   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9359,6 +9368,7 @@
 instruct divF_reg_reg(vRegF dst, vRegF src1, vRegF src2) %{
   match(Set dst (DivF src1  src2));
 
+  ins_cost(INSN_COST * 18);
   format %{ "fdivs   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9373,6 +9383,7 @@
 instruct divD_reg_reg(vRegD dst, vRegD src1, vRegD src2) %{
   match(Set dst (DivD src1  src2));
 
+  ins_cost(INSN_COST * 32);
   format %{ "fdivd   $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -9387,6 +9398,7 @@
 instruct negF_reg_reg(vRegF dst, vRegF src) %{
   match(Set dst (NegF src));
 
+  ins_cost(INSN_COST * 3);
   format %{ "fneg   $dst, $src" %}
 
   ins_encode %{
@@ -9400,6 +9412,7 @@
 instruct negD_reg_reg(vRegD dst, vRegD src) %{
   match(Set dst (NegD src));
 
+  ins_cost(INSN_COST * 3);
   format %{ "fnegd   $dst, $src" %}
 
   ins_encode %{
@@ -9413,6 +9426,7 @@
 instruct absF_reg(vRegF dst, vRegF src) %{
   match(Set dst (AbsF src));
 
+  ins_cost(INSN_COST * 3);
   format %{ "fabss   $dst, $src" %}
   ins_encode %{
     __ fabss(as_FloatRegister($dst$$reg),
@@ -9425,6 +9439,7 @@
 instruct absD_reg(vRegD dst, vRegD src) %{
   match(Set dst (AbsD src));
 
+  ins_cost(INSN_COST * 3);
   format %{ "fabsd   $dst, $src" %}
   ins_encode %{
     __ fabsd(as_FloatRegister($dst$$reg),
@@ -9440,10 +9455,6 @@
 // Integer Logical Instructions
 
 // And Instructions
-// TODO
-// these currently set CR and are flagged as killing CR but we would
-// like to isolate the cases where we want to set flags from those
-// where we don't. need to work out how to do that.
 
 
 instruct andI_reg_reg(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2, rFlagsReg cr) %{
@@ -9451,6 +9462,7 @@
 
   format %{ "andw  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ andw(as_Register($dst$$reg),
 	    as_Register($src1$$reg),
@@ -9465,6 +9477,7 @@
 
   format %{ "andsw  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ andw(as_Register($dst$$reg),
 	    as_Register($src1$$reg),
@@ -9481,6 +9494,7 @@
 
   format %{ "orrw  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ orrw(as_Register($dst$$reg),
             as_Register($src1$$reg),
@@ -9495,6 +9509,7 @@
 
   format %{ "orrw  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ orrw(as_Register($dst$$reg),
             as_Register($src1$$reg),
@@ -9511,6 +9526,7 @@
 
   format %{ "eorw  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ eorw(as_Register($dst$$reg),
             as_Register($src1$$reg),
@@ -9525,6 +9541,7 @@
 
   format %{ "eorw  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ eorw(as_Register($dst$$reg),
             as_Register($src1$$reg),
@@ -9542,6 +9559,7 @@
 
   format %{ "and  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ andr(as_Register($dst$$reg),
 	    as_Register($src1$$reg),
@@ -9556,6 +9574,7 @@
 
   format %{ "and  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ andr(as_Register($dst$$reg),
             as_Register($src1$$reg),
@@ -9572,6 +9591,7 @@
 
   format %{ "orr  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ orr(as_Register($dst$$reg),
            as_Register($src1$$reg),
@@ -9586,6 +9606,7 @@
 
   format %{ "orr  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ orr(as_Register($dst$$reg),
            as_Register($src1$$reg),
@@ -9602,6 +9623,7 @@
 
   format %{ "eor  $dst, $src1, $src2\t# int" %}
 
+  ins_cost(INSN_COST);
   ins_encode %{
     __ eor(as_Register($dst$$reg),
            as_Register($src1$$reg),
@@ -9614,7 +9636,7 @@
 instruct xorL_reg_imm(iRegLNoSp dst, iRegL src1, immLLog src2) %{
   match(Set dst (XorL src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "eor  $dst, $src1, $src2\t# int" %}
 
   ins_encode %{
@@ -9630,7 +9652,7 @@
 %{
   match(Set dst (ConvI2L src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "sxtw  $dst, $src\t# i2l" %}
   ins_encode %{
     __ sbfm($dst$$Register, $src$$Register, 0, 31);
@@ -9643,7 +9665,7 @@
 %{
   match(Set dst (AndL (ConvI2L src) mask));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "ubfm  $dst, $src, 0, 31\t# ui2l" %}
   ins_encode %{
     __ ubfm($dst$$Register, $src$$Register, 0, 31);
@@ -9655,7 +9677,7 @@
 instruct convL2I_reg(iRegINoSp dst, iRegL src) %{
   match(Set dst (ConvL2I src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "movw  $dst, $src \t// l2i" %}
 
   ins_encode %{
@@ -9704,7 +9726,7 @@
 instruct convD2F_reg(vRegF dst, vRegD src) %{
   match(Set dst (ConvD2F src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "fcvtd  $dst, $src \t// d2f" %}
 
   ins_encode %{
@@ -9717,7 +9739,7 @@
 instruct convF2D_reg(vRegD dst, vRegF src) %{
   match(Set dst (ConvF2D src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "fcvts  $dst, $src \t// f2d" %}
 
   ins_encode %{
@@ -9730,7 +9752,7 @@
 instruct convF2I_reg_reg(iRegINoSp dst, vRegF src) %{
   match(Set dst (ConvF2I src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "fcvtzsw  $dst, $src \t// f2i" %}
 
   ins_encode %{
@@ -9743,7 +9765,7 @@
 instruct convF2L_reg_reg(iRegLNoSp dst, vRegF src) %{
   match(Set dst (ConvF2L src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "fcvtzs  $dst, $src \t// f2l" %}
 
   ins_encode %{
@@ -9756,7 +9778,7 @@
 instruct convI2F_reg_reg(vRegF dst, iRegI src) %{
   match(Set dst (ConvI2F src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "scvtfws  $dst, $src \t// i2f" %}
 
   ins_encode %{
@@ -9769,7 +9791,7 @@
 instruct convL2F_reg_reg(vRegF dst, iRegL src) %{
   match(Set dst (ConvL2F src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "scvtfs  $dst, $src \t// l2f" %}
 
   ins_encode %{
@@ -9782,7 +9804,7 @@
 instruct convD2I_reg_reg(iRegINoSp dst, vRegD src) %{
   match(Set dst (ConvD2I src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "fcvtzdw  $dst, $src \t// d2i" %}
 
   ins_encode %{
@@ -9795,7 +9817,7 @@
 instruct convD2L_reg_reg(iRegLNoSp dst, vRegD src) %{
   match(Set dst (ConvD2L src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "fcvtzd  $dst, $src \t// d2l" %}
 
   ins_encode %{
@@ -9808,7 +9830,7 @@
 instruct convI2D_reg_reg(vRegD dst, iRegI src) %{
   match(Set dst (ConvI2D src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "scvtfwd  $dst, $src \t// i2d" %}
 
   ins_encode %{
@@ -9821,7 +9843,7 @@
 instruct convL2D_reg_reg(vRegD dst, iRegL src) %{
   match(Set dst (ConvL2D src));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 5);
   format %{ "scvtfd  $dst, $src \t// l2d" %}
 
   ins_encode %{
@@ -9839,7 +9861,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(4 * INSN_COST);
 
   format %{ "ldrw $dst, $src\t# MoveF2I_stack_reg" %}
 
@@ -9857,7 +9879,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(4 * INSN_COST);
 
   format %{ "ldrs $dst, $src\t# MoveI2F_stack_reg" %}
 
@@ -9875,7 +9897,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(4 * INSN_COST);
 
   format %{ "ldr $dst, $src\t# MoveD2L_stack_reg" %}
 
@@ -9893,7 +9915,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(4 * INSN_COST);
 
   format %{ "ldrd $dst, $src\t# MoveL2D_stack_reg" %}
 
@@ -9911,7 +9933,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "strs $src, $dst\t# MoveF2I_reg_stack" %}
 
@@ -9929,7 +9951,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "strw $src, $dst\t# MoveI2F_reg_stack" %}
 
@@ -9947,7 +9969,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "strd $dst, $src\t# MoveD2L_reg_stack" %}
 
@@ -9965,7 +9987,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "str $src, $dst\t# MoveL2D_reg_stack" %}
 
@@ -9983,7 +10005,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "fmovs $dst, $src\t# MoveF2I_reg_reg" %}
 
@@ -10001,7 +10023,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "fmovs $dst, $src\t# MoveI2F_reg_reg" %}
 
@@ -10019,7 +10041,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "fmovd $dst, $src\t# MoveD2L_reg_reg" %}
 
@@ -10037,7 +10059,7 @@
 
   effect(DEF dst, USE src);
 
-  ins_cost(MEMORY_REF_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "fmovd $dst, $src\t# MoveL2D_reg_reg" %}
 
@@ -10057,7 +10079,7 @@
   match(Set dummy (ClearArray cnt base));
   effect(USE_KILL cnt, USE_KILL base);
 
-  ins_cost(MEMORY_REF_COST);
+  ins_cost(4 * INSN_COST);
   format %{ "ClearArray $cnt, $base" %}
 
   ins_encode(aarch64_enc_clear_array_reg_reg(cnt, base));
@@ -10074,7 +10096,7 @@
 
   effect(DEF cr, USE op1, USE op2);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmpw  $op1, $op2" %}
 
   ins_encode(aarch64_enc_cmpw(op1, op2));
@@ -10088,7 +10110,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmpw $op1, 0" %}
 
   ins_encode(aarch64_enc_cmpw_imm_addsub(op1, zero));
@@ -10102,7 +10124,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST + 1);
+  ins_cost(INSN_COST);
   format %{ "cmpw  $op1, $op2" %}
 
   ins_encode(aarch64_enc_cmpw_imm_addsub(op1, op2));
@@ -10116,7 +10138,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST + 2);
+  ins_cost(INSN_COST * 2);
   format %{ "cmpw  $op1, $op2" %}
 
   ins_encode(aarch64_enc_cmpw_imm(op1, op2));
@@ -10134,7 +10156,7 @@
 
   effect(DEF cr, USE op1, USE op2);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmpw  $op1, $op2\t# unsigned" %}
 
   ins_encode(aarch64_enc_cmpw(op1, op2));
@@ -10148,7 +10170,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmpw $op1, #0\t# unsigned" %}
 
   ins_encode(aarch64_enc_cmpw_imm_addsub(op1, zero));
@@ -10162,7 +10184,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST + 1);
+  ins_cost(INSN_COST);
   format %{ "cmpw  $op1, $op2\t# unsigned" %}
 
   ins_encode(aarch64_enc_cmpw_imm_addsub(op1, op2));
@@ -10176,7 +10198,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST + 2);
+  ins_cost(INSN_COST * 2);
   format %{ "cmpw  $op1, $op2\t# unsigned" %}
 
   ins_encode(aarch64_enc_cmpw_imm(op1, op2));
@@ -10190,7 +10212,7 @@
 
   effect(DEF cr, USE op1, USE op2);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmp  $op1, $op2" %}
 
   ins_encode(aarch64_enc_cmp(op1, op2));
@@ -10204,7 +10226,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "tst  $op1" %}
 
   ins_encode(aarch64_enc_cmp_imm_addsub(op1, zero));
@@ -10218,7 +10240,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST + 1);
+  ins_cost(INSN_COST);
   format %{ "cmp  $op1, $op2" %}
 
   ins_encode(aarch64_enc_cmp_imm_addsub(op1, op2));
@@ -10232,7 +10254,7 @@
 
   effect(DEF cr, USE op1);
 
-  ins_cost(DEFAULT_COST + 2);
+  ins_cost(INSN_COST * 2);
   format %{ "cmp  $op1, $op2" %}
 
   ins_encode(aarch64_enc_cmp_imm(op1, op2));
@@ -10246,7 +10268,7 @@
 
   effect(DEF cr, USE op1, USE op2);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmp  $op1, $op2\t // ptr" %}
 
   ins_encode(aarch64_enc_cmpp(op1, op2));
@@ -10260,7 +10282,7 @@
 
   effect(DEF cr, USE op1, USE op2);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmp  $op1, $op2\t // compressed ptr" %}
 
   ins_encode(aarch64_enc_cmpn(op1, op2));
@@ -10274,7 +10296,7 @@
 
   effect(DEF cr, USE op1, USE zero);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmp  $op1, 0\t // ptr" %}
 
   ins_encode(aarch64_enc_testp(op1));
@@ -10288,7 +10310,7 @@
 
   effect(DEF cr, USE op1, USE zero);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "cmp  $op1, 0\t // compressed ptr" %}
 
   ins_encode(aarch64_enc_testn(op1));
@@ -10305,7 +10327,7 @@
 %{
   match(Set cr (CmpF src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(3 * INSN_COST);
   format %{ "fcmps $src1, $src2" %}
 
   ins_encode %{
@@ -10319,7 +10341,7 @@
 %{
   match(Set cr (CmpF src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(3 * INSN_COST);
   format %{ "fcmps $src1, 0.0" %}
 
   ins_encode %{
@@ -10333,7 +10355,7 @@
 %{
   match(Set cr (CmpD src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(3 * INSN_COST);
   format %{ "fcmpd $src1, $src2" %}
 
   ins_encode %{
@@ -10347,7 +10369,7 @@
 %{
   match(Set cr (CmpD src1 src2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(3 * INSN_COST);
   format %{ "fcmpd $src1, 0.0" %}
 
   ins_encode %{
@@ -10362,7 +10384,7 @@
   match(Set dst (CmpF3 src1 src2));
   effect(KILL cr);
 
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(5 * INSN_COST);
   format %{ "fcmps $src1, $src2\n\t"
             "csinvw($dst, zr, zr, eq\n\t"
             "csnegw($dst, $dst, $dst, lt)"
@@ -10390,7 +10412,7 @@
   match(Set dst (CmpD3 src1 src2));
   effect(KILL cr);
 
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(5 * INSN_COST);
   format %{ "fcmpd $src1, $src2\n\t"
             "csinvw($dst, zr, zr, eq\n\t"
             "csnegw($dst, $dst, $dst, lt)"
@@ -10417,7 +10439,7 @@
   match(Set dst (CmpF3 src1 zero));
   effect(KILL cr);
 
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(5 * INSN_COST);
   format %{ "fcmps $src1, 0.0\n\t"
             "csinvw($dst, zr, zr, eq\n\t"
             "csnegw($dst, $dst, $dst, lt)"
@@ -10444,7 +10466,7 @@
   match(Set dst (CmpD3 src1 zero));
   effect(KILL cr);
 
-  ins_cost(DEFAULT_COST * 3);
+  ins_cost(5 * INSN_COST);
   format %{ "fcmpd $src1, 0.0\n\t"
             "csinvw($dst, zr, zr, eq\n\t"
             "csnegw($dst, $dst, $dst, lt)"
@@ -10470,7 +10492,7 @@
   match(Set dst (CmpLTMask p q));
   effect(KILL cr);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(3 * INSN_COST);
 
   format %{ "cmpw $p, $q\t# cmpLTMask\n\t"
             "csetw $dst, lt\n\t"
@@ -10491,7 +10513,7 @@
   match(Set dst (CmpLTMask src zero));
   effect(KILL cr);
 
-  ins_cost(DEFAULT_COST_LOW);
+  ins_cost(INSN_COST);
 
   format %{ "asrw $dst, $src, #31\t# cmpLTMask0" %}
 
@@ -10512,7 +10534,7 @@
   effect(DEF dst, USE src1, USE src2, KILL cr);
   size(8);
 
-  ins_cost(DEFAULT_COST * 2);
+  ins_cost(INSN_COST * 3);
   format %{
     "cmpw $src1 $src2\t signed int\n\t"
     "cselw $dst, $src1, $src2 lt\t"
@@ -10537,7 +10559,7 @@
   effect(DEF dst, USE src1, USE src2, KILL cr);
   size(8);
 
-  ins_cost(DEFAULT_COST * 2);
+  ins_cost(INSN_COST * 3);
   format %{
     "cmpw $src1 $src2\t signed int\n\t"
     "cselw $dst, $src1, $src2 gt\t"
@@ -10728,7 +10750,7 @@
 
   // TODO
   // identify correct cost
-  ins_cost(DEFAULT_COST);
+  ins_cost(5 * INSN_COST);
   format %{ "fastlock $object,$box\t! kills $tmp,$tmp2" %}
 
   ins_encode(aarch64_enc_fast_lock(object, box, tmp, tmp2));
@@ -10741,7 +10763,7 @@
   match(Set cr (FastUnlock object box));
   effect(TEMP tmp, TEMP tmp2);
 
-  ins_cost(300);
+  ins_cost(5 * INSN_COST);
   format %{ "fastunlock $object,$box\t! kills $tmp, $tmp2" %}
 
   ins_encode(aarch64_enc_fast_unlock(object, box, tmp, tmp2));
@@ -10920,8 +10942,6 @@
 %{
   match(Set ex_oop (CreateEx));
 
-  ins_cost(0);
-
   format %{ " -- \t// exception oop; no code emitted" %}
 
   size(0);
diff -r 5a8c184c37d4 -r a16c651450e4 src/cpu/aarch64/vm/aarch64_ad.m4
--- a/src/cpu/aarch64/vm/aarch64_ad.m4	Thu Apr 03 22:51:42 2014 +0100
+++ b/src/cpu/aarch64/vm/aarch64_ad.m4	Tue Apr 08 14:58:30 2014 +0100
@@ -7,7 +7,7 @@
                          immI src3, rFlagsReg cr) %{
   match(Set dst ($2$1 src1 ($4$1 src2 src3)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$3  $dst, $src1, $src2, $5 $src3" %}
 
   ins_encode %{
@@ -30,7 +30,7 @@
   ifelse($2,Xor,
     match(Set dst (Xor$1 m1 (Xor$1 src2 src1)));,
     match(Set dst ($2$1 src1 (Xor$1 src2 m1)));)
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$3  $dst, $src1, $src2" %}
 
   ins_encode %{
@@ -52,7 +52,7 @@
   ifelse($2,Xor,
     match(Set dst ($2$1 src4 (Xor$1($4$1 src2 src3) src1)));,
     match(Set dst ($2$1 src1 (Xor$1($4$1 src2 src3) src4)));)
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$3  $dst, $src1, $src2, $5 $src3" %}
 
   ins_encode %{
@@ -70,7 +70,7 @@
                          iReg$1 src1, imm$1_M1 m1,
                          rFlagsReg cr) %{
   match(Set dst (Xor$1 src1 m1));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$2  $dst, $src1, zr" %}
 
   ins_encode %{
@@ -131,7 +131,7 @@
   predicate((unsigned int)n->in(2)->get_int() <= $2
             && (unsigned int)n->in(1)->in(2)->get_int() <= $2);
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "$4  $dst, $src, $rshift_count - $lshift_count, #$2 - $lshift_count" %}
   ins_encode %{
     int lshift = $lshift_count$$constant, rshift = $rshift_count$$constant;
@@ -155,7 +155,7 @@
 %{
   match(Set dst (And$1 ($2$1 src rshift) mask));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$3 $dst, $src, $mask" %}
   ins_encode %{
     int rshift = $rshift$$constant;
@@ -175,7 +175,7 @@
 %{
   match(Set dst (ConvI2L (AndI (URShiftI src rshift) mask)));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST * 2);
   format %{ "ubfx $dst, $src, $mask" %}
   ins_encode %{
     int rshift = $rshift$$constant;
@@ -195,7 +195,7 @@
   match(Set dst ($3$1 (LShift$1 src1 lshift) (URShift$1 src2 rshift)));
   predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & $2));
 
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "extr $dst, $src1, $src2, #$rshift" %}
 
   ins_encode %{
@@ -217,7 +217,7 @@
   effect(DEF dst, USE src, USE shift);
 
   format %{ "$2    $dst, $src, $shift" %}
-  ins_cost(2*DEFAULT_COST);
+  ins_cost(INSN_COST * 3);
   ins_encode %{
     __ subw(rscratch1, zr, as_Register($shift$$reg));
     __ $3(as_Register($dst$$reg), as_Register($src$$reg),
@@ -233,7 +233,7 @@
   effect(DEF dst, USE src, USE shift);
 
   format %{ "$2    $dst, $src, $shift" %}
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   ins_encode %{
     __ $3(as_Register($dst$$reg), as_Register($src$$reg),
 	    as_Register($shift$$reg));
@@ -277,7 +277,7 @@
 instruct $3Ext$1(iReg$2NoSp dst, iReg$2 src1, iReg$1orL2I src2, rFlagsReg cr)
 %{
   match(Set dst ($3$2 src1 (ConvI2L src2)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$4  $dst, $src1, $6 $src2" %}
 
    ins_encode %{
@@ -293,7 +293,7 @@
 instruct $3Ext$1_$6(iReg$1NoSp dst, iReg$1 src1, iReg$1 src2, immI_`'eval($7-$2) lshift, immI_`'eval($7-$2) rshift, rFlagsReg cr)
 %{
   match(Set dst ($3$1 src1 EXTEND($1, $4, src2, lshift, rshift)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$5  $dst, $src1, $6 $src2" %}
 
    ins_encode %{
@@ -315,7 +315,7 @@
 instruct $3Ext$1_$5_and(iReg$1NoSp dst, iReg$1 src1, iReg$1 src2, imm$1_$2 mask, rFlagsReg cr)
 %{
   match(Set dst ($3$1 src1 (And$1 src2 mask)));
-  ins_cost(DEFAULT_COST);
+  ins_cost(INSN_COST);
   format %{ "$4  $dst, $src1, $src2, $5" %}
 
    ins_encode %{


More information about the aarch64-port-dev mailing list