| 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; |