Iain Sandoe <i...@sandoe.co.uk> writes:
> Hi,
>
> The armv8_arm manual [C6.2.226, ROR (immediate)] uses a # in front
> of the immediate rotation quantity.
>
> Although, it seems, GAS is able to infer the # (or is leninent about
> its absence) assemblers based on the LLVM back end expect it and error out.
>
> tested on aarch64-linux-gnu (gcc115) and aarch64-darwin20 (experimental)

Sorry for the slow reply, didn't see this till now.

The patch is OK in principle, and personally I prefer “#”.  But how far
does this spread?  Are only ROR modifiers on logical patterns affected?
Or is the use of a paranthesised expression instead of a literal the thing
that makes the difference?  GCC is generally quite lax at including “#”,
so I'd expect more fallout than this.

Thanks,
Richard

>
> OK for master?
> thanks
> Iain
>
> gcc/ChangeLog:
>
>       * config/aarch64/aarch64.md (<optab>_rol<mode>3): Add a '#'
>       mark in front of the immediate quantity.
>       (<optab>_rolsi3_uxtw): Likewise.
> ---
> gcc/config/aarch64/aarch64.md | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
> index 45d9c6ac45a..e0de82c938a 100644
> --- a/gcc/config/aarch64/aarch64.md
> +++ b/gcc/config/aarch64/aarch64.md
> @@ -4416,7 +4416,7 @@
>                     (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
>                    (match_operand:GPI 3 "register_operand" "r")))]
>   ""
> -  "<logical>\\t%<w>0, %<w>3, %<w>1, ror (<sizen> - %2)"
> +  "<logical>\\t%<w>0, %<w>3, %<w>1, ror #(<sizen> - %2)"
>   [(set_attr "type" "logic_shift_imm")]
> )
>
> @@ -4441,7 +4441,7 @@
>                     (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
>                    (match_operand:SI 3 "register_operand" "r"))))]
>   ""
> -  "<logical>\\t%w0, %w3, %w1, ror (32 - %2)"
> +  "<logical>\\t%w0, %w3, %w1, ror #(32 - %2)"
>   [(set_attr "type" "logic_shift_imm")]
> )

Reply via email to