http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58845
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Well, what does OpenCL specify here? IIRC we've decided on -1 (all bits set)
as true for vectors and 0 as false. I'd prefer to allow trivial lowering
to | and & which IIRC are already supported. That means that
v1 && v2
should be emitted as GENERIC
(v1 != { 0, 0, ... }) && (v2 != { 0, 0, ... })
where the ANDIF semantics don't make sense for vectors(?) and thus we
can directly emit GENERIC
(v1 != { 0, 0, ... }) & (v2 != { 0, 0, ... })
from the frontend.