//===- 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(std::ostream &os, const T *ptr); template inline void printTagged(std::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 inline constexpr bool is_handle_v = is_handle::value; inline std::ostream &operator<<(std::ostream &os, enum ol_errc_t value); inline std::ostream &operator<<(std::ostream &os, enum ol_platform_info_t value); inline std::ostream &operator<<(std::ostream &os, enum ol_platform_backend_t value); inline std::ostream &operator<<(std::ostream &os, enum ol_device_type_t value); inline std::ostream &operator<<(std::ostream &os, enum ol_device_info_t value); /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_errc_t type /// @returns std::ostream & inline std::ostream &operator<<(std::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_DEVICE_NOT_FOUND: os << "OL_ERRC_DEVICE_NOT_FOUND"; break; case OL_ERRC_INVALID_DEVICE: os << "OL_ERRC_INVALID_DEVICE"; break; case OL_ERRC_DEVICE_LOST: os << "OL_ERRC_DEVICE_LOST"; break; case OL_ERRC_UNINITIALIZED: os << "OL_ERRC_UNINITIALIZED"; break; case OL_ERRC_OUT_OF_RESOURCES: os << "OL_ERRC_OUT_OF_RESOURCES"; break; case OL_ERRC_UNSUPPORTED_VERSION: os << "OL_ERRC_UNSUPPORTED_VERSION"; 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 std::ostream & inline std::ostream &operator<<(std::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 std::ostream & template <> inline void printTagged(std::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 std::ostream & inline std::ostream &operator<<(std::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; default: os << "unknown enumerator"; break; } return os; } /////////////////////////////////////////////////////////////////////////////// /// @brief Print operator for the ol_device_type_t type /// @returns std::ostream & inline std::ostream &operator<<(std::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 std::ostream & inline std::ostream &operator<<(std::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 std::ostream & template <> inline void printTagged(std::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; } } inline std::ostream &operator<<(std::ostream &os, const ol_error_struct_t *Err) { if (Err == nullptr) { os << "OL_SUCCESS"; } else { os << Err->Code; } return os; } inline std::ostream &operator<<(std::ostream &os, const struct ol_get_platform_params_t *params) { os << ".NumEntries = "; os << *params->pNumEntries; os << ", "; os << ".Platforms = "; os << "{"; for (size_t i = 0; i < *params->pNumEntries; i++) { if (i > 0) { os << ", "; } printPtr(os, (*params->pPlatforms)[i]); } os << "}"; return os; } inline std::ostream & operator<<(std::ostream &os, const struct ol_get_platform_count_params_t *params) { os << ".NumPlatforms = "; printPtr(os, *params->pNumPlatforms); return os; } inline std::ostream & operator<<(std::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 std::ostream & operator<<(std::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 std::ostream & operator<<(std::ostream &os, const struct ol_get_device_count_params_t *params) { os << ".Platform = "; printPtr(os, *params->pPlatform); os << ", "; os << ".NumDevices = "; printPtr(os, *params->pNumDevices); return os; } inline std::ostream &operator<<(std::ostream &os, const struct ol_get_device_params_t *params) { os << ".Platform = "; printPtr(os, *params->pPlatform); os << ", "; os << ".NumEntries = "; os << *params->pNumEntries; os << ", "; os << ".Devices = "; os << "{"; for (size_t i = 0; i < *params->pNumEntries; i++) { if (i > 0) { os << ", "; } printPtr(os, (*params->pDevices)[i]); } os << "}"; return os; } inline std::ostream & operator<<(std::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 std::ostream & operator<<(std::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; } /////////////////////////////////////////////////////////////////////////////// // @brief Print pointer value template inline ol_result_t printPtr(std::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; }