| //===- 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 <OffloadAPI.h> | |
| #include <ostream> | |
| template <typename T> | |
| inline ol_result_t printPtr(std::ostream &os, const T *ptr); | |
| template <typename T> | |
| inline void printTagged(std::ostream &os, const void *ptr, T value, | |
| size_t size); | |
| template <typename T> struct is_handle : std::false_type {}; | |
| template <> struct is_handle<ol_platform_handle_t> : std::true_type {}; | |
| template <> struct is_handle<ol_device_handle_t> : std::true_type {}; | |
| template <> struct is_handle<ol_context_handle_t> : std::true_type {}; | |
| template <typename T> inline constexpr bool is_handle_v = is_handle<T>::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 <typename T> | |
| inline ol_result_t printPtr(std::ostream &os, const T *ptr) { | |
| if (ptr == nullptr) { | |
| os << "nullptr"; | |
| } else if constexpr (std::is_pointer_v<T>) { | |
| os << (const void *)(ptr) << " ("; | |
| printPtr(os, *ptr); | |
| os << ")"; | |
| } else if constexpr (std::is_void_v<T> || is_handle_v<T *>) { | |
| os << (const void *)ptr; | |
| } else if constexpr (std::is_same_v<std::remove_cv_t<T>, char>) { | |
| os << (const void *)(ptr) << " ("; | |
| os << ptr; | |
| os << ")"; | |
| } else { | |
| os << (const void *)(ptr) << " ("; | |
| os << *ptr; | |
| os << ")"; | |
| } | |
| return OL_SUCCESS; | |
| } |