1*67e74705SXin Li// RUN: %clang_cc1 %s -verify -cl-std=CL1.1 -triple x86_64-unknown-linux-gnu 2*67e74705SXin Li 3*67e74705SXin Li#pragma OPENCL EXTENSION cl_khr_fp64 : enable 4*67e74705SXin Litypedef __attribute__((ext_vector_type(4))) float float4; 5*67e74705SXin Litypedef __attribute__((ext_vector_type(4))) double double4; 6*67e74705SXin Litypedef __attribute__((ext_vector_type(4))) int int4; 7*67e74705SXin Litypedef __attribute__((ext_vector_type(4))) long long4; 8*67e74705SXin Li 9*67e74705SXin Likernel void float_ops() { 10*67e74705SXin Li int flaf = 0.0f && 0.0f; // expected-error {{invalid operands}} 11*67e74705SXin Li int flof = 0.0f || 0.0f; // expected-error {{invalid operands}} 12*67e74705SXin Li float fbaf = 0.0f & 0.0f; // expected-error {{invalid operands}} 13*67e74705SXin Li float fbof = 0.0f | 0.0f; // expected-error {{invalid operands}} 14*67e74705SXin Li float fbxf = 0.0f ^ 0.0f; // expected-error {{invalid operands}} 15*67e74705SXin Li int flai = 0.0f && 0; // expected-error {{invalid operands}} 16*67e74705SXin Li int floi = 0.0f || 0; // expected-error {{invalid operands}} 17*67e74705SXin Li float ibaf = 0 & 0.0f; // expected-error {{invalid operands}} 18*67e74705SXin Li float ibof = 0 | 0.0f; // expected-error {{invalid operands}} 19*67e74705SXin Li float bnf = ~0.0f; // expected-error {{invalid argument type}} 20*67e74705SXin Li float lnf = !0.0f; // expected-error {{invalid argument type}} 21*67e74705SXin Li} 22*67e74705SXin Li 23*67e74705SXin Likernel void vec_float_ops() { 24*67e74705SXin Li float4 f4 = (float4)(0, 0, 0, 0); 25*67e74705SXin Li int4 f4laf = f4 && 0.0f; // expected-error {{invalid operands}} 26*67e74705SXin Li int4 f4lof = f4 || 0.0f; // expected-error {{invalid operands}} 27*67e74705SXin Li float4 f4baf = f4 & 0.0f; // expected-error {{invalid operands}} 28*67e74705SXin Li float4 f4bof = f4 | 0.0f; // expected-error {{invalid operands}} 29*67e74705SXin Li float4 f4bxf = f4 ^ 0.0f; // expected-error {{invalid operands}} 30*67e74705SXin Li float bnf4 = ~f4; // expected-error {{invalid argument type}} 31*67e74705SXin Li int4 lnf4 = !f4; // expected-error {{invalid argument type}} 32*67e74705SXin Li} 33*67e74705SXin Li 34*67e74705SXin Likernel void double_ops() { 35*67e74705SXin Li int flaf = 0.0 && 0.0; // expected-error {{invalid operands}} 36*67e74705SXin Li int flof = 0.0 || 0.0; // expected-error {{invalid operands}} 37*67e74705SXin Li double fbaf = 0.0 & 0.0; // expected-error {{invalid operands}} 38*67e74705SXin Li double fbof = 0.0 | 0.0; // expected-error {{invalid operands}} 39*67e74705SXin Li double fbxf = 0.0 ^ 0.0; // expected-error {{invalid operands}} 40*67e74705SXin Li int flai = 0.0 && 0; // expected-error {{invalid operands}} 41*67e74705SXin Li int floi = 0.0 || 0; // expected-error {{invalid operands}} 42*67e74705SXin Li double ibaf = 0 & 0.0; // expected-error {{invalid operands}} 43*67e74705SXin Li double ibof = 0 | 0.0; // expected-error {{invalid operands}} 44*67e74705SXin Li double bnf = ~0.0; // expected-error {{invalid argument type}} 45*67e74705SXin Li double lnf = !0.0; // expected-error {{invalid argument type}} 46*67e74705SXin Li} 47*67e74705SXin Li 48*67e74705SXin Likernel void vec_double_ops() { 49*67e74705SXin Li double4 f4 = (double4)(0, 0, 0, 0); 50*67e74705SXin Li long4 f4laf = f4 && 0.0; // expected-error {{invalid operands}} 51*67e74705SXin Li long4 f4lof = f4 || 0.0; // expected-error {{invalid operands}} 52*67e74705SXin Li double4 f4baf = f4 & 0.0; // expected-error {{invalid operands}} 53*67e74705SXin Li double4 f4bof = f4 | 0.0; // expected-error {{invalid operands}} 54*67e74705SXin Li double4 f4bxf = f4 ^ 0.0; // expected-error {{invalid operands}} 55*67e74705SXin Li double bnf4 = ~f4; // expected-error {{invalid argument type}} 56*67e74705SXin Li long4 lnf4 = !f4; // expected-error {{invalid argument type}} 57*67e74705SXin Li} 58