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")] > )