[aarch64-port-dev ] RFR: 88158361: AArch64: Address calculation missed optimizations
Andrew Haley
aph at redhat.com
Mon Jun 26 13:55:56 UTC 2017
One other thing: this hunk looks wrong:
diff --git a/src/cpu/aarch64/vm/aarch64.ad b/src/cpu/aarch64/vm/aarch64.ad
--- a/src/cpu/aarch64/vm/aarch64.ad
+++ b/src/cpu/aarch64/vm/aarch64.ad
@@ -12789,7 +12800,7 @@
%{
match(Set dst (AddL src1 (ConvI2L src2)));
ins_cost(INSN_COST);
- format %{ "add $dst, $src1, sxtw $src2" %}
+ format %{ "add $dst, $src1, $src2, sxtw" %}
ins_encode %{
__ add(as_Register($dst$$reg), as_Register($src1$$reg),
@@ -12802,7 +12813,7 @@
%{
match(Set dst (SubL src1 (ConvI2L src2)));
ins_cost(INSN_COST);
- format %{ "sub $dst, $src1, sxtw $src2" %}
+ format %{ "sub $dst, $src1, $src2, sxtw" %}
According to the ARM ARM, the format is:
ADD <Xd|SP>, <Xn|SP>, <R><m>{, <extend> {#<amount>}}
or
ADD <Xd>, <Xn>, <Xm>{, <shift> #<amount>}
This change is caused by
diff --git a/src/cpu/aarch64/vm/aarch64_ad.m4 b/src/cpu/aarch64/vm/aarch64_ad.m4
--- a/src/cpu/aarch64/vm/aarch64_ad.m4
+++ b/src/cpu/aarch64/vm/aarch64_ad.m4
@@ -305,7 +305,7 @@
%{
match(Set dst ($3$2 src1 (ConvI2L src2)));
ins_cost(INSN_COST);
- format %{ "$4 $dst, $src1, $5 $src2" %}
+ format %{ "$4 $dst, $src1, $src2, $5" %}
ins_encode %{
__ $4(as_Register($dst$$reg), as_Register($src1$$reg),
@@ -321,7 +321,7 @@
%{
match(Set dst ($3$1 src1 EXTEND($1, $4, src2, lshift, rshift)));
ins_cost(INSN_COST);
- format %{ "$5 $dst, $src1, $6 $src2" %}
+ format %{ "$5 $dst, $src1, $src2, $6" %}
ins_encode %{
__ $5(as_Register($dst$$reg), as_Register($src1$$reg),
--
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
More information about the aarch64-port-dev
mailing list