| //===-- Common.td - Common definitions for Offload ---------*- tablegen -*-===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file contains shared Offload API definitions |
| // |
| //===----------------------------------------------------------------------===// |
| |
| def : Macro { |
| let name = "OL_VERSION_MAJOR"; |
| let desc = "Major version of the Offload API"; |
| let value = "0"; |
| } |
| |
| def : Macro { |
| let name = "OL_VERSION_MINOR"; |
| let desc = "Minor version of the Offload API"; |
| let value = "0"; |
| } |
| |
| def : Macro { |
| let name = "OL_VERSION_PATCH"; |
| let desc = "Patch version of the Offload API"; |
| let value = "1"; |
| } |
| |
| def : Macro { |
| let name = "OL_APICALL"; |
| let desc = "Calling convention for all API functions"; |
| let condition = "defined(_WIN32)"; |
| let value = "__cdecl"; |
| let alt_value = ""; |
| } |
| |
| def : Macro { |
| let name = "OL_APIEXPORT"; |
| let desc = "Microsoft-specific dllexport storage-class attribute"; |
| let condition = "defined(_WIN32)"; |
| let value = "__declspec(dllexport)"; |
| let alt_value = ""; |
| } |
| |
| def : Handle { |
| let name = "ol_platform_handle_t"; |
| let desc = "Handle of a platform instance"; |
| } |
| |
| def : Handle { |
| let name = "ol_device_handle_t"; |
| let desc = "Handle of platform's device object"; |
| } |
| |
| def : Handle { |
| let name = "ol_context_handle_t"; |
| let desc = "Handle of context object"; |
| } |
| |
| def : Handle { |
| let name = "ol_queue_handle_t"; |
| let desc = "Handle of queue object"; |
| } |
| |
| def : Handle { |
| let name = "ol_event_handle_t"; |
| let desc = "Handle of event object"; |
| } |
| |
| def : Handle { |
| let name = "ol_program_handle_t"; |
| let desc = "Handle of program object"; |
| } |
| |
| def : Handle { |
| let name = "ol_symbol_handle_t"; |
| let desc = "Handle of an object in a device's memory for a specific program"; |
| } |
| |
| def ErrorCode : Enum { |
| let name = "ol_errc_t"; |
| let desc = "Defines Return/Error codes"; |
| let etors =[ |
| Etor<"SUCCESS", "success">, |
| |
| // Universal errors |
| Etor<"UNKNOWN", "unknown or internal error">, |
| Etor<"HOST_IO", "I/O error on host">, |
| Etor<"INVALID_BINARY", "a provided binary image is malformed">, |
| Etor<"INVALID_NULL_POINTER", "a pointer argument is null when it should not be">, |
| Etor<"INVALID_ARGUMENT", "an argument is invalid">, |
| Etor<"NOT_FOUND", "requested object was not found in the binary image">, |
| Etor<"OUT_OF_RESOURCES", "out of resources">, |
| Etor<"INVALID_SIZE", "invalid size or dimensions (e.g., must not be zero, or is out of bounds)">, |
| Etor<"INVALID_ENUMERATION", "enumerator argument is not valid">, |
| Etor<"HOST_TOOL_NOT_FOUND", "a required binary (linker, etc.) was not found on the host">, |
| Etor<"INVALID_VALUE", "invalid value">, |
| Etor<"UNIMPLEMENTED", "generic error code for features currently unimplemented by the device/backend">, |
| Etor<"UNSUPPORTED", "generic error code for features unsupported by the device/backend">, |
| Etor<"ASSEMBLE_FAILURE", "assembler failure while processing binary image">, |
| Etor<"COMPILE_FAILURE", "jit compile failure while processing binary image">, |
| Etor<"LINK_FAILURE", "linker failure while processing binary image">, |
| Etor<"BACKEND_FAILURE", "the plugin backend is in an invalid or unsupported state">, |
| Etor<"UNINITIALIZED", "not initialized">, |
| |
| // Handle related errors - only makes sense for liboffload |
| Etor<"INVALID_NULL_HANDLE", "a handle argument is null when it should not be">, |
| Etor<"INVALID_PLATFORM", "invalid platform">, |
| Etor<"INVALID_DEVICE", "invalid device">, |
| Etor<"INVALID_QUEUE", "invalid queue">, |
| Etor<"INVALID_EVENT", "invalid event">, |
| Etor<"SYMBOL_KIND", "the operation does not support this symbol kind">, |
| ]; |
| } |
| |
| def : Struct { |
| let name = "ol_error_struct_t"; |
| let desc = "Details of the error condition returned by an API call"; |
| let members = [ |
| StructMember<"ol_errc_t", "Code", "The error code">, |
| StructMember<"const char*", "Details", "String containing error details"> |
| ]; |
| } |
| |
| def : Typedef { |
| let name = "ol_result_t"; |
| let desc = "Result type returned by all entry points."; |
| let value = "const ol_error_struct_t*"; |
| } |
| |
| def : Macro { |
| let name = "OL_SUCCESS"; |
| let desc = "Success condition"; |
| let value = "NULL"; |
| } |
| |
| def : Struct { |
| let name = "ol_code_location_t"; |
| let desc = "Code location information that can optionally be associated with an API call"; |
| let members = [ |
| StructMember<"const char*", "FunctionName", "Function name">, |
| StructMember<"const char*", "SourceFile", "Source code file">, |
| StructMember<"uint32_t", "LineNumber", "Source code line number">, |
| StructMember<"uint32_t", "ColumnNumber", "Source code column number"> |
| ]; |
| } |
| |
| def : Struct { |
| let name = "ol_dimensions_t"; |
| let desc = "A three element vector"; |
| let members = [ |
| StructMember<"uint32_t", "x", "X">, |
| StructMember<"uint32_t", "y", "Y">, |
| StructMember<"uint32_t", "z", "Z">, |
| ]; |
| } |
| |
| def : Function { |
| let name = "olInit"; |
| let desc = "Perform initialization of the Offload library and plugins"; |
| let details = [ |
| "This must be the first API call made by a user of the Offload library", |
| "Each call will increment an internal reference count that is decremented by `olShutDown`" |
| ]; |
| let params = []; |
| let returns = []; |
| } |
| |
| def : Function { |
| let name = "olShutDown"; |
| let desc = "Release the resources in use by Offload"; |
| let details = [ |
| "This decrements an internal reference count. When this reaches 0, all resources will be released", |
| "Subsequent API calls to methods other than `olInit` made after resources are released will return OL_ERRC_UNINITIALIZED" |
| ]; |
| let params = []; |
| let returns = []; |
| } |