[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