Fix PR43432, vectorize backwards stepping loads

H.J. Lu hjl.tools@gmail.com
Fri Sep 24 15:31:00 GMT 2010


On Sat, Sep 18, 2010 at 8:57 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Fri, Sep 17, 2010 at 9:00 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> 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
>>
>
> This also caused:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45720


It also caused:

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

The vectorizer has been pretty much broken for a week. Is anyone
working on it?



-- 
H.J.



More information about the Gcc-patches mailing list