As per OpenCL specification, 6.3(g),
For scalar types, the logical operators shall return 0 if the result of the operation is false and 1 if the result is true. For vector types, the logical operators shall return 0 if the result of the operation is false and –1 (i.e. all bits set) if the result is true.
As per Spec 6.2.3, explicit conversions need source and destination vectors to be matching, which means convert_float4 is expecting a 4 element vector, but is getting a scalar value.