SPIRV-Tools/test
Steven Perron 2cb589cc14 Remove uses DCEInst and call ADCE
The algorithm used in DCEInst to remove dead code is very slow.  It is
fine if you only want to remove a small number of instructions, but, if
you need to remove a large number of instructions, then the algorithm in
ADCE is much faster.

This PR removes the calls to DCEInst in the load-store removal passes
and adds a pass of ADCE afterwards.

A number of different iterations of the order of optimization, and I
believe this is the best I could find.

The results I have on 3 sets of shaders are:

Legalization:

Set 1: 5.39 -> 5.01
Set 2: 13.98 -> 8.38
Set 3: 98.00 -> 96.26

Performance passes:

Set 1: 6.90 -> 5.23
Set 2: 10.11 -> 6.62
Set 3: 253.69 -> 253.74

Size reduction passes:

Set 1: 7.16 -> 7.25
Set 2: 17.17 -> 16.81
Set 3: 112.06 -> 107.71

Note that the third set's compile time is large because of the large
number of basic blocks, not so much because of the number of
instructions.  That is why we don't see much gain there.
2018-02-27 21:06:08 -05:00
..
comp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
link linker: merge debug annotations from category c) 2018-02-27 12:31:50 -05:00
opt Remove uses DCEInst and call ADCE 2018-02-27 21:06:08 -05:00
scripts Added --compact-ids to /tools/opt 2017-04-20 10:54:39 -04:00
stats Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
util Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
val Disable check which fails Vulkan CTS 2018-02-07 13:31:35 -05:00
assembly_context_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
assembly_format_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
binary_destroy_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
binary_endianness_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
binary_header_get_test.cpp Add SPIR-V 1.2 support, for OpenCL 2.2 2017-05-15 17:10:07 -04:00
binary_parse_test.cpp Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
binary_strnlen_s_test.cpp Support building under CYGWIN 2016-12-21 10:34:23 -05:00
binary_to_text_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
binary_to_text.literal_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
bit_stream.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
c_interface_test.cpp Build SPIRV-Tools as shared library 2018-02-07 10:43:32 -05:00
CMakeLists.txt Build SPIRV-Tools as shared library 2018-02-07 10:43:32 -05:00
comment_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
cpp_interface_test.cpp Add SpirvTools::Validate that takes an options object 2017-03-17 12:48:51 -04:00
diagnostic_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
enum_set_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
enum_string_mapping_test.cpp Avoid using static unordered_map (#1304) 2018-02-15 10:19:15 -05:00
ext_inst.debuginfo_test.cpp Add asm, dis support for DebugInfo extended instruction set 2017-12-22 09:39:36 -05:00
ext_inst.glsl_test.cpp Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
ext_inst.opencl_test.cpp Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
fix_word_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
generator_magic_number_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
hex_float_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
huffman_codec.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
immediate_int_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
libspirv_macros_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
log_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
move_to_front_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
name_mapper_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
named_id_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
opcode_make_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
opcode_require_capabilities_test.cpp Turn all function static non-POD variables into global POD variables 2017-10-25 15:44:19 -04:00
opcode_split_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
opcode_table_get_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
operand_capabilities_test.cpp SubgroupBallotKHR can enable SubgroupSize & SubgroupLocalInvocationId 2018-02-16 10:02:18 -05:00
operand_pattern_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
operand_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
operand-class-test-coverage.csv Fix operand class test coverage table. 2016-09-23 11:58:25 -04:00
parse_number_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
preserve_numeric_ids_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
software_version_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
string_utils_test.cpp Validator checks if operands require extension 2017-03-14 13:39:43 -04:00
target_env_test.cpp Support OpenCL 1.2 and 2.0 target environments 2017-12-12 11:35:39 -05:00
test_fixture.h Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_advance_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_destroy_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_literal_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_start_new_inst_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_to_binary_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.annotation_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.barrier_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.constant_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.control_flow_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.debug_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.device_side_enqueue_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.extension_test.cpp Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
text_to_binary.function_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_to_binary.group_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_to_binary.image_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.literal_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
text_to_binary.memory_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.misc_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.mode_setting_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.pipe_storage_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.subgroup_dispatch_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_to_binary.type_declaration_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text_word_get_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
unit_spirv.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
unit_spirv.h Support OpenCL 1.2 and 2.0 target environments 2017-12-12 11:35:39 -05:00