blob: af24ce507358cc891a2588626e0db834ede9bfd2 [file]
//===-- Program.td - Program 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 Offload API definitions related to the program handle
//
//===----------------------------------------------------------------------===//
def olCreateProgram : Function {
let desc = "Create a program for the device from the binary image pointed to by `ProgData` within the given context.";
let details = [
"The provided `ProgData` will be copied and need not outlive the returned handle",
"The program is scoped to `Context` and `Device` must belong to it.",
"The program can only be used with queues that were created in the same context."
];
let params = [
Param<"ol_context_handle_t", "Context", "handle of the context", PARAM_IN>,
Param<"ol_device_handle_t", "Device", "handle of the device", PARAM_IN>,
Param<"const void*", "ProgData", "pointer to the program binary data", PARAM_IN>,
Param<"size_t", "ProgDataSize", "size of the program binary in bytes", PARAM_IN>,
Param<"ol_program_handle_t*", "Program", "output pointer for the created program", PARAM_OUT>
];
let returns = [
Return<"OL_ERRC_INVALID_BINARY", [
"If the buffer described by `ProgData` and `ProgDataSize` is not a valid binary image for the platform."
]>,
Return<"OL_ERRC_INVALID_DEVICE", [
"Device does not belong to `Context`"
]>,
];
}
def olIsValidBinary : Function {
let desc = "Validate if the binary image pointed to by `ProgData` is compatible with the device.";
let details = ["The provided `ProgData` will not be loaded onto the device"];
let params = [
Param<"ol_device_handle_t", "Device", "handle of the device", PARAM_IN>,
Param<"const void*", "ProgData", "pointer to the program binary data", PARAM_IN>,
Param<"size_t", "ProgDataSize", "size of the program binary in bytes", PARAM_IN>,
Param<"bool*", "Valid", "output is true if the image is compatible", PARAM_OUT>
];
let returns = [];
}
def olIterateCompatibleDevices : Function {
let desc = "Iterates over all available devices that are compatible with the binary image pointed to by `ProgData`, calling the callback for each device.";
let details = [
"The provided `ProgData` will not be loaded onto any device",
"If the user-provided callback returns `false`, the iteration is stopped.",
"Only platforms that are compatible with the binary image will be initialized"
];
let params = [
Param<"const void*", "ProgData", "pointer to the program binary data", PARAM_IN>,
Param<"size_t", "ProgDataSize", "size of the program binary in bytes", PARAM_IN>,
Param<"ol_device_iterate_cb_t", "Callback", "user-provided function called for each compatible device", PARAM_IN>,
Param<"void*", "UserData", "optional user data to pass to the callback", PARAM_IN_OPTIONAL>
];
let returns = [];
}
def olDestroyProgram : Function {
let desc = "Destroy the program and free all underlying resources.";
let details = [];
let params = [
Param<"ol_program_handle_t", "Program", "handle of the program", PARAM_IN>
];
let returns = [];
}