Home | History | Annotate | Download | only in SemaOpenCL
      1 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only
      2 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.1
      3 
      4 // Test with a target not supporting fp64.
      5 // RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -DNOFP64
      6 
      7 void f1(double da) { // expected-error {{type 'double' requires cl_khr_fp64 extension}}
      8   double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}}
      9   (void) 1.0; // expected-warning {{double precision constant requires cl_khr_fp64}}
     10 }
     11 
     12 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
     13 #ifdef NOFP64
     14 // expected-warning@-2{{unsupported OpenCL extension 'cl_khr_fp64' - ignoring}}
     15 #endif
     16 
     17 void f2(void) {
     18   double d;
     19 #ifdef NOFP64
     20 // expected-error@-2{{use of type 'double' requires cl_khr_fp64 extension to be enabled}}
     21 #endif
     22 
     23   (void) 1.0;
     24 #ifdef NOFP64
     25 // expected-warning@-2{{double precision constant requires cl_khr_fp64, casting to single precision}}
     26 #endif
     27 }
     28 
     29 #pragma OPENCL EXTENSION cl_khr_fp64 : disable
     30 #ifdef NOFP64
     31 // expected-warning@-2{{unsupported OpenCL extension 'cl_khr_fp64' - ignoring}}
     32 #endif
     33 
     34 void f3(void) {
     35   double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}}
     36 }
     37