blob: 3aad6223d4dea99ac42188e206e89138bf23689a [file] [log] [blame] [edit]
//===- 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 <llvm/Support/raw_ostream.h>
template <typename T>
inline ol_result_t printPtr(llvm::raw_ostream &os, const T *ptr);
template <typename T>
inline void printTagged(llvm::raw_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 <> struct is_handle<ol_queue_handle_t> : std::true_type {};
template <> struct is_handle<ol_event_handle_t> : std::true_type {};
template <> struct is_handle<ol_program_handle_t> : std::true_type {};
template <typename T> inline constexpr bool is_handle_v = is_handle<T>::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_UNKNOWN:
os << "OL_ERRC_UNKNOWN";
break;
case OL_ERRC_HOST_IO:
os << "OL_ERRC_HOST_IO";
break;
case OL_ERRC_INVALID_BINARY:
os << "OL_ERRC_INVALID_BINARY";
break;
case OL_ERRC_INVALID_NULL_POINTER:
os << "OL_ERRC_INVALID_NULL_POINTER";
break;
case OL_ERRC_INVALID_ARGUMENT:
os << "OL_ERRC_INVALID_ARGUMENT";
break;
case OL_ERRC_NOT_FOUND:
os << "OL_ERRC_NOT_FOUND";
break;
case OL_ERRC_OUT_OF_RESOURCES:
os << "OL_ERRC_OUT_OF_RESOURCES";
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_HOST_TOOL_NOT_FOUND:
os << "OL_ERRC_HOST_TOOL_NOT_FOUND";
break;
case OL_ERRC_INVALID_VALUE:
os << "OL_ERRC_INVALID_VALUE";
break;
case OL_ERRC_UNIMPLEMENTED:
os << "OL_ERRC_UNIMPLEMENTED";
break;
case OL_ERRC_UNSUPPORTED:
os << "OL_ERRC_UNSUPPORTED";
break;
case OL_ERRC_ASSEMBLE_FAILURE:
os << "OL_ERRC_ASSEMBLE_FAILURE";
break;
case OL_ERRC_LINK_FAILURE:
os << "OL_ERRC_LINK_FAILURE";
break;
case OL_ERRC_BACKEND_FAILURE:
os << "OL_ERRC_BACKEND_FAILURE";
break;
case OL_ERRC_INVALID_NULL_HANDLE:
os << "OL_ERRC_INVALID_NULL_HANDLE";
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;
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;
case OL_DEVICE_TYPE_HOST:
os << "OL_DEVICE_TYPE_HOST";
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<void *>(*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 <typename T>
inline ol_result_t printPtr(llvm::raw_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;
}