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. 37OPENCLEXT_INTERNAL(cl_khr_3d_image_writes, 100, 200) 38// fprounding mode is special since it is not mentioned beyond 1.0 39OPENCLEXT_INTERNAL(cl_khr_select_fprounding_mode, 100, 110) 40OPENCLEXT_INTERNAL(cl_khr_byte_addressable_store, 100, 110) 41OPENCLEXT_INTERNAL(cl_khr_fp16, 100, ~0U) 42OPENCLEXT_INTERNAL(cl_khr_fp64, 100, 120) 43OPENCLEXT_INTERNAL(cl_khr_global_int32_base_atomics, 100, 110) 44OPENCLEXT_INTERNAL(cl_khr_global_int32_extended_atomics, 100, 110) 45OPENCLEXT_INTERNAL(cl_khr_local_int32_base_atomics, 100, 110) 46OPENCLEXT_INTERNAL(cl_khr_local_int32_extended_atomics, 100, 110) 47OPENCLEXT_INTERNAL(cl_khr_int64_base_atomics, 100, ~0U) 48OPENCLEXT_INTERNAL(cl_khr_int64_extended_atomics, 100, ~0U) 49OPENCLEXT_INTERNAL(cl_khr_gl_sharing, 100, ~0U) 50OPENCLEXT_INTERNAL(cl_khr_icd, 100, ~0U) 51 52// OpenCL 1.1. 53OPENCLEXT_INTERNAL(cl_khr_gl_event, 110, ~0U) 54OPENCLEXT_INTERNAL(cl_khr_d3d10_sharing, 110, ~0U) 55 56// OpenCL 1.2. 57OPENCLEXT_INTERNAL(cl_khr_context_abort, 120, ~0U) 58OPENCLEXT_INTERNAL(cl_khr_d3d11_sharing, 120, ~0U) 59OPENCLEXT_INTERNAL(cl_khr_depth_images, 120, ~0U) 60OPENCLEXT_INTERNAL(cl_khr_dx9_media_sharing, 120, ~0U) 61OPENCLEXT_INTERNAL(cl_khr_image2d_from_buffer, 120, ~0U) 62OPENCLEXT_INTERNAL(cl_khr_initialize_memory, 120, ~0U) 63OPENCLEXT_INTERNAL(cl_khr_gl_depth_images, 120, ~0U) 64OPENCLEXT_INTERNAL(cl_khr_gl_msaa_sharing, 120, ~0U) 65OPENCLEXT_INTERNAL(cl_khr_spir, 120, ~0U) 66 67// OpenCL 2.0. 68OPENCLEXT_INTERNAL(cl_khr_egl_event, 200, ~0U) 69OPENCLEXT_INTERNAL(cl_khr_egl_image, 200, ~0U) 70OPENCLEXT_INTERNAL(cl_khr_srgb_image_writes, 200, ~0U) 71OPENCLEXT_INTERNAL(cl_khr_subgroups, 200, ~0U) 72OPENCLEXT_INTERNAL(cl_khr_terminate_context, 200, ~0U) 73 74// Clang Extensions. 75OPENCLEXT_INTERNAL(cl_clang_storage_class_specifiers, 100, ~0U) 76 77#undef OPENCLEXT_INTERNAL 78 79#ifdef OPENCLEXT 80#undef OPENCLEXT 81#endif 82