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: Vector comparison


On 08/16/2010 12:24 PM, Richard Henderson wrote:
> On 08/15/2010 12:15 PM, Artem Shinkarov wrote:
>> SSE and AltiVec at least define vector comparison result as a vector
>> of 0 and -1. So I think that this would be an exotic architecture (but
>> I'm not sure). Anyway, if the target returns boolean value, then the
>> implementation of the hook should return constant vector of zeros for
>> false and constant vector of -1-s for true.
> 
> MIPS isn't so exotic.  The result of a float-pair comparison is to
> set a pair of condition codes.  One can then use a branch that examines
> both CC results, or a special move instruction for the SELECT operation.

All that said, as long as we're clever enough to fold

  t1 = (v1 == v2);
  t2 = t1 ? v3 : v4;

where ?: is also as defined by OpenCL into

  t2 = VCOND< v1 == v2 ? v3 : v4 >

where VCOND is as defined by the existing gcc tree code,
then we're likely to produce optimal results for MIPS.


r~


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