On Wed, Oct 19, 2016 at 12:38 PM, Bin Cheng <bin.ch...@arm.com> wrote:
> Hi,
> This is the patch fixing spec mis-compare issue reported in PR78005.  In the 
> original patch, boundary condition was mis-handled when generating guard 
> checking if vectorized/scalar loop should be preferred.  This isn't an issue 
> in general, but in cases we need to peel for gaps, as well as skipping branch 
> of epilogue loop can be optimized out, it could result in more iterations 
> being executed.  That's why the mis-compare issue happens.  This patch 
> corrects the bug, also cleans up existing code that computes loop niters and 
> its upper bound.  The refactoring improves niters bound information for 
> epilogue loop, thus the patch adjusts related tests.  An execution test is 
> also added.
>
> With the patch, mis-compare issue is fixed.  Bootstrap and test on x86_64 and 
> AArch64.  Is it OK?

Ok.

Thanks,
Richard.

> Thanks,
> bin
>
> 2016-10-18  Bin Cheng  <bin.ch...@arm.com>
>
>         PR tree-optimization/78005
>         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Compute
>         upper (included) bound for niters of prolog loop.
>         (vect_gen_scalar_loop_niters): Change parameter VF to VFM1.
>         Compute niters of scalar loop above which vectorized loop is
>         preferred, as well as the upper (included) bound for the niters.
>         (vect_do_peeling): Record niter bound for loops accordingly.
>
> gcc/testsuite/ChangeLog
> 2016-10-18  Bin Cheng  <bin.ch...@arm.com>
>
>         PR tree-optimization/78005
>         * gcc.dg/vect/pr78005.c: New.
>         * gcc.target/i386/l_fma_float_1.c: Revise test.
>         * gcc.target/i386/l_fma_float_2.c: Ditto.
>         * gcc.target/i386/l_fma_float_3.c: Ditto.
>         * gcc.target/i386/l_fma_float_4.c: Ditto.
>         * gcc.target/i386/l_fma_float_5.c: Ditto.
>         * gcc.target/i386/l_fma_float_6.c: Ditto.
>         * gcc.target/i386/l_fma_double_1.c: Ditto.
>         * gcc.target/i386/l_fma_double_2.c: Ditto.
>         * gcc.target/i386/l_fma_double_3.c: Ditto.
>         * gcc.target/i386/l_fma_double_4.c: Ditto.
>         * gcc.target/i386/l_fma_double_5.c: Ditto.
>         * gcc.target/i386/l_fma_double_6.c: Ditto.

Reply via email to