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