10b57cec5SDimitry Andric//===-- OpenCLImageTypes.def - Metadata about BuiltinTypes ------*- C++ -*-===// 20b57cec5SDimitry Andric// 30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric// 70b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric// This file extends builtin types database with OpenCL image singleton types. 90b57cec5SDimitry Andric// Custom code should define one of those three macros: 100b57cec5SDimitry Andric// GENERIC_IMAGE_TYPE(Type, Id) - a generic image with its Id without an 110b57cec5SDimitry Andric// access type 120b57cec5SDimitry Andric// IMAGE_TYPE(Type, Id, SingletonId, AccessType, CGSuffix) - an image type 130b57cec5SDimitry Andric// with given ID, singleton ID access type and a codegen suffix 140b57cec5SDimitry Andric// GENERIC_IMAGE_TYPE_EXT(Type, Id, Ext) - a generic image with its Id and 150b57cec5SDimitry Andric// required extension without an access type 160b57cec5SDimitry Andric 170b57cec5SDimitry Andric#ifdef GENERIC_IMAGE_TYPE 180b57cec5SDimitry Andric 190b57cec5SDimitry Andric#define IMAGE_READ_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE(Type, Id) 200b57cec5SDimitry Andric#define IMAGE_WRITE_TYPE(Type, Id, Ext) 210b57cec5SDimitry Andric#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext) 220b57cec5SDimitry Andric 230b57cec5SDimitry Andric#elif defined(GENERIC_IMAGE_TYPE_EXT) 240b57cec5SDimitry Andric#define IMAGE_READ_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE_EXT(Type, Id##ROTy, Ext) 250b57cec5SDimitry Andric#define IMAGE_WRITE_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE_EXT(Type, Id##WOTy, Ext) 260b57cec5SDimitry Andric#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext) GENERIC_IMAGE_TYPE_EXT(Type, Id##RWTy, Ext) 270b57cec5SDimitry Andric 280b57cec5SDimitry Andric#else 290b57cec5SDimitry Andric#ifndef IMAGE_READ_TYPE 300b57cec5SDimitry Andric#define IMAGE_READ_TYPE(Type, Id, Ext) \ 310b57cec5SDimitry Andric IMAGE_TYPE(Type, Id##RO, Id##ROTy, read_only, ro) 320b57cec5SDimitry Andric#endif 330b57cec5SDimitry Andric#ifndef IMAGE_WRITE_TYPE 340b57cec5SDimitry Andric#define IMAGE_WRITE_TYPE(Type, Id, Ext) \ 350b57cec5SDimitry Andric IMAGE_TYPE(Type, Id##WO, Id##WOTy, write_only, wo) 360b57cec5SDimitry Andric#endif 370b57cec5SDimitry Andric#ifndef IMAGE_READ_WRITE_TYPE 380b57cec5SDimitry Andric#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext) \ 390b57cec5SDimitry Andric IMAGE_TYPE(Type, Id##RW, Id##RWTy, read_write, rw) 400b57cec5SDimitry Andric#endif 410b57cec5SDimitry Andric 420b57cec5SDimitry Andric#endif 430b57cec5SDimitry Andric 440b57cec5SDimitry AndricIMAGE_READ_TYPE(image1d, OCLImage1d, "") 450b57cec5SDimitry AndricIMAGE_READ_TYPE(image1d_array, OCLImage1dArray, "") 460b57cec5SDimitry AndricIMAGE_READ_TYPE(image1d_buffer, OCLImage1dBuffer, "") 470b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d, OCLImage2d, "") 480b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_array, OCLImage2dArray, "") 490b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_depth, OCLImage2dDepth, "") 500b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_array_depth, OCLImage2dArrayDepth, "") 510b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_msaa, OCLImage2dMSAA, "cl_khr_gl_msaa_sharing") 520b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_array_msaa, OCLImage2dArrayMSAA, "cl_khr_gl_msaa_sharing") 530b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_msaa_depth, OCLImage2dMSAADepth, "cl_khr_gl_msaa_sharing") 540b57cec5SDimitry AndricIMAGE_READ_TYPE(image2d_array_msaa_depth, OCLImage2dArrayMSAADepth, "cl_khr_gl_msaa_sharing") 550b57cec5SDimitry AndricIMAGE_READ_TYPE(image3d, OCLImage3d, "") 560b57cec5SDimitry Andric 570b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image1d, OCLImage1d, "") 580b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image1d_array, OCLImage1dArray, "") 590b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image1d_buffer, OCLImage1dBuffer, "") 600b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d, OCLImage2d, "") 610b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_array, OCLImage2dArray, "") 620b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_depth, OCLImage2dDepth, "") 630b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_array_depth, OCLImage2dArrayDepth, "") 640b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_msaa, OCLImage2dMSAA, "cl_khr_gl_msaa_sharing") 650b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_array_msaa, OCLImage2dArrayMSAA, "cl_khr_gl_msaa_sharing") 660b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_msaa_depth, OCLImage2dMSAADepth, "cl_khr_gl_msaa_sharing") 670b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image2d_array_msaa_depth, OCLImage2dArrayMSAADepth, "cl_khr_gl_msaa_sharing") 680b57cec5SDimitry AndricIMAGE_WRITE_TYPE(image3d, OCLImage3d, "") 690b57cec5SDimitry Andric 700b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image1d, OCLImage1d, "") 710b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image1d_array, OCLImage1dArray, "") 720b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image1d_buffer, OCLImage1dBuffer, "") 730b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d, OCLImage2d, "") 740b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_array, OCLImage2dArray, "") 750b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_depth, OCLImage2dDepth, "") 760b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_array_depth, OCLImage2dArrayDepth, "") 770b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_msaa, OCLImage2dMSAA, "cl_khr_gl_msaa_sharing") 780b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_array_msaa, OCLImage2dArrayMSAA, "cl_khr_gl_msaa_sharing") 790b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_msaa_depth, OCLImage2dMSAADepth, "cl_khr_gl_msaa_sharing") 800b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image2d_array_msaa_depth, OCLImage2dArrayMSAADepth, "cl_khr_gl_msaa_sharing") 810b57cec5SDimitry AndricIMAGE_READ_WRITE_TYPE(image3d, OCLImage3d, "") 820b57cec5SDimitry Andric 830b57cec5SDimitry Andric#undef IMAGE_TYPE 840b57cec5SDimitry Andric#undef GENERIC_IMAGE_TYPE 850b57cec5SDimitry Andric#undef IMAGE_READ_TYPE 860b57cec5SDimitry Andric#undef IMAGE_WRITE_TYPE 870b57cec5SDimitry Andric#undef IMAGE_READ_WRITE_TYPE 88