On Sep 19, 2017, at 3:58 PM, Richard Sandiford <richard.sandif...@linaro.org> 
wrote:
> 
> 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.

I tend to agree -- that will take more surgery to the code that detects strided 
loads in
both the cost model analysis and in vectorizable_load.

Bill

> 
> Thanks,
> Richard
> 
> 

Reply via email to