This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Question about vectorization limit
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Toon Moene <toon at moene dot org>
- Cc: Dehao Chen <dehao at google dot com>, GCC Development <gcc at gcc dot gnu dot org>
- Date: Fri, 31 May 2013 15:27:26 +0200
- Subject: Re: Question about vectorization limit
- References: <CAO2gOZX7_-08m_+AEybF0RwG=8Y_qPG_+wjmgsq6ymVWTr3=Vw at mail dot gmail dot com> <CAFiYyc3ehiZeyrXUb+wgj_tBi7WqmeHNQdFK9vDinnMWYHYswA at mail dot gmail dot com> <51A8A3EF dot 3010508 at moene dot org>
On Fri, May 31, 2013 at 3:21 PM, Toon Moene <toon@moene.org> wrote:
> On 05/31/2013 10:20 AM, Richard Biener wrote:
>
>> So - I doubt that you both do not get any ICEs and more performance.
>
>
> I added the second suggested patch:
>
> Index: tree-vect-loop-manip.c
> ===================================================================
> --- tree-vect-loop-manip.c (revision 199454)
> +++ tree-vect-loop-manip.c (working copy)
> @@ -985,7 +985,7 @@
>
> /* All loops have an outer scope; the only case loop->outer is NULL
> is for
> the function itself. */
> || !loop_outer (loop)
> - || loop->num_nodes != 2
> +/* || loop->num_nodes != 2 */
>
> || !empty_block_p (loop->latch)
> || !single_exit (loop)
> /* Verify that new loop exit condition can be trivially modified. */
>
> And I still get no ICE sicking 3.5 million lines of Fortran on this
> compiler. This is pretty suspicious - it might well be that checks further
> down will prohibit vectorization to do anything on loops like
>
> SUBROUTINE XYZ(A, B, N)
> DIMENSION A(N), B(N)
> DO I = 1, N
> IF (A(I) > 0.0) THEN
> A(I) = B(I) / A(I)
> ELSE
> A(I) = B(I)
> ENDIF
> ENDDO
> END
Well, you can easily look at the dumps. If the above is not if-converted
then we'll likely say that we cannot vectorize the GIMPLE_COND statement.
Richard.