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.