SPIRV-Tools/test/opt
Greg Fischer 684997eb72 DeadInsertElim: Detect and DCE dead Inserts
This adds Dead Insert Elimination to the end of the
--eliminate-insert-extract pass. See the new tests for examples of code
that will benefit.

Essentially, this removes OpCompositeInsert instructions which are not
used, either because there is no instruction which uses the value at the
index it is inserted, or because a subsequent insert intercepts any such
use.

This code has been seen to remove significant amounts of dead code from
real-life HLSL shaders being ported to Vulkan. In fact, it is needed to
remove dead texture samples which cause Vulkan validation layer errors
(unbound textures and samplers) if not removed . Such DCE is thus
required for fxc equivalence and legalization.

This analysis operates across "chains" of Inserts which can also contain
Phi instructions.
2018-01-25 16:07:21 -05:00
..
dominator_tree Initial implementation of if conversion 2018-01-25 09:42:00 -08:00
loop_optimizations Add loop descriptors and some required dominator tree extensions. 2018-01-08 09:31:13 -05:00
aggressive_dead_code_elim_test.cpp Fixes infinite loop in ADCE 2018-01-19 11:08:46 -05:00
assembly_builder_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
assembly_builder.h Adding additional functionality to ADCE. 2018-01-10 08:35:48 -05:00
block_merge_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
ccp_test.cpp Skip SpecConstants in CCP. 2018-01-15 09:53:23 -05:00
cfg_cleanup_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
CMakeLists.txt Initial implementation of if conversion 2018-01-25 09:42:00 -08:00
common_uniform_elim_test.cpp Fixes missing increment in common uniform elim 2018-01-16 14:47:35 -05:00
compact_ids_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
dead_branch_elim_test.cpp Rewriting dead branch elimination. 2018-01-09 12:21:39 -05:00
dead_variable_elim_test.cpp Add pass to remove dead variables at the module level. 2017-10-23 13:57:05 -04:00
decoration_manager_test.cpp Opt: Make DecorationManager::HaveTheSameDecorations symmetric 2018-01-04 14:07:25 -05:00
def_use_test.cpp Store all enabled capabilities in the feature manger. 2017-12-21 11:14:53 -05:00
eliminate_dead_const_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
eliminate_dead_functions_test.cpp Add scalar replacement 2017-12-11 10:51:13 -05:00
feature_manager_test.cpp Store all enabled capabilities in the feature manger. 2017-12-21 11:14:53 -05:00
flatten_decoration_test.cpp Add FlattenDecoration transform 2017-04-06 11:19:56 -04:00
fold_spec_const_op_composite_test.cpp Implement SSA CCP (SSA Conditional Constant Propagation). 2017-12-21 14:29:45 -05:00
fold_test.cpp Use id_map in Fold*ToConstant 2018-01-22 16:27:31 -05:00
freeze_spec_const_test.cpp Provide friendly names for true and false 2017-01-11 16:33:45 -05:00
function_utils.h Dominator Tree Analysis (#3) 2017-12-05 22:59:43 -05:00
if_conversion_test.cpp Initial implementation of if conversion 2018-01-25 09:42:00 -08:00
inline_opaque_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
inline_test.cpp Set the parent for basic blocks during inlining. 2017-12-12 13:39:08 -05:00
insert_extract_elim_test.cpp DeadInsertElim: Detect and DCE dead Inserts 2018-01-25 16:07:21 -05:00
instruction_list_test.cpp Change the sections in the module to use the InstructionList class. 2017-10-25 15:52:06 -04:00
instruction_test.cpp Allow getting the base pointer of an image load/store. 2018-01-05 13:26:10 -05:00
ir_builder.cpp Initial implementation of if conversion 2018-01-25 09:42:00 -08:00
ir_context_test.cpp Store all enabled capabilities in the feature manger. 2017-12-21 11:14:53 -05:00
ir_loader_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
iterator_test.cpp Renaming test files to comply with Google style guide. 2016-11-07 14:41:51 -05:00
line_debug_info_test.cpp Add the IRContext (part 1) 2017-10-31 13:46:05 -04:00
local_access_chain_convert_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
local_redundancy_elimination_test.cpp Add scalar replacement 2017-12-11 10:51:13 -05:00
local_single_block_elim.cpp Allow pointers to pointers in logical addressing mode. 2017-12-19 14:29:14 -05:00
local_single_store_elim_test.cpp Allow pointers to pointers in logical addressing mode. 2017-12-19 14:29:14 -05:00
local_ssa_elim_test.cpp Maintain instruction to block mapping in phi insertion 2018-01-12 10:16:53 -05:00
module_test.cpp Adding ostream operators for IR structures 2018-01-12 11:19:58 -05:00
module_utils.h Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
optimizer_test.cpp Fix optimizer on when to write the binary 2017-04-03 15:48:50 -04:00
pass_fixture.h Add scalar replacement 2017-12-11 10:51:13 -05:00
pass_manager_test.cpp Store all enabled capabilities in the feature manger. 2017-12-21 11:14:53 -05:00
pass_merge_return_test.cpp Initial implementation of merge return pass. 2017-11-15 10:27:04 -05:00
pass_remove_duplicates_test.cpp Opt: Fix implementation and comment of AreDecorationsTheSame 2017-12-19 15:36:47 -05:00
pass_test.cpp Adding an unique id to Instruction generated by IRContext 2017-11-20 17:49:10 -05:00
pass_utils.cpp Relicense SPIRV-Tools under Apache 2.0 2016-09-02 10:00:29 -04:00
pass_utils.h Add strength reduction; for now replace multiply by power of 2 2017-09-18 17:01:36 -04:00
private_to_local_test.cpp Convert private variables to function scope. 2017-12-19 14:21:04 -05:00
propagator_test.cpp Remove cfg_ field from SSAPropagator class - NFC. 2017-12-04 15:28:21 -05:00
redundancy_elimination_test.cpp Add scalar replacement 2017-12-11 10:51:13 -05:00
scalar_replacement_test.cpp Add scalar replacement 2017-12-11 10:51:13 -05:00
set_spec_const_default_value_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
strength_reduction_test.cpp Add scalar replacement 2017-12-11 10:51:13 -05:00
strip_debug_info_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
type_manager_test.cpp Test: Fix linux/gcc defined-but-not-used warnings/errors 2017-12-29 09:22:36 -05:00
types_test.cpp Improving the usability of the type manager. The type manager hashes 2017-12-18 08:20:56 -05:00
unify_const_test.cpp Add scalar replacement 2017-12-11 10:51:13 -05:00
utils_test.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
value_table_test.cpp Compute value number when the value table is constructed. 2017-12-04 11:02:04 -05:00
workaround1209_test.cpp Create a pass to work around a driver bug related to OpUnreachable. 2018-01-18 20:31:46 -05:00