//===- Auto-generated file, part of the LLVM/Offload project --------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // Auto-generated file, do not manually edit. #pragma once #include #include template inline ol_result_t printPtr(llvm::raw_ostream &os, const T *ptr); template inline void printTagged(llvm::raw_ostream &os, const void *ptr, T value, size_t size); template struct is_handle : std::false_type {}; template <> struct is_handle : std::true_type {}; template <> struct is_handle : std::true_type {}; template <> struct is_handle : std::true_type {}; template <> struct is_handle : std::true_type {}; template <> struct is_handle : std::true_type {}; template <> struct is_handle : std::true_type {}; template inline constexpr bool is_handle_v = is_handle::value; inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_errc_t value); inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_platform_info_t value); inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_platform_backend_t value); inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_device_type_t value); inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_device_info_t value); inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_alloc_type_t value); /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_errc_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_errc_t value) { switch (value) { case OL_ERRC_SUCCESS: os << "OL_ERRC_SUCCESS"; break; case OL_ERRC_INVALID_VALUE: os << "OL_ERRC_INVALID_VALUE"; break; case OL_ERRC_INVALID_PLATFORM: os << "OL_ERRC_INVALID_PLATFORM"; break; case OL_ERRC_INVALID_DEVICE: os << "OL_ERRC_INVALID_DEVICE"; break; case OL_ERRC_INVALID_QUEUE: os << "OL_ERRC_INVALID_QUEUE"; break; case OL_ERRC_INVALID_EVENT: os << "OL_ERRC_INVALID_EVENT"; break; case OL_ERRC_INVALID_KERNEL_NAME: os << "OL_ERRC_INVALID_KERNEL_NAME"; break; case OL_ERRC_OUT_OF_RESOURCES: os << "OL_ERRC_OUT_OF_RESOURCES"; break; case OL_ERRC_UNSUPPORTED_FEATURE: os << "OL_ERRC_UNSUPPORTED_FEATURE"; break; case OL_ERRC_INVALID_ARGUMENT: os << "OL_ERRC_INVALID_ARGUMENT"; break; case OL_ERRC_INVALID_NULL_HANDLE: os << "OL_ERRC_INVALID_NULL_HANDLE"; break; case OL_ERRC_INVALID_NULL_POINTER: os << "OL_ERRC_INVALID_NULL_POINTER"; break; case OL_ERRC_INVALID_SIZE: os << "OL_ERRC_INVALID_SIZE"; break; case OL_ERRC_INVALID_ENUMERATION: os << "OL_ERRC_INVALID_ENUMERATION"; break; case OL_ERRC_UNSUPPORTED_ENUMERATION: os << "OL_ERRC_UNSUPPORTED_ENUMERATION"; break; case OL_ERRC_UNKNOWN: os << "OL_ERRC_UNKNOWN"; break; default: os << "unknown enumerator"; break; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_platform_info_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_platform_info_t value) { switch (value) { case OL_PLATFORM_INFO_NAME: os << "OL_PLATFORM_INFO_NAME"; break; case OL_PLATFORM_INFO_VENDOR_NAME: os << "OL_PLATFORM_INFO_VENDOR_NAME"; break; case OL_PLATFORM_INFO_VERSION: os << "OL_PLATFORM_INFO_VERSION"; break; case OL_PLATFORM_INFO_BACKEND: os << "OL_PLATFORM_INFO_BACKEND"; break; default: os << "unknown enumerator"; break; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print type-tagged ol_platform_info_t enum value /// @returns llvm::raw_ostream & template <> inline void printTagged(llvm::raw_ostream &os, const void *ptr, ol_platform_info_t value, size_t size) { if (ptr == NULL) { printPtr(os, ptr); return; } switch (value) { case OL_PLATFORM_INFO_NAME: { printPtr(os, (const char *)ptr); break; } case OL_PLATFORM_INFO_VENDOR_NAME: { printPtr(os, (const char *)ptr); break; } case OL_PLATFORM_INFO_VERSION: { printPtr(os, (const char *)ptr); break; } case OL_PLATFORM_INFO_BACKEND: { const ol_platform_backend_t *const tptr = (const ol_platform_backend_t *const)ptr; os << (const void *)tptr << " ("; os << *tptr; os << ")"; break; } default: os << "unknown enumerator"; break; } } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_platform_backend_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_platform_backend_t value) { switch (value) { case OL_PLATFORM_BACKEND_UNKNOWN: os << "OL_PLATFORM_BACKEND_UNKNOWN"; break; case OL_PLATFORM_BACKEND_CUDA: os << "OL_PLATFORM_BACKEND_CUDA"; break; case OL_PLATFORM_BACKEND_AMDGPU: os << "OL_PLATFORM_BACKEND_AMDGPU"; break; case OL_PLATFORM_BACKEND_HOST: os << "OL_PLATFORM_BACKEND_HOST"; break; default: os << "unknown enumerator"; break; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_device_type_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_device_type_t value) { switch (value) { case OL_DEVICE_TYPE_DEFAULT: os << "OL_DEVICE_TYPE_DEFAULT"; break; case OL_DEVICE_TYPE_ALL: os << "OL_DEVICE_TYPE_ALL"; break; case OL_DEVICE_TYPE_GPU: os << "OL_DEVICE_TYPE_GPU"; break; case OL_DEVICE_TYPE_CPU: os << "OL_DEVICE_TYPE_CPU"; break; default: os << "unknown enumerator"; break; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_device_info_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_device_info_t value) { switch (value) { case OL_DEVICE_INFO_TYPE: os << "OL_DEVICE_INFO_TYPE"; break; case OL_DEVICE_INFO_PLATFORM: os << "OL_DEVICE_INFO_PLATFORM"; break; case OL_DEVICE_INFO_NAME: os << "OL_DEVICE_INFO_NAME"; break; case OL_DEVICE_INFO_VENDOR: os << "OL_DEVICE_INFO_VENDOR"; break; case OL_DEVICE_INFO_DRIVER_VERSION: os << "OL_DEVICE_INFO_DRIVER_VERSION"; break; default: os << "unknown enumerator"; break; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print type-tagged ol_device_info_t enum value /// @returns llvm::raw_ostream & template <> inline void printTagged(llvm::raw_ostream &os, const void *ptr, ol_device_info_t value, size_t size) { if (ptr == NULL) { printPtr(os, ptr); return; } switch (value) { case OL_DEVICE_INFO_TYPE: { const ol_device_type_t *const tptr = (const ol_device_type_t *const)ptr; os << (const void *)tptr << " ("; os << *tptr; os << ")"; break; } case OL_DEVICE_INFO_PLATFORM: { const ol_platform_handle_t *const tptr = (const ol_platform_handle_t *const)ptr; os << (const void *)tptr << " ("; os << *tptr; os << ")"; break; } case OL_DEVICE_INFO_NAME: { printPtr(os, (const char *)ptr); break; } case OL_DEVICE_INFO_VENDOR: { printPtr(os, (const char *)ptr); break; } case OL_DEVICE_INFO_DRIVER_VERSION: { printPtr(os, (const char *)ptr); break; } default: os << "unknown enumerator"; break; } } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_alloc_type_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, enum ol_alloc_type_t value) { switch (value) { case OL_ALLOC_TYPE_HOST: os << "OL_ALLOC_TYPE_HOST"; break; case OL_ALLOC_TYPE_DEVICE: os << "OL_ALLOC_TYPE_DEVICE"; break; case OL_ALLOC_TYPE_MANAGED: os << "OL_ALLOC_TYPE_MANAGED"; break; default: os << "unknown enumerator"; break; } return os; } inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, const ol_error_struct_t *Err) { if (Err == nullptr) { os << "OL_SUCCESS"; } else { os << Err->Code; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_code_location_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, const struct ol_code_location_t params) { os << "(struct ol_code_location_t){"; os << ".FunctionName = "; printPtr(os, params.FunctionName); os << ", "; os << ".SourceFile = "; printPtr(os, params.SourceFile); os << ", "; os << ".LineNumber = "; os << params.LineNumber; os << ", "; os << ".ColumnNumber = "; os << params.ColumnNumber; os << "}"; return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_kernel_launch_size_args_t type /// @returns llvm::raw_ostream & inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_kernel_launch_size_args_t params) { os << "(struct ol_kernel_launch_size_args_t){"; os << ".Dimensions = "; os << params.Dimensions; os << ", "; os << ".NumGroupsX = "; os << params.NumGroupsX; os << ", "; os << ".NumGroupsY = "; os << params.NumGroupsY; os << ", "; os << ".NumGroupsZ = "; os << params.NumGroupsZ; os << ", "; os << ".GroupSizeX = "; os << params.GroupSizeX; os << ", "; os << ".GroupSizeY = "; os << params.GroupSizeY; os << ", "; os << ".GroupSizeZ = "; os << params.GroupSizeZ; os << ", "; os << ".DynSharedMemory = "; os << params.DynSharedMemory; os << "}"; return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_get_platform_info_params_t *params) { os << ".Platform = "; printPtr(os, *params->pPlatform); os << ", "; os << ".PropName = "; os << *params->pPropName; os << ", "; os << ".PropSize = "; os << *params->pPropSize; os << ", "; os << ".PropValue = "; printTagged(os, *params->pPropValue, *params->pPropName, *params->pPropSize); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_get_platform_info_size_params_t *params) { os << ".Platform = "; printPtr(os, *params->pPlatform); os << ", "; os << ".PropName = "; os << *params->pPropName; os << ", "; os << ".PropSizeRet = "; printPtr(os, *params->pPropSizeRet); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_iterate_devices_params_t *params) { os << ".Callback = "; os << reinterpret_cast(*params->pCallback); os << ", "; os << ".UserData = "; printPtr(os, *params->pUserData); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_get_device_info_params_t *params) { os << ".Device = "; printPtr(os, *params->pDevice); os << ", "; os << ".PropName = "; os << *params->pPropName; os << ", "; os << ".PropSize = "; os << *params->pPropSize; os << ", "; os << ".PropValue = "; printTagged(os, *params->pPropValue, *params->pPropName, *params->pPropSize); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_get_device_info_size_params_t *params) { os << ".Device = "; printPtr(os, *params->pDevice); os << ", "; os << ".PropName = "; os << *params->pPropName; os << ", "; os << ".PropSizeRet = "; printPtr(os, *params->pPropSizeRet); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_mem_alloc_params_t *params) { os << ".Device = "; printPtr(os, *params->pDevice); os << ", "; os << ".Type = "; os << *params->pType; os << ", "; os << ".Size = "; os << *params->pSize; os << ", "; os << ".AllocationOut = "; printPtr(os, *params->pAllocationOut); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_mem_free_params_t *params) { os << ".Address = "; printPtr(os, *params->pAddress); return os; } inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, const struct ol_memcpy_params_t *params) { os << ".Queue = "; printPtr(os, *params->pQueue); os << ", "; os << ".DstPtr = "; printPtr(os, *params->pDstPtr); os << ", "; os << ".DstDevice = "; printPtr(os, *params->pDstDevice); os << ", "; os << ".SrcPtr = "; printPtr(os, *params->pSrcPtr); os << ", "; os << ".SrcDevice = "; printPtr(os, *params->pSrcDevice); os << ", "; os << ".Size = "; os << *params->pSize; os << ", "; os << ".EventOut = "; printPtr(os, *params->pEventOut); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_create_queue_params_t *params) { os << ".Device = "; printPtr(os, *params->pDevice); os << ", "; os << ".Queue = "; printPtr(os, *params->pQueue); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_destroy_queue_params_t *params) { os << ".Queue = "; printPtr(os, *params->pQueue); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_wait_queue_params_t *params) { os << ".Queue = "; printPtr(os, *params->pQueue); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_destroy_event_params_t *params) { os << ".Event = "; printPtr(os, *params->pEvent); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_wait_event_params_t *params) { os << ".Event = "; printPtr(os, *params->pEvent); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_create_program_params_t *params) { os << ".Device = "; printPtr(os, *params->pDevice); os << ", "; os << ".ProgData = "; printPtr(os, *params->pProgData); os << ", "; os << ".ProgDataSize = "; os << *params->pProgDataSize; os << ", "; os << ".Program = "; printPtr(os, *params->pProgram); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_destroy_program_params_t *params) { os << ".Program = "; printPtr(os, *params->pProgram); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_get_kernel_params_t *params) { os << ".Program = "; printPtr(os, *params->pProgram); os << ", "; os << ".KernelName = "; printPtr(os, *params->pKernelName); os << ", "; os << ".Kernel = "; printPtr(os, *params->pKernel); return os; } inline llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const struct ol_launch_kernel_params_t *params) { os << ".Queue = "; printPtr(os, *params->pQueue); os << ", "; os << ".Device = "; printPtr(os, *params->pDevice); os << ", "; os << ".Kernel = "; printPtr(os, *params->pKernel); os << ", "; os << ".ArgumentsData = "; printPtr(os, *params->pArgumentsData); os << ", "; os << ".ArgumentsSize = "; os << *params->pArgumentsSize; os << ", "; os << ".LaunchSizeArgs = "; printPtr(os, *params->pLaunchSizeArgs); os << ", "; os << ".EventOut = "; printPtr(os, *params->pEventOut); return os; } /////////////////////////////////////////////////////////////////////////////// // @brief Print pointer value template inline ol_result_t printPtr(llvm::raw_ostream &os, const T *ptr) { if (ptr == nullptr) { os << "nullptr"; } else if constexpr (std::is_pointer_v) { os << (const void *)(ptr) << " ("; printPtr(os, *ptr); os << ")"; } else if constexpr (std::is_void_v || is_handle_v) { os << (const void *)ptr; } else if constexpr (std::is_same_v, char>) { os << (const void *)(ptr) << " ("; os << ptr; os << ")"; } else { os << (const void *)(ptr) << " ("; os << *ptr; os << ")"; } return OL_SUCCESS; }