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 patch


On 08/18/2011 11:23 AM, Richard Guenther wrote:
Yeah, well.  That's really a question for language lawyers;)   I agree
that it would be nice to have mask ? val0 : val1 behave "the same"
for scalars and vectors.  The question is whether for vectors you
define it on the bit-level (which makes it equal to (mask&  val0) |
(~mask&  val1))
or on the vector component level.  The vector component level
is probably what people would expect.

Which means we have to treat mask ? val0 : val1 as
mask != {0,...} ? val0 : val1.

The definition in OpenCL makes zero sense to me. For byte operands it is custom-tailored after the SSE PMOVMSKB instruction, but there is no PMOVMSKW/PMOVMSKD instruction so you would need very slow bit shift operations before PMOVMSK. On the other hand, bit selection is for example in Altivec.


Do we have some way to contact anyone in the OpenCL standards group (CCing Chris Lattner)?

If you wanted to implement it, it would be mask < {0,...} ? val0 : val1. But really, since we're not implementing OpenCL C I would really prefer to have bit-level selection, and let a front-end implement the quirk.

Paolo


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