On 09/27/2012 08:24 AM, Jakub Jelinek wrote:
> Hi!
> 
> As discussed in the PR, the only way how to request a vector float/double
> logical operation in C/C++ code without intrinsics is by casting to integer
> vectors temporarily, but we then generate v?p{and,or,xor} instead of *p[sd].
> 
> The following patch changes that if either both of the operands of
> vector integer and/or/xor are SUBREGs of the same vector float/double mode,
> or one is SUBREG and another one is CONST_VECTOR.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> 2012-09-27  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR target/54716
>       * config/i386/predicates.md (nonimmediate_or_const_vector_operand):
>       New predicate.
>       * config/i386/i386.c (ix86_expand_vector_logical_operator): New
>       function.
>       * config/i386/i386-protos.h (ix86_expand_vector_logical_operator): New
>       prototype.
>       * config/i386/sse.md (<code><mode>3 VI logic): Use it.
> 
>       * gcc.target/i386/xorps-sse2.c: Remove xfails.

Ok.


r~

Reply via email to