xref: /aosp_15_r20/external/clang/test/SemaOpenCL/invalid-logical-ops-1.1.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
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