* Add support for OpReadClockKHR
* Use a const scope
* Use full scope import path
* Apply some suggestions
* Add cfg flags and scopes as raw u32s
* Run cargo fmt
* Fix comment accuracy
* Update crates/rustc_codegen_spirv/src/spirv_type_constraints.rs
Co-authored-by: Ashley Hauck <953151+khyperia@users.noreply.github.com>
* Run rustfmt
* Add the shader clock feature and capability to the compile test rust flags and bless the changed test errors
Co-authored-by: Ashley Hauck <953151+khyperia@users.noreply.github.com>
* Added an optimization that gets rid of temporary composites.
Those temporary composites result from inlining of multi-argument
closures. Not only are they rather useless, they're also sometimes
invalid, when an argument to said closure is e.g. a pointer.
* Correctness fixes to transitive unused removal:
- delay only if the instruction is in reference set
- properly mark composites being inserted into composites as used
* cargo fmt
* clippy
* Make transformation per-function & rely on DCE for eliminating dead constructs.
* Forgot to mark CompositeInsert as pure & additional line cleaning
* Rustfmt
* Remove duplicate lines only once
* Aggressively prune no-side-effect instructions during DCE.
Since we're walking all the instructions anyway, it's practically
zero-cost.
* Reverse iteration order within a function.
This allows to root more instructions per `spread_roots`
invocation, becoming zero-cost in absence of loops.
* Manually iterate over function instructions in reverse order.