mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-24 12:30:13 +00:00
e70b009b0f
Add support for SPV_KHR_non_semantic_info This entails a couple of changes: - Allowing unknown OpExtInstImport that begin with the prefix `NonSemantic.` - Allowing OpExtInst that reference any of those sets to contain unknown ext inst instruction numbers, and assume the format is always a series of IDs as guaranteed by the extension. - Allowing those OpExtInst to appear in the types/variables/constants section. - Not stripping OpString in the --strip-debug pass, since it may be referenced by these non-semantic OpExtInsts. - Stripping them instead in the --strip-reflect pass. * Add adjacency validation of non-semantic OpExtInst - We validate and test that OpExtInst cannot appear before or between OpPhi instructions, or before/between OpFunctionParameter instructions. * Change non-semantic extinst type to single value * Add helper function spvExtInstIsNonSemantic() which will check if the extinst set is non-semantic or not, either the unknown generic value or any future recognised non-semantic set. * Add test of a complex non-semantic extinst * Use DefUseManager in StripDebugInfoPass to strip some OpStrings * Any OpString used by a non-semantic instruction cannot be stripped, all others can so we search for uses to see if each string can be removed. * We only do this if the non-semantic debug info extension is enabled, otherwise all strings can be trivially removed. * Silence -Winconsistent-missing-override in protobufs |
||
---|---|---|
.. | ||
basic_block.cpp | ||
basic_block.h | ||
construct.cpp | ||
construct.h | ||
decoration.h | ||
function.cpp | ||
function.h | ||
instruction.cpp | ||
instruction.h | ||
validate_adjacency.cpp | ||
validate_annotation.cpp | ||
validate_arithmetics.cpp | ||
validate_atomics.cpp | ||
validate_barriers.cpp | ||
validate_bitwise.cpp | ||
validate_builtins.cpp | ||
validate_capability.cpp | ||
validate_cfg.cpp | ||
validate_composites.cpp | ||
validate_constants.cpp | ||
validate_conversion.cpp | ||
validate_debug.cpp | ||
validate_decorations.cpp | ||
validate_derivatives.cpp | ||
validate_execution_limitations.cpp | ||
validate_extensions.cpp | ||
validate_function.cpp | ||
validate_id.cpp | ||
validate_image.cpp | ||
validate_instruction.cpp | ||
validate_interfaces.cpp | ||
validate_layout.cpp | ||
validate_literals.cpp | ||
validate_logicals.cpp | ||
validate_memory_semantics.cpp | ||
validate_memory_semantics.h | ||
validate_memory.cpp | ||
validate_misc.cpp | ||
validate_mode_setting.cpp | ||
validate_non_uniform.cpp | ||
validate_primitives.cpp | ||
validate_scopes.cpp | ||
validate_scopes.h | ||
validate_small_type_uses.cpp | ||
validate_type.cpp | ||
validate.cpp | ||
validate.h | ||
validation_state.cpp | ||
validation_state.h |