public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Richard Earnshaw (lists)" <Richard.Earnshaw@arm.com>
To: Bernd Edlinger <bernd.edlinger@hotmail.de>,
	Richard Biener <rguenther@suse.de>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
	Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>,
	Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>,
	Eric Botcazou <ebotcazou@adacore.com>, Jeff Law <law@redhat.com>,
	Jakub Jelinek <jakub@redhat.com>
Subject: Re: [PATCHv5] Fix not 8-byte aligned ldrd/strd on ARMv5 (PR 89544)
Date: Wed, 04 Sep 2019 15:48:00 -0000	[thread overview]
Message-ID: <f49000af-3c18-efcc-043c-481be60afe9b@arm.com> (raw)
In-Reply-To: <AM6PR10MB2566F14D7B75303201C3C10FE4B80@AM6PR10MB2566.EURPRD10.PROD.OUTLOOK.COM>

On 04/09/2019 16:00, Bernd Edlinger wrote:
> On 9/4/19 4:14 PM, Richard Earnshaw (lists) wrote:
>> On 04/09/2019 14:28, Bernd Edlinger wrote:
>>> On 9/4/19 2:53 PM, Richard Earnshaw (lists) wrote:
>>>> Index: gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
>>>> ===================================================================
>>>> --- gcc/testsuite/gcc.target/arm/unaligned-argument-2.c    (Revision 0)
>>>> +++ gcc/testsuite/gcc.target/arm/unaligned-argument-2.c    (Arbeitskopie)
>>>> @@ -0,0 +1,19 @@
>>>> +/* { dg-do compile } */
>>>> +/* { dg-require-effective-target arm_arm_ok } */
>>>> +/* { dg-require-effective-target arm_ldrd_strd_ok } */
>>>> +/* { dg-options "-marm -mno-unaligned-access -O3" } */
>>>> +
>>>> +struct s {
>>>> +  int a, b;
>>>> +} __attribute__((aligned(8)));
>>>> +
>>>> +struct s f0;
>>>> +
>>>> +void f(int a, int b, int c, int d, int e, struct s f)
>>>> +{
>>>> +  f0 = f;
>>>> +}
>>>> +
>>>> +/* { dg-final { scan-assembler-times "ldrd" 0 } } */
>>>> +/* { dg-final { scan-assembler-times "strd" 0 } } */
>>>> +/* { dg-final { scan-assembler-times "stm" 1 } } */
>>>>
>>>> I don't think this test is right.  While we can't use an LDRD to load the argument off the stack, there's nothing wrong with using an STRD to then store the value to f0 (as that is 8-byte aligned).  So the second and third scan-assembler tests are meaningless.
>>>>
>>>
>>> Ah, that is very similar to the unaligned-memcpy-2/3.c,
>>> see https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00157.html
>>>
>>> initially that is a movdi,
>>> then in subreg1 it is split in two movsi
>>> which is then re-assembled as ldm
>>>
>>>
>>> Not sure if that is intended in that way.
>>>
>>>
>>
>> Yeah, these are causing me some problems too, but that's because with some changes I'm working on I now see the compiler using r4 and r5, which leads to prologue and epilogue stores that distort the results.
>>
>> Tests like this are generally fragile - I hate 'em!!!!
>>
> 
> Yeah, that changed since r275063 introduced the unaligned-load/storedi
> 
> r275063 | edlinger | 2019-08-30 12:38:37 +0200 (Fr, 30. Aug 2019) | 10 Zeilen
> Geänderte Pfade:
>     M /trunk/gcc/ChangeLog
>     M /trunk/gcc/config/arm/arm.c
>     M /trunk/gcc/config/arm/arm.md
>     M /trunk/gcc/config/arm/neon.md
> 
> 2019-08-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
> 
>          * config/arm/arm.md (unaligned_loaddi,
>          unaligned_storedi): New unspec insn patterns.
>          * config/arm/neon.md (unaligned_storev8qi): Likewise.
>          * config/arm/arm.c (gen_cpymem_ldrd_strd): Use unaligned_loaddi
>          and unaligned_storedi for 4-byte aligned memory.
>          (arm_block_set_aligned_vect): Use unaligned_storev8qi for
>          4-byte aligned memory.
> 
> Since other than the movdi they are not split up but stay as ldrd/strd.
> But for some unknown reason ira assigns r4-5 to those although also
> r1-2 would be available. :-(
> 

r1-r2 can't be used in Arm state as the register has to start on an even 
boundary.  But ira has already used r3 for the address of the store (it 
could have picked r1) and now r4-r5 is the next even-numbered pair.  So 
we end up with needing to save some call-clobbered regs.

R.
> 
> Bernd.
> 

  reply	other threads:[~2019-09-04 15:48 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-10 12:51 [PATCHv2] " Bernd Edlinger
2019-03-19 14:01 ` [PING] " Bernd Edlinger
2019-03-21 11:26 ` Richard Biener
2019-03-22 17:47   ` Bernd Edlinger
2019-03-25  9:28     ` Richard Biener
2019-07-30 22:13       ` [PATCHv3] " Bernd Edlinger
2019-07-31 13:17         ` Richard Earnshaw (lists)
2019-08-01 11:19           ` Bernd Edlinger
2019-08-02  9:10             ` Richard Earnshaw (lists)
2019-08-02 13:11         ` Richard Biener
2019-08-02 19:01           ` Bernd Edlinger
2019-08-08 14:20             ` [PATCHv4] " Bernd Edlinger
2019-08-14 10:54               ` [PING] " Bernd Edlinger
2019-08-14 12:27               ` Richard Biener
2019-08-14 22:26                 ` Bernd Edlinger
2019-08-15  8:58                   ` Richard Biener
2019-08-15 12:38                     ` Bernd Edlinger
2019-08-15 13:03                       ` Richard Biener
2019-08-15 14:33                         ` Richard Biener
2019-08-15 15:28                         ` Bernd Edlinger
2019-08-15 17:42                           ` Richard Biener
2019-08-15 21:19                             ` [PATCHv5] " Bernd Edlinger
2019-08-20  5:38                               ` Jeff Law
2019-08-20 15:04                               ` John David Anglin
     [not found]                                 ` <0d39b64f-67d9-7857-cf4e-36f09c0dc15e@bell.net>
2019-08-20 16:03                                   ` Fwd: " Bernd Edlinger
2019-09-04 12:53                               ` Richard Earnshaw (lists)
2019-09-04 13:29                                 ` Bernd Edlinger
2019-09-04 14:14                                   ` Richard Earnshaw (lists)
2019-09-04 15:00                                     ` Bernd Edlinger
2019-09-04 15:48                                       ` Richard Earnshaw (lists) [this message]
2019-09-05  9:21                                         ` Richard Earnshaw (lists)
2019-09-05  9:35                                           ` Bernd Edlinger
2019-09-06 10:15                                 ` Bernd Edlinger
2019-09-06 10:18                                   ` Richard Earnshaw (lists)
2019-08-15 21:27                             ` [PATCH] Sanitizing the middle-end interface to the back-end for strict alignment Bernd Edlinger
2019-08-17 10:11                               ` Bernd Edlinger
2019-08-23  0:01                                 ` Jeff Law
2019-08-23  0:05                               ` Jeff Law
2019-08-23 15:15                                 ` [PING] " Bernd Edlinger
2019-08-27 10:07                               ` Kyrill Tkachov
2019-08-28 11:50                                 ` Bernd Edlinger
2019-08-28 12:01                                   ` Kyrill Tkachov
2019-08-28 13:54                                     ` Christophe Lyon
2019-08-28 21:48                                       ` Bernd Edlinger
2019-08-29  9:09                                         ` Kyrill Tkachov
2019-08-29 10:00                                           ` Christophe Lyon
2019-08-29 22:57                                             ` Bernd Edlinger
2019-08-30 10:07                                               ` Kyrill Tkachov
2019-08-30 15:22                                               ` Christophe Lyon
2019-08-14 11:56             ` [PATCHv3] Fix not 8-byte aligned ldrd/strd on ARMv5 (PR 89544) Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f49000af-3c18-efcc-043c-481be60afe9b@arm.com \
    --to=richard.earnshaw@arm.com \
    --cc=bernd.edlinger@hotmail.de \
    --cc=ebotcazou@adacore.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=kyrylo.tkachov@foss.arm.com \
    --cc=law@redhat.com \
    --cc=ramana.radhakrishnan@arm.com \
    --cc=rguenther@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).