third_party_spirv-tools/source
Shahbaz Youssefi bd325d2984
spirv-diff: Basic support for OpTypeForwardPointer (#4761)
Currently, the diff tool matches types bottom up, so on every
instruction it expects to know if its operands are already matched or
not.  With cyclical references, it cannot know that.  Type matching
would need significant rework to be able to support such a use case; for
example, it may need to maintain a set of plausable matches between type
pointers that are forward-referenced, and potentially back track when
later the types turn out to be incompatible.

In this change, OpTypeForwardPointer is supported in the more common and
trivial case.  Firstly, forwarded type pointers are only matched if they
have they have the same storage class and point to the same type opcode:

- In the presence of debug info, matching is done only if the names are
  unique in both src and dst.
- In the absence of debug info, matching is done only if there is only
  one possible matching.

Fixes: #4754
2022-03-28 17:01:07 +00:00
..
diff spirv-diff: Basic support for OpTypeForwardPointer (#4761) 2022-03-28 17:01:07 +00:00
fuzz Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
link Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
lint spirv-lint: Add lint based on divergence analysis (#4488) 2021-08-27 14:43:23 -04:00
opt Handle shaders without execution model in spread-volatile-semantics (#4766) 2022-03-25 17:54:46 +00:00
reduce Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
util Optimize DefUseManager allocations (#4709) 2022-02-15 19:17:30 -05:00
val spirv-val: Add more Vulkan VUID labels (#4764) 2022-03-25 09:29:19 -04:00
wasm Add SPIR-V 1.6 support to wasm build (#4674) 2022-01-13 13:49:35 -05:00
assembly_grammar.cpp spirv-val: Add better error code for invalid operand (#4753) 2022-03-22 15:37:38 -04:00
assembly_grammar.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
binary.h Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
cfa.h Remove duplicated "the" from comments (#4666) 2022-01-12 19:04:13 -05:00
CMakeLists.txt Optimize DefUseManager allocations (#4709) 2022-02-15 19:17:30 -05:00
common_debug_info.h spirv-opt: Switch from Vulkan.DebugInfo to Shader.DebugInfo (#4493) 2021-09-15 14:38:53 -04:00
diagnostic.cpp fix strncpy bound error (#4331) 2021-06-29 10:07:13 -04:00
diagnostic.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
disassemble.cpp Refactor the disassembler code for reuse (#4616) 2021-12-14 09:46:59 -05:00
disassemble.h Refactor the disassembler code for reuse (#4616) 2021-12-14 09:46:59 -05:00
enum_set.h Instrument: Debug Printf support (#3215) 2020-03-12 09:19:52 -04:00
enum_string_mapping.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
enum_string_mapping.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ext_inst.cpp Vulkan 1.3 (#4686) 2022-01-25 10:36:08 -05:00
ext_inst.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
extensions.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
extensions.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
latest_version_glsl_std_450_header.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
latest_version_opencl_std_header.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
latest_version_spirv_header.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
libspirv.cpp Remove WebGPU support (#4108) 2021-01-14 16:45:18 -05:00
macro.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
name_mapper.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
name_mapper.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode.cpp Add OpModuleProcessed to debug opcode (#4694) 2022-02-11 19:24:17 +00:00
opcode.h Take new (raytracing) termination instructions into account. (#4050) 2020-12-07 10:26:05 -05:00
operand.cpp spirv-val: Add better error code for invalid operand (#4753) 2022-03-22 15:37:38 -04:00
operand.h Handle conflict between debug info and existing validation rule (#3104) 2020-01-23 17:04:30 -05:00
parsed_operand.cpp Introduce spirv-diff (#4611) 2022-02-02 10:33:18 -05:00
parsed_operand.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
pch_source.cpp Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
pch_source.h Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
print.cpp Enabled tvOS platform (#4329) 2021-06-29 15:14:38 -04:00
print.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
software_version.cpp Add missing function parameters in libspirv.h 2018-04-03 10:10:43 -04:00
spirv_constant.h Fix Linker generator ID (#4601) 2021-10-29 10:32:41 -04:00
spirv_definition.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
spirv_endian.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
spirv_endian.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
spirv_fuzzer_options.cpp spirv-fuzz: Add pass recommendations (#3757) 2020-09-18 15:51:35 +01:00
spirv_fuzzer_options.h spirv-fuzz: Add pass recommendations (#3757) 2020-09-18 15:51:35 +01:00
spirv_optimizer_options.cpp Add —preserve-bindings and —preserve-spec-constants (#2693) 2019-07-10 14:12:19 -04:00
spirv_optimizer_options.h Add —preserve-bindings and —preserve-spec-constants (#2693) 2019-07-10 14:12:19 -04:00
spirv_reducer_options.cpp spirv-reduce: Support reducing a specific function (#3774) 2020-09-11 06:29:43 +01:00
spirv_reducer_options.h spirv-reduce: Support reducing a specific function (#3774) 2020-09-11 06:29:43 +01:00
spirv_target_env.cpp Vulkan 1.3 (#4686) 2022-01-25 10:36:08 -05:00
spirv_target_env.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
spirv_validator_options.cpp Add a feature for allowing LocalSizeId (#4492) 2021-08-26 14:33:19 -04:00
spirv_validator_options.h Add a feature for allowing LocalSizeId (#4492) 2021-08-26 14:33:19 -04:00
table.cpp Vulkan 1.3 (#4686) 2022-01-25 10:36:08 -05:00
table.h Use last version (#2578) 2019-05-10 11:02:01 -04:00
text_handler.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
text_handler.h Remove source/message.h (#1838) 2018-08-14 15:41:21 -04:00
text.cpp spirv-as: Add opcode name when possible (#4757) 2022-03-28 14:46:39 +00:00
text.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00