[aarch64-port-dev ] RFR: 88158361: AArch64: Address calculation missed optimizations

Zhongwei Yao zhongwei.yao at linaro.org
Tue Jun 27 03:06:40 UTC 2017


On 26 June 2017 at 21:55, Andrew Haley <aph at redhat.com> wrote:

> 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" %}
>

For example, the old format is:
  add x0, x1, sxtw x2
The new format is:
  add x0, x1, x2, sxtw

Note there is no "#<amount>" here, only "<extend>" in above cases. So I
feel the new one fits better to ARM ARM, right?


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



-- 
Best regards,
Zhongwei


More information about the aarch64-port-dev mailing list