blob: f2fd93745df3ed90119962d77763e88c63a11f27 [file] [log] [blame]
namespace iree;
// Bitfield indicating which executable features are compiled into a particular
// executable.
enum ExecutableFeature : uint (bit_flags) {
// Executable supports debugging.
// This may not mean that it'll be the best debugging (for example an -O3
// executable could still support debugging, just not well).
kDebugging = 0,
// Executable supports coverage recording.
kCoverage = 1,
// Executable supports profile recording.
kProfiling = 2,
}
// A set of one or more executables that can be dispatched at runtime.
//
// Executables may contain multiple entry points to allow devices to more
// efficiently share preparation results. It is expected that all executables
// representing the same dispatchable code have the same number of entry points
// with the same meaning.
table ExecutableDef {
// ExecutableFormat 4CC used to match on device support.
format:uint;
// Bitfield indicating which executable features are supported.
// Multiple executables with the same format but differing supported features
// may be present, for example to enable both optimized and debugger-friendly
// versions in the same module.
supported_features:ExecutableFeature;
// Executable contents.
// Opaque and left to individual device implementations as to how this is
// loaded and processed at runtime.
contents:[ubyte];
}
root_type ExecutableDef;