Bill Schmidt <wschm...@linux.vnet.ibm.com> writes:
> Index: gcc/tree-vect-stmts.c
> ===================================================================
> --- gcc/tree-vect-stmts.c     (revision 252760)
> +++ gcc/tree-vect-stmts.c     (working copy)
> @@ -1091,8 +1091,19 @@ vect_model_load_cost (stmt_vec_info stmt_info, int
>                       prologue_cost_vec, body_cost_vec, true);
>    if (memory_access_type == VMAT_ELEMENTWISE
>        || memory_access_type == VMAT_STRIDED_SLP)
> -    inside_cost += record_stmt_cost (body_cost_vec, ncopies, vec_construct,
> -                                  stmt_info, 0, vect_body);
> +    {
> +      int group_size = GROUP_SIZE (stmt_info);
> +      int nunits = TYPE_VECTOR_SUBPARTS (STMT_VINFO_VECTYPE (stmt_info));
> +      if (group_size < nunits)
> +     {
> +       if (dump_enabled_p ())
> +         dump_printf_loc (MSG_NOTE, vect_location,
> +                          "vect_model_load_cost: vec_construct required");
> +       inside_cost += record_stmt_cost (body_cost_vec, ncopies,
> +                                        vec_construct, stmt_info, 0,
> +                                        vect_body);
> +     }
> +    }
>  
>    if (dump_enabled_p ())
>      dump_printf_loc (MSG_NOTE, vect_location,

This feels like we've probably got the wrong memory_access_type.
If it's a just a contiguous load then it should be VMAT_CONTIGUOUS
instead.

Thanks,
Richard


Reply via email to