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