On Tue, Jun 27, 2017 at 8:27 AM, Renlin Li <renlin...@foss.arm.com> wrote: > Hi Andrew, > > On 25/06/17 22:38, Andrew Pinski wrote: >> >> On Tue, Jun 6, 2017 at 3:56 AM, Renlin Li <renlin...@foss.arm.com> wrote: >>> >>> Hi all, >>> >>> In this patch, a new integer register operand modifier 'r' is added. This >>> will use the >>> proper register name according to the mode of corresponding operand. >>> >>> 'w' register for scalar integer mode smaller than DImode >>> 'x' register for DImode >>> >>> This allows more flexibility and would meet people's expectations. >>> It will help for ILP32 and LP64, and big-endian case. >>> >>> A new section is added to document the AArch64 operand modifiers which >>> might >>> be used in inline assembly. It's not an exhaustive list covers every >>> modifier. >>> Only the most common and useful ones are documented. >>> >>> The default behavior of integer operand without modifier is clearly >>> documented >>> as well. It's not changed so that the patch shouldn't break anything. >>> >>> So with this patch, it should resolve the issues in PR63359. >>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63359 >>> >>> >>> aarch64-none-elf regression test Okay. Okay to check in? >> >> >> I think 'r' modifier is very fragile and can be used incorrectly and >> wrong in some cases really.. > > > The user could always (or be encouraged to) opt to a strict register > modifier to enforce consistent behavior in all cases. > > I agree the flexibility might bring unexpected behavior in corner cases. > Do you have any examples to share off the top of your head? So that we can > discuss the benefit and pitfalls, and decide to improve the patch or > withdraw it.
One thing is TImode is missing. I have an use case of __int128_t inside inline-asm. For me %r and TImode would produce "x0, x1". This is one of the reasons why I said it is fragile. > >> I like the documentation though. As an aside %H is not documented here. Noticed it because I am using %H with TImode. Thanks, Andrew > > Thanks, > Renlin > > >> >> Thanks, >> Andrew >> >>> >>> gcc/ChangeLog: >>> >>> 2017-06-06 Renlin Li <renlin...@arm.com> >>> >>> PR target/63359 >>> * config/aarch64/aarch64.c (aarch64_print_operand): Add 'r' >>> modifier. >>> * doc/extend.texi (AArch64Operandmodifiers): New section.