Fix PR43432, vectorize backwards stepping loads

H.J. Lu hjl.tools@gmail.com
Fri Sep 17 16:55:00 GMT 2010


On Thu, Sep 9, 2010 at 7:30 AM, Michael Matz <matz@suse.de> wrote:
> Hi,
>
> On Wed, 8 Sep 2010, Ira Rosen wrote:
>
>> > Regstrapped on x86_64-linux.  I've had to add x86_64-*-* to
>> > target-supports.exp/vect_perm recognition which in turn makes
>> > vect/slp-perm-8.c and vect/slp-perm-9.c fail then.  That's most probably
>> > because while x86_64 supports permutation for 4 and 8-sized elements it
>> > doesn't do so for char (slp-perm-8.c) or short (slp-perm-9.c).  I'm going
>> > to investigate this but seek feedback on the patch itself already now.
>> >
>>
>> Looks good to me.
>
> Okay, so here's the complete patch.  Functionality is unchanged, but I
> extended the testsuite to have vect_perm_byte and vect_perm_short
> predicates (using them in slp-perm-8.c and slp-perm-9.c), so that I can
> enable vect_perm on x86_64.  With this one I get no regressions on
> x86_64-linux (all default languages).  Okay for trunk?
>
>
> Ciao,
> Michael.
> --
>        PR tree-optimization/43432
>        * tree-vect-data-refs.c (vect_analyze_data_ref_access):
>        Accept backwards consecutive accesses.
>        (vect_create_data_ref_ptr): If step is negative generate
>        decreasing IVs.
>        * tree-vect-stmts.c (vectorizable_store): Reject negative steps.
>        (perm_mask_for_reverse, reverse_vec_elements): New functions.
>        (vectorizable_load): Handle loads with negative steps when easily
>        possible.
>
> testsuite/
>        PR tree-optimization/43432
>        * lib/target-supports.exp (check_effective_target_vect_perm_byte,
>        check_effective_target_vect_perm_short): New predicates.
>        (check_effective_target_vect_perm): Include x86_64.
>        * gcc.dg/vect/pr43432.c: New test.
>        * gcc.dg/vect/vect-114.c: Adjust.
>        * gcc.dg/vect/vect-15.c: Ditto.
>        * gcc.dg/vect/slp-perm-8.c: Use new predicate.
>        * gcc.dg/vect/slp-perm-9.c: Ditto.
>

This may have caused:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45706


H.J.



More information about the Gcc-patches mailing list