pan/bi: Identify extended FMA opcodes
[mesa.git] / include / CL / cl_version.h
1 /*******************************************************************************
2 * Copyright (c) 2018 The Khronos Group Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and/or associated documentation files (the
6 * "Materials"), to deal in the Materials without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sublicense, and/or sell copies of the Materials, and to
9 * permit persons to whom the Materials are furnished to do so, subject to
10 * the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included
13 * in all copies or substantial portions of the Materials.
14 *
15 * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
16 * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
17 * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
18 * https://www.khronos.org/registry/
19 *
20 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
27 ******************************************************************************/
28
29 #ifndef __CL_VERSION_H
30 #define __CL_VERSION_H
31
32 /* Detect which version to target */
33 #if !defined(CL_TARGET_OPENCL_VERSION)
34 #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)")
35 #define CL_TARGET_OPENCL_VERSION 220
36 #endif
37 #if CL_TARGET_OPENCL_VERSION != 100 && \
38 CL_TARGET_OPENCL_VERSION != 110 && \
39 CL_TARGET_OPENCL_VERSION != 120 && \
40 CL_TARGET_OPENCL_VERSION != 200 && \
41 CL_TARGET_OPENCL_VERSION != 210 && \
42 CL_TARGET_OPENCL_VERSION != 220
43 #pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)")
44 #undef CL_TARGET_OPENCL_VERSION
45 #define CL_TARGET_OPENCL_VERSION 220
46 #endif
47
48
49 /* OpenCL Version */
50 #if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2)
51 #define CL_VERSION_2_2 1
52 #endif
53 #if CL_TARGET_OPENCL_VERSION >= 210 && !defined(CL_VERSION_2_1)
54 #define CL_VERSION_2_1 1
55 #endif
56 #if CL_TARGET_OPENCL_VERSION >= 200 && !defined(CL_VERSION_2_0)
57 #define CL_VERSION_2_0 1
58 #endif
59 #if CL_TARGET_OPENCL_VERSION >= 120 && !defined(CL_VERSION_1_2)
60 #define CL_VERSION_1_2 1
61 #endif
62 #if CL_TARGET_OPENCL_VERSION >= 110 && !defined(CL_VERSION_1_1)
63 #define CL_VERSION_1_1 1
64 #endif
65 #if CL_TARGET_OPENCL_VERSION >= 100 && !defined(CL_VERSION_1_0)
66 #define CL_VERSION_1_0 1
67 #endif
68
69 /* Allow deprecated APIs for older OpenCL versions. */
70 #if CL_TARGET_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS)
71 #define CL_USE_DEPRECATED_OPENCL_2_1_APIS
72 #endif
73 #if CL_TARGET_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS)
74 #define CL_USE_DEPRECATED_OPENCL_2_0_APIS
75 #endif
76 #if CL_TARGET_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS)
77 #define CL_USE_DEPRECATED_OPENCL_1_2_APIS
78 #endif
79 #if CL_TARGET_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)
80 #define CL_USE_DEPRECATED_OPENCL_1_1_APIS
81 #endif
82 #if CL_TARGET_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS)
83 #define CL_USE_DEPRECATED_OPENCL_1_0_APIS
84 #endif
85
86 #endif /* __CL_VERSION_H */