finished spirv_to_llvm.md
authorJacob Lifshay <programmerjake@gmail.com>
Mon, 28 Aug 2017 09:48:38 +0000 (02:48 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Mon, 28 Aug 2017 09:48:38 +0000 (02:48 -0700)
docs/spirv_to_llvm.md

index 3a2a21fa8ffb5dc593b776e567cedc00059f9667..19cde466525dce5dbb019d3c1352438bbf54b9e6 100644 (file)
@@ -126,3 +126,30 @@ Members:
 - `Spirv_to_llvm`: create a `Spirv_to_llvm` object
 - `generate_entry_function`: generates the entry-point function. This is the JIT compiled function whose signature matches the function pointers in `pipeline::Pipeline`'s child classes. This generated function calls the function specified by `Op_entry_point`.
 - `run`: main function that runs all the different stages of translation into LLVM IR.
+
+## `spirv_to_llvm/spirv_to_llvm.cpp`
+Implementation for functions declared in `spirv_to_llvm/spirv_to_llvm.h`
+
+### `spirv_to_llvm::Struct_type_descriptor::complete_type`
+Function that does all of the heavy lifting to layout structs. We can't use LLVM's layout code because longer vectors end up with an alignment larger than `::operator new` can handle.
+
+### `spirv_to_llvm::Spirv_to_llvm::handle_header`
+copies the values from the SPIR-V header to class members and allocates space in `id_states` for all of the `Id`s.
+
+### `spirv_to_llvm::spirv_to_llvm`
+wrapper function around the Spirv_to_llvm class, so we don't have to include a huge amount of code from the rest of this project.
+
+## `spirv_to_llvm/core_instructions.cpp`
+Implementation of instructions specified in `khronos-spirv/spirv.core.grammar.json`.
+
+## `spirv_to_llvm/glsl_instructions.cpp`
+Implementation of instructions specified in `khronos-spirv/extinst.glsl.std.450.grammar.json`.
+
+## `spirv_to_llvm/opencl_instructions.cpp`
+Implementation of instructions specified in `khronos-spirv/extinst.opencl.std.100.grammar.json`.
+
+## `spirv_to_llvm/fragment_entry_point.cpp`
+Implementation of `Spirv_to_llvm::generate_entry_function` for fragment shaders
+
+## `spirv_to_llvm/vertex_entry_point.cpp`
+Implementation of `Spirv_to_llvm::generate_entry_function` for vertex shaders