1 //===--- OpenCLExtensions.def - OpenCL extension list -----------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines the list of supported OpenCL extensions. 11 // 12 //===----------------------------------------------------------------------===// 13 14 // Macro OPENCLEXT or OPENCLEXT_INTERNAL can be defined to enumerate the 15 // OpenCL extensions listed in this file. 16 // 17 // If the extensions are to be enumerated without the supported OpenCL version, 18 // define OPENCLEXT(ext) where ext is the name of the extension. 19 // 20 // If the extensions are to be enumerated with supported OpenCL version, 21 // define OPENCLEXT_INTERNAL(ext, avail, core) where 22 // ext - name of the extension or optional core feature. 23 // avail - minimum OpenCL version supporting it. 24 // core - minimum OpenCL version when the extension becomes optional core 25 // feature or core feature. ~0U indicates not a core feature or an 26 // optional core feature. 27 28 #ifndef OPENCLEXT_INTERNAL 29 #ifndef OPENCLEXT 30 #pragma error "macro OPENCLEXT or OPENCLEXT_INTERNAL is required" 31 #else 32 #define OPENCLEXT_INTERNAL(ext, ...) OPENCLEXT(ext) 33 #endif // OPENCLEXT 34 #endif // OPENCLEXT_INTERNAL 35 36 // OpenCL 1.0. 37 OPENCLEXT_INTERNAL(cl_khr_3d_image_writes, 100, 200) 38 // fprounding mode is special since it is not mentioned beyond 1.0 39 OPENCLEXT_INTERNAL(cl_khr_select_fprounding_mode, 100, 110) 40 OPENCLEXT_INTERNAL(cl_khr_byte_addressable_store, 100, 110) 41 OPENCLEXT_INTERNAL(cl_khr_fp16, 100, ~0U) 42 OPENCLEXT_INTERNAL(cl_khr_fp64, 100, 120) 43 OPENCLEXT_INTERNAL(cl_khr_global_int32_base_atomics, 100, 110) 44 OPENCLEXT_INTERNAL(cl_khr_global_int32_extended_atomics, 100, 110) 45 OPENCLEXT_INTERNAL(cl_khr_local_int32_base_atomics, 100, 110) 46 OPENCLEXT_INTERNAL(cl_khr_local_int32_extended_atomics, 100, 110) 47 OPENCLEXT_INTERNAL(cl_khr_int64_base_atomics, 100, ~0U) 48 OPENCLEXT_INTERNAL(cl_khr_int64_extended_atomics, 100, ~0U) 49 OPENCLEXT_INTERNAL(cl_khr_gl_sharing, 100, ~0U) 50 OPENCLEXT_INTERNAL(cl_khr_icd, 100, ~0U) 51 52 // OpenCL 1.1. 53 OPENCLEXT_INTERNAL(cl_khr_gl_event, 110, ~0U) 54 OPENCLEXT_INTERNAL(cl_khr_d3d10_sharing, 110, ~0U) 55 56 // OpenCL 1.2. 57 OPENCLEXT_INTERNAL(cl_khr_context_abort, 120, ~0U) 58 OPENCLEXT_INTERNAL(cl_khr_d3d11_sharing, 120, ~0U) 59 OPENCLEXT_INTERNAL(cl_khr_depth_images, 120, ~0U) 60 OPENCLEXT_INTERNAL(cl_khr_dx9_media_sharing, 120, ~0U) 61 OPENCLEXT_INTERNAL(cl_khr_image2d_from_buffer, 120, ~0U) 62 OPENCLEXT_INTERNAL(cl_khr_initialize_memory, 120, ~0U) 63 OPENCLEXT_INTERNAL(cl_khr_gl_depth_images, 120, ~0U) 64 OPENCLEXT_INTERNAL(cl_khr_gl_msaa_sharing, 120, ~0U) 65 OPENCLEXT_INTERNAL(cl_khr_spir, 120, ~0U) 66 67 // OpenCL 2.0. 68 OPENCLEXT_INTERNAL(cl_khr_egl_event, 200, ~0U) 69 OPENCLEXT_INTERNAL(cl_khr_egl_image, 200, ~0U) 70 OPENCLEXT_INTERNAL(cl_khr_srgb_image_writes, 200, ~0U) 71 OPENCLEXT_INTERNAL(cl_khr_subgroups, 200, ~0U) 72 OPENCLEXT_INTERNAL(cl_khr_terminate_context, 200, ~0U) 73 74 // Clang Extensions. 75 OPENCLEXT_INTERNAL(cl_clang_storage_class_specifiers, 100, ~0U) 76 77 #undef OPENCLEXT_INTERNAL 78 79 #ifdef OPENCLEXT 80 #undef OPENCLEXT 81 #endif 82