SPIRV-Tools/source/opt
Nathan Gauër 1728c1d40a
spirv-opt: fix copy-propagate-arrays index opti on structs. (#4891)
* spirv-opt: fix copy-propagate-arrays index opti on structs.

As per SPIR-V spec:
OpAccessChain indices must be OpConstant when indexing into a structure.

This optimization tried to remove load cascade. But in some scenario
failed:

```c
cbuffer MyStruct {
    uint my_field;
};

uint main(uint index) {
    const uint my_array[1] = { my_field };
    return my_array[index]
}
```

This is valid as the struct is indexed with a constant index, and then
the array is indexed using a dynamic index.
The optimization would consider the local array to be useless and
generated a load directly into the struct.

* spirv-opt: prevent creation of unused instructions

Copy-propagate-arrays optimization pass would create unused constants,
even if the optimization not completed.
This was caused by the way we handled OpAccessChain squashing: we
only referenced constants, and had to create them upfront.

Fixes #4887
Signed-off-by: Nathan Gauër <brioche@google.com>
2022-08-16 16:05:47 +02:00
..
aggressive_dead_code_elim_pass.cpp Fix ADCE to not eliminate top level DebugInfo instructions (#4889) 2022-08-15 15:23:23 -06:00
aggressive_dead_code_elim_pass.h Change branch handling in ADCE to fix errors (#4596) 2021-10-29 10:46:43 -04:00
amd_ext_to_khr.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
amd_ext_to_khr.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
basic_block.cpp Take new (raytracing) termination instructions into account. (#4050) 2020-12-07 10:26:05 -05:00
basic_block.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
block_merge_pass.cpp Opt passes should apply to the exported functions (#4554) 2021-10-18 13:18:16 -04:00
block_merge_pass.h Extracted block merging functionality into its own utility file (#2325) 2019-01-25 10:57:13 +00:00
block_merge_util.cpp Fix merge-block assertions with debugInfo (#4563) 2021-10-13 11:42:40 -06:00
block_merge_util.h Extracted block merging functionality into its own utility file (#2325) 2019-01-25 10:57:13 +00:00
build_module.cpp BuildModule: optionally avoid adding new OpLine instructions (#4033) 2020-11-25 14:54:32 -05:00
build_module.h BuildModule: optionally avoid adding new OpLine instructions (#4033) 2020-11-25 14:54:32 -05:00
ccp_pass.cpp Generalize assert in ccp (#4735) 2022-03-07 19:33:10 +00:00
ccp_pass.h Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/4462 (#4651) 2021-12-02 10:40:28 -05:00
cfg_cleanup_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
cfg_cleanup_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
cfg.cpp Build struct order only for the section needed when unrolling. (#4830) 2022-06-29 09:53:26 -04:00
cfg.h Build struct order only for the section needed when unrolling. (#4830) 2022-06-29 09:53:26 -04:00
CMakeLists.txt spirv-opt: add pass for interface variable scalar replacement (#4779) 2022-05-09 14:04:52 -04:00
code_sink.cpp Add validation for SPV_EXT_shader_atomic_float_min_max (#4105) 2021-03-24 08:49:21 -04:00
code_sink.h Sink (#2284) 2019-01-17 15:56:36 -05:00
combine_access_chains.cpp Update passes to handle function declarations (#4599) 2021-10-28 11:54:37 -04:00
combine_access_chains.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
compact_ids_pass.cpp Reset the id bound on the module in compact ids (#4744) 2022-03-07 20:33:01 +00:00
compact_ids_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
composite.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
composite.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
const_folding_rules.cpp Ability to fold Constant Vector times Matrix and Matrix times vector instructions (#4818) 2022-06-16 13:54:12 -04:00
const_folding_rules.h Refactor instruction folders (#2815) 2019-08-26 18:54:11 -04:00
constants.cpp avoid unnecessary reallocations in GetOperandConstants (#4708) 2022-02-10 18:31:24 +00:00
constants.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
control_dependence.cpp Add control dependence analysis to opt (#4380) 2021-07-28 12:44:32 -04:00
control_dependence.h spirv-opt: Rename ControlDependenceAnalysis::DoesBlockExist to HasBlock (#4412) 2021-07-29 08:30:48 -04:00
convert_to_half_pass.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
convert_to_half_pass.h Fix handling of OpPhi in convert-relaxed-to-half (#4618) 2021-11-09 10:36:50 -07:00
convert_to_sampled_image_pass.cpp Add spirv-opt convert-to-sampled-image pass (#4340) 2021-08-18 08:30:48 -04:00
convert_to_sampled_image_pass.h Add spirv-opt convert-to-sampled-image pass (#4340) 2021-08-18 08:30:48 -04:00
copy_prop_arrays.cpp spirv-opt: fix copy-propagate-arrays index opti on structs. (#4891) 2022-08-16 16:05:47 +02:00
copy_prop_arrays.h spirv-opt: fix copy-propagate-arrays index opti on structs. (#4891) 2022-08-16 16:05:47 +02:00
dataflow.cpp spirv-opt: Add dataflow analysis framework (#4402) 2021-08-09 16:43:36 -04:00
dataflow.h spirv-opt: Add dataflow analysis framework (#4402) 2021-08-09 16:43:36 -04:00
dead_branch_elim_pass.cpp Qualify std::move. (#4741) 2022-03-22 11:20:11 -04:00
dead_branch_elim_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
dead_insert_elim_pass.cpp Opt passes should apply to the exported functions (#4554) 2021-10-18 13:18:16 -04:00
dead_insert_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
dead_variable_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dead_variable_elimination.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
debug_info_manager.cpp Fix ADCE to not eliminate top level DebugInfo instructions (#4889) 2022-08-15 15:23:23 -06:00
debug_info_manager.h spirv-opt: Switch from Vulkan.DebugInfo to Shader.DebugInfo (#4493) 2021-09-15 14:38:53 -04:00
decoration_manager.cpp Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574) 2021-10-26 17:20:58 -04:00
decoration_manager.h Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574) 2021-10-26 17:20:58 -04:00
def_use_manager.cpp Revert "Optimize DefUseManager allocations (#4709)" (#4846) 2022-07-12 13:14:47 -06:00
def_use_manager.h Revert "Optimize DefUseManager allocations (#4709)" (#4846) 2022-07-12 13:14:47 -06:00
desc_sroa_util.cpp Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574) 2021-10-26 17:20:58 -04:00
desc_sroa_util.h Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574) 2021-10-26 17:20:58 -04:00
desc_sroa.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
desc_sroa.h Remove duplicated "the" from comments (#4666) 2022-01-12 19:04:13 -05:00
dominator_analysis.cpp spirv-opt: Add support for OpLabel to dominator analysis (#3516) 2020-07-15 12:59:35 +01:00
dominator_analysis.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_tree.cpp Build struct order only for the section needed when unrolling. (#4830) 2022-06-29 09:53:26 -04:00
dominator_tree.h Remove duplicated "the" from comments (#4666) 2022-01-12 19:04:13 -05:00
eliminate_dead_constant_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
eliminate_dead_constant_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
eliminate_dead_functions_pass.cpp Fixes #2358. Added to the reducer the ability to remove a function t… (#2361) 2019-02-08 16:20:29 +00:00
eliminate_dead_functions_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
eliminate_dead_functions_util.cpp Fix crash when optimizing shaders with DebugPrintf (#4280) 2021-05-13 13:19:56 -04:00
eliminate_dead_functions_util.h Fixes #2358. Added to the reducer the ability to remove a function t… (#2361) 2019-02-08 16:20:29 +00:00
eliminate_dead_input_components_pass.cpp spirv-opt: (WIP) Eliminate Dead Input Component Pass (#4720) 2022-03-22 20:50:52 -06:00
eliminate_dead_input_components_pass.h spirv-opt: (WIP) Eliminate Dead Input Component Pass (#4720) 2022-03-22 20:50:52 -06:00
eliminate_dead_members_pass.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
eliminate_dead_members_pass.h Don't change type of input and output var in dead member elim (#2412) 2019-02-20 18:59:41 -05:00
empty_pass.h Temporarily add EmptyPass to prevent glslang from failing (#4004) 2020-10-30 18:03:56 -04:00
feature_manager.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
feature_manager.h Handle NonSemantic.Shader Debug[No]Line (#4530) 2021-09-24 10:56:08 -04:00
fix_func_call_arguments.cpp spirv-opt : Add FixFuncCallArgumentsPass (#4775) 2022-05-06 10:39:26 -04:00
fix_func_call_arguments.h spirv-opt : Add FixFuncCallArgumentsPass (#4775) 2022-05-06 10:39:26 -04:00
fix_storage_class.cpp spirv-opt: Don't call GenerateCopy for mismatched image types (#4126) 2021-02-19 10:59:14 -05:00
fix_storage_class.h Fix up type mismatches. (#2545) 2019-05-02 09:31:46 -04:00
flatten_decoration_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
flatten_decoration_pass.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
fold_spec_constant_op_and_composite_pass.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
fold_spec_constant_op_and_composite_pass.h Using the instruction folder to fold OpSpecConstantOp (#2598) 2019-05-21 12:45:00 -04:00
fold.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
fold.h Refactor instruction folders (#2815) 2019-08-26 18:54:11 -04:00
folding_rules.cpp Fix shuffle feeding shuffle with undef literal (#4883) 2022-08-10 09:04:35 -04:00
folding_rules.h Refactor instruction folders (#2815) 2019-08-26 18:54:11 -04:00
freeze_spec_constant_value_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
freeze_spec_constant_value_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
function.cpp spirv-opt: Set parent when adding basic block (#4021) 2020-11-13 12:33:15 -05:00
function.h Update passes to handle function declarations (#4599) 2021-10-28 11:54:37 -04:00
graphics_robust_access_pass.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
graphics_robust_access_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
if_conversion.cpp Avoid if-conversion if both predecessors are the same (#4826) 2022-06-24 15:28:06 +00:00
if_conversion.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
inline_exhaustive_pass.cpp Opt passes should apply to the exported functions (#4554) 2021-10-18 13:18:16 -04:00
inline_exhaustive_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_opaque_pass.cpp Opt passes should apply to the exported functions (#4554) 2021-10-18 13:18:16 -04:00
inline_opaque_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_pass.cpp Use structural dominance to validate cfg (#4832) 2022-06-29 23:32:20 -04:00
inline_pass.h Use structural dominance to validate cfg (#4832) 2022-06-29 23:32:20 -04:00
inst_bindless_check_pass.cpp spirv-opt: (WIP) Eliminate Dead Input Component Pass (#4720) 2022-03-22 20:50:52 -06:00
inst_bindless_check_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
inst_buff_addr_check_pass.cpp Fix inst_buff_addr_check to handle struct loads (#4489) 2021-09-23 12:59:38 -04:00
inst_buff_addr_check_pass.h Fix inst_buff_addr_check to handle struct loads (#4489) 2021-09-23 12:59:38 -04:00
inst_debug_printf_pass.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
inst_debug_printf_pass.h Remove deprecated interfaces from instrument passes (#3361) 2020-05-21 13:10:42 -04:00
instruction_list.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction_list.h Update a few virtuals to overrides. (#4143) 2021-02-10 13:21:38 -05:00
instruction.cpp Avoid undefined behaviour when getting debug opcode (#4842) 2022-07-05 14:14:29 -04:00
instruction.h Optimize Instruction::Instruction (#4705) 2022-02-10 18:31:07 +00:00
instrument_pass.cpp spirv-opt: Set parent when adding basic block (#4021) 2020-11-13 12:33:15 -05:00
instrument_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
interface_var_sroa.cpp Fix small bug traversing users in interface_var_sroa (#4850) 2022-07-08 13:11:22 -04:00
interface_var_sroa.h spirv-opt: add pass for interface variable scalar replacement (#4779) 2022-05-09 14:04:52 -04:00
interp_fixup_pass.cpp spirv-opt: (WIP) Eliminate Dead Input Component Pass (#4720) 2022-03-22 20:50:52 -06:00
interp_fixup_pass.h Add interpolate legalization pass (#4220) 2021-03-31 14:26:36 -04:00
ir_builder.h spirv-opt : Add FixFuncCallArgumentsPass (#4775) 2022-05-06 10:39:26 -04:00
ir_context.cpp Handle dontinline function in spread-volatile-semantics (#4776) 2022-05-04 10:52:58 -04:00
ir_context.h spirv-opt: add pass for interface variable scalar replacement (#4779) 2022-05-09 14:04:52 -04:00
ir_loader.cpp spirv-opt : SPV_NV_bindless_texture related changes (#4870) 2022-07-29 19:28:27 +00:00
ir_loader.h BuildModule: optionally avoid adding new OpLine instructions (#4033) 2020-11-25 14:54:32 -05:00
iterator.h Avoid bugprone-move-forwarding-reference warning in Clang (#4560) 2021-10-06 16:50:16 -04:00
licm_pass.cpp In LICM don't place code between merge instruction and branch. (#2252) 2018-12-20 18:33:52 -05:00
licm_pass.h In LICM don't place code between merge instruction and branch. (#2252) 2018-12-20 18:33:52 -05:00
local_access_chain_convert_pass.cpp Local access chain convert: check for negative indexes (#4884) 2022-08-09 17:33:04 +00:00
local_access_chain_convert_pass.h Local access chain convert: check for negative indexes (#4884) 2022-08-09 17:33:04 +00:00
local_redundancy_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_redundancy_elimination.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_single_block_elim_pass.cpp Add SPV_KHR_fragment_shader_barycentric support (#4805) 2022-05-25 09:20:39 -04:00
local_single_block_elim_pass.h Update access control lists. (#3433) 2020-06-15 13:20:40 -04:00
local_single_store_elim_pass.cpp Add SPV_KHR_fragment_shader_barycentric support (#4805) 2022-05-25 09:20:39 -04:00
local_single_store_elim_pass.h Add DebugValue for invisible store in single_store_elim (#4002) 2020-11-04 13:43:59 -05:00
log.h Cast __LINE__ to size_t (#2661) 2019-06-07 13:06:42 -04:00
loop_dependence_helpers.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_dependence.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_dependence.h Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
loop_descriptor.cpp Build struct order only for the section needed when unrolling. (#4830) 2022-06-29 09:53:26 -04:00
loop_descriptor.h Don't try to unroll loop with step count 0. (#4769) 2022-04-11 10:21:15 -04:00
loop_fission.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_fission.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_fusion_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_fusion.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_fusion.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_peeling.cpp spirv-opt: Set parent when adding basic block (#4021) 2020-11-13 12:33:15 -05:00
loop_peeling.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_unroller.cpp Avoid unrolling large loops while fuzzing (#4835) 2022-06-29 09:12:09 -04:00
loop_unroller.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
loop_unswitch_pass.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_unswitch_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
loop_utils.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_utils.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
mem_pass.cpp More ADCE refactoring (#4548) 2021-10-04 08:33:10 -04:00
mem_pass.h Fix -Wextra-semi-stmt -Wsuggest-destructor-override -Wdeprecated-copy-dtor (#4164) 2021-03-09 13:16:43 +00:00
merge_return_pass.cpp Don't rebuilt valid analyses. (#4733) 2022-03-04 20:16:42 +00:00
merge_return_pass.h Remove default copy constructor in header. (#4879) 2022-07-29 18:26:37 +00:00
module.cpp spirv-opt : SPV_NV_bindless_texture related changes (#4870) 2022-07-29 19:28:27 +00:00
module.h spirv-opt : SPV_NV_bindless_texture related changes (#4870) 2022-07-29 19:28:27 +00:00
null_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
optimizer.cpp Do not check if the binary changed if encoding is different (#4824) 2022-06-21 19:58:21 +00:00
pass_manager.cpp Allow spirv-opt print-all to show pretty IDs (#4888) 2022-08-09 14:10:36 -04:00
pass_manager.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
pass.cpp Handle NonSemantic.Shader Debug[No]Line (#4530) 2021-09-24 10:56:08 -04:00
pass.h spirv-opt: (WIP) Eliminate Dead Input Component Pass (#4720) 2022-03-22 20:50:52 -06:00
passes.h spirv-opt: add pass for interface variable scalar replacement (#4779) 2022-05-09 14:04:52 -04:00
pch_source_opt.cpp Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
pch_source_opt.h Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
private_to_local_pass.cpp Qualify std::move. (#4741) 2022-03-22 11:20:11 -04:00
private_to_local_pass.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
propagator.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
propagator.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
reduce_load_size.cpp Reduce load size does not work for array with spec const size (#4845) 2022-07-05 16:16:50 -04:00
reduce_load_size.h Set threshold for reduce-load-size pass (#4499) 2021-09-02 10:45:51 -04:00
redundancy_elimination.cpp Update passes to handle function declarations (#4599) 2021-10-28 11:54:37 -04:00
redundancy_elimination.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
reflect.h Update SPIRV-Headers (#4628) 2021-11-10 16:32:09 -05:00
register_pressure.cpp Remove duplicated "the" from comments (#4666) 2022-01-12 19:04:13 -05:00
register_pressure.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
relax_float_ops_pass.cpp Opt passes should apply to the exported functions (#4554) 2021-10-18 13:18:16 -04:00
relax_float_ops_pass.h Add --relax-float-ops and --convert-relaxed-to-half (#2808) 2019-09-03 13:22:13 -04:00
remove_dontinline_pass.cpp Add pass to remove DontInline function control (#4747) 2022-03-07 12:45:17 -05:00
remove_dontinline_pass.h Add pass to remove DontInline function control (#4747) 2022-03-07 12:45:17 -05:00
remove_duplicates_pass.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
remove_duplicates_pass.h Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580) 2019-05-29 16:12:02 -04:00
remove_unused_interface_variables_pass.cpp spirv-opt: A pass to removed unused input on OpEntryPoint instructions. (#4275) 2021-06-29 11:33:58 -04:00
remove_unused_interface_variables_pass.h spirv-opt: A pass to removed unused input on OpEntryPoint instructions. (#4275) 2021-06-29 11:33:58 -04:00
replace_desc_array_access_using_var_index.cpp Handle chains of OpAccessChain in replacing variable index access for flattened resources. (#4797) 2022-05-10 11:41:43 -04:00
replace_desc_array_access_using_var_index.h Handle chains of OpAccessChain in replacing variable index access for flattened resources. (#4797) 2022-05-10 11:41:43 -04:00
replace_invalid_opc.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
replace_invalid_opc.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
scalar_analysis_nodes.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
scalar_analysis_simplification.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
scalar_analysis.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
scalar_analysis.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_replacement_pass.cpp Have scalar replacement use undef instead of null (#4691) 2022-02-03 15:51:15 +00:00
scalar_replacement_pass.h Add limit for scalar replacment when fuzzing (#4843) 2022-07-05 20:12:58 -04:00
set_spec_constant_default_value_pass.cpp opt: set upper bits of spec constant according to spec (#4589) 2021-10-21 09:44:54 -04:00
set_spec_constant_default_value_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
simplification_pass.cpp Update passes to handle function declarations (#4599) 2021-10-28 11:54:37 -04:00
simplification_pass.h Add two new simplifications. (#2984) 2019-10-28 08:19:38 -07:00
spread_volatile_semantics.cpp Handle dontinline function in spread-volatile-semantics (#4776) 2022-05-04 10:52:58 -04:00
spread_volatile_semantics.h Handle dontinline function in spread-volatile-semantics (#4776) 2022-05-04 10:52:58 -04:00
ssa_rewrite_pass.cpp Update passes to handle function declarations (#4599) 2021-10-28 11:54:37 -04:00
ssa_rewrite_pass.h Add DebugValue for DebugDecl invisible to value assignment (#3973) 2020-10-27 15:10:08 -04:00
strength_reduction_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strength_reduction_pass.h Remove duplicated "the" from comments (#4666) 2022-01-12 19:04:13 -05:00
strip_debug_info_pass.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
strip_debug_info_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_nonsemantic_info_pass.cpp reflect debug (#4662) 2021-12-15 11:06:51 -05:00
strip_nonsemantic_info_pass.h Rename strip reflect to strip nonsemantic (#4661) 2021-12-15 09:55:30 -05:00
struct_cfg_analysis.cpp spirv-opt: Add function to compute nesting depth of a block (#3771) 2020-09-08 12:01:56 +01:00
struct_cfg_analysis.h spirv-opt: Add function to compute nesting depth of a block (#3771) 2020-09-08 12:01:56 +01:00
tree_iterator.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
type_manager.cpp Complete handling of RayQueryKHR type (#4690) 2022-01-31 15:44:32 +00:00
type_manager.h Manually fold floating point division by zero (#4637) 2021-11-24 14:13:58 -05:00
types.cpp Avoid replacing access chain with OOB access (#4819) 2022-06-14 13:06:38 -04:00
types.h Avoid replacing access chain with OOB access (#4819) 2022-06-14 13:06:38 -04:00
unify_const_pass.cpp Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
unify_const_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
upgrade_memory_model.cpp Fix endianness of string literals (#4622) 2021-12-08 12:01:26 -05:00
upgrade_memory_model.h Handle volatile memory semantics in upgrade (#2674) 2019-06-17 16:01:37 -04:00
value_number_table.cpp spirv-opt: Where possible make code agnostic of opencl/vulkan debuginfo (#4385) 2021-07-21 12:04:38 -04:00
value_number_table.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
vector_dce.cpp Handle out-of-bounds accesses in VDCE (#4518) 2021-09-13 09:57:44 -04:00
vector_dce.h Fix various source comment (doxygen) typos (#4680) 2022-01-26 15:13:08 -05:00
workaround1209.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
workaround1209.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
wrap_opkill.cpp spirv-opt: Set parent when adding basic block (#4021) 2020-11-13 12:33:15 -05:00
wrap_opkill.h Support SPV_KHR_terminate_invocation (#3568) 2020-07-22 11:45:02 -04:00