OSDN Git Service

Add SPIRV-Tools as git subtree
authorChris Forbes <chrisforbes@google.com>
Wed, 30 Jan 2019 19:54:08 +0000 (11:54 -0800)
committerChris Forbes <chrisforbes@google.com>
Wed, 30 Jan 2019 19:54:11 +0000 (11:54 -0800)
Adds commit 'd14db341b834cfb3c574a258c331b3a6b1c2cbc5' from
https://github.com/KhronosGroup/SPIRV-Tools as 'third_party/SPIRV-Tools'

Commands:
git subtree add --prefix third_party/SPIRV-Tools
https://github.com/KhronosGroup/SPIRV-Tools
d14db341b834cfb3c574a258c331b3a6b1c2cbc5 --squash

Bug: b/123642959
Change-Id: I9de28ed72f80a4ed6280ac1b990a57eed92b9667

751 files changed:
1  2 
third_party/SPIRV-Tools/.appveyor.yml
third_party/SPIRV-Tools/.clang-format
third_party/SPIRV-Tools/.gitignore
third_party/SPIRV-Tools/.gn
third_party/SPIRV-Tools/Android.mk
third_party/SPIRV-Tools/BUILD.gn
third_party/SPIRV-Tools/CHANGES
third_party/SPIRV-Tools/CMakeLists.txt
third_party/SPIRV-Tools/CODE_OF_CONDUCT.md
third_party/SPIRV-Tools/CONTRIBUTING.md
third_party/SPIRV-Tools/DEPS
third_party/SPIRV-Tools/LICENSE
third_party/SPIRV-Tools/PRESUBMIT.py
third_party/SPIRV-Tools/README.md
third_party/SPIRV-Tools/android_test/Android.mk
third_party/SPIRV-Tools/android_test/jni/Application.mk
third_party/SPIRV-Tools/android_test/test.cpp
third_party/SPIRV-Tools/build_overrides/build.gni
third_party/SPIRV-Tools/build_overrides/gtest.gni
third_party/SPIRV-Tools/build_overrides/spirv_tools.gni
third_party/SPIRV-Tools/cmake/SPIRV-Tools-shared.pc.in
third_party/SPIRV-Tools/cmake/SPIRV-Tools.pc.in
third_party/SPIRV-Tools/cmake/setup_build.cmake
third_party/SPIRV-Tools/cmake/write_pkg_config.cmake
third_party/SPIRV-Tools/codereview.settings
third_party/SPIRV-Tools/examples/CMakeLists.txt
third_party/SPIRV-Tools/examples/cpp-interface/CMakeLists.txt
third_party/SPIRV-Tools/examples/cpp-interface/main.cpp
third_party/SPIRV-Tools/external/CMakeLists.txt
third_party/SPIRV-Tools/include/spirv-tools/instrument.hpp
third_party/SPIRV-Tools/include/spirv-tools/libspirv.h
third_party/SPIRV-Tools/include/spirv-tools/libspirv.hpp
third_party/SPIRV-Tools/include/spirv-tools/linker.hpp
third_party/SPIRV-Tools/include/spirv-tools/optimizer.hpp
third_party/SPIRV-Tools/kokoro/android/build.sh
third_party/SPIRV-Tools/kokoro/android/continuous.cfg
third_party/SPIRV-Tools/kokoro/android/presubmit.cfg
third_party/SPIRV-Tools/kokoro/check-format/build.sh
third_party/SPIRV-Tools/kokoro/check-format/presubmit_check_format.cfg
third_party/SPIRV-Tools/kokoro/img/linux.png
third_party/SPIRV-Tools/kokoro/img/macos.png
third_party/SPIRV-Tools/kokoro/img/windows.png
third_party/SPIRV-Tools/kokoro/linux-clang-debug/build.sh
third_party/SPIRV-Tools/kokoro/linux-clang-debug/continuous.cfg
third_party/SPIRV-Tools/kokoro/linux-clang-debug/presubmit.cfg
third_party/SPIRV-Tools/kokoro/linux-clang-release/build.sh
third_party/SPIRV-Tools/kokoro/linux-clang-release/continuous.cfg
third_party/SPIRV-Tools/kokoro/linux-clang-release/presubmit.cfg
third_party/SPIRV-Tools/kokoro/linux-gcc-debug/build.sh
third_party/SPIRV-Tools/kokoro/linux-gcc-debug/continuous.cfg
third_party/SPIRV-Tools/kokoro/linux-gcc-debug/presubmit.cfg
third_party/SPIRV-Tools/kokoro/linux-gcc-release/build.sh
third_party/SPIRV-Tools/kokoro/linux-gcc-release/continuous.cfg
third_party/SPIRV-Tools/kokoro/linux-gcc-release/presubmit.cfg
third_party/SPIRV-Tools/kokoro/macos-clang-debug/build.sh
third_party/SPIRV-Tools/kokoro/macos-clang-debug/continuous.cfg
third_party/SPIRV-Tools/kokoro/macos-clang-debug/presubmit.cfg
third_party/SPIRV-Tools/kokoro/macos-clang-release/build.sh
third_party/SPIRV-Tools/kokoro/macos-clang-release/continuous.cfg
third_party/SPIRV-Tools/kokoro/macos-clang-release/presubmit.cfg
third_party/SPIRV-Tools/kokoro/ndk-build/build.sh
third_party/SPIRV-Tools/kokoro/ndk-build/continuous.cfg
third_party/SPIRV-Tools/kokoro/ndk-build/presubmit.cfg
third_party/SPIRV-Tools/kokoro/scripts/linux/build.sh
third_party/SPIRV-Tools/kokoro/scripts/macos/build.sh
third_party/SPIRV-Tools/kokoro/scripts/windows/build.bat
third_party/SPIRV-Tools/kokoro/shaderc-smoketest/build.sh
third_party/SPIRV-Tools/kokoro/shaderc-smoketest/continuous.cfg
third_party/SPIRV-Tools/kokoro/shaderc-smoketest/presubmit.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2013-release/build.bat
third_party/SPIRV-Tools/kokoro/windows-msvc-2013-release/continuous.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2013-release/presubmit.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2015-release/build.bat
third_party/SPIRV-Tools/kokoro/windows-msvc-2015-release/continuous.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2015-release/presubmit.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2017-debug/build.bat
third_party/SPIRV-Tools/kokoro/windows-msvc-2017-debug/continuous.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2017-debug/presubmit.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2017-release/build.bat
third_party/SPIRV-Tools/kokoro/windows-msvc-2017-release/continuous.cfg
third_party/SPIRV-Tools/kokoro/windows-msvc-2017-release/presubmit.cfg
third_party/SPIRV-Tools/projects.md
third_party/SPIRV-Tools/source/CMakeLists.txt
third_party/SPIRV-Tools/source/assembly_grammar.cpp
third_party/SPIRV-Tools/source/assembly_grammar.h
third_party/SPIRV-Tools/source/binary.cpp
third_party/SPIRV-Tools/source/binary.h
third_party/SPIRV-Tools/source/cfa.h
third_party/SPIRV-Tools/source/comp/CMakeLists.txt
third_party/SPIRV-Tools/source/comp/bit_stream.cpp
third_party/SPIRV-Tools/source/comp/bit_stream.h
third_party/SPIRV-Tools/source/comp/huffman_codec.h
third_party/SPIRV-Tools/source/comp/markv.cpp
third_party/SPIRV-Tools/source/comp/markv.h
third_party/SPIRV-Tools/source/comp/markv_codec.cpp
third_party/SPIRV-Tools/source/comp/markv_codec.h
third_party/SPIRV-Tools/source/comp/markv_decoder.cpp
third_party/SPIRV-Tools/source/comp/markv_decoder.h
third_party/SPIRV-Tools/source/comp/markv_encoder.cpp
third_party/SPIRV-Tools/source/comp/markv_encoder.h
third_party/SPIRV-Tools/source/comp/markv_logger.h
third_party/SPIRV-Tools/source/comp/markv_model.h
third_party/SPIRV-Tools/source/comp/move_to_front.cpp
third_party/SPIRV-Tools/source/comp/move_to_front.h
third_party/SPIRV-Tools/source/diagnostic.cpp
third_party/SPIRV-Tools/source/diagnostic.h
third_party/SPIRV-Tools/source/disassemble.cpp
third_party/SPIRV-Tools/source/disassemble.h
third_party/SPIRV-Tools/source/enum_set.h
third_party/SPIRV-Tools/source/enum_string_mapping.cpp
third_party/SPIRV-Tools/source/enum_string_mapping.h
third_party/SPIRV-Tools/source/ext_inst.cpp
third_party/SPIRV-Tools/source/ext_inst.h
third_party/SPIRV-Tools/source/extensions.cpp
third_party/SPIRV-Tools/source/extensions.h
third_party/SPIRV-Tools/source/extinst.debuginfo.grammar.json
third_party/SPIRV-Tools/source/extinst.spv-amd-gcn-shader.grammar.json
third_party/SPIRV-Tools/source/extinst.spv-amd-shader-ballot.grammar.json
third_party/SPIRV-Tools/source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json
third_party/SPIRV-Tools/source/extinst.spv-amd-shader-trinary-minmax.grammar.json
third_party/SPIRV-Tools/source/id_descriptor.cpp
third_party/SPIRV-Tools/source/id_descriptor.h
third_party/SPIRV-Tools/source/instruction.h
third_party/SPIRV-Tools/source/latest_version_glsl_std_450_header.h
third_party/SPIRV-Tools/source/latest_version_opencl_std_header.h
third_party/SPIRV-Tools/source/latest_version_spirv_header.h
third_party/SPIRV-Tools/source/libspirv.cpp
third_party/SPIRV-Tools/source/link/CMakeLists.txt
third_party/SPIRV-Tools/source/link/linker.cpp
third_party/SPIRV-Tools/source/macro.h
third_party/SPIRV-Tools/source/name_mapper.cpp
third_party/SPIRV-Tools/source/name_mapper.h
third_party/SPIRV-Tools/source/opcode.cpp
third_party/SPIRV-Tools/source/opcode.h
third_party/SPIRV-Tools/source/operand.cpp
third_party/SPIRV-Tools/source/operand.h
third_party/SPIRV-Tools/source/opt/CMakeLists.txt
third_party/SPIRV-Tools/source/opt/aggressive_dead_code_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/aggressive_dead_code_elim_pass.h
third_party/SPIRV-Tools/source/opt/basic_block.cpp
third_party/SPIRV-Tools/source/opt/basic_block.h
third_party/SPIRV-Tools/source/opt/block_merge_pass.cpp
third_party/SPIRV-Tools/source/opt/block_merge_pass.h
third_party/SPIRV-Tools/source/opt/build_module.cpp
third_party/SPIRV-Tools/source/opt/build_module.h
third_party/SPIRV-Tools/source/opt/ccp_pass.cpp
third_party/SPIRV-Tools/source/opt/ccp_pass.h
third_party/SPIRV-Tools/source/opt/cfg.cpp
third_party/SPIRV-Tools/source/opt/cfg.h
third_party/SPIRV-Tools/source/opt/cfg_cleanup_pass.cpp
third_party/SPIRV-Tools/source/opt/cfg_cleanup_pass.h
third_party/SPIRV-Tools/source/opt/code_sink.cpp
third_party/SPIRV-Tools/source/opt/code_sink.h
third_party/SPIRV-Tools/source/opt/combine_access_chains.cpp
third_party/SPIRV-Tools/source/opt/combine_access_chains.h
third_party/SPIRV-Tools/source/opt/common_uniform_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/common_uniform_elim_pass.h
third_party/SPIRV-Tools/source/opt/compact_ids_pass.cpp
third_party/SPIRV-Tools/source/opt/compact_ids_pass.h
third_party/SPIRV-Tools/source/opt/composite.cpp
third_party/SPIRV-Tools/source/opt/composite.h
third_party/SPIRV-Tools/source/opt/const_folding_rules.cpp
third_party/SPIRV-Tools/source/opt/const_folding_rules.h
third_party/SPIRV-Tools/source/opt/constants.cpp
third_party/SPIRV-Tools/source/opt/constants.h
third_party/SPIRV-Tools/source/opt/copy_prop_arrays.cpp
third_party/SPIRV-Tools/source/opt/copy_prop_arrays.h
third_party/SPIRV-Tools/source/opt/dead_branch_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/dead_branch_elim_pass.h
third_party/SPIRV-Tools/source/opt/dead_insert_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/dead_insert_elim_pass.h
third_party/SPIRV-Tools/source/opt/dead_variable_elimination.cpp
third_party/SPIRV-Tools/source/opt/dead_variable_elimination.h
third_party/SPIRV-Tools/source/opt/decoration_manager.cpp
third_party/SPIRV-Tools/source/opt/decoration_manager.h
third_party/SPIRV-Tools/source/opt/def_use_manager.cpp
third_party/SPIRV-Tools/source/opt/def_use_manager.h
third_party/SPIRV-Tools/source/opt/dominator_analysis.cpp
third_party/SPIRV-Tools/source/opt/dominator_analysis.h
third_party/SPIRV-Tools/source/opt/dominator_tree.cpp
third_party/SPIRV-Tools/source/opt/dominator_tree.h
third_party/SPIRV-Tools/source/opt/eliminate_dead_constant_pass.cpp
third_party/SPIRV-Tools/source/opt/eliminate_dead_constant_pass.h
third_party/SPIRV-Tools/source/opt/eliminate_dead_functions_pass.cpp
third_party/SPIRV-Tools/source/opt/eliminate_dead_functions_pass.h
third_party/SPIRV-Tools/source/opt/feature_manager.cpp
third_party/SPIRV-Tools/source/opt/feature_manager.h
third_party/SPIRV-Tools/source/opt/flatten_decoration_pass.cpp
third_party/SPIRV-Tools/source/opt/flatten_decoration_pass.h
third_party/SPIRV-Tools/source/opt/fold.cpp
third_party/SPIRV-Tools/source/opt/fold.h
third_party/SPIRV-Tools/source/opt/fold_spec_constant_op_and_composite_pass.cpp
third_party/SPIRV-Tools/source/opt/fold_spec_constant_op_and_composite_pass.h
third_party/SPIRV-Tools/source/opt/folding_rules.cpp
third_party/SPIRV-Tools/source/opt/folding_rules.h
third_party/SPIRV-Tools/source/opt/freeze_spec_constant_value_pass.cpp
third_party/SPIRV-Tools/source/opt/freeze_spec_constant_value_pass.h
third_party/SPIRV-Tools/source/opt/function.cpp
third_party/SPIRV-Tools/source/opt/function.h
third_party/SPIRV-Tools/source/opt/if_conversion.cpp
third_party/SPIRV-Tools/source/opt/if_conversion.h
third_party/SPIRV-Tools/source/opt/inline_exhaustive_pass.cpp
third_party/SPIRV-Tools/source/opt/inline_exhaustive_pass.h
third_party/SPIRV-Tools/source/opt/inline_opaque_pass.cpp
third_party/SPIRV-Tools/source/opt/inline_opaque_pass.h
third_party/SPIRV-Tools/source/opt/inline_pass.cpp
third_party/SPIRV-Tools/source/opt/inline_pass.h
third_party/SPIRV-Tools/source/opt/inst_bindless_check_pass.cpp
third_party/SPIRV-Tools/source/opt/inst_bindless_check_pass.h
third_party/SPIRV-Tools/source/opt/instruction.cpp
third_party/SPIRV-Tools/source/opt/instruction.h
third_party/SPIRV-Tools/source/opt/instruction_list.cpp
third_party/SPIRV-Tools/source/opt/instruction_list.h
third_party/SPIRV-Tools/source/opt/instrument_pass.cpp
third_party/SPIRV-Tools/source/opt/instrument_pass.h
third_party/SPIRV-Tools/source/opt/ir_builder.h
third_party/SPIRV-Tools/source/opt/ir_context.cpp
third_party/SPIRV-Tools/source/opt/ir_context.h
third_party/SPIRV-Tools/source/opt/ir_loader.cpp
third_party/SPIRV-Tools/source/opt/ir_loader.h
third_party/SPIRV-Tools/source/opt/iterator.h
third_party/SPIRV-Tools/source/opt/licm_pass.cpp
third_party/SPIRV-Tools/source/opt/licm_pass.h
third_party/SPIRV-Tools/source/opt/local_access_chain_convert_pass.cpp
third_party/SPIRV-Tools/source/opt/local_access_chain_convert_pass.h
third_party/SPIRV-Tools/source/opt/local_redundancy_elimination.cpp
third_party/SPIRV-Tools/source/opt/local_redundancy_elimination.h
third_party/SPIRV-Tools/source/opt/local_single_block_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/local_single_block_elim_pass.h
third_party/SPIRV-Tools/source/opt/local_single_store_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/local_single_store_elim_pass.h
third_party/SPIRV-Tools/source/opt/local_ssa_elim_pass.cpp
third_party/SPIRV-Tools/source/opt/local_ssa_elim_pass.h
third_party/SPIRV-Tools/source/opt/log.h
third_party/SPIRV-Tools/source/opt/loop_dependence.cpp
third_party/SPIRV-Tools/source/opt/loop_dependence.h
third_party/SPIRV-Tools/source/opt/loop_dependence_helpers.cpp
third_party/SPIRV-Tools/source/opt/loop_descriptor.cpp
third_party/SPIRV-Tools/source/opt/loop_descriptor.h
third_party/SPIRV-Tools/source/opt/loop_fission.cpp
third_party/SPIRV-Tools/source/opt/loop_fission.h
third_party/SPIRV-Tools/source/opt/loop_fusion.cpp
third_party/SPIRV-Tools/source/opt/loop_fusion.h
third_party/SPIRV-Tools/source/opt/loop_fusion_pass.cpp
third_party/SPIRV-Tools/source/opt/loop_fusion_pass.h
third_party/SPIRV-Tools/source/opt/loop_peeling.cpp
third_party/SPIRV-Tools/source/opt/loop_peeling.h
third_party/SPIRV-Tools/source/opt/loop_unroller.cpp
third_party/SPIRV-Tools/source/opt/loop_unroller.h
third_party/SPIRV-Tools/source/opt/loop_unswitch_pass.cpp
third_party/SPIRV-Tools/source/opt/loop_unswitch_pass.h
third_party/SPIRV-Tools/source/opt/loop_utils.cpp
third_party/SPIRV-Tools/source/opt/loop_utils.h
third_party/SPIRV-Tools/source/opt/mem_pass.cpp
third_party/SPIRV-Tools/source/opt/mem_pass.h
third_party/SPIRV-Tools/source/opt/merge_return_pass.cpp
third_party/SPIRV-Tools/source/opt/merge_return_pass.h
third_party/SPIRV-Tools/source/opt/module.cpp
third_party/SPIRV-Tools/source/opt/module.h
third_party/SPIRV-Tools/source/opt/null_pass.h
third_party/SPIRV-Tools/source/opt/optimizer.cpp
third_party/SPIRV-Tools/source/opt/pass.cpp
third_party/SPIRV-Tools/source/opt/pass.h
third_party/SPIRV-Tools/source/opt/pass_manager.cpp
third_party/SPIRV-Tools/source/opt/pass_manager.h
third_party/SPIRV-Tools/source/opt/passes.h
third_party/SPIRV-Tools/source/opt/pch_source_opt.cpp
third_party/SPIRV-Tools/source/opt/pch_source_opt.h
third_party/SPIRV-Tools/source/opt/private_to_local_pass.cpp
third_party/SPIRV-Tools/source/opt/private_to_local_pass.h
third_party/SPIRV-Tools/source/opt/process_lines_pass.cpp
third_party/SPIRV-Tools/source/opt/process_lines_pass.h
third_party/SPIRV-Tools/source/opt/propagator.cpp
third_party/SPIRV-Tools/source/opt/propagator.h
third_party/SPIRV-Tools/source/opt/reduce_load_size.cpp
third_party/SPIRV-Tools/source/opt/reduce_load_size.h
third_party/SPIRV-Tools/source/opt/redundancy_elimination.cpp
third_party/SPIRV-Tools/source/opt/redundancy_elimination.h
third_party/SPIRV-Tools/source/opt/reflect.h
third_party/SPIRV-Tools/source/opt/register_pressure.cpp
third_party/SPIRV-Tools/source/opt/register_pressure.h
third_party/SPIRV-Tools/source/opt/remove_duplicates_pass.cpp
third_party/SPIRV-Tools/source/opt/remove_duplicates_pass.h
third_party/SPIRV-Tools/source/opt/replace_invalid_opc.cpp
third_party/SPIRV-Tools/source/opt/replace_invalid_opc.h
third_party/SPIRV-Tools/source/opt/scalar_analysis.cpp
third_party/SPIRV-Tools/source/opt/scalar_analysis.h
third_party/SPIRV-Tools/source/opt/scalar_analysis_nodes.h
third_party/SPIRV-Tools/source/opt/scalar_analysis_simplification.cpp
third_party/SPIRV-Tools/source/opt/scalar_replacement_pass.cpp
third_party/SPIRV-Tools/source/opt/scalar_replacement_pass.h
third_party/SPIRV-Tools/source/opt/set_spec_constant_default_value_pass.cpp
third_party/SPIRV-Tools/source/opt/set_spec_constant_default_value_pass.h
third_party/SPIRV-Tools/source/opt/simplification_pass.cpp
third_party/SPIRV-Tools/source/opt/simplification_pass.h
third_party/SPIRV-Tools/source/opt/ssa_rewrite_pass.cpp
third_party/SPIRV-Tools/source/opt/ssa_rewrite_pass.h
third_party/SPIRV-Tools/source/opt/strength_reduction_pass.cpp
third_party/SPIRV-Tools/source/opt/strength_reduction_pass.h
third_party/SPIRV-Tools/source/opt/strip_debug_info_pass.cpp
third_party/SPIRV-Tools/source/opt/strip_debug_info_pass.h
third_party/SPIRV-Tools/source/opt/strip_reflect_info_pass.cpp
third_party/SPIRV-Tools/source/opt/strip_reflect_info_pass.h
third_party/SPIRV-Tools/source/opt/struct_cfg_analysis.cpp
third_party/SPIRV-Tools/source/opt/struct_cfg_analysis.h
third_party/SPIRV-Tools/source/opt/tree_iterator.h
third_party/SPIRV-Tools/source/opt/type_manager.cpp
third_party/SPIRV-Tools/source/opt/type_manager.h
third_party/SPIRV-Tools/source/opt/types.cpp
third_party/SPIRV-Tools/source/opt/types.h
third_party/SPIRV-Tools/source/opt/unify_const_pass.cpp
third_party/SPIRV-Tools/source/opt/unify_const_pass.h
third_party/SPIRV-Tools/source/opt/upgrade_memory_model.cpp
third_party/SPIRV-Tools/source/opt/upgrade_memory_model.h
third_party/SPIRV-Tools/source/opt/value_number_table.cpp
third_party/SPIRV-Tools/source/opt/value_number_table.h
third_party/SPIRV-Tools/source/opt/vector_dce.cpp
third_party/SPIRV-Tools/source/opt/vector_dce.h
third_party/SPIRV-Tools/source/opt/workaround1209.cpp
third_party/SPIRV-Tools/source/opt/workaround1209.h
third_party/SPIRV-Tools/source/parsed_operand.cpp
third_party/SPIRV-Tools/source/parsed_operand.h
third_party/SPIRV-Tools/source/pch_source.cpp
third_party/SPIRV-Tools/source/pch_source.h
third_party/SPIRV-Tools/source/print.cpp
third_party/SPIRV-Tools/source/print.h
third_party/SPIRV-Tools/source/reduce/CMakeLists.txt
third_party/SPIRV-Tools/source/reduce/change_operand_reduction_opportunity.cpp
third_party/SPIRV-Tools/source/reduce/change_operand_reduction_opportunity.h
third_party/SPIRV-Tools/source/reduce/change_operand_to_undef_reduction_opportunity.cpp
third_party/SPIRV-Tools/source/reduce/change_operand_to_undef_reduction_opportunity.h
third_party/SPIRV-Tools/source/reduce/operand_to_const_reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/operand_to_const_reduction_pass.h
third_party/SPIRV-Tools/source/reduce/operand_to_dominating_id_reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/operand_to_dominating_id_reduction_pass.h
third_party/SPIRV-Tools/source/reduce/operand_to_undef_reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/operand_to_undef_reduction_pass.h
third_party/SPIRV-Tools/source/reduce/pch_source_reduce.cpp
third_party/SPIRV-Tools/source/reduce/pch_source_reduce.h
third_party/SPIRV-Tools/source/reduce/reducer.cpp
third_party/SPIRV-Tools/source/reduce/reducer.h
third_party/SPIRV-Tools/source/reduce/reduction_opportunity.cpp
third_party/SPIRV-Tools/source/reduce/reduction_opportunity.h
third_party/SPIRV-Tools/source/reduce/reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/reduction_pass.h
third_party/SPIRV-Tools/source/reduce/reduction_util.cpp
third_party/SPIRV-Tools/source/reduce/reduction_util.h
third_party/SPIRV-Tools/source/reduce/remove_instruction_reduction_opportunity.cpp
third_party/SPIRV-Tools/source/reduce/remove_instruction_reduction_opportunity.h
third_party/SPIRV-Tools/source/reduce/remove_opname_instruction_reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/remove_opname_instruction_reduction_pass.h
third_party/SPIRV-Tools/source/reduce/remove_unreferenced_instruction_reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/remove_unreferenced_instruction_reduction_pass.h
third_party/SPIRV-Tools/source/reduce/structured_loop_to_selection_reduction_opportunity.cpp
third_party/SPIRV-Tools/source/reduce/structured_loop_to_selection_reduction_opportunity.h
third_party/SPIRV-Tools/source/reduce/structured_loop_to_selection_reduction_pass.cpp
third_party/SPIRV-Tools/source/reduce/structured_loop_to_selection_reduction_pass.h
third_party/SPIRV-Tools/source/software_version.cpp
third_party/SPIRV-Tools/source/spirv_constant.h
third_party/SPIRV-Tools/source/spirv_definition.h
third_party/SPIRV-Tools/source/spirv_endian.cpp
third_party/SPIRV-Tools/source/spirv_endian.h
third_party/SPIRV-Tools/source/spirv_optimizer_options.cpp
third_party/SPIRV-Tools/source/spirv_optimizer_options.h
third_party/SPIRV-Tools/source/spirv_reducer_options.cpp
third_party/SPIRV-Tools/source/spirv_reducer_options.h
third_party/SPIRV-Tools/source/spirv_target_env.cpp
third_party/SPIRV-Tools/source/spirv_target_env.h
third_party/SPIRV-Tools/source/spirv_validator_options.cpp
third_party/SPIRV-Tools/source/spirv_validator_options.h
third_party/SPIRV-Tools/source/table.cpp
third_party/SPIRV-Tools/source/table.h
third_party/SPIRV-Tools/source/text.cpp
third_party/SPIRV-Tools/source/text.h
third_party/SPIRV-Tools/source/text_handler.cpp
third_party/SPIRV-Tools/source/text_handler.h
third_party/SPIRV-Tools/source/util/bit_vector.cpp
third_party/SPIRV-Tools/source/util/bit_vector.h
third_party/SPIRV-Tools/source/util/bitutils.h
third_party/SPIRV-Tools/source/util/hex_float.h
third_party/SPIRV-Tools/source/util/ilist.h
third_party/SPIRV-Tools/source/util/ilist_node.h
third_party/SPIRV-Tools/source/util/make_unique.h
third_party/SPIRV-Tools/source/util/parse_number.cpp
third_party/SPIRV-Tools/source/util/parse_number.h
third_party/SPIRV-Tools/source/util/small_vector.h
third_party/SPIRV-Tools/source/util/string_utils.cpp
third_party/SPIRV-Tools/source/util/string_utils.h
third_party/SPIRV-Tools/source/util/timer.cpp
third_party/SPIRV-Tools/source/util/timer.h
third_party/SPIRV-Tools/source/val/basic_block.cpp
third_party/SPIRV-Tools/source/val/basic_block.h
third_party/SPIRV-Tools/source/val/construct.cpp
third_party/SPIRV-Tools/source/val/construct.h
third_party/SPIRV-Tools/source/val/decoration.h
third_party/SPIRV-Tools/source/val/function.cpp
third_party/SPIRV-Tools/source/val/function.h
third_party/SPIRV-Tools/source/val/instruction.cpp
third_party/SPIRV-Tools/source/val/instruction.h
third_party/SPIRV-Tools/source/val/validate.cpp
third_party/SPIRV-Tools/source/val/validate.h
third_party/SPIRV-Tools/source/val/validate_adjacency.cpp
third_party/SPIRV-Tools/source/val/validate_annotation.cpp
third_party/SPIRV-Tools/source/val/validate_arithmetics.cpp
third_party/SPIRV-Tools/source/val/validate_atomics.cpp
third_party/SPIRV-Tools/source/val/validate_barriers.cpp
third_party/SPIRV-Tools/source/val/validate_bitwise.cpp
third_party/SPIRV-Tools/source/val/validate_builtins.cpp
third_party/SPIRV-Tools/source/val/validate_capability.cpp
third_party/SPIRV-Tools/source/val/validate_cfg.cpp
third_party/SPIRV-Tools/source/val/validate_composites.cpp
third_party/SPIRV-Tools/source/val/validate_constants.cpp
third_party/SPIRV-Tools/source/val/validate_conversion.cpp
third_party/SPIRV-Tools/source/val/validate_datarules.cpp
third_party/SPIRV-Tools/source/val/validate_debug.cpp
third_party/SPIRV-Tools/source/val/validate_decorations.cpp
third_party/SPIRV-Tools/source/val/validate_derivatives.cpp
third_party/SPIRV-Tools/source/val/validate_execution_limitations.cpp
third_party/SPIRV-Tools/source/val/validate_extensions.cpp
third_party/SPIRV-Tools/source/val/validate_function.cpp
third_party/SPIRV-Tools/source/val/validate_id.cpp
third_party/SPIRV-Tools/source/val/validate_image.cpp
third_party/SPIRV-Tools/source/val/validate_instruction.cpp
third_party/SPIRV-Tools/source/val/validate_interfaces.cpp
third_party/SPIRV-Tools/source/val/validate_layout.cpp
third_party/SPIRV-Tools/source/val/validate_literals.cpp
third_party/SPIRV-Tools/source/val/validate_logicals.cpp
third_party/SPIRV-Tools/source/val/validate_memory.cpp
third_party/SPIRV-Tools/source/val/validate_memory_semantics.cpp
third_party/SPIRV-Tools/source/val/validate_memory_semantics.h
third_party/SPIRV-Tools/source/val/validate_mode_setting.cpp
third_party/SPIRV-Tools/source/val/validate_non_uniform.cpp
third_party/SPIRV-Tools/source/val/validate_primitives.cpp
third_party/SPIRV-Tools/source/val/validate_scopes.cpp
third_party/SPIRV-Tools/source/val/validate_scopes.h
third_party/SPIRV-Tools/source/val/validate_type.cpp
third_party/SPIRV-Tools/source/val/validation_state.cpp
third_party/SPIRV-Tools/source/val/validation_state.h
third_party/SPIRV-Tools/syntax.md
third_party/SPIRV-Tools/test/CMakeLists.txt
third_party/SPIRV-Tools/test/assembly_context_test.cpp
third_party/SPIRV-Tools/test/assembly_format_test.cpp
third_party/SPIRV-Tools/test/binary_destroy_test.cpp
third_party/SPIRV-Tools/test/binary_endianness_test.cpp
third_party/SPIRV-Tools/test/binary_header_get_test.cpp
third_party/SPIRV-Tools/test/binary_parse_test.cpp
third_party/SPIRV-Tools/test/binary_strnlen_s_test.cpp
third_party/SPIRV-Tools/test/binary_to_text.literal_test.cpp
third_party/SPIRV-Tools/test/binary_to_text_test.cpp
third_party/SPIRV-Tools/test/bit_stream.cpp
third_party/SPIRV-Tools/test/c_interface_test.cpp
third_party/SPIRV-Tools/test/comment_test.cpp
third_party/SPIRV-Tools/test/comp/CMakeLists.txt
third_party/SPIRV-Tools/test/comp/markv_codec_test.cpp
third_party/SPIRV-Tools/test/cpp_interface_test.cpp
third_party/SPIRV-Tools/test/diagnostic_test.cpp
third_party/SPIRV-Tools/test/enum_set_test.cpp
third_party/SPIRV-Tools/test/enum_string_mapping_test.cpp
third_party/SPIRV-Tools/test/ext_inst.debuginfo_test.cpp
third_party/SPIRV-Tools/test/ext_inst.glsl_test.cpp
third_party/SPIRV-Tools/test/ext_inst.opencl_test.cpp
third_party/SPIRV-Tools/test/fix_word_test.cpp
third_party/SPIRV-Tools/test/fuzzers/BUILD.gn
third_party/SPIRV-Tools/test/fuzzers/corpora/spv/simple.spv
third_party/SPIRV-Tools/test/fuzzers/spvtools_binary_parser_fuzzer.cpp
third_party/SPIRV-Tools/test/fuzzers/spvtools_opt_legalization_fuzzer.cpp
third_party/SPIRV-Tools/test/fuzzers/spvtools_opt_performance_fuzzer.cpp
third_party/SPIRV-Tools/test/fuzzers/spvtools_opt_size_fuzzer.cpp
third_party/SPIRV-Tools/test/fuzzers/spvtools_val_fuzzer.cpp
third_party/SPIRV-Tools/test/generator_magic_number_test.cpp
third_party/SPIRV-Tools/test/hex_float_test.cpp
third_party/SPIRV-Tools/test/huffman_codec.cpp
third_party/SPIRV-Tools/test/immediate_int_test.cpp
third_party/SPIRV-Tools/test/libspirv_macros_test.cpp
third_party/SPIRV-Tools/test/link/CMakeLists.txt
third_party/SPIRV-Tools/test/link/binary_version_test.cpp
third_party/SPIRV-Tools/test/link/entry_points_test.cpp
third_party/SPIRV-Tools/test/link/global_values_amount_test.cpp
third_party/SPIRV-Tools/test/link/ids_limit_test.cpp
third_party/SPIRV-Tools/test/link/linker_fixture.h
third_party/SPIRV-Tools/test/link/matching_imports_to_exports_test.cpp
third_party/SPIRV-Tools/test/link/memory_model_test.cpp
third_party/SPIRV-Tools/test/link/partial_linkage_test.cpp
third_party/SPIRV-Tools/test/link/unique_ids_test.cpp
third_party/SPIRV-Tools/test/log_test.cpp
third_party/SPIRV-Tools/test/move_to_front_test.cpp
third_party/SPIRV-Tools/test/name_mapper_test.cpp
third_party/SPIRV-Tools/test/named_id_test.cpp
third_party/SPIRV-Tools/test/opcode_make_test.cpp
third_party/SPIRV-Tools/test/opcode_require_capabilities_test.cpp
third_party/SPIRV-Tools/test/opcode_split_test.cpp
third_party/SPIRV-Tools/test/opcode_table_get_test.cpp
third_party/SPIRV-Tools/test/operand-class-test-coverage.csv
third_party/SPIRV-Tools/test/operand_capabilities_test.cpp
third_party/SPIRV-Tools/test/operand_pattern_test.cpp
third_party/SPIRV-Tools/test/operand_test.cpp
third_party/SPIRV-Tools/test/opt/CMakeLists.txt
third_party/SPIRV-Tools/test/opt/aggressive_dead_code_elim_test.cpp
third_party/SPIRV-Tools/test/opt/assembly_builder.h
third_party/SPIRV-Tools/test/opt/assembly_builder_test.cpp
third_party/SPIRV-Tools/test/opt/block_merge_test.cpp
third_party/SPIRV-Tools/test/opt/ccp_test.cpp
third_party/SPIRV-Tools/test/opt/cfg_cleanup_test.cpp
third_party/SPIRV-Tools/test/opt/code_sink_test.cpp
third_party/SPIRV-Tools/test/opt/combine_access_chains_test.cpp
third_party/SPIRV-Tools/test/opt/common_uniform_elim_test.cpp
third_party/SPIRV-Tools/test/opt/compact_ids_test.cpp
third_party/SPIRV-Tools/test/opt/constant_manager_test.cpp
third_party/SPIRV-Tools/test/opt/copy_prop_array_test.cpp
third_party/SPIRV-Tools/test/opt/dead_branch_elim_test.cpp
third_party/SPIRV-Tools/test/opt/dead_insert_elim_test.cpp
third_party/SPIRV-Tools/test/opt/dead_variable_elim_test.cpp
third_party/SPIRV-Tools/test/opt/decoration_manager_test.cpp
third_party/SPIRV-Tools/test/opt/def_use_test.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/CMakeLists.txt
third_party/SPIRV-Tools/test/opt/dominator_tree/common_dominators.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/generated.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/nested_ifs.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/nested_ifs_post.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/nested_loops.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/nested_loops_with_unreachables.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/pch_test_opt_dom.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/pch_test_opt_dom.h
third_party/SPIRV-Tools/test/opt/dominator_tree/post.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/simple.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/switch_case_fallthrough.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/unreachable_for.cpp
third_party/SPIRV-Tools/test/opt/dominator_tree/unreachable_for_post.cpp
third_party/SPIRV-Tools/test/opt/eliminate_dead_const_test.cpp
third_party/SPIRV-Tools/test/opt/eliminate_dead_functions_test.cpp
third_party/SPIRV-Tools/test/opt/feature_manager_test.cpp
third_party/SPIRV-Tools/test/opt/flatten_decoration_test.cpp
third_party/SPIRV-Tools/test/opt/fold_spec_const_op_composite_test.cpp
third_party/SPIRV-Tools/test/opt/fold_test.cpp
third_party/SPIRV-Tools/test/opt/freeze_spec_const_test.cpp
third_party/SPIRV-Tools/test/opt/function_test.cpp
third_party/SPIRV-Tools/test/opt/function_utils.h
third_party/SPIRV-Tools/test/opt/if_conversion_test.cpp
third_party/SPIRV-Tools/test/opt/inline_opaque_test.cpp
third_party/SPIRV-Tools/test/opt/inline_test.cpp
third_party/SPIRV-Tools/test/opt/insert_extract_elim_test.cpp
third_party/SPIRV-Tools/test/opt/inst_bindless_check_test.cpp
third_party/SPIRV-Tools/test/opt/instruction_list_test.cpp
third_party/SPIRV-Tools/test/opt/instruction_test.cpp
third_party/SPIRV-Tools/test/opt/ir_builder.cpp
third_party/SPIRV-Tools/test/opt/ir_context_test.cpp
third_party/SPIRV-Tools/test/opt/ir_loader_test.cpp
third_party/SPIRV-Tools/test/opt/iterator_test.cpp
third_party/SPIRV-Tools/test/opt/line_debug_info_test.cpp
third_party/SPIRV-Tools/test/opt/local_access_chain_convert_test.cpp
third_party/SPIRV-Tools/test/opt/local_redundancy_elimination_test.cpp
third_party/SPIRV-Tools/test/opt/local_single_block_elim.cpp
third_party/SPIRV-Tools/test/opt/local_single_store_elim_test.cpp
third_party/SPIRV-Tools/test/opt/local_ssa_elim_test.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/CMakeLists.txt
third_party/SPIRV-Tools/test/opt/loop_optimizations/dependence_analysis.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/dependence_analysis_helpers.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/fusion_compatibility.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/fusion_illegal.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/fusion_legal.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/fusion_pass.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/hoist_all_loop_types.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/hoist_double_nested_loops.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/hoist_from_independent_loops.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/hoist_simple_case.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/hoist_single_nested_loops.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/hoist_without_preheader.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/lcssa.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/loop_descriptions.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/loop_fission.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/nested_loops.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/pch_test_opt_loop.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/pch_test_opt_loop.h
third_party/SPIRV-Tools/test/opt/loop_optimizations/peeling.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/peeling_pass.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/unroll_assumptions.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/unroll_simple.cpp
third_party/SPIRV-Tools/test/opt/loop_optimizations/unswitch.cpp
third_party/SPIRV-Tools/test/opt/module_test.cpp
third_party/SPIRV-Tools/test/opt/module_utils.h
third_party/SPIRV-Tools/test/opt/optimizer_test.cpp
third_party/SPIRV-Tools/test/opt/pass_fixture.h
third_party/SPIRV-Tools/test/opt/pass_manager_test.cpp
third_party/SPIRV-Tools/test/opt/pass_merge_return_test.cpp
third_party/SPIRV-Tools/test/opt/pass_remove_duplicates_test.cpp
third_party/SPIRV-Tools/test/opt/pass_utils.cpp
third_party/SPIRV-Tools/test/opt/pass_utils.h
third_party/SPIRV-Tools/test/opt/pch_test_opt.cpp
third_party/SPIRV-Tools/test/opt/pch_test_opt.h
third_party/SPIRV-Tools/test/opt/private_to_local_test.cpp
third_party/SPIRV-Tools/test/opt/process_lines_test.cpp
third_party/SPIRV-Tools/test/opt/propagator_test.cpp
third_party/SPIRV-Tools/test/opt/reduce_load_size_test.cpp
third_party/SPIRV-Tools/test/opt/redundancy_elimination_test.cpp
third_party/SPIRV-Tools/test/opt/register_liveness.cpp
third_party/SPIRV-Tools/test/opt/replace_invalid_opc_test.cpp
third_party/SPIRV-Tools/test/opt/scalar_analysis.cpp
third_party/SPIRV-Tools/test/opt/scalar_replacement_test.cpp
third_party/SPIRV-Tools/test/opt/set_spec_const_default_value_test.cpp
third_party/SPIRV-Tools/test/opt/simplification_test.cpp
third_party/SPIRV-Tools/test/opt/strength_reduction_test.cpp
third_party/SPIRV-Tools/test/opt/strip_debug_info_test.cpp
third_party/SPIRV-Tools/test/opt/strip_reflect_info_test.cpp
third_party/SPIRV-Tools/test/opt/struct_cfg_analysis_test.cpp
third_party/SPIRV-Tools/test/opt/type_manager_test.cpp
third_party/SPIRV-Tools/test/opt/types_test.cpp
third_party/SPIRV-Tools/test/opt/unify_const_test.cpp
third_party/SPIRV-Tools/test/opt/upgrade_memory_model_test.cpp
third_party/SPIRV-Tools/test/opt/utils_test.cpp
third_party/SPIRV-Tools/test/opt/value_table_test.cpp
third_party/SPIRV-Tools/test/opt/vector_dce_test.cpp
third_party/SPIRV-Tools/test/opt/workaround1209_test.cpp
third_party/SPIRV-Tools/test/parse_number_test.cpp
third_party/SPIRV-Tools/test/pch_test.cpp
third_party/SPIRV-Tools/test/pch_test.h
third_party/SPIRV-Tools/test/preserve_numeric_ids_test.cpp
third_party/SPIRV-Tools/test/reduce/CMakeLists.txt
third_party/SPIRV-Tools/test/reduce/operand_to_constant_reduction_pass_test.cpp
third_party/SPIRV-Tools/test/reduce/operand_to_dominating_id_reduction_pass_test.cpp
third_party/SPIRV-Tools/test/reduce/operand_to_undef_reduction_pass_test.cpp
third_party/SPIRV-Tools/test/reduce/reduce_test_util.cpp
third_party/SPIRV-Tools/test/reduce/reduce_test_util.h
third_party/SPIRV-Tools/test/reduce/reducer_test.cpp
third_party/SPIRV-Tools/test/reduce/remove_opname_instruction_reduction_pass_test.cpp
third_party/SPIRV-Tools/test/reduce/remove_unreferenced_instruction_reduction_pass_test.cpp
third_party/SPIRV-Tools/test/reduce/structured_loop_to_selection_reduction_pass_test.cpp
third_party/SPIRV-Tools/test/reduce/validation_during_reduction_test.cpp
third_party/SPIRV-Tools/test/scripts/test_compact_ids.py
third_party/SPIRV-Tools/test/software_version_test.cpp
third_party/SPIRV-Tools/test/stats/CMakeLists.txt
third_party/SPIRV-Tools/test/stats/stats_aggregate_test.cpp
third_party/SPIRV-Tools/test/stats/stats_analyzer_test.cpp
third_party/SPIRV-Tools/test/string_utils_test.cpp
third_party/SPIRV-Tools/test/target_env_test.cpp
third_party/SPIRV-Tools/test/test_fixture.h
third_party/SPIRV-Tools/test/text_advance_test.cpp
third_party/SPIRV-Tools/test/text_destroy_test.cpp
third_party/SPIRV-Tools/test/text_literal_test.cpp
third_party/SPIRV-Tools/test/text_start_new_inst_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.annotation_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.barrier_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.constant_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.control_flow_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.debug_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.device_side_enqueue_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.extension_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.function_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.group_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.image_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.literal_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.memory_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.misc_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.mode_setting_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.pipe_storage_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.reserved_sampling_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.subgroup_dispatch_test.cpp
third_party/SPIRV-Tools/test/text_to_binary.type_declaration_test.cpp
third_party/SPIRV-Tools/test/text_to_binary_test.cpp
third_party/SPIRV-Tools/test/text_word_get_test.cpp
third_party/SPIRV-Tools/test/timer_test.cpp
third_party/SPIRV-Tools/test/tools/CMakeLists.txt
third_party/SPIRV-Tools/test/tools/expect.py
third_party/SPIRV-Tools/test/tools/expect_nosetest.py
third_party/SPIRV-Tools/test/tools/opt/CMakeLists.txt
third_party/SPIRV-Tools/test/tools/opt/flags.py
third_party/SPIRV-Tools/test/tools/opt/oconfig.py
third_party/SPIRV-Tools/test/tools/placeholder.py
third_party/SPIRV-Tools/test/tools/spirv_test_framework.py
third_party/SPIRV-Tools/test/tools/spirv_test_framework_nosetest.py
third_party/SPIRV-Tools/test/unit_spirv.cpp
third_party/SPIRV-Tools/test/unit_spirv.h
third_party/SPIRV-Tools/test/util/CMakeLists.txt
third_party/SPIRV-Tools/test/util/bit_vector_test.cpp
third_party/SPIRV-Tools/test/util/ilist_test.cpp
third_party/SPIRV-Tools/test/util/small_vector_test.cpp
third_party/SPIRV-Tools/test/val/CMakeLists.txt
third_party/SPIRV-Tools/test/val/pch_test_val.cpp
third_party/SPIRV-Tools/test/val/pch_test_val.h
third_party/SPIRV-Tools/test/val/val_adjacency_test.cpp
third_party/SPIRV-Tools/test/val/val_arithmetics_test.cpp
third_party/SPIRV-Tools/test/val/val_atomics_test.cpp
third_party/SPIRV-Tools/test/val/val_barriers_test.cpp
third_party/SPIRV-Tools/test/val/val_bitwise_test.cpp
third_party/SPIRV-Tools/test/val/val_builtins_test.cpp
third_party/SPIRV-Tools/test/val/val_capability_test.cpp
third_party/SPIRV-Tools/test/val/val_cfg_test.cpp
third_party/SPIRV-Tools/test/val/val_composites_test.cpp
third_party/SPIRV-Tools/test/val/val_constants_test.cpp
third_party/SPIRV-Tools/test/val/val_conversion_test.cpp
third_party/SPIRV-Tools/test/val/val_data_test.cpp
third_party/SPIRV-Tools/test/val/val_decoration_test.cpp
third_party/SPIRV-Tools/test/val/val_derivatives_test.cpp
third_party/SPIRV-Tools/test/val/val_explicit_reserved_test.cpp
third_party/SPIRV-Tools/test/val/val_ext_inst_test.cpp
third_party/SPIRV-Tools/test/val/val_extensions_test.cpp
third_party/SPIRV-Tools/test/val/val_fixtures.h
third_party/SPIRV-Tools/test/val/val_id_test.cpp
third_party/SPIRV-Tools/test/val/val_image_test.cpp
third_party/SPIRV-Tools/test/val/val_interfaces_test.cpp
third_party/SPIRV-Tools/test/val/val_layout_test.cpp
third_party/SPIRV-Tools/test/val/val_limits_test.cpp
third_party/SPIRV-Tools/test/val/val_literals_test.cpp
third_party/SPIRV-Tools/test/val/val_logicals_test.cpp
third_party/SPIRV-Tools/test/val/val_memory_test.cpp
third_party/SPIRV-Tools/test/val/val_modes_test.cpp
third_party/SPIRV-Tools/test/val/val_non_uniform_test.cpp
third_party/SPIRV-Tools/test/val/val_primitives_test.cpp
third_party/SPIRV-Tools/test/val/val_ssa_test.cpp
third_party/SPIRV-Tools/test/val/val_state_test.cpp
third_party/SPIRV-Tools/test/val/val_storage_test.cpp
third_party/SPIRV-Tools/test/val/val_type_unique_test.cpp
third_party/SPIRV-Tools/test/val/val_validation_state_test.cpp
third_party/SPIRV-Tools/test/val/val_version_test.cpp
third_party/SPIRV-Tools/test/val/val_webgpu_test.cpp
third_party/SPIRV-Tools/tools/CMakeLists.txt
third_party/SPIRV-Tools/tools/as/as.cpp
third_party/SPIRV-Tools/tools/cfg/bin_to_dot.cpp
third_party/SPIRV-Tools/tools/cfg/bin_to_dot.h
third_party/SPIRV-Tools/tools/cfg/cfg.cpp
third_party/SPIRV-Tools/tools/comp/markv.cpp
third_party/SPIRV-Tools/tools/comp/markv_model_factory.cpp
third_party/SPIRV-Tools/tools/comp/markv_model_factory.h
third_party/SPIRV-Tools/tools/comp/markv_model_shader.cpp
third_party/SPIRV-Tools/tools/comp/markv_model_shader.h
third_party/SPIRV-Tools/tools/comp/markv_model_shader_default_autogen.inc
third_party/SPIRV-Tools/tools/dis/dis.cpp
third_party/SPIRV-Tools/tools/emacs/50spirv-tools.el
third_party/SPIRV-Tools/tools/emacs/CMakeLists.txt
third_party/SPIRV-Tools/tools/io.h
third_party/SPIRV-Tools/tools/lesspipe/CMakeLists.txt
third_party/SPIRV-Tools/tools/lesspipe/spirv-lesspipe.sh
third_party/SPIRV-Tools/tools/link/linker.cpp
third_party/SPIRV-Tools/tools/opt/opt.cpp
third_party/SPIRV-Tools/tools/reduce/reduce.cpp
third_party/SPIRV-Tools/tools/stats/spirv_stats.cpp
third_party/SPIRV-Tools/tools/stats/spirv_stats.h
third_party/SPIRV-Tools/tools/stats/stats.cpp
third_party/SPIRV-Tools/tools/stats/stats_analyzer.cpp
third_party/SPIRV-Tools/tools/stats/stats_analyzer.h
third_party/SPIRV-Tools/tools/util/cli_consumer.cpp
third_party/SPIRV-Tools/tools/util/cli_consumer.h
third_party/SPIRV-Tools/tools/val/val.cpp
third_party/SPIRV-Tools/utils/check_code_format.sh
third_party/SPIRV-Tools/utils/check_copyright.py
third_party/SPIRV-Tools/utils/check_symbol_exports.py
third_party/SPIRV-Tools/utils/fixup_fuzz_result.py
third_party/SPIRV-Tools/utils/generate_grammar_tables.py
third_party/SPIRV-Tools/utils/generate_language_headers.py
third_party/SPIRV-Tools/utils/generate_registry_tables.py
third_party/SPIRV-Tools/utils/generate_vim_syntax.py
third_party/SPIRV-Tools/utils/update_build_version.py

index 0000000,a50c7c2..a50c7c2
mode 000000,100644..100644
--- /dev/null
index 0000000,1d43c4e..1d43c4e
mode 000000,100644..100644
--- /dev/null
index 0000000,0000000..059b18e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++.clang_complete
++.ycm_extra_conf.py*
++*.pyc
++compile_commands.json
++/build/
++/buildtools/
++/external/googletest
++/external/SPIRV-Headers
++/external/spirv-headers
++/external/effcee
++/external/re2
++/out
++/TAGS
++/third_party/llvm-build/
++/testing
++/tools/clang/
++/utils/clang-format-diff.py
++
++# Vim
++[._]*.s[a-w][a-z]
++*~
++
++# C-Lion
++.idea
++cmake-build-debug
index 0000000,377a97a..377a97a
mode 000000,100644..100644
--- /dev/null
--- 2/.gn
index 0000000,0000000..179cf26
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,343 @@@
++LOCAL_PATH := $(call my-dir)
++SPVTOOLS_OUT_PATH=$(if $(call host-path-is-absolute,$(TARGET_OUT)),$(TARGET_OUT),$(abspath $(TARGET_OUT)))
++
++ifeq ($(SPVHEADERS_LOCAL_PATH),)
++      SPVHEADERS_LOCAL_PATH := $(LOCAL_PATH)/external/spirv-headers
++endif
++
++SPVTOOLS_SRC_FILES := \
++              source/assembly_grammar.cpp \
++              source/binary.cpp \
++              source/diagnostic.cpp \
++              source/disassemble.cpp \
++              source/ext_inst.cpp \
++              source/enum_string_mapping.cpp \
++              source/extensions.cpp \
++              source/id_descriptor.cpp \
++              source/libspirv.cpp \
++              source/name_mapper.cpp \
++              source/opcode.cpp \
++              source/operand.cpp \
++              source/parsed_operand.cpp \
++              source/print.cpp \
++              source/software_version.cpp \
++              source/spirv_endian.cpp \
++              source/spirv_optimizer_options.cpp \
++              source/spirv_target_env.cpp \
++              source/spirv_validator_options.cpp \
++              source/table.cpp \
++              source/text.cpp \
++              source/text_handler.cpp \
++              source/util/bit_vector.cpp \
++              source/util/parse_number.cpp \
++              source/util/string_utils.cpp \
++              source/util/timer.cpp \
++              source/val/basic_block.cpp \
++              source/val/construct.cpp \
++              source/val/function.cpp \
++              source/val/instruction.cpp \
++              source/val/validation_state.cpp \
++              source/val/validate.cpp \
++              source/val/validate_adjacency.cpp \
++              source/val/validate_annotation.cpp \
++              source/val/validate_arithmetics.cpp \
++              source/val/validate_atomics.cpp \
++              source/val/validate_barriers.cpp \
++              source/val/validate_bitwise.cpp \
++              source/val/validate_builtins.cpp \
++              source/val/validate_capability.cpp \
++              source/val/validate_cfg.cpp \
++              source/val/validate_composites.cpp \
++              source/val/validate_constants.cpp \
++              source/val/validate_conversion.cpp \
++              source/val/validate_datarules.cpp \
++              source/val/validate_debug.cpp \
++              source/val/validate_decorations.cpp \
++              source/val/validate_derivatives.cpp \
++              source/val/validate_extensions.cpp \
++              source/val/validate_execution_limitations.cpp \
++              source/val/validate_function.cpp \
++              source/val/validate_id.cpp \
++              source/val/validate_image.cpp \
++              source/val/validate_interfaces.cpp \
++              source/val/validate_instruction.cpp \
++              source/val/validate_memory.cpp \
++              source/val/validate_memory_semantics.cpp \
++              source/val/validate_mode_setting.cpp \
++              source/val/validate_layout.cpp \
++              source/val/validate_literals.cpp \
++              source/val/validate_logicals.cpp \
++              source/val/validate_non_uniform.cpp \
++              source/val/validate_primitives.cpp \
++              source/val/validate_scopes.cpp \
++              source/val/validate_type.cpp
++
++SPVTOOLS_OPT_SRC_FILES := \
++              source/opt/aggressive_dead_code_elim_pass.cpp \
++              source/opt/basic_block.cpp \
++              source/opt/block_merge_pass.cpp \
++              source/opt/build_module.cpp \
++              source/opt/cfg.cpp \
++              source/opt/cfg_cleanup_pass.cpp \
++              source/opt/ccp_pass.cpp \
++              source/opt/code_sink.cpp \
++              source/opt/combine_access_chains.cpp \
++              source/opt/common_uniform_elim_pass.cpp \
++              source/opt/compact_ids_pass.cpp \
++              source/opt/composite.cpp \
++              source/opt/const_folding_rules.cpp \
++              source/opt/constants.cpp \
++              source/opt/copy_prop_arrays.cpp \
++              source/opt/dead_branch_elim_pass.cpp \
++              source/opt/dead_insert_elim_pass.cpp \
++              source/opt/dead_variable_elimination.cpp \
++              source/opt/decoration_manager.cpp \
++              source/opt/def_use_manager.cpp \
++              source/opt/dominator_analysis.cpp \
++              source/opt/dominator_tree.cpp \
++              source/opt/eliminate_dead_constant_pass.cpp \
++              source/opt/eliminate_dead_functions_pass.cpp \
++              source/opt/feature_manager.cpp \
++              source/opt/flatten_decoration_pass.cpp \
++              source/opt/fold.cpp \
++              source/opt/folding_rules.cpp \
++              source/opt/fold_spec_constant_op_and_composite_pass.cpp \
++              source/opt/freeze_spec_constant_value_pass.cpp \
++              source/opt/function.cpp \
++              source/opt/if_conversion.cpp \
++              source/opt/inline_pass.cpp \
++              source/opt/inline_exhaustive_pass.cpp \
++              source/opt/inline_opaque_pass.cpp \
++              source/opt/inst_bindless_check_pass.cpp \
++              source/opt/instruction.cpp \
++              source/opt/instruction_list.cpp \
++              source/opt/instrument_pass.cpp \
++              source/opt/ir_context.cpp \
++              source/opt/ir_loader.cpp \
++              source/opt/licm_pass.cpp \
++              source/opt/local_access_chain_convert_pass.cpp \
++              source/opt/local_redundancy_elimination.cpp \
++              source/opt/local_single_block_elim_pass.cpp \
++              source/opt/local_single_store_elim_pass.cpp \
++              source/opt/local_ssa_elim_pass.cpp \
++              source/opt/loop_dependence.cpp \
++              source/opt/loop_dependence_helpers.cpp \
++              source/opt/loop_descriptor.cpp \
++              source/opt/loop_fission.cpp \
++              source/opt/loop_fusion.cpp \
++              source/opt/loop_fusion_pass.cpp \
++              source/opt/loop_peeling.cpp \
++              source/opt/loop_unroller.cpp \
++              source/opt/loop_unswitch_pass.cpp \
++              source/opt/loop_utils.cpp \
++              source/opt/mem_pass.cpp \
++              source/opt/merge_return_pass.cpp \
++              source/opt/module.cpp \
++              source/opt/optimizer.cpp \
++              source/opt/pass.cpp \
++              source/opt/pass_manager.cpp \
++              source/opt/private_to_local_pass.cpp \
++              source/opt/process_lines_pass.cpp \
++              source/opt/propagator.cpp \
++              source/opt/reduce_load_size.cpp \
++              source/opt/redundancy_elimination.cpp \
++              source/opt/register_pressure.cpp \
++              source/opt/remove_duplicates_pass.cpp \
++              source/opt/replace_invalid_opc.cpp \
++              source/opt/scalar_analysis.cpp \
++              source/opt/scalar_analysis_simplification.cpp \
++              source/opt/scalar_replacement_pass.cpp \
++              source/opt/set_spec_constant_default_value_pass.cpp \
++              source/opt/simplification_pass.cpp \
++              source/opt/ssa_rewrite_pass.cpp \
++              source/opt/strength_reduction_pass.cpp \
++              source/opt/strip_debug_info_pass.cpp \
++              source/opt/strip_reflect_info_pass.cpp \
++              source/opt/struct_cfg_analysis.cpp \
++              source/opt/type_manager.cpp \
++              source/opt/types.cpp \
++              source/opt/unify_const_pass.cpp \
++              source/opt/upgrade_memory_model.cpp \
++              source/opt/value_number_table.cpp \
++              source/opt/vector_dce.cpp \
++              source/opt/workaround1209.cpp
++
++# Locations of grammar files.
++#
++# TODO(dneto): Build a single set of tables that embeds versioning differences on
++# a per-item basis.  That must happen before SPIR-V 1.4, etc.
++# https://github.com/KhronosGroup/SPIRV-Tools/issues/1195
++SPV_CORE10_GRAMMAR=$(SPVHEADERS_LOCAL_PATH)/include/spirv/1.0/spirv.core.grammar.json
++SPV_CORE11_GRAMMAR=$(SPVHEADERS_LOCAL_PATH)/include/spirv/1.1/spirv.core.grammar.json
++SPV_CORE12_GRAMMAR=$(SPVHEADERS_LOCAL_PATH)/include/spirv/1.2/spirv.core.grammar.json
++SPV_COREUNIFIED1_GRAMMAR=$(SPVHEADERS_LOCAL_PATH)/include/spirv/unified1/spirv.core.grammar.json
++SPV_CORELATEST_GRAMMAR=$(SPV_COREUNIFIED1_GRAMMAR)
++SPV_GLSL_GRAMMAR=$(SPVHEADERS_LOCAL_PATH)/include/spirv/1.2/extinst.glsl.std.450.grammar.json
++SPV_OPENCL_GRAMMAR=$(SPVHEADERS_LOCAL_PATH)/include/spirv/1.2/extinst.opencl.std.100.grammar.json
++# TODO(dneto): I expect the DebugInfo grammar file to eventually migrate to SPIRV-Headers
++SPV_DEBUGINFO_GRAMMAR=$(LOCAL_PATH)/source/extinst.debuginfo.grammar.json
++
++define gen_spvtools_grammar_tables
++$(call generate-file-dir,$(1)/core.insts-1.0.inc)
++$(1)/core.insts-1.0.inc $(1)/operand.kinds-1.0.inc $(1)/glsl.std.450.insts.inc $(1)/opencl.std.insts.inc: \
++        $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++        $(SPV_CORE10_GRAMMAR) \
++        $(SPV_GLSL_GRAMMAR) \
++        $(SPV_OPENCL_GRAMMAR) \
++        $(SPV_DEBUGINFO_GRAMMAR)
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++                              --spirv-core-grammar=$(SPV_CORE10_GRAMMAR) \
++                              --extinst-glsl-grammar=$(SPV_GLSL_GRAMMAR) \
++                              --extinst-opencl-grammar=$(SPV_OPENCL_GRAMMAR) \
++                              --extinst-debuginfo-grammar=$(SPV_DEBUGINFO_GRAMMAR) \
++                              --core-insts-output=$(1)/core.insts-1.0.inc \
++                              --glsl-insts-output=$(1)/glsl.std.450.insts.inc \
++                              --opencl-insts-output=$(1)/opencl.std.insts.inc \
++                              --operand-kinds-output=$(1)/operand.kinds-1.0.inc
++              @echo "[$(TARGET_ARCH_ABI)] Grammar v1.0   : instructions & operands <= grammar JSON files"
++$(1)/core.insts-1.1.inc $(1)/operand.kinds-1.1.inc: \
++        $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++        $(SPV_CORE11_GRAMMAR) \
++        $(SPV_DEBUGINFO_GRAMMAR)
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++                              --spirv-core-grammar=$(SPV_CORE11_GRAMMAR) \
++                              --extinst-debuginfo-grammar=$(SPV_DEBUGINFO_GRAMMAR) \
++                              --core-insts-output=$(1)/core.insts-1.1.inc \
++                              --operand-kinds-output=$(1)/operand.kinds-1.1.inc
++              @echo "[$(TARGET_ARCH_ABI)] Grammar v1.1   : instructions & operands <= grammar JSON files"
++$(1)/core.insts-1.2.inc $(1)/operand.kinds-1.2.inc: \
++        $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++        $(SPV_CORE12_GRAMMAR) \
++        $(SPV_DEBUGINFO_GRAMMAR)
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++                              --spirv-core-grammar=$(SPV_CORE12_GRAMMAR) \
++                              --extinst-debuginfo-grammar=$(SPV_DEBUGINFO_GRAMMAR) \
++                              --core-insts-output=$(1)/core.insts-1.2.inc \
++                              --operand-kinds-output=$(1)/operand.kinds-1.2.inc
++              @echo "[$(TARGET_ARCH_ABI)] Grammar v1.2   : instructions & operands <= grammar JSON files"
++$(1)/core.insts-unified1.inc $(1)/operand.kinds-unified1.inc: \
++        $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++        $(SPV_COREUNIFIED1_GRAMMAR) \
++        $(SPV_DEBUGINFO_GRAMMAR)
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++                              --spirv-core-grammar=$(SPV_COREUNIFIED1_GRAMMAR) \
++                              --extinst-debuginfo-grammar=$(SPV_DEBUGINFO_GRAMMAR) \
++                              --core-insts-output=$(1)/core.insts-unified1.inc \
++                              --operand-kinds-output=$(1)/operand.kinds-unified1.inc
++              @echo "[$(TARGET_ARCH_ABI)] Grammar v1.3 (from unified1)  : instructions & operands <= grammar JSON files"
++$(LOCAL_PATH)/source/opcode.cpp: $(1)/core.insts-1.0.inc $(1)/core.insts-1.1.inc $(1)/core.insts-1.2.inc $(1)/core.insts-unified1.inc
++$(LOCAL_PATH)/source/operand.cpp: $(1)/operand.kinds-1.0.inc $(1)/operand.kinds-1.1.inc $(1)/operand.kinds-1.2.inc $(1)/operand.kinds-unified1.inc
++$(LOCAL_PATH)/source/ext_inst.cpp: \
++      $(1)/glsl.std.450.insts.inc \
++      $(1)/opencl.std.insts.inc \
++      $(1)/debuginfo.insts.inc \
++      $(1)/spv-amd-gcn-shader.insts.inc \
++      $(1)/spv-amd-shader-ballot.insts.inc \
++      $(1)/spv-amd-shader-explicit-vertex-parameter.insts.inc \
++      $(1)/spv-amd-shader-trinary-minmax.insts.inc
++endef
++$(eval $(call gen_spvtools_grammar_tables,$(SPVTOOLS_OUT_PATH)))
++
++
++define gen_spvtools_lang_headers
++# Generate language-specific headers.  So far we only generate C headers
++# $1 is the output directory.
++# $2 is the base name of the header file, e.g. "DebugInfo".
++# $3 is the grammar file containing token definitions.
++$(call generate-file-dir,$(1)/$(2).h)
++$(1)/$(2).h : \
++        $(LOCAL_PATH)/utils/generate_language_headers.py \
++        $(3)
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_language_headers.py \
++                  --extinst-name=$(2) \
++                  --extinst-grammar=$(3) \
++                  --extinst-output-base=$(1)/$(2)
++              @echo "[$(TARGET_ARCH_ABI)] Generate language specific header for $(2): headers <= grammar"
++$(LOCAL_PATH)/source/ext_inst.cpp: $(1)/$(2).h
++endef
++# We generate language-specific headers for DebugInfo
++$(eval $(call gen_spvtools_lang_headers,$(SPVTOOLS_OUT_PATH),DebugInfo,$(SPV_DEBUGINFO_GRAMMAR)))
++
++
++define gen_spvtools_vendor_tables
++$(call generate-file-dir,$(1)/$(2).insts.inc)
++$(1)/$(2).insts.inc : \
++        $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++        $(LOCAL_PATH)/source/extinst.$(2).grammar.json
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++                  --extinst-vendor-grammar=$(LOCAL_PATH)/source/extinst.$(2).grammar.json \
++                  --vendor-insts-output=$(1)/$(2).insts.inc
++              @echo "[$(TARGET_ARCH_ABI)] Vendor extended instruction set: $(2) tables <= grammar"
++$(LOCAL_PATH)/source/ext_inst.cpp: $(1)/$(2).insts.inc
++endef
++# Vendor extended instruction sets, with grammars from SPIRV-Tools source tree.
++SPV_NONSTANDARD_EXTINST_GRAMMARS=$(foreach F,$(wildcard $(LOCAL_PATH)/source/extinst.*.grammar.json),$(patsubst extinst.%.grammar.json,%,$(notdir $F)))
++$(foreach E,$(SPV_NONSTANDARD_EXTINST_GRAMMARS),$(eval $(call gen_spvtools_vendor_tables,$(SPVTOOLS_OUT_PATH),$E)))
++
++define gen_spvtools_enum_string_mapping
++$(call generate-file-dir,$(1)/extension_enum.inc.inc)
++$(1)/extension_enum.inc $(1)/enum_string_mapping.inc: \
++        $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++        $(SPV_CORELATEST_GRAMMAR)
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_grammar_tables.py \
++                              --spirv-core-grammar=$(SPV_CORELATEST_GRAMMAR) \
++                              --extinst-debuginfo-grammar=$(SPV_DEBUGINFO_GRAMMAR) \
++                              --extension-enum-output=$(1)/extension_enum.inc \
++                              --enum-string-mapping-output=$(1)/enum_string_mapping.inc
++              @echo "[$(TARGET_ARCH_ABI)] Generate enum<->string mapping <= grammar JSON files"
++# Generated header extension_enum.inc is transitively included by table.h, which is
++# used pervasively.  Capture the pervasive dependency.
++$(foreach F,$(SPVTOOLS_SRC_FILES) $(SPVTOOLS_OPT_SRC_FILES),$(LOCAL_PATH)/$F ) \
++  : $(1)/extension_enum.inc
++$(LOCAL_PATH)/source/enum_string_mapping.cpp: $(1)/enum_string_mapping.inc
++endef
++$(eval $(call gen_spvtools_enum_string_mapping,$(SPVTOOLS_OUT_PATH)))
++
++define gen_spvtools_build_version_inc
++$(call generate-file-dir,$(1)/dummy_filename)
++$(1)/build-version.inc: \
++        $(LOCAL_PATH)/utils/update_build_version.py \
++        $(LOCAL_PATH)/CHANGES
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/update_build_version.py \
++                              $(LOCAL_PATH) $(1)/build-version.inc
++              @echo "[$(TARGET_ARCH_ABI)] Generate       : build-version.inc <= CHANGES"
++$(LOCAL_PATH)/source/software_version.cpp: $(1)/build-version.inc
++endef
++$(eval $(call gen_spvtools_build_version_inc,$(SPVTOOLS_OUT_PATH)))
++
++define gen_spvtools_generators_inc
++$(call generate-file-dir,$(1)/dummy_filename)
++$(1)/generators.inc: \
++        $(LOCAL_PATH)/utils/generate_registry_tables.py \
++        $(SPVHEADERS_LOCAL_PATH)/include/spirv/spir-v.xml
++              @$(HOST_PYTHON) $(LOCAL_PATH)/utils/generate_registry_tables.py \
++                              --xml=$(SPVHEADERS_LOCAL_PATH)/include/spirv/spir-v.xml \
++                              --generator-output=$(1)/generators.inc
++              @echo "[$(TARGET_ARCH_ABI)] Generate       : generators.inc <= spir-v.xml"
++$(LOCAL_PATH)/source/opcode.cpp: $(1)/generators.inc
++endef
++$(eval $(call gen_spvtools_generators_inc,$(SPVTOOLS_OUT_PATH)))
++
++include $(CLEAR_VARS)
++LOCAL_MODULE := SPIRV-Tools
++LOCAL_C_INCLUDES := \
++              $(LOCAL_PATH)/include \
++              $(SPVHEADERS_LOCAL_PATH)/include \
++              $(SPVTOOLS_OUT_PATH)
++LOCAL_EXPORT_C_INCLUDES := \
++              $(LOCAL_PATH)/include
++LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror
++LOCAL_SRC_FILES:= $(SPVTOOLS_SRC_FILES)
++include $(BUILD_STATIC_LIBRARY)
++
++include $(CLEAR_VARS)
++LOCAL_MODULE := SPIRV-Tools-opt
++LOCAL_C_INCLUDES := \
++              $(LOCAL_PATH)/include \
++              $(LOCAL_PATH)/source \
++              $(SPVHEADERS_LOCAL_PATH)/include \
++              $(SPVTOOLS_OUT_PATH)
++LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror
++LOCAL_STATIC_LIBRARIES:=SPIRV-Tools
++LOCAL_SRC_FILES:= $(SPVTOOLS_OPT_SRC_FILES)
++include $(BUILD_STATIC_LIBRARY)
index 0000000,0000000..69e3dc8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,801 @@@
++# Copyright 2018 Google Inc. All rights reserved.
++#
++# Licensed under the Apache License, Version 2.0 (the "License");
++# you may not use this file except in compliance with the License.
++# You may obtain a copy of the License at
++#
++#     http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS,
++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++# See the License for the specific language governing permissions and
++# limitations under the License.
++
++import("//build_overrides/spirv_tools.gni")
++
++import("//testing/test.gni")
++import("//build_overrides/build.gni")
++
++spirv_headers = spirv_tools_spirv_headers_dir
++
++template("spvtools_core_tables") {
++  assert(defined(invoker.version), "Need version in $target_name generation.")
++
++  action("spvtools_core_tables_" + target_name) {
++    script = "utils/generate_grammar_tables.py"
++
++    version = invoker.version
++
++    core_json_file =
++        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
++    core_insts_file = "${target_gen_dir}/core.insts-$version.inc"
++    operand_kinds_file = "${target_gen_dir}/operand.kinds-$version.inc"
++    extinst_file = "source/extinst.debuginfo.grammar.json"
++
++    sources = [
++      core_json_file,
++    ]
++    outputs = [
++      core_insts_file,
++      operand_kinds_file,
++    ]
++    args = [
++      "--spirv-core-grammar",
++      rebase_path(core_json_file, root_build_dir),
++      "--core-insts-output",
++      rebase_path(core_insts_file, root_build_dir),
++      "--extinst-debuginfo-grammar",
++      rebase_path(extinst_file, root_build_dir),
++      "--operand-kinds-output",
++      rebase_path(operand_kinds_file, root_build_dir),
++    ]
++  }
++}
++
++template("spvtools_core_enums") {
++  assert(defined(invoker.version), "Need version in $target_name generation.")
++
++  action("spvtools_core_enums_" + target_name) {
++    script = "utils/generate_grammar_tables.py"
++
++    version = invoker.version
++
++    core_json_file =
++        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
++    debug_insts_file = "source/extinst.debuginfo.grammar.json"
++    extension_enum_file = "${target_gen_dir}/extension_enum.inc"
++    extension_map_file = "${target_gen_dir}/enum_string_mapping.inc"
++
++    args = [
++      "--spirv-core-grammar",
++      rebase_path(core_json_file, root_build_dir),
++      "--extinst-debuginfo-grammar",
++      rebase_path(debug_insts_file, root_build_dir),
++      "--extension-enum-output",
++      rebase_path(extension_enum_file, root_build_dir),
++      "--enum-string-mapping-output",
++      rebase_path(extension_map_file, root_build_dir),
++    ]
++    inputs = [
++      core_json_file,
++    ]
++    outputs = [
++      extension_enum_file,
++      extension_map_file,
++    ]
++  }
++}
++
++template("spvtools_glsl_tables") {
++  assert(defined(invoker.version), "Need version in $target_name generation.")
++
++  action("spvtools_glsl_tables_" + target_name) {
++    script = "utils/generate_grammar_tables.py"
++
++    version = invoker.version
++
++    core_json_file =
++        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
++    glsl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.glsl.std.450.grammar.json"
++    glsl_insts_file = "${target_gen_dir}/glsl.std.450.insts.inc"
++    debug_insts_file = "source/extinst.debuginfo.grammar.json"
++
++    args = [
++      "--spirv-core-grammar",
++      rebase_path(core_json_file, root_build_dir),
++      "--extinst-glsl-grammar",
++      rebase_path(glsl_json_file, root_build_dir),
++      "--glsl-insts-output",
++      rebase_path(glsl_insts_file, root_build_dir),
++      "--extinst-debuginfo-grammar",
++      rebase_path(debug_insts_file, root_build_dir),
++    ]
++    inputs = [
++      core_json_file,
++      glsl_json_file,
++    ]
++    outputs = [
++      glsl_insts_file,
++    ]
++  }
++}
++
++template("spvtools_opencl_tables") {
++  assert(defined(invoker.version), "Need version in $target_name generation.")
++
++  action("spvtools_opencl_tables_" + target_name) {
++    script = "utils/generate_grammar_tables.py"
++
++    version = invoker.version
++
++    core_json_file =
++        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
++    opengl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.opencl.std.100.grammar.json"
++    opencl_insts_file = "${target_gen_dir}/opencl.std.insts.inc"
++    debug_insts_file = "source/extinst.debuginfo.grammar.json"
++
++    args = [
++      "--spirv-core-grammar",
++      rebase_path(core_json_file, root_build_dir),
++      "--extinst-opencl-grammar",
++      rebase_path(opengl_json_file, root_build_dir),
++      "--opencl-insts-output",
++      rebase_path(opencl_insts_file, root_build_dir),
++      "--extinst-debuginfo-grammar",
++      rebase_path(debug_insts_file, root_build_dir),
++    ]
++    inputs = [
++      core_json_file,
++      opengl_json_file,
++    ]
++    outputs = [
++      opencl_insts_file,
++    ]
++  }
++}
++
++template("spvtools_language_header") {
++  assert(defined(invoker.name), "Need name in $target_name generation.")
++
++  action("spvtools_language_header_" + target_name) {
++    script = "utils/generate_language_headers.py"
++
++    name = invoker.name
++    extinst_output_base = "${target_gen_dir}/${name}"
++    debug_insts_file = "source/extinst.debuginfo.grammar.json"
++
++    args = [
++      "--extinst-name",
++      "${name}",
++      "--extinst-grammar",
++      rebase_path(debug_insts_file, root_build_dir),
++      "--extinst-output-base",
++      rebase_path(extinst_output_base, root_build_dir),
++    ]
++    inputs = [
++      debug_insts_file,
++    ]
++    outputs = [
++      "${extinst_output_base}.h",
++    ]
++  }
++}
++
++template("spvtools_vendor_table") {
++  assert(defined(invoker.name), "Need name in $target_name generation.")
++
++  action("spvtools_vendor_tables_" + target_name) {
++    script = "utils/generate_grammar_tables.py"
++
++    name = invoker.name
++    extinst_vendor_grammar = "source/extinst.${name}.grammar.json"
++    extinst_file = "${target_gen_dir}/${name}.insts.inc"
++
++    args = [
++      "--extinst-vendor-grammar",
++      rebase_path(extinst_vendor_grammar, root_build_dir),
++      "--vendor-insts-output",
++      rebase_path(extinst_file, root_build_dir),
++    ]
++    inputs = [
++      extinst_vendor_grammar,
++    ]
++    outputs = [
++      extinst_file,
++    ]
++  }
++}
++
++action("spvtools_generators_inc") {
++  script = "utils/generate_registry_tables.py"
++
++  # TODO(dsinclair): Make work for chrome
++  xml_file = "${spirv_headers}/include/spirv/spir-v.xml"
++  inc_file = "${target_gen_dir}/generators.inc"
++
++  sources = [
++    xml_file,
++  ]
++  outputs = [
++    inc_file,
++  ]
++  args = [
++    "--xml",
++    rebase_path(xml_file, root_build_dir),
++    "--generator",
++    rebase_path(inc_file, root_build_dir),
++  ]
++}
++
++action("spvtools_build_version") {
++  script = "utils/update_build_version.py"
++
++  src_dir = "."
++  inc_file = "${target_gen_dir}/build-version.inc"
++
++  outputs = [
++    inc_file,
++  ]
++  args = [
++    rebase_path(src_dir, root_build_dir),
++    rebase_path(inc_file, root_build_dir),
++  ]
++}
++
++spvtools_core_tables("unified1") {
++  version = "unified1"
++}
++spvtools_core_enums("unified1") {
++  version = "unified1"
++}
++spvtools_glsl_tables("glsl1-0") {
++  version = "1.0"
++}
++spvtools_opencl_tables("opencl1-0") {
++  version = "1.0"
++}
++spvtools_language_header("unified1") {
++  name = "DebugInfo"
++}
++
++spvtools_vendor_tables = [
++  "spv-amd-shader-explicit-vertex-parameter",
++  "spv-amd-shader-trinary-minmax",
++  "spv-amd-gcn-shader",
++  "spv-amd-shader-ballot",
++  "debuginfo",
++]
++
++foreach(table, spvtools_vendor_tables) {
++  spvtools_vendor_table(table) {
++    name = table
++  }
++}
++
++config("spvtools_public_config") {
++  include_dirs = [ "include" ]
++}
++
++config("spvtools_internal_config") {
++  include_dirs = [
++    ".",
++    "$target_gen_dir",
++    "${spirv_headers}/include",
++  ]
++
++  configs = [ ":spvtools_public_config" ]
++
++  if (is_clang) {
++    cflags = [ "-Wno-implicit-fallthrough" ]
++  }
++}
++
++source_set("spvtools_headers") {
++  sources = [
++    "include/spirv-tools/libspirv.h",
++    "include/spirv-tools/libspirv.hpp",
++    "include/spirv-tools/linker.hpp",
++    "include/spirv-tools/optimizer.hpp",
++    "include/spirv-tools/instrument.hpp",
++  ]
++
++  public_configs = [ ":spvtools_public_config" ]
++}
++
++static_library("spvtools") {
++  deps = [
++    ":spvtools_core_enums_unified1",
++    ":spvtools_core_tables_unified1",
++    ":spvtools_generators_inc",
++    ":spvtools_glsl_tables_glsl1-0",
++    ":spvtools_language_header_unified1",
++    ":spvtools_opencl_tables_opencl1-0",
++  ]
++  foreach(target_name, spvtools_vendor_tables) {
++    deps += [ ":spvtools_vendor_tables_$target_name" ]
++  }
++
++  sources = [
++    "source/assembly_grammar.cpp",
++    "source/assembly_grammar.h",
++    "source/binary.cpp",
++    "source/binary.h",
++    "source/diagnostic.cpp",
++    "source/diagnostic.h",
++    "source/disassemble.cpp",
++    "source/enum_set.h",
++    "source/enum_string_mapping.cpp",
++    "source/ext_inst.cpp",
++    "source/ext_inst.h",
++    "source/extensions.cpp",
++    "source/extensions.h",
++    "source/instruction.h",
++    "source/libspirv.cpp",
++    "source/macro.h",
++    "source/name_mapper.cpp",
++    "source/name_mapper.h",
++    "source/opcode.cpp",
++    "source/opcode.h",
++    "source/operand.cpp",
++    "source/operand.h",
++    "source/parsed_operand.cpp",
++    "source/parsed_operand.h",
++    "source/print.cpp",
++    "source/print.h",
++    "source/spirv_constant.h",
++    "source/spirv_definition.h",
++    "source/spirv_endian.cpp",
++    "source/spirv_endian.h",
++    "source/spirv_optimizer_options.cpp",
++    "source/spirv_optimizer_options.h",
++    "source/spirv_target_env.cpp",
++    "source/spirv_target_env.h",
++    "source/spirv_validator_options.cpp",
++    "source/spirv_validator_options.h",
++    "source/table.cpp",
++    "source/table.h",
++    "source/text.cpp",
++    "source/text.h",
++    "source/text_handler.cpp",
++    "source/text_handler.h",
++    "source/util/bit_vector.cpp",
++    "source/util/bit_vector.h",
++    "source/util/bitutils.h",
++    "source/util/hex_float.h",
++    "source/util/ilist.h",
++    "source/util/ilist_node.h",
++    "source/util/make_unique.h",
++    "source/util/parse_number.cpp",
++    "source/util/parse_number.h",
++    "source/util/small_vector.h",
++    "source/util/string_utils.cpp",
++    "source/util/string_utils.h",
++    "source/util/timer.cpp",
++    "source/util/timer.h",
++  ]
++
++  public_deps = [
++    ":spvtools_headers",
++  ]
++
++  configs -= [ "//build/config/compiler:chromium_code" ]
++  configs += [
++    "//build/config/compiler:no_chromium_code",
++    ":spvtools_internal_config",
++  ]
++}
++
++static_library("spvtools_val") {
++  sources = [
++    "source/val/basic_block.cpp",
++    "source/val/construct.cpp",
++    "source/val/function.cpp",
++    "source/val/instruction.cpp",
++    "source/val/validate.cpp",
++    "source/val/validate.h",
++    "source/val/validate_adjacency.cpp",
++    "source/val/validate_annotation.cpp",
++    "source/val/validate_arithmetics.cpp",
++    "source/val/validate_atomics.cpp",
++    "source/val/validate_barriers.cpp",
++    "source/val/validate_bitwise.cpp",
++    "source/val/validate_builtins.cpp",
++    "source/val/validate_capability.cpp",
++    "source/val/validate_cfg.cpp",
++    "source/val/validate_composites.cpp",
++    "source/val/validate_constants.cpp",
++    "source/val/validate_conversion.cpp",
++    "source/val/validate_datarules.cpp",
++    "source/val/validate_debug.cpp",
++    "source/val/validate_decorations.cpp",
++    "source/val/validate_derivatives.cpp",
++    "source/val/validate_execution_limitations.cpp",
++    "source/val/validate_extensions.cpp",
++    "source/val/validate_function.cpp",
++    "source/val/validate_id.cpp",
++    "source/val/validate_image.cpp",
++    "source/val/validate_instruction.cpp",
++    "source/val/validate_interfaces.cpp",
++    "source/val/validate_layout.cpp",
++    "source/val/validate_literals.cpp",
++    "source/val/validate_logicals.cpp",
++    "source/val/validate_memory.cpp",
++    "source/val/validate_memory_semantics.cpp",
++    "source/val/validate_mode_setting.cpp",
++    "source/val/validate_non_uniform.cpp",
++    "source/val/validate_primitives.cpp",
++    "source/val/validate_scopes.cpp",
++    "source/val/validate_type.cpp",
++    "source/val/validation_state.cpp",
++  ]
++
++  deps = [
++    ":spvtools",
++  ]
++  public_deps = [
++    ":spvtools_headers",
++  ]
++
++  configs -= [ "//build/config/compiler:chromium_code" ]
++  configs += [
++    "//build/config/compiler:no_chromium_code",
++    ":spvtools_internal_config",
++  ]
++}
++
++static_library("spvtools_opt") {
++  sources = [
++    "source/opt/aggressive_dead_code_elim_pass.cpp",
++    "source/opt/aggressive_dead_code_elim_pass.h",
++    "source/opt/basic_block.cpp",
++    "source/opt/basic_block.h",
++    "source/opt/block_merge_pass.cpp",
++    "source/opt/block_merge_pass.h",
++    "source/opt/build_module.cpp",
++    "source/opt/build_module.h",
++    "source/opt/ccp_pass.cpp",
++    "source/opt/ccp_pass.h",
++    "source/opt/cfg.cpp",
++    "source/opt/cfg.h",
++    "source/opt/cfg_cleanup_pass.cpp",
++    "source/opt/cfg_cleanup_pass.h",
++    "source/opt/code_sink.cpp",
++    "source/opt/code_sink.h",
++    "source/opt/combine_access_chains.cpp",
++    "source/opt/combine_access_chains.h",
++    "source/opt/common_uniform_elim_pass.cpp",
++    "source/opt/common_uniform_elim_pass.h",
++    "source/opt/compact_ids_pass.cpp",
++    "source/opt/compact_ids_pass.h",
++    "source/opt/composite.cpp",
++    "source/opt/composite.h",
++    "source/opt/const_folding_rules.cpp",
++    "source/opt/const_folding_rules.h",
++    "source/opt/constants.cpp",
++    "source/opt/constants.h",
++    "source/opt/copy_prop_arrays.cpp",
++    "source/opt/copy_prop_arrays.h",
++    "source/opt/dead_branch_elim_pass.cpp",
++    "source/opt/dead_branch_elim_pass.h",
++    "source/opt/dead_insert_elim_pass.cpp",
++    "source/opt/dead_insert_elim_pass.h",
++    "source/opt/dead_variable_elimination.cpp",
++    "source/opt/dead_variable_elimination.h",
++    "source/opt/decoration_manager.cpp",
++    "source/opt/decoration_manager.h",
++    "source/opt/def_use_manager.cpp",
++    "source/opt/def_use_manager.h",
++    "source/opt/dominator_analysis.cpp",
++    "source/opt/dominator_analysis.h",
++    "source/opt/dominator_tree.cpp",
++    "source/opt/dominator_tree.h",
++    "source/opt/eliminate_dead_constant_pass.cpp",
++    "source/opt/eliminate_dead_constant_pass.h",
++    "source/opt/eliminate_dead_functions_pass.cpp",
++    "source/opt/eliminate_dead_functions_pass.h",
++    "source/opt/feature_manager.cpp",
++    "source/opt/feature_manager.h",
++    "source/opt/flatten_decoration_pass.cpp",
++    "source/opt/flatten_decoration_pass.h",
++    "source/opt/fold.cpp",
++    "source/opt/fold.h",
++    "source/opt/fold_spec_constant_op_and_composite_pass.cpp",
++    "source/opt/fold_spec_constant_op_and_composite_pass.h",
++    "source/opt/folding_rules.cpp",
++    "source/opt/folding_rules.h",
++    "source/opt/freeze_spec_constant_value_pass.cpp",
++    "source/opt/freeze_spec_constant_value_pass.h",
++    "source/opt/function.cpp",
++    "source/opt/function.h",
++    "source/opt/if_conversion.cpp",
++    "source/opt/if_conversion.h",
++    "source/opt/inline_exhaustive_pass.cpp",
++    "source/opt/inline_exhaustive_pass.h",
++    "source/opt/inline_opaque_pass.cpp",
++    "source/opt/inline_opaque_pass.h",
++    "source/opt/inline_pass.cpp",
++    "source/opt/inline_pass.h",
++    "source/opt/inst_bindless_check_pass.cpp",
++    "source/opt/inst_bindless_check_pass.h",
++    "source/opt/instruction.cpp",
++    "source/opt/instruction.h",
++    "source/opt/instruction_list.cpp",
++    "source/opt/instruction_list.h",
++    "source/opt/instrument_pass.cpp",
++    "source/opt/instrument_pass.h",
++    "source/opt/ir_builder.h",
++    "source/opt/ir_context.cpp",
++    "source/opt/ir_context.h",
++    "source/opt/ir_loader.cpp",
++    "source/opt/ir_loader.h",
++    "source/opt/iterator.h",
++    "source/opt/licm_pass.cpp",
++    "source/opt/licm_pass.h",
++    "source/opt/local_access_chain_convert_pass.cpp",
++    "source/opt/local_access_chain_convert_pass.h",
++    "source/opt/local_redundancy_elimination.cpp",
++    "source/opt/local_redundancy_elimination.h",
++    "source/opt/local_single_block_elim_pass.cpp",
++    "source/opt/local_single_block_elim_pass.h",
++    "source/opt/local_single_store_elim_pass.cpp",
++    "source/opt/local_single_store_elim_pass.h",
++    "source/opt/local_ssa_elim_pass.cpp",
++    "source/opt/local_ssa_elim_pass.h",
++    "source/opt/log.h",
++    "source/opt/loop_dependence.cpp",
++    "source/opt/loop_dependence.h",
++    "source/opt/loop_dependence_helpers.cpp",
++    "source/opt/loop_descriptor.cpp",
++    "source/opt/loop_descriptor.h",
++    "source/opt/loop_fission.cpp",
++    "source/opt/loop_fission.h",
++    "source/opt/loop_fusion.cpp",
++    "source/opt/loop_fusion.h",
++    "source/opt/loop_fusion_pass.cpp",
++    "source/opt/loop_fusion_pass.h",
++    "source/opt/loop_peeling.cpp",
++    "source/opt/loop_peeling.h",
++    "source/opt/loop_unroller.cpp",
++    "source/opt/loop_unroller.h",
++    "source/opt/loop_unswitch_pass.cpp",
++    "source/opt/loop_unswitch_pass.h",
++    "source/opt/loop_utils.cpp",
++    "source/opt/loop_utils.h",
++    "source/opt/mem_pass.cpp",
++    "source/opt/mem_pass.h",
++    "source/opt/merge_return_pass.cpp",
++    "source/opt/merge_return_pass.h",
++    "source/opt/module.cpp",
++    "source/opt/module.h",
++    "source/opt/null_pass.h",
++    "source/opt/optimizer.cpp",
++    "source/opt/pass.cpp",
++    "source/opt/pass.h",
++    "source/opt/pass_manager.cpp",
++    "source/opt/pass_manager.h",
++    "source/opt/passes.h",
++    "source/opt/private_to_local_pass.cpp",
++    "source/opt/private_to_local_pass.h",
++    "source/opt/process_lines_pass.cpp",
++    "source/opt/process_lines_pass.h",
++    "source/opt/propagator.cpp",
++    "source/opt/propagator.h",
++    "source/opt/reduce_load_size.cpp",
++    "source/opt/reduce_load_size.h",
++    "source/opt/redundancy_elimination.cpp",
++    "source/opt/redundancy_elimination.h",
++    "source/opt/reflect.h",
++    "source/opt/register_pressure.cpp",
++    "source/opt/register_pressure.h",
++    "source/opt/remove_duplicates_pass.cpp",
++    "source/opt/remove_duplicates_pass.h",
++    "source/opt/replace_invalid_opc.cpp",
++    "source/opt/replace_invalid_opc.h",
++    "source/opt/scalar_analysis.cpp",
++    "source/opt/scalar_analysis.h",
++    "source/opt/scalar_analysis_nodes.h",
++    "source/opt/scalar_analysis_simplification.cpp",
++    "source/opt/scalar_replacement_pass.cpp",
++    "source/opt/scalar_replacement_pass.h",
++    "source/opt/set_spec_constant_default_value_pass.cpp",
++    "source/opt/set_spec_constant_default_value_pass.h",
++    "source/opt/simplification_pass.cpp",
++    "source/opt/simplification_pass.h",
++    "source/opt/ssa_rewrite_pass.cpp",
++    "source/opt/ssa_rewrite_pass.h",
++    "source/opt/strength_reduction_pass.cpp",
++    "source/opt/strength_reduction_pass.h",
++    "source/opt/strip_debug_info_pass.cpp",
++    "source/opt/strip_debug_info_pass.h",
++    "source/opt/strip_reflect_info_pass.cpp",
++    "source/opt/strip_reflect_info_pass.h",
++    "source/opt/struct_cfg_analysis.cpp",
++    "source/opt/struct_cfg_analysis.h",
++    "source/opt/tree_iterator.h",
++    "source/opt/type_manager.cpp",
++    "source/opt/type_manager.h",
++    "source/opt/types.cpp",
++    "source/opt/types.h",
++    "source/opt/unify_const_pass.cpp",
++    "source/opt/unify_const_pass.h",
++    "source/opt/upgrade_memory_model.cpp",
++    "source/opt/upgrade_memory_model.h",
++    "source/opt/value_number_table.cpp",
++    "source/opt/value_number_table.h",
++    "source/opt/vector_dce.cpp",
++    "source/opt/vector_dce.h",
++    "source/opt/workaround1209.cpp",
++    "source/opt/workaround1209.h",
++  ]
++
++  deps = [
++    ":spvtools",
++  ]
++  public_deps = [
++    ":spvtools_headers",
++  ]
++
++  configs -= [ "//build/config/compiler:chromium_code" ]
++  configs += [
++    "//build/config/compiler:no_chromium_code",
++    ":spvtools_internal_config",
++  ]
++}
++
++group("SPIRV-Tools") {
++  deps = [
++    ":spvtools",
++    ":spvtools_opt",
++    ":spvtools_val",
++  ]
++}
++
++if (!build_with_chromium) {
++  googletest_dir = spirv_tools_googletest_dir
++
++  config("gtest_config") {
++    include_dirs = [
++      "${googletest_dir}/googletest",
++      "${googletest_dir}/googletest/include",
++    ]
++  }
++
++  static_library("gtest") {
++    testonly = true
++    sources = [
++      "${googletest_dir}/googletest/src/gtest-all.cc",
++    ]
++    public_configs = [ ":gtest_config" ]
++  }
++
++  config("gmock_config") {
++    include_dirs = [
++      "${googletest_dir}/googlemock",
++      "${googletest_dir}/googlemock/include",
++      "${googletest_dir}/googletest/include",
++    ]
++    if (is_clang) {
++      # TODO: Can remove this if/when the issue is fixed.
++      # https://github.com/google/googletest/issues/533
++      cflags = [ "-Wno-inconsistent-missing-override" ]
++    }
++  }
++
++  static_library("gmock") {
++    testonly = true
++    sources = [
++      "${googletest_dir}/googlemock/src/gmock-all.cc",
++    ]
++    public_configs = [ ":gmock_config" ]
++  }
++}
++
++test("spvtools_test") {
++  sources = [
++    "test/assembly_context_test.cpp",
++    "test/assembly_format_test.cpp",
++    "test/binary_destroy_test.cpp",
++    "test/binary_endianness_test.cpp",
++    "test/binary_header_get_test.cpp",
++    "test/binary_parse_test.cpp",
++    "test/binary_strnlen_s_test.cpp",
++    "test/binary_to_text.literal_test.cpp",
++    "test/binary_to_text_test.cpp",
++    "test/comment_test.cpp",
++    "test/enum_set_test.cpp",
++    "test/enum_string_mapping_test.cpp",
++    "test/ext_inst.debuginfo_test.cpp",
++    "test/ext_inst.glsl_test.cpp",
++    "test/ext_inst.opencl_test.cpp",
++    "test/fix_word_test.cpp",
++    "test/generator_magic_number_test.cpp",
++    "test/hex_float_test.cpp",
++    "test/immediate_int_test.cpp",
++    "test/libspirv_macros_test.cpp",
++    "test/name_mapper_test.cpp",
++    "test/named_id_test.cpp",
++    "test/opcode_make_test.cpp",
++    "test/opcode_require_capabilities_test.cpp",
++    "test/opcode_split_test.cpp",
++    "test/opcode_table_get_test.cpp",
++    "test/operand_capabilities_test.cpp",
++    "test/operand_pattern_test.cpp",
++    "test/operand_test.cpp",
++    "test/target_env_test.cpp",
++    "test/test_fixture.h",
++    "test/text_advance_test.cpp",
++    "test/text_destroy_test.cpp",
++    "test/text_literal_test.cpp",
++    "test/text_start_new_inst_test.cpp",
++    "test/text_to_binary.annotation_test.cpp",
++    "test/text_to_binary.barrier_test.cpp",
++    "test/text_to_binary.constant_test.cpp",
++    "test/text_to_binary.control_flow_test.cpp",
++    "test/text_to_binary.debug_test.cpp",
++    "test/text_to_binary.device_side_enqueue_test.cpp",
++    "test/text_to_binary.extension_test.cpp",
++    "test/text_to_binary.function_test.cpp",
++    "test/text_to_binary.group_test.cpp",
++    "test/text_to_binary.image_test.cpp",
++    "test/text_to_binary.literal_test.cpp",
++    "test/text_to_binary.memory_test.cpp",
++    "test/text_to_binary.misc_test.cpp",
++    "test/text_to_binary.mode_setting_test.cpp",
++    "test/text_to_binary.pipe_storage_test.cpp",
++    "test/text_to_binary.reserved_sampling_test.cpp",
++    "test/text_to_binary.subgroup_dispatch_test.cpp",
++    "test/text_to_binary.type_declaration_test.cpp",
++    "test/text_to_binary_test.cpp",
++    "test/text_word_get_test.cpp",
++    "test/unit_spirv.cpp",
++    "test/unit_spirv.h",
++  ]
++
++  deps = [
++    ":spvtools",
++    ":spvtools_language_header_unified1",
++    ":spvtools_val",
++  ]
++
++  if (build_with_chromium) {
++    deps += [
++      "//testing/gmock",
++      "//testing/gtest",
++      "//testing/gtest:gtest_main",
++    ]
++  } else {
++    deps += [
++      ":gmock",
++      ":gtest",
++    ]
++    sources += [ "${googletest_dir}/googletest/src/gtest_main.cc" ]
++  }
++
++  if (is_clang) {
++    cflags_cc = [ "-Wno-self-assign" ]
++  }
++
++  configs += [ ":spvtools_internal_config" ]
++}
++
++if (spirv_tools_standalone) {
++  group("fuzzers") {
++    testonly = true
++    deps = [
++      "test/fuzzers",
++    ]
++  }
++}
++
++executable("spirv-as") {
++  sources = [
++    "source/software_version.cpp",
++    "tools/as/as.cpp",
++  ]
++  deps = [
++    ":spvtools",
++    ":spvtools_build_version",
++  ]
++  configs += [ ":spvtools_internal_config" ]
++}
index 0000000,d4c6dff..d4c6dff
mode 000000,100644..100644
--- /dev/null
index 0000000,0000000..a5ecb90
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,294 @@@
++# Copyright (c) 2015-2016 The Khronos Group Inc.
++#
++# Licensed under the Apache License, Version 2.0 (the "License");
++# you may not use this file except in compliance with the License.
++# You may obtain a copy of the License at
++#
++#     http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS,
++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++# See the License for the specific language governing permissions and
++# limitations under the License.
++
++cmake_minimum_required(VERSION 2.8.12)
++if (POLICY CMP0048)
++  cmake_policy(SET CMP0048 NEW)
++endif()
++if (POLICY CMP0054)
++  # Avoid dereferencing variables or interpret keywords that have been
++  # quoted or bracketed.
++  # https://cmake.org/cmake/help/v3.1/policy/CMP0054.html
++  cmake_policy(SET CMP0054 NEW)
++endif()
++set_property(GLOBAL PROPERTY USE_FOLDERS ON)
++
++project(spirv-tools)
++enable_testing()
++set(SPIRV_TOOLS "SPIRV-Tools")
++
++include(GNUInstallDirs)
++include(cmake/setup_build.cmake)
++
++set(CMAKE_POSITION_INDEPENDENT_CODE ON)
++set(CMAKE_CXX_STANDARD 11)
++
++option(SPIRV_ALLOW_TIMERS "Allow timers via clock_gettime on supported platforms" ON)
++
++if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
++  add_definitions(-DSPIRV_LINUX)
++  set(SPIRV_TIMER_ENABLED ${SPIRV_ALLOW_TIMERS})
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
++  add_definitions(-DSPIRV_WINDOWS)
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
++  add_definitions(-DSPIRV_WINDOWS)
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
++  add_definitions(-DSPIRV_MAC)
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
++  add_definitions(-DSPIRV_ANDROID)
++  set(SPIRV_TIMER_ENABLED ${SPIRV_ALLOW_TIMERS})
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
++  add_definitions(-DSPIRV_FREEBSD)
++else()
++  message(FATAL_ERROR "Your platform '${CMAKE_SYSTEM_NAME}' is not supported!")
++endif()
++
++if (${SPIRV_TIMER_ENABLED})
++  add_definitions(-DSPIRV_TIMER_ENABLED)
++endif()
++
++if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
++  message(STATUS "No build type selected, default to Debug")
++  set(CMAKE_BUILD_TYPE "Debug")
++endif()
++
++option(SKIP_SPIRV_TOOLS_INSTALL "Skip installation" ${SKIP_SPIRV_TOOLS_INSTALL})
++if(NOT ${SKIP_SPIRV_TOOLS_INSTALL})
++  set(ENABLE_SPIRV_TOOLS_INSTALL ON)
++endif()
++
++option(SPIRV_BUILD_COMPRESSION "Build SPIR-V compressing codec" OFF)
++
++option(SPIRV_WERROR "Enable error on warning" ON)
++if(("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") AND (NOT CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")))
++  set(COMPILER_IS_LIKE_GNU TRUE)
++endif()
++if(${COMPILER_IS_LIKE_GNU})
++  set(SPIRV_WARNINGS -Wall -Wextra -Wnon-virtual-dtor -Wno-missing-field-initializers)
++
++  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
++    set(SPIRV_WARNINGS ${SPIRV_WARNINGS} -Wno-self-assign)
++  endif()
++
++  option(SPIRV_WARN_EVERYTHING "Enable -Weverything" ${SPIRV_WARN_EVERYTHING})
++  if(${SPIRV_WARN_EVERYTHING})
++    if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
++      set(SPIRV_WARNINGS ${SPIRV_WARNINGS}
++        -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded)
++    elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
++      set(SPIRV_WARNINGS ${SPIRV_WARNINGS} -Wpedantic -pedantic-errors)
++    else()
++      message(STATUS "Unknown compiler ${CMAKE_CXX_COMPILER_ID}, "
++                     "so SPIRV_WARN_EVERYTHING has no effect")
++    endif()
++  endif()
++
++  if(${SPIRV_WERROR})
++    set(SPIRV_WARNINGS ${SPIRV_WARNINGS} -Werror)
++  endif()
++elseif(MSVC)
++  set(SPIRV_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS /wd4800)
++
++  if(${SPIRV_WERROR})
++    set(SPIRV_WARNINGS ${SPIRV_WARNINGS} /WX)
++  endif()
++endif()
++
++include_directories(${CMAKE_CURRENT_SOURCE_DIR}/)
++
++option(SPIRV_COLOR_TERMINAL "Enable color terminal output" ON)
++if(${SPIRV_COLOR_TERMINAL})
++  add_definitions(-DSPIRV_COLOR_TERMINAL)
++endif()
++
++option(SPIRV_LOG_DEBUG "Enable excessive debug output" OFF)
++if(${SPIRV_LOG_DEBUG})
++  add_definitions(-DSPIRV_LOG_DEBUG)
++endif()
++
++if (DEFINED SPIRV_TOOLS_EXTRA_DEFINITIONS)
++  add_definitions(${SPIRV_TOOLS_EXTRA_DEFINITIONS})
++endif()
++
++function(spvtools_default_compile_options TARGET)
++  target_compile_options(${TARGET} PRIVATE ${SPIRV_WARNINGS})
++
++  if (${COMPILER_IS_LIKE_GNU})
++    target_compile_options(${TARGET} PRIVATE
++      -std=c++11 -fno-exceptions -fno-rtti)
++    target_compile_options(${TARGET} PRIVATE
++      -Wall -Wextra -Wno-long-long -Wshadow -Wundef -Wconversion
++      -Wno-sign-conversion)
++    # For good call stacks in profiles, keep the frame pointers.
++    if(NOT "${SPIRV_PERF}" STREQUAL "")
++      target_compile_options(${TARGET} PRIVATE -fno-omit-frame-pointer)
++    endif()
++    if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
++      set(SPIRV_USE_SANITIZER "" CACHE STRING
++        "Use the clang sanitizer [address|memory|thread|...]")
++      if(NOT "${SPIRV_USE_SANITIZER}" STREQUAL "")
++        target_compile_options(${TARGET} PRIVATE
++          -fsanitize=${SPIRV_USE_SANITIZER})
++      endif()
++      target_compile_options(${TARGET} PRIVATE
++         -ftemplate-depth=1024)
++    else()
++      target_compile_options(${TARGET} PRIVATE
++         -Wno-missing-field-initializers)
++    endif()
++  endif()
++
++  if (MSVC)
++    # Specify /EHs for exception handling. This makes using SPIRV-Tools as
++    # dependencies in other projects easier.
++    target_compile_options(${TARGET} PRIVATE /EHs)
++  endif()
++
++  # For MinGW cross compile, statically link to the C++ runtime.
++  # But it still depends on MSVCRT.dll.
++  if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
++    if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
++      set_target_properties(${TARGET} PROPERTIES
++        LINK_FLAGS -static -static-libgcc -static-libstdc++)
++    endif()
++  endif()
++endfunction()
++
++if(NOT COMMAND find_host_package)
++  macro(find_host_package)
++    find_package(${ARGN})
++  endmacro()
++endif()
++if(NOT COMMAND find_host_program)
++  macro(find_host_program)
++    find_program(${ARGN})
++  endmacro()
++endif()
++
++find_host_package(PythonInterp)
++
++# Check for symbol exports on Linux.
++# At the moment, this check will fail on the OSX build machines for the Android NDK.
++# It appears they don't have objdump.
++if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
++  macro(spvtools_check_symbol_exports TARGET)
++    if (NOT "${SPIRV_SKIP_TESTS}")
++      add_test(NAME spirv-tools-symbol-exports-${TARGET}
++               COMMAND ${PYTHON_EXECUTABLE}
++               ${spirv-tools_SOURCE_DIR}/utils/check_symbol_exports.py "$<TARGET_FILE:${TARGET}>")
++    endif()
++  endmacro()
++else()
++  macro(spvtools_check_symbol_exports TARGET)
++    if (NOT "${SPIRV_SKIP_TESTS}")
++      message("Skipping symbol exports test for ${TARGET}")
++    endif()
++  endmacro()
++endif()
++
++# Defaults to OFF if the user didn't set it.
++option(SPIRV_SKIP_EXECUTABLES
++  "Skip building the executable and tests along with the library"
++  ${SPIRV_SKIP_EXECUTABLES})
++option(SPIRV_SKIP_TESTS
++  "Skip building tests along with the library" ${SPIRV_SKIP_TESTS})
++if ("${SPIRV_SKIP_EXECUTABLES}")
++  set(SPIRV_SKIP_TESTS ON)
++endif()
++
++# Defaults to ON.  The checks can be time consuming.
++# Turn off if they take too long.
++option(SPIRV_CHECK_CONTEXT "In a debug build, check if the IR context is in a valid state." ON)
++if (${SPIRV_CHECK_CONTEXT})
++  add_definitions(-DSPIRV_CHECK_CONTEXT)
++endif()
++
++# Precompiled header macro. Parameters are source file list and filename for pch cpp file.
++macro(spvtools_pch SRCS PCHPREFIX)
++  if(MSVC AND CMAKE_GENERATOR MATCHES "^Visual Studio")
++    set(PCH_NAME "$(IntDir)\\${PCHPREFIX}.pch")
++    # make source files use/depend on PCH_NAME
++    set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/Yu${PCHPREFIX}.h /FI${PCHPREFIX}.h /Fp${PCH_NAME} /Zm300" OBJECT_DEPENDS "${PCH_NAME}")
++    # make PCHPREFIX.cpp file compile and generate PCH_NAME
++    set_source_files_properties("${PCHPREFIX}.cpp" PROPERTIES COMPILE_FLAGS "/Yc${PCHPREFIX}.h /Fp${PCH_NAME} /Zm300" OBJECT_OUTPUTS "${PCH_NAME}")
++    list(APPEND ${SRCS} "${PCHPREFIX}.cpp")
++  endif()
++endmacro(spvtools_pch)
++
++add_subdirectory(external)
++
++add_subdirectory(source)
++add_subdirectory(tools)
++
++add_subdirectory(test)
++add_subdirectory(examples)
++
++if(ENABLE_SPIRV_TOOLS_INSTALL)
++  install(
++    FILES
++      ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/libspirv.h
++      ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/libspirv.hpp
++      ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/optimizer.hpp
++      ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/linker.hpp
++      ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/instrument.hpp
++    DESTINATION
++      ${CMAKE_INSTALL_INCLUDEDIR}/spirv-tools/)
++endif(ENABLE_SPIRV_TOOLS_INSTALL)
++
++if (NOT "${SPIRV_SKIP_TESTS}")
++  add_test(NAME spirv-tools-copyrights
++           COMMAND ${PYTHON_EXECUTABLE} utils/check_copyright.py
++           WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
++endif()
++
++set(SPIRV_LIBRARIES "-lSPIRV-Tools -lSPIRV-Tools-link -lSPIRV-Tools-opt")
++set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools-shared")
++if(SPIRV_BUILD_COMPRESSION)
++  set(SPIRV_LIBRARIES "${SPIRV_LIBRARIES} -lSPIRV-Tools-comp")
++endif(SPIRV_BUILD_COMPRESSION)
++
++# Build pkg-config file
++# Use a first-class target so it's regenerated when relevant files are updated.
++add_custom_target(spirv-tools-pkg-config ALL
++        COMMAND ${CMAKE_COMMAND}
++                      -DCHANGES_FILE=${CMAKE_CURRENT_SOURCE_DIR}/CHANGES
++                      -DTEMPLATE_FILE=${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools.pc.in
++                      -DOUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc
++                      -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
++                      -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
++                      -DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
++                      -DSPIRV_LIBRARIES=${SPIRV_LIBRARIES}
++                      -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake
++        DEPENDS "CHANGES" "cmake/SPIRV-Tools.pc.in" "cmake/write_pkg_config.cmake")
++add_custom_target(spirv-tools-shared-pkg-config ALL
++        COMMAND ${CMAKE_COMMAND}
++                      -DCHANGES_FILE=${CMAKE_CURRENT_SOURCE_DIR}/CHANGES
++                      -DTEMPLATE_FILE=${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools-shared.pc.in
++                      -DOUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc
++                      -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
++                      -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
++                      -DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
++                      -DSPIRV_SHARED_LIBRARIES=${SPIRV_SHARED_LIBRARIES}
++                      -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake
++        DEPENDS "CHANGES" "cmake/SPIRV-Tools-shared.pc.in" "cmake/write_pkg_config.cmake")
++
++# Install pkg-config file
++if (ENABLE_SPIRV_TOOLS_INSTALL)
++  install(
++    FILES
++      ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc
++      ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc
++    DESTINATION
++      ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
++endif()
index 0000000,0000000..a11610b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil.
index 0000000,93a5610..93a5610
mode 000000,100644..100644
--- /dev/null
index 0000000,5668c66..5668c66
mode 000000,100644..100644
--- /dev/null
--- 2/DEPS
index 0000000,d645695..d645695
mode 000000,100644..100644
--- /dev/null
index 0000000,dd3117f..dd3117f
mode 000000,100644..100644
--- /dev/null
index 0000000,0000000..534664f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,535 @@@
++# SPIR-V Tools
++
++[![Build status](https://ci.appveyor.com/api/projects/status/gpue87cesrx3pi0d/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/spirv-tools/branch/master)
++<img alt="Linux" src="kokoro/img/linux.png" width="20px" height="20px" hspace="2px"/>![Linux Build Status](https://storage.googleapis.com/spirv-tools/badges/build_status_linux_release.svg)
++<img alt="MacOS" src="kokoro/img/macos.png" width="20px" height="20px" hspace="2px"/>![MacOS Build Status](https://storage.googleapis.com/spirv-tools/badges/build_status_macos_release.svg)
++<img alt="Windows" src="kokoro/img/windows.png" width="20px" height="20px" hspace="2px"/>![Windows Build Status](https://storage.googleapis.com/spirv-tools/badges/build_status_windows_release.svg)
++
++## Overview
++
++The SPIR-V Tools project provides an API and commands for processing SPIR-V
++modules.
++
++The project includes an assembler, binary module parser, disassembler,
++validator, and optimizer for SPIR-V. Except for the optimizer, all are based
++on a common static library.  The library contains all of the implementation
++details, and is used in the standalone tools whilst also enabling integration
++into other code bases directly. The optimizer implementation resides in its
++own library, which depends on the core library.
++
++The interfaces have stabilized:
++We don't anticipate making a breaking change for existing features.
++
++SPIR-V is defined by the Khronos Group Inc.
++See the [SPIR-V Registry][spirv-registry] for the SPIR-V specification,
++headers, and XML registry.
++
++## Versioning SPIRV-Tools
++
++See [`CHANGES`](CHANGES) for a high level summary of recent changes, by version.
++
++SPIRV-Tools project version numbers are of the form `v`*year*`.`*index* and with
++an optional `-dev` suffix to indicate work in progress.  For exampe, the
++following versions are ordered from oldest to newest:
++
++* `v2016.0`
++* `v2016.1-dev`
++* `v2016.1`
++* `v2016.2-dev`
++* `v2016.2`
++
++Use the `--version` option on each command line tool to see the software
++version.  An API call reports the software version as a C-style string.
++
++## Supported features
++
++### Assembler, binary parser, and disassembler
++
++* Support for SPIR-V 1.0, 1.1, 1.2, and 1.3
++  * Based on SPIR-V syntax described by JSON grammar files in the
++    [SPIRV-Headers](spirv-headers) repository.
++* Support for extended instruction sets:
++  * GLSL std450 version 1.0 Rev 3
++  * OpenCL version 1.0 Rev 2
++* Assembler only does basic syntax checking.  No cross validation of
++  IDs or types is performed, except to check literal arguments to
++  `OpConstant`, `OpSpecConstant`, and `OpSwitch`.
++
++See [`syntax.md`](syntax.md) for the assembly language syntax.
++
++### Validator
++
++The validator checks validation rules described by the SPIR-V specification.
++
++Khronos recommends that tools that create or transform SPIR-V modules use the
++validator to ensure their outputs are valid, and that tools that consume SPIR-V
++modules optionally use the validator to protect themselves from bad inputs.
++This is especially encouraged for debug and development scenarios.
++
++The validator has one-sided error: it will only return an error when it has
++implemented a rule check and the module violates that rule.
++
++The validator is incomplete.
++See the [CHANGES](CHANGES) file for reports on completed work, and
++the [Validator
++sub-project](https://github.com/KhronosGroup/SPIRV-Tools/projects/1) for planned
++and in-progress work.
++
++*Note*: The validator checks some Universal Limits, from section 2.17 of the SPIR-V spec.
++The validator will fail on a module that exceeds those minimum upper bound limits.
++It is [future work](https://github.com/KhronosGroup/SPIRV-Tools/projects/1#card-1052403)
++to parameterize the validator to allow larger
++limits accepted by a more than minimally capable SPIR-V consumer.
++
++
++### Optimizer
++
++*Note:* The optimizer is still under development.
++
++Currently supported optimizations:
++* General
++  * Strip debug info
++* Specialization Constants
++  * Set spec constant default value
++  * Freeze spec constant
++  * Fold `OpSpecConstantOp` and `OpSpecConstantComposite`
++  * Unify constants
++  * Eliminate dead constant
++* Code Reduction
++  * Inline all function calls exhaustively
++  * Convert local access chains to inserts/extracts
++  * Eliminate local load/store in single block
++  * Eliminate local load/store with single store
++  * Eliminate local load/store with multiple stores
++  * Eliminate local extract from insert
++  * Eliminate dead instructions (aggressive)
++  * Eliminate dead branches
++  * Merge single successor / single predecessor block pairs
++  * Eliminate common uniform loads
++  * Remove duplicates: Capabilities, extended instruction imports, types, and
++    decorations.
++
++For the latest list with detailed documentation, please refer to
++[`include/spirv-tools/optimizer.hpp`](include/spirv-tools/optimizer.hpp).
++
++For suggestions on using the code reduction options, please refer to this [white paper](https://www.lunarg.com/shader-compiler-technologies/white-paper-spirv-opt/).
++
++
++### Linker
++
++*Note:* The linker is still under development.
++
++Current features:
++* Combine multiple SPIR-V binary modules together.
++* Combine into a library (exports are retained) or an executable (no symbols
++  are exported).
++
++See the [CHANGES](CHANGES) file for reports on completed work, and the [General
++sub-project](https://github.com/KhronosGroup/SPIRV-Tools/projects/2) for
++planned and in-progress work.
++
++### Extras
++
++* [Utility filters](#utility-filters)
++* Build target `spirv-tools-vimsyntax` generates file `spvasm.vim`.
++  Copy that file into your `$HOME/.vim/syntax` directory to get SPIR-V assembly syntax
++  highlighting in Vim.  This build target is not built by default.
++
++## Contributing
++
++The SPIR-V Tools project is maintained by members of the The Khronos Group Inc.,
++and is hosted at https://github.com/KhronosGroup/SPIRV-Tools.
++
++Consider joining the `public_spirv_tools_dev@khronos.org` mailing list, via
++[https://www.khronos.org/spir/spirv-tools-mailing-list/](https://www.khronos.org/spir/spirv-tools-mailing-list/).
++The mailing list is used to discuss development plans for the SPIRV-Tools as an open source project.
++Once discussion is resolved,
++specific work is tracked via issues and sometimes in one of the
++[projects][spirv-tools-projects].
++
++(To provide feedback on the SPIR-V _specification_, file an issue on the
++[SPIRV-Headers][spirv-headers] GitHub repository.)
++
++See [`projects.md`](projects.md) to see how we use the
++[GitHub Project
++feature](https://help.github.com/articles/tracking-the-progress-of-your-work-with-projects/)
++to organize planned and in-progress work.
++
++Contributions via merge request are welcome. Changes should:
++* Be provided under the [Apache 2.0](#license).
++* You'll be prompted with a one-time "click-through"
++  [Khronos Open Source Contributor License Agreement][spirv-tools-cla]
++  (CLA) dialog as part of submitting your pull request or
++  other contribution to GitHub.
++* Include tests to cover updated functionality.
++* C++ code should follow the [Google C++ Style Guide][cpp-style-guide].
++* Code should be formatted with `clang-format`.
++  [kokoro/check-format/build.sh](kokoro/check-format/build.sh)
++  shows how to download it. Note that we currently use
++  `clang-format version 5.0.0` for SPIRV-Tools. Settings are defined by
++  the included [.clang-format](.clang-format) file.
++
++We intend to maintain a linear history on the GitHub `master` branch.
++
++### Source code organization
++
++* `example`: demo code of using SPIRV-Tools APIs
++* `external/googletest`: Intended location for the
++  [googletest][googletest] sources, not provided
++* `external/effcee`: Location of [Effcee][effcee] sources, if the `effcee` library
++  is not already configured by an enclosing project.
++* `external/re2`: Location of [RE2][re2] sources, if the `re2` library is not already
++  configured by an enclosing project.
++  (The Effcee project already requires RE2.)
++* `include/`: API clients should add this directory to the include search path
++* `external/spirv-headers`: Intended location for
++  [SPIR-V headers][spirv-headers], not provided
++* `include/spirv-tools/libspirv.h`: C API public interface
++* `source/`: API implementation
++* `test/`: Tests, using the [googletest][googletest] framework
++* `tools/`: Command line executables
++
++Example of getting sources, assuming SPIRV-Tools is configured as a standalone project:
++
++    git clone https://github.com/KhronosGroup/SPIRV-Tools.git   spirv-tools
++    git clone https://github.com/KhronosGroup/SPIRV-Headers.git spirv-tools/external/spirv-headers
++    git clone https://github.com/google/googletest.git          spirv-tools/external/googletest
++    git clone https://github.com/google/effcee.git              spirv-tools/external/effcee
++    git clone https://github.com/google/re2.git                 spirv-tools/external/re2
++
++### Tests
++
++The project contains a number of tests, used to drive development
++and ensure correctness.  The tests are written using the
++[googletest][googletest] framework.  The `googletest`
++source is not provided with this project.  There are two ways to enable
++tests:
++* If SPIR-V Tools is configured as part of an enclosing project, then the
++  enclosing project should configure `googletest` before configuring SPIR-V Tools.
++* If SPIR-V Tools is configured as a standalone project, then download the
++  `googletest` source into the `<spirv-dir>/external/googletest` directory before
++  configuring and building the project.
++
++*Note*: You must use a version of googletest that includes
++[a fix][googletest-pull-612] for [googletest issue 610][googletest-issue-610].
++The fix is included on the googletest master branch any time after 2015-11-10.
++In particular, googletest must be newer than version 1.7.0.
++
++### Dependency on Effcee
++
++Some tests depend on the [Effcee][effcee] library for stateful matching.
++Effcee itself depends on [RE2][re2].
++
++* If SPIRV-Tools is configured as part of a larger project that already uses
++  Effcee, then that project should include Effcee before SPIRV-Tools.
++* Otherwise, SPIRV-Tools expects Effcee sources to appear in `external/effcee`
++  and RE2 sources to appear in `external/re2`.
++
++
++## Build
++
++Instead of building manually, you can also download the binaries for your
++platform directly from the [master-tot release][master-tot-release] on GitHub.
++Those binaries are automatically uploaded by the buildbots after successful
++testing and they always reflect the current top of the tree of the master
++branch.
++
++The project uses [CMake][cmake] to generate platform-specific build
++configurations. Assume that `<spirv-dir>` is the root directory of the checked
++out code:
++
++```sh
++cd <spirv-dir>
++git clone https://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
++git clone https://github.com/google/effcee.git external/effcee
++git clone https://github.com/google/re2.git external/re2
++git clone https://github.com/google/googletest.git external/googletest # optional
++
++mkdir build && cd build
++cmake [-G <platform-generator>] <spirv-dir>
++```
++
++Once the build files have been generated, build using your preferred
++development environment.
++
++### CMake options
++
++The following CMake options are supported:
++
++* `SPIRV_COLOR_TERMINAL={ON|OFF}`, default `ON` - Enables color console output.
++* `SPIRV_SKIP_TESTS={ON|OFF}`, default `OFF`- Build only the library and
++  the command line tools.  This will prevent the tests from being built.
++* `SPIRV_SKIP_EXECUTABLES={ON|OFF}`, default `OFF`- Build only the library, not
++  the command line tools and tests.
++* `SPIRV_BUILD_COMPRESSION={ON|OFF}`, default `OFF`- Build SPIR-V compressing
++  codec.
++* `SPIRV_USE_SANITIZER=<sanitizer>`, default is no sanitizing - On UNIX
++  platforms with an appropriate version of `clang` this option enables the use
++  of the sanitizers documented [here][clang-sanitizers].
++  This should only be used with a debug build.
++* `SPIRV_WARN_EVERYTHING={ON|OFF}`, default `OFF` - On UNIX platforms enable
++  more strict warnings.  The code might not compile with this option enabled.
++  For Clang, enables `-Weverything`.  For GCC, enables `-Wpedantic`.
++  See [`CMakeLists.txt`](CMakeLists.txt) for details.
++* `SPIRV_WERROR={ON|OFF}`, default `ON` - Forces a compilation error on any
++  warnings encountered by enabling the compiler-specific compiler front-end
++  option.  No compiler front-end options are enabled when this option is OFF.
++
++Additionally, you can pass additional C preprocessor definitions to SPIRV-Tools
++via setting `SPIRV_TOOLS_EXTRA_DEFINITIONS`. For example, by setting it to
++`/D_ITERATOR_DEBUG_LEVEL=0` on Windows, you can disable checked iterators and
++iterator debugging.
++
++### Android
++
++SPIR-V Tools supports building static libraries `libSPIRV-Tools.a` and
++`libSPIRV-Tools-opt.a` for Android:
++
++```
++cd <spirv-dir>
++
++export ANDROID_NDK=/path/to/your/ndk
++
++mkdir build && cd build
++mkdir libs
++mkdir app
++
++$ANDROID_NDK/ndk-build -C ../android_test     \
++                      NDK_PROJECT_PATH=.      \
++                      NDK_LIBS_OUT=`pwd`/libs \
++                      NDK_APP_OUT=`pwd`/app
++```
++
++## Library
++
++### Usage
++
++The internals of the library use C++11 features, and are exposed via both a C
++and C++ API.
++
++In order to use the library from an application, the include path should point
++to `<spirv-dir>/include`, which will enable the application to include the
++header `<spirv-dir>/include/spirv-tools/libspirv.h{|pp}` then linking against
++the static library in `<spirv-build-dir>/source/libSPIRV-Tools.a` or
++`<spirv-build-dir>/source/SPIRV-Tools.lib`.
++For optimization, the header file is
++`<spirv-dir>/include/spirv-tools/optimizer.hpp`, and the static library is
++`<spirv-build-dir>/source/libSPIRV-Tools-opt.a` or
++`<spirv-build-dir>/source/SPIRV-Tools-opt.lib`.
++
++* `SPIRV-Tools` CMake target: Creates the static library:
++  * `<spirv-build-dir>/source/libSPIRV-Tools.a` on Linux and OS X.
++  * `<spirv-build-dir>/source/libSPIRV-Tools.lib` on Windows.
++* `SPIRV-Tools-opt` CMake target: Creates the static library:
++  * `<spirv-build-dir>/source/libSPIRV-Tools-opt.a` on Linux and OS X.
++  * `<spirv-build-dir>/source/libSPIRV-Tools-opt.lib` on Windows.
++
++#### Entry points
++
++The interfaces are still under development, and are expected to change.
++
++There are five main entry points into the library in the C interface:
++
++* `spvTextToBinary`: An assembler, translating text to a binary SPIR-V module.
++* `spvBinaryToText`: A disassembler, translating a binary SPIR-V module to
++  text.
++* `spvBinaryParse`: The entry point to a binary parser API.  It issues callbacks
++  for the header and each parsed instruction.  The disassembler is implemented
++  as a client of `spvBinaryParse`.
++* `spvValidate` implements the validator functionality. *Incomplete*
++* `spvValidateBinary` implements the validator functionality. *Incomplete*
++
++The C++ interface is comprised of three classes, `SpirvTools`, `Optimizer` and
++`Linker`, all in the `spvtools` namespace.
++* `SpirvTools` provides `Assemble`, `Disassemble`, and `Validate` methods.
++* `Optimizer` provides methods for registering and running optimization passes.
++* `Linker` provides methods for combining together multiple binaries.
++
++## Command line tools
++
++Command line tools, which wrap the above library functions, are provided to
++assemble or disassemble shader files.  It's a convention to name SPIR-V
++assembly and binary files with suffix `.spvasm` and `.spv`, respectively.
++
++### Assembler tool
++
++The assembler reads the assembly language text, and emits the binary form.
++
++The standalone assembler is the exectuable called `spirv-as`, and is located in
++`<spirv-build-dir>/tools/spirv-as`.  The functionality of the assembler is implemented
++by the `spvTextToBinary` library function.
++
++* `spirv-as` - the standalone assembler
++  * `<spirv-dir>/tools/as`
++
++Use option `-h` to print help.
++
++### Disassembler tool
++
++The disassembler reads the binary form, and emits assembly language text.
++
++The standalone disassembler is the executable called `spirv-dis`, and is located in
++`<spirv-build-dir>/tools/spirv-dis`. The functionality of the disassembler is implemented
++by the `spvBinaryToText` library function.
++
++* `spirv-dis` - the standalone disassembler
++  * `<spirv-dir>/tools/dis`
++
++Use option `-h` to print help.
++
++The output includes syntax colouring when printing to the standard output stream,
++on Linux, Windows, and OS X.
++
++### Linker tool
++
++The linker combines multiple SPIR-V binary modules together, resulting in a single
++binary module as output.
++
++This is a work in progress.
++The linker does not support OpenCL program linking options related to math
++flags. (See section 5.6.5.2 in OpenCL 1.2)
++
++* `spirv-link` - the standalone linker
++  * `<spirv-dir>/tools/link`
++
++### Optimizer tool
++
++The optimizer processes a SPIR-V binary module, applying transformations
++in the specified order.
++
++This is a work in progress, with initially only few available transformations.
++
++* `spirv-opt` - the standalone optimizer
++  * `<spirv-dir>/tools/opt`
++
++### Validator tool
++
++*Warning:* This functionality is under development, and is incomplete.
++
++The standalone validator is the executable called `spirv-val`, and is located in
++`<spirv-build-dir>/tools/spirv-val`. The functionality of the validator is implemented
++by the `spvValidate` library function.
++
++The validator operates on the binary form.
++
++* `spirv-val` - the standalone validator
++  * `<spirv-dir>/tools/val`
++
++### Control flow dumper tool
++
++The control flow dumper prints the control flow graph for a SPIR-V module as a
++[GraphViz](http://www.graphviz.org/) graph.
++
++This is experimental.
++
++* `spirv-cfg` - the control flow graph dumper
++  * `<spirv-dir>/tools/cfg`
++
++### Utility filters
++
++* `spirv-lesspipe.sh` - Automatically disassembles `.spv` binary files for the
++  `less` program, on compatible systems.  For example, set the `LESSOPEN`
++  environment variable as follows, assuming both `spirv-lesspipe.sh` and
++  `spirv-dis` are on your executable search path:
++  ```
++   export LESSOPEN='| spirv-lesspipe.sh "%s"'
++  ```
++  Then you page through a disassembled module as follows:
++  ```
++  less foo.spv
++  ```
++  * The `spirv-lesspipe.sh` script will pass through any extra arguments to
++    `spirv-dis`.  So, for example, you can turn off colours and friendly ID
++    naming as follows:
++    ```
++    export LESSOPEN='| spirv-lesspipe.sh "%s" --no-color --raw-id'
++    ```
++
++* [vim-spirv](https://github.com/kbenzie/vim-spirv) - A vim plugin which
++  supports automatic disassembly of `.spv` files using the `:edit` command and
++  assembly using the `:write` command. The plugin also provides additional
++  features which include; syntax highlighting; highlighting of all ID's matching
++  the ID under the cursor; and highlighting errors where the `Instruction`
++  operand of `OpExtInst` is used without an appropriate `OpExtInstImport`.
++
++* `50spirv-tools.el` - Automatically disassembles '.spv' binary files when
++  loaded into the emacs text editor, and re-assembles them when saved,
++  provided any modifications to the file are valid.  This functionality
++  must be explicitly requested by defining the symbol
++  SPIRV_TOOLS_INSTALL_EMACS_HELPERS as follows:
++  ```
++  cmake -DSPIRV_TOOLS_INSTALL_EMACS_HELPERS=true ...
++  ```
++
++  In addition, this helper is only installed if the directory /etc/emacs/site-start.d
++  exists, which is typically true if emacs is installed on the system.
++
++  Note that symbol IDs are not currently preserved through a load/edit/save operation.
++  This may change if the ability is added to spirv-as.
++
++
++### Tests
++
++Tests are only built when googletest is found. Use `ctest` to run all the
++tests.
++
++## Future Work
++<a name="future"></a>
++
++_See the [projects pages](https://github.com/KhronosGroup/SPIRV-Tools/projects)
++for more information._
++
++### Assembler and disassembler
++
++* The disassembler could emit helpful annotations in comments.  For example:
++  * Use variable name information from debug instructions to annotate
++    key operations on variables.
++  * Show control flow information by annotating `OpLabel` instructions with
++    that basic block's predecessors.
++* Error messages could be improved.
++
++### Validator
++
++This is a work in progress.
++
++### Linker
++
++* The linker could accept math transformations such as allowing MADs, or other
++  math flags passed at linking-time in OpenCL.
++* Linkage attributes can not be applied through a group.
++* Check decorations of linked functions attributes.
++* Remove dead instructions, such as OpName targeting imported symbols.
++
++## Licence
++<a name="license"></a>
++Full license terms are in [LICENSE](LICENSE)
++```
++Copyright (c) 2015-2016 The Khronos Group Inc.
++
++Licensed under the Apache License, Version 2.0 (the "License");
++you may not use this file except in compliance with the License.
++You may obtain a copy of the License at
++
++    http://www.apache.org/licenses/LICENSE-2.0
++
++Unless required by applicable law or agreed to in writing, software
++distributed under the License is distributed on an "AS IS" BASIS,
++WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++See the License for the specific language governing permissions and
++limitations under the License.
++```
++
++[spirv-tools-cla]: https://cla-assistant.io/KhronosGroup/SPIRV-Tools
++[spirv-tools-projects]: https://github.com/KhronosGroup/SPIRV-Tools/projects
++[spirv-tools-mailing-list]: https://www.khronos.org/spir/spirv-tools-mailing-list
++[spirv-registry]: https://www.khronos.org/registry/spir-v/
++[spirv-headers]: https://github.com/KhronosGroup/SPIRV-Headers
++[googletest]: https://github.com/google/googletest
++[googletest-pull-612]: https://github.com/google/googletest/pull/612
++[googletest-issue-610]: https://github.com/google/googletest/issues/610
++[effcee]: https://github.com/google/effcee
++[re2]: https://github.com/google/re2
++[CMake]: https://cmake.org/
++[cpp-style-guide]: https://google.github.io/styleguide/cppguide.html
++[clang-sanitizers]: http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
++[master-tot-release]: https://github.com/KhronosGroup/SPIRV-Tools/releases/tag/master-tot
index 0000000,ef84cf8..ef84cf8
mode 000000,100644..100644
--- /dev/null
index 0000000,ff066d9..ff066d9
mode 000000,100644..100644
Binary files differ
index 0000000,d1349c0..d1349c0
mode 000000,100644..100644
Binary files differ
index 0000000,a378469..a378469
mode 000000,100644..100644
Binary files differ
index 0000000,8f7f0bc..8f7f0bc
mode 000000,100644..100644
--- /dev/null
index 0000000,636dac8..636dac8
mode 000000,100644..100644
--- /dev/null
index 0000000,66d24c7..66d24c7
mode 000000,100644..100644
--- /dev/null
index 0000000,97ef398..97ef398
mode 000000,100644..100644
--- /dev/null
index 0000000,587086f..587086f
mode 000000,100644..100644
--- /dev/null
index 0000000,22df961..22df961
mode 000000,100644..100644
--- /dev/null
index 0000000,ac35742..ac35742
mode 000000,100644..100644
--- /dev/null
index 0000000,e4ef297..e4ef297
mode 000000,100644..100644
--- /dev/null
index 0000000,08c775e..08c775e
mode 000000,100644..100644
--- /dev/null
index 0000000,a821cc2..a821cc2
mode 000000,100644..100644
--- /dev/null
index 0000000,8023444..8023444
mode 000000,100644..100644
--- /dev/null
index 0000000,9e7dccd..9e7dccd
mode 000000,100644..100644
--- /dev/null
index 0000000,b5fe897..b5fe897
mode 000000,100644..100644
--- /dev/null
index 0000000,7219ffe..7219ffe
mode 000000,100644..100644
--- /dev/null
index 0000000,6902141..6902141
mode 000000,100644..100644
--- /dev/null
index 0000000,78c2386..78c2386
mode 000000,100644..100644
--- /dev/null
index 0000000,76f9a0e..76f9a0e
mode 000000,100644..100644
--- /dev/null
index 0000000,00dc53d..00dc53d
mode 000000,100644..100644
--- /dev/null
index 0000000,15a1825..15a1825
mode 000000,100644..100644
--- /dev/null
index 0000000,7e1097e..7e1097e
mode 000000,100644..100644
--- /dev/null
index 0000000,5ff3aa0..5ff3aa0
mode 000000,100644..100644
--- /dev/null
index 0000000,944f438..944f438
mode 000000,100644..100644
--- /dev/null
index 0000000,0dc7c0e..0dc7c0e
mode 000000,100644..100644
--- /dev/null
index 0000000,f87cbf3..f87cbf3
mode 000000,100644..100644
--- /dev/null
index 0000000,ede0bbb..ede0bbb
mode 000000,100644..100644
--- /dev/null
index 0000000,edcd245..edcd245
mode 000000,100644..100644
--- /dev/null
index 0000000,c95f502..c95f502
mode 000000,100644..100644
--- /dev/null
index 0000000,f7b675e..f7b675e
mode 000000,100644..100644
--- /dev/null
index 0000000,79d90bd..79d90bd
mode 000000,100644..100644
--- /dev/null
index 0000000,cfafc7d..cfafc7d
mode 000000,100644..100644
--- /dev/null
index 0000000,fe0f39a..fe0f39a
mode 000000,100644..100644
--- /dev/null
index 0000000,6695ba2..6695ba2
mode 000000,100644..100644
--- /dev/null
index 0000000,f75e2d4..f75e2d4
mode 000000,100644..100644
--- /dev/null
index 0000000,f31ba38..f31ba38
mode 000000,100644..100644
--- /dev/null
index 0000000,b10d776..b10d776
mode 000000,100644..100644
--- /dev/null
index 0000000,64d73db..64d73db
mode 000000,100644..100644
--- /dev/null
index 0000000,adaf796..adaf796
mode 000000,100644..100644
--- /dev/null
index 0000000,fa34ee1..fa34ee1
mode 000000,100644..100644
--- /dev/null
index 0000000,9837b09..9837b09
mode 000000,100644..100644
--- /dev/null
index 0000000,fc4b747..fc4b747
mode 000000,100644..100644
--- /dev/null
index 0000000,be3a5d5..be3a5d5
mode 000000,100644..100644
--- /dev/null
index 0000000,9226ea7..9226ea7
mode 000000,100644..100644
--- /dev/null
index 0000000,f02faf3..f02faf3
mode 000000,100644..100644
--- /dev/null
index 0000000,f972a56..f972a56
mode 000000,100644..100644
Binary files differ
index 0000000,ec66aa1..ec66aa1
mode 000000,100644..100644
--- /dev/null
index 0000000,3b06a0a..3b06a0a
mode 000000,100644..100644
--- /dev/null
index 0000000,7dac06a..7dac06a
mode 000000,100644..100644
--- /dev/null
index 0000000,436993e..436993e
mode 000000,100644..100644
--- /dev/null
index 0000000,e53af66..e53af66
mode 000000,100644..100644
--- /dev/null
index 0000000,c959650..c959650
mode 000000,100755..100755
--- /dev/null
index 0000000,84ed87a..84ed87a
mode 000000,100644..100644
--- /dev/null
index 0000000,2244288..2244288
mode 000000,100644..100644
--- /dev/null
index 0000000,9fb3a91..9fb3a91
mode 000000,100644..100644
--- /dev/null
index 0000000,287ba51..287ba51
mode 000000,100644..100644
--- /dev/null
index 0000000,9e2c448..9e2c448
mode 000000,100644..100644
--- /dev/null
index 0000000,9a0a518..9a0a518
mode 000000,100644..100644
--- /dev/null
index 0000000,6a2e269..6a2e269
mode 000000,100644..100644
--- /dev/null
index 0000000,aaf8fcd..aaf8fcd
mode 000000,100644..100644
--- /dev/null
index 0000000,fb79427..fb79427
mode 000000,100644..100644
--- /dev/null
index 0000000,8b1d048..8b1d048
mode 000000,100644..100644
--- /dev/null