pub struct Module {Show 13 fields
pub header: Option<ModuleHeader>,
pub capabilities: Vec<Instruction>,
pub extensions: Vec<Instruction>,
pub ext_inst_imports: Vec<Instruction>,
pub memory_model: Option<Instruction>,
pub entry_points: Vec<Instruction>,
pub execution_modes: Vec<Instruction>,
pub debug_string_source: Vec<Instruction>,
pub debug_names: Vec<Instruction>,
pub debug_module_processed: Vec<Instruction>,
pub annotations: Vec<Instruction>,
pub types_global_values: Vec<Instruction>,
pub functions: Vec<Function>,
}
Expand description
Data representation of a SPIR-V module.
Most of the fields are just vectors of Instruction
s, but some fields
store values decomposed from Instruction
s for better investigation.
The order of its fields basically reveal the requirements in the Logical Layout of a Module of the SPIR-V of the SPIR-V specification.
Fields§
§header: Option<ModuleHeader>
The module header.
capabilities: Vec<Instruction>
All OpCapability instructions.
extensions: Vec<Instruction>
All OpExtension instructions.
ext_inst_imports: Vec<Instruction>
All OpExtInstImport instructions.
memory_model: Option<Instruction>
The OpMemoryModel instruction.
Although it is required by the specification to appear exactly once per module, we keep it optional here to allow flexibility.
entry_points: Vec<Instruction>
All entry point declarations, using OpEntryPoint.
execution_modes: Vec<Instruction>
All execution mode declarations, using OpExecutionMode.
debug_string_source: Vec<Instruction>
Debug subsection: All OpString, OpSourceExtension, OpSource, and OpSourceContinued.
debug_names: Vec<Instruction>
Debug subsection: All OpName and all OpMemberName.
debug_module_processed: Vec<Instruction>
Debug subsection: All OpModuleProcessed instructions.
annotations: Vec<Instruction>
All annotation instructions.
types_global_values: Vec<Instruction>
All types, constants, and global variables.
As per the specification, they have to be bundled together because they can depend on one another.
functions: Vec<Function>
All functions.
Implementations§
source§impl Module
impl Module
sourcepub fn global_inst_iter(&self) -> impl Iterator<Item = &Instruction>
pub fn global_inst_iter(&self) -> impl Iterator<Item = &Instruction>
Returns an iterator over all global instructions.
sourcepub fn global_inst_iter_mut(&mut self) -> impl Iterator<Item = &mut Instruction>
pub fn global_inst_iter_mut(&mut self) -> impl Iterator<Item = &mut Instruction>
Returns a mut iterator over all global instructions.
sourcepub fn all_inst_iter(&self) -> impl Iterator<Item = &Instruction>
pub fn all_inst_iter(&self) -> impl Iterator<Item = &Instruction>
Returns a iterator over all instructions.
sourcepub fn all_inst_iter_mut(&mut self) -> impl Iterator<Item = &mut Instruction>
pub fn all_inst_iter_mut(&mut self) -> impl Iterator<Item = &mut Instruction>
Returns a mut iterator over all instructions.
Trait Implementations§
source§impl Assemble for Module
impl Assemble for Module
source§fn assemble_into(&self, result: &mut Vec<u32>)
fn assemble_into(&self, result: &mut Vec<u32>)
result
vector, reducing the need for lots of allocationssource§impl Disassemble for Module
impl Disassemble for Module
source§fn disassemble(&self) -> String
fn disassemble(&self) -> String
Disassembles this module and returns the disassembly text.
This method will try to link information together to be wise. E.g., If the extended instruction set is recognized, the symbolic opcode for instructions in it will be shown.