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, testsuite] fix failure in test gcc.dg/vect/slp-perm-8.c


On Wed, May 30, 2012 at 7:46 PM, Greta Yorsh <Greta.Yorsh@arm.com> wrote:
> I'm attaching an updated version of the patch, addressing the comments from
> http://gcc.gnu.org/ml/gcc-patches/2012-04/msg01615.html
>
> This patch adds arm32 to targets that support vect_char_mult. In addition,
> the test is updated to prevent vectorization of the initialization loop. The
> expected number of vectorized loops is adjusted accordingly.
>
> No regression with check-gcc on qemu for arm-none-eabi cortex-a9 neon softfp
> arm/thumb.
>
> OK for trunk?

Ok.

Thanks,
Richard.

> Thanks,
> Greta
>
> ChangeLog
>
> gcc/testsuite
>
> 2012-05-30 ?Greta Yorsh ?<Greta.Yorsh at arm.com>
>
> ? ? ? ?* gcc.dg/vect/slp-perm-8.c (main): Prevent vectorization
> ? ? ? ?of the initialization loop.
> ? ? ? ?(dg-final): Adjust the expected number of vectorized loops
> ? ? ? ?depending on vect_char_mult target selector.
> ? ? ? ?* lib/target-supports.exp (check_effective_target_vect_char_mult):
> Add
> ? ? ? ? ?arm32 to targets
>
>
>> -----Original Message-----
>> From: Richard Earnshaw [mailto:rearnsha@arm.com]
>> Sent: 25 April 2012 17:30
>> To: Richard Guenther
>> Cc: Greta Yorsh; gcc-patches@gcc.gnu.org; mikestump@comcast.net;
>> ro@cebitec.uni-bielefeld.de
>> Subject: Re: [Patch, testsuite] fix failure in test gcc.dg/vect/slp-
>> perm-8.c
>>
>> On 25/04/12 15:31, Richard Guenther wrote:
>> > On Wed, Apr 25, 2012 at 4:27 PM, Greta Yorsh <Greta.Yorsh@arm.com>
>> wrote:
>> >> Richard Guenther wrote:
>> >>> On Wed, Apr 25, 2012 at 3:34 PM, Greta Yorsh <Greta.Yorsh@arm.com>
>> >>> wrote:
>> >>>> Richard Guenther wrote:
>> >>>>> On Wed, Apr 25, 2012 at 1:51 PM, Greta Yorsh
>> <Greta.Yorsh@arm.com>
>> >>>>> wrote:
>> >>>>>> The test gcc.dg/vect/slp-perm-8.c fails on arm-none-eabi with
>> neon
>> >>>>> enabled:
>> >>>>>> FAIL: gcc.dg/vect/slp-perm-8.c scan-tree-dump-times vect
>> >>> "vectorized
>> >>>>> 1
>> >>>>>> loops" 2
>> >>>>>>
>> >>>>>> The test expects 2 loops to be vectorized, while gcc
>> successfully
>> >>>>> vectorizes
>> >>>>>> 3 loops in this test using neon on arm. This patch adjusts the
>> >>>>> expected
>> >>>>>> output. Fixed test passes on qemu for arm and powerpc.
>> >>>>>>
>> >>>>>> OK for trunk?
>> >>>>>
>> >>>>> I think the proper fix is to instead of
>> >>>>>
>> >>>>> ? for (i = 0; i < N; i++)
>> >>>>> ? ? {
>> >>>>> ? ? ? input[i] = i;
>> >>>>> ? ? ? output[i] = 0;
>> >>>>> ? ? ? if (input[i] > 256)
>> >>>>> ? ? ? ? abort ();
>> >>>>> ? ? }
>> >>>>>
>> >>>>> use
>> >>>>>
>> >>>>> ? for (i = 0; i < N; i++)
>> >>>>> ? ? {
>> >>>>> ? ? ? input[i] = i;
>> >>>>> ? ? ? output[i] = 0;
>> >>>>> ? ? ? __asm__ volatile ("");
>> >>>>> ? ? }
>> >>>>>
>> >>>>> to prevent vectorization of initialization loops.
>> >>>>
>> >>>> Actually, it looks like both arm and powerpc vectorize this
>> >>> initialization loop (line 31), because the control flow is hoisted
>> >>> outside the loop by previous optimizations. In addition, arm with
>> neon
>> >>> vectorizes the second loop (line 39), but powerpc does not:
>> >>>>
>> >>>> 39: not vectorized: relevant stmt not supported: D.2163_8 = i_40 *
>> 9;
>> >>>>
>> >>>> If this is the expected behaviour for powerpc, then the patch I
>> >>> proposed is still needed to fix the test failure on arm. Also,
>> there
>> >>> would be no need to disable vectorization of the initialization
>> loop,
>> >>> right?
>> >>>
>> >>> Ah, I thought that was what changed. ?Btw, the if () abort () tries
>> to
>> >>> disable
>> >>> vectorization but does not succeed in doing so.
>> >>>
>> >>> Richard.
>> >>
>> >> Here is an updated patch. It prevents vectorization of the
>> initialization
>> >> loop, as Richard suggested, and updates the expected number of
>> vectorized
>> >> loops accordingly. This patch assumes that the second loop in main
>> (line 39)
>> >> should only be vectorized on arm with neon. ?The test passes for arm
>> and
>> >> powerpc.
>> >>
>> >> OK for trunk?
>> >
>> > If arm cannot handle 9 * i then the approrpiate condition would be
>> > vect_int_mult, not arm_neon_ok.
>> >
>>
>> The issue is that arm has (well, should be marked has having)
>> vect_char_mult. ?The difference in count of vectorized loops is based
>> on
>> that.
>>
>> R.
>>
>> > Ok with that change.
>> >
>> > Richard.
>> >
>> >> Thank you,
>> >> Greta
>> >>
>> >> gcc/testsuite/ChangeLog
>> >>
>> >> 2012-04-25 ?Greta Yorsh ?<Greta.Yorsh@arm.com>
>> >>
>> >> ? ? ? ?* gcc.dg/vect/slp-perm-8.c (main): Prevent
>> >> ? ? ? ?vectorization of initialization loop.
>> >> ? ? ? ?(dg-final): Adjust the expected number of
>> >> ? ? ? ?vectorized loops.
>> >>
>> >>
>> >>
>> >>
>> >
>>


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