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] Simple optimization for MASK_STORE.


On Thu, Jul 23, 2015 at 10:03 PM, Jeff Law <law@redhat.com> wrote:
> On 07/20/2015 09:05 AM, Yuri Rumyantsev wrote:
>>
>> Hi Jeff!
>>
>> Thanks for your details comments.
>>
>> You asked:
>> How are conditionals on vectors usually handled?  You should try to
>> mimick that and report, with detail, why that's not working.
>>
>> In current implementation of vectorization pass all comparisons are
>> handled through COND_EXPR, i.e. vect-pattern pass transforms all
>> comparisons producing bool values to conditional expressions like a[i]
>> != 0  --> a[i]!=0? 1: 0 which vectorizers transforms to
>> vect-cond-expr. So we don't have operations with vector operands and
>> scalar (bool) result.
>> To implement such operations I introduced target-hook. Could you
>> propose another solution implementing it?
>
> Is there any rationale given anywhere for the transformation into
> conditional expressions?  ie, is there any reason why we can't have a
> GIMPLE_COND where the expression is a vector condition?

No rationale for equality compare which would have the semantic of
having all elements equal or not equal.  But you can't define a sensible
ordering (that HW implements) for other compare operators and you
obviously need a single boolean result, not a vector of element comparison
results.

I've already replied that I'm fine allowing ==/!= whole-vector compares.
But one needs to check whether expansion does anything sensible
with them (either expand to integer subreg compares or add optabs
for the compares).

Richard.

> Thanks,
>
> Jeff
>


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