This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, ARM] Enable ldrd/strd peephole rules unconditionally


On 11/18/16 12:58, Christophe Lyon wrote:
> On 17 November 2016 at 10:23, Kyrill Tkachov
> <kyrylo.tkachov@foss.arm.com> wrote:
>>
>> On 09/11/16 12:58, Bernd Edlinger wrote:
>>>
>>> Hi!
>>>
>>>
>>> This patch enables the ldrd/strd peephole rules unconditionally.
>>>
>>> It is meant to fix cases, where the patch to reduce the sha512
>>> stack usage splits ldrd/strd instructions into separate ldr/str insns,
>>> but is technically independent from the other patch:
>>>
>>> See https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00523.html
>>>
>>> It was necessary to change check_effective_target_arm_prefer_ldrd_strd
>>> to retain the true prefer_ldrd_strd tuning flag.
>>>
>>>
>>> Bootstrapped and reg-tested on arm-linux-gnueabihf.
>>> Is it OK for trunk?
>>
>>
>> This is ok.
>> Thanks,
>> Kyrill
>>
>
> Hi Bernd,
>
> Since you committed this patch (r242549), I'm seeing the new test
> failing on some arm*-linux-gnueabihf configurations:
>
> FAIL:  gcc.target/arm/pr53447-5.c scan-assembler-times ldrd 10
> FAIL:  gcc.target/arm/pr53447-5.c scan-assembler-times strd 9
>
> See http://people.linaro.org/~christophe.lyon/cross-validation/gcc/trunk/242549/report-build-info.html
> for a map of failures.
>
> Am I missing something?

Hi Christophe,

as always many thanks for your testing...

I have apparently only looked at the case -mfloat-abi=soft here, which
is what my other patch is going to address.  But all targets with
-mfpu=neon -mfloat-abi=hard can also use vldr.64 instead of ldrd
and vstr.64 instead of strd, which should be accepted as well.

So the attached patch should fix at least most of the fallout.

Is it OK for trunk?


Thanks
Bernd.
2016-11-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* gcc.target/arm/pr53447-5.c: Fix test expectations for neon-fpu.

Index: gcc/testsuite/gcc.target/arm/pr53447-5.c
===================================================================
--- gcc/testsuite/gcc.target/arm/pr53447-5.c	(revision 242588)
+++ gcc/testsuite/gcc.target/arm/pr53447-5.c	(working copy)
@@ -15,5 +15,8 @@ void foo(long long* p)
   p[9] -= p[10];
 }
 
-/* { dg-final { scan-assembler-times "ldrd" 10 } } */
-/* { dg-final { scan-assembler-times "strd" 9 } } */
+/* We accept neon instructions vldr.64 and vstr.64 as well.
+   Note: DejaGnu counts patterns with alternatives twice,
+   so actually there are only 10 loads and 9 stores.  */
+/* { dg-final { scan-assembler-times "(ldrd|vldr\\.64)" 20 } } */
+/* { dg-final { scan-assembler-times "(strd|vstr\\.64)" 18 } } */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]