This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR52298


On Mon, Feb 20, 2012 at 04:11:13PM +0100, Richard Guenther wrote:
> This fixes PR52298, we need to use the proper DR step for outer
> loop vectorization.
> 
> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.

Thanks.

> *************** vectorizable_load (gimple stmt, gimple_s
> *** 4266,4272 ****
>     if (!STMT_VINFO_DATA_REF (stmt_info))
>       return false;
>   
> !   negative = tree_int_cst_compare (DR_STEP (dr), size_zero_node) < 0;
>     if (negative && ncopies > 1)
>       {
>         if (vect_print_dump_info (REPORT_DETAILS))
> --- 4268,4277 ----
>     if (!STMT_VINFO_DATA_REF (stmt_info))
>       return false;
>   
> !   negative = tree_int_cst_compare (loop && nested_in_vect_loop_p (loop, stmt)
> ! 				   ? STMT_VINFO_DR_STEP (stmt_info)
> ! 				   : DR_STEP (dr),
> ! 				   size_zero_node) < 0;

vectorizable_loop, unlike vectorizable_store, has nested_in_vect_loop
bool flag, so you could just test that instead of
loop && nested_in_vect_loop_p (loop, stmt) above and below.

>     if (negative && ncopies > 1)
>       {
>         if (vect_print_dump_info (REPORT_DETAILS))
> *************** vectorizable_load (gimple stmt, gimple_s
> *** 4654,4660 ****
>        nested within an outer-loop that is being vectorized.  */
>   
>     if (loop && nested_in_vect_loop_p (loop, stmt)
> !       && (TREE_INT_CST_LOW (DR_STEP (dr))
>   	  % GET_MODE_SIZE (TYPE_MODE (vectype)) != 0))
>       {
>         gcc_assert (alignment_support_scheme != dr_explicit_realign_optimized);
> --- 4659,4665 ----
>        nested within an outer-loop that is being vectorized.  */
>   
>     if (loop && nested_in_vect_loop_p (loop, stmt)
> !       && (TREE_INT_CST_LOW (STMT_VINFO_DR_STEP (stmt_info))
>   	  % GET_MODE_SIZE (TYPE_MODE (vectype)) != 0))
>       {
>         gcc_assert (alignment_support_scheme != dr_explicit_realign_optimized);

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]