SPIRV-Tools/source/opt
Ryan Harrison 102e430a88
Add pass to legalize OpVectorShuffle for WebGPU (#2509)
In WebGPU, the component operand 0xFFFFFFFF is forbidden, but in
Vulkan it is used to indicate a value is undefined. When converting to
WebGPU, 0xFFFFFFFF needs to converted to a legal value, though the
specific one does not matter, since it was used to indicate an
undefined entry in the original code. Choosing to use 0, since the
operands are required to be on [0, N-1], so 0 is guaranteed to always
be valid.

Fixes #2349
2019-04-12 12:14:23 -04:00
..
aggressive_dead_code_elim_pass.cpp Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
aggressive_dead_code_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
basic_block.cpp reduce: fix loop to selection pass for loops with combined header/continue block (#2480) 2019-03-29 11:29:24 +00:00
basic_block.h reduce: fix loop to selection pass for loops with combined header/continue block (#2480) 2019-03-29 11:29:24 +00:00
block_merge_pass.cpp Extracted block merging functionality into its own utility file (#2325) 2019-01-25 10:57:13 +00: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 Don't merge unreachable blocks (#2375) 2019-02-12 09:24:01 -05: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 Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
build_module.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ccp_pass.cpp Removing decorations when doing constant propagation. (#2444) 2019-03-13 10:40:49 -04:00
ccp_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00: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 Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
cfg.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
CMakeLists.txt Add pass to legalize OpVectorShuffle for WebGPU (#2509) 2019-04-12 12:14:23 -04:00
code_sink.cpp Handle instructions not in blocks in code sinking. (#2308) 2019-01-21 12:09:56 -05:00
code_sink.h Sink (#2284) 2019-01-17 15:56:36 -05:00
combine_access_chains.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
combine_access_chains.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
common_uniform_elim_pass.cpp Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
common_uniform_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
compact_ids_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Fix OpDot folding of half float vectors. (#2411) 2019-02-20 20:05:08 -05:00
const_folding_rules.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
constants.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
constants.h Have the constant manager take ownership of constants. (#1866) 2018-08-27 09:53:47 -04:00
copy_prop_arrays.cpp Add a nullptr check to array copy propagation. (#1987) 2018-10-19 12:53:40 -04:00
copy_prop_arrays.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
dead_branch_elim_pass.cpp Change prioritization of unreachable merge and continue (#2460) 2019-04-03 12:50:08 -04:00
dead_branch_elim_pass.h Handle back edges better in dead branch elim. (#2417) 2019-02-26 09:06:51 -05:00
dead_insert_elim_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05: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
decoration_manager.cpp Invalidate the decoration manager at the start of ADCE. (#2189) 2018-12-10 13:24:33 -05:00
decoration_manager.h Invalidate the decoration manager at the start of ADCE. (#2189) 2018-12-10 13:24:33 -05:00
def_use_manager.cpp Add base and core bindless validation instrumentation classes (#2014) 2018-11-08 13:54:54 -05:00
def_use_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_analysis.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_analysis.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_tree.cpp Fix readbility/braces warnings (#1804) 2018-08-07 09:09:47 -04:00
dominator_tree.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 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_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_members_pass.cpp Don't change type of input and output var in dead member elim (#2412) 2019-02-20 18:59:41 -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
feature_manager.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
feature_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fix_storage_class.cpp Accept OpBitCast in fix storage class. (#2505) 2019-04-09 14:10:35 -04:00
fix_storage_class.h Add fix storage class code. (#2434) 2019-04-05 13:12:08 -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 Have the constant manager take ownership of constants. (#1866) 2018-08-27 09:53:47 -04:00
fold_spec_constant_op_and_composite_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fold.cpp Fix overflow when negating INT_MIN. (#2293) 2019-01-17 17:01:55 -05:00
fold.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
folding_rules.cpp Remove duplicates from list of interface IDs in OpEntryPoint instruction (#2449) 2019-03-13 15:46:31 -04:00
folding_rules.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
function.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
generate_webgpu_initializers_pass.cpp Add pass to generate needed initializers for WebGPU (#2481) 2019-04-03 11:44:09 -04:00
generate_webgpu_initializers_pass.h Add pass to generate needed initializers for WebGPU (#2481) 2019-04-03 11:44:09 -04:00
if_conversion.cpp Fix restrictions in if conversion (#1998) 2018-10-19 15:16:46 -04:00
if_conversion.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
inline_exhaustive_pass.cpp Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_exhaustive_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_opaque_pass.cpp Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_opaque_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_pass.cpp Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inst_bindless_check_pass.cpp Bindless Validation: Descriptor Initialization Check (#2419) 2019-03-19 09:53:43 -04:00
inst_bindless_check_pass.h Bindless Validation: Descriptor Initialization Check (#2419) 2019-03-19 09:53:43 -04:00
instruction_list.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction_list.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction.cpp Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
instruction.h New spirv-reduce reduction pass: operand to dominating id. (#2099) 2018-11-26 17:06:21 -05:00
instrument_pass.cpp Bindless Validation: Descriptor Initialization Check (#2419) 2019-03-19 09:53:43 -04:00
instrument_pass.h Bindless Validation: Descriptor Initialization Check (#2419) 2019-03-19 09:53:43 -04:00
ir_builder.h Upgrade modf and frexp (#2266) 2019-01-07 12:36:38 -05:00
ir_context.cpp Fix Constants Analyses bug inserted by #2302 (#2306) 2019-01-21 12:34:12 -05:00
ir_context.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
ir_loader.cpp spirv-opt: Behave a bit better in the face of unknown instructions (#2487) 2019-04-05 13:36:42 -04:00
ir_loader.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
iterator.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
legalize_vector_shuffle_pass.cpp Add pass to legalize OpVectorShuffle for WebGPU (#2509) 2019-04-12 12:14:23 -04:00
legalize_vector_shuffle_pass.h Add pass to legalize OpVectorShuffle for WebGPU (#2509) 2019-04-12 12:14:23 -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 Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
local_access_chain_convert_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +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 Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
local_single_block_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_single_store_elim_pass.cpp Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
local_single_store_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_ssa_elim_pass.cpp Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
local_ssa_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
log.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_descriptor.cpp Fix memory leak in unrolling. (#2301) 2019-01-17 16:02:43 -05:00
loop_descriptor.h Fix memory leak in unrolling. (#2301) 2019-01-17 16:02:43 -05:00
loop_fission.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_fission.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
loop_fusion_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_peeling.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_peeling.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_unroller.cpp Fix memory leak in unrolling. (#2301) 2019-01-17 16:02:43 -05:00
loop_unroller.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
loop_unswitch_pass.cpp Don't fold specialized branches in loop unswitch (#2245) 2018-12-19 04:40:30 +00:00
loop_unswitch_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
mem_pass.cpp Consider atomics that load when analyzing live stores in ADCE (#1956) (#1958) 2018-10-12 08:46:35 -04:00
mem_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
merge_return_pass.cpp Fix merge return in the face of breaks (#2466) 2019-04-02 10:05:28 -04:00
merge_return_pass.h Fix merge return in the face of breaks (#2466) 2019-04-02 10:05:28 -04:00
module.cpp Add option for the max id bound. (#1870) 2018-09-10 11:49:41 -04:00
module.h Add option for the max id bound. (#1870) 2018-09-10 11:49:41 -04:00
null_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
optimizer.cpp Add pass to legalize OpVectorShuffle for WebGPU (#2509) 2019-04-12 12:14:23 -04:00
pass_manager.cpp Add option to validate after each pass (#2462) 2019-03-26 14:38:59 -04:00
pass_manager.h Add option to validate after each pass (#2462) 2019-03-26 14:38:59 -04:00
pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
pass.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
passes.h Add pass to legalize OpVectorShuffle for WebGPU (#2509) 2019-04-12 12:14:23 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
private_to_local_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
process_lines_pass.cpp Add passes to propagate and eliminate redundant line instructions (#2027). (#2039) 2018-11-15 14:06:17 -05:00
process_lines_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00: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 Have replace load size handle extact with no index. (#2261) 2019-01-03 13:02:10 -05:00
reduce_load_size.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
redundancy_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
redundancy_elimination.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
reflect.h Add validation for SPV_NV_cooperative_matrix (#2404) 2019-02-25 17:43:11 -05:00
register_pressure.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
register_pressure.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
remove_duplicates_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
remove_duplicates_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
replace_invalid_opc.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
replace_invalid_opc.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
scalar_analysis_nodes.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_analysis_simplification.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_analysis.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_analysis.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_replacement_pass.cpp Handle access chain with no index in SROA. (#2304) 2019-01-18 14:19:43 -05:00
scalar_replacement_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
set_spec_constant_default_value_pass.cpp Move make_unique to source/util. (#1836) 2018-08-14 12: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
simplification_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
ssa_rewrite_pass.cpp SSA-rewriter: make sure phi entries are unique. (#2206) 2018-12-18 18:14:27 +00:00
ssa_rewrite_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strength_reduction_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strength_reduction_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_atomic_counter_memory_pass.cpp Add --strip-atomic-counter-memory (#2413) 2019-03-14 13:34:33 -04:00
strip_atomic_counter_memory_pass.h Add --strip-atomic-counter-memory (#2413) 2019-03-14 13:34:33 -04:00
strip_debug_info_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_debug_info_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_reflect_info_pass.cpp Remove MemberDecorateStringGOOGLE during stript-refect. (#2021) 2018-10-30 16:17:35 -04:00
strip_reflect_info_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
struct_cfg_analysis.cpp Handle function decls in Structured CFG analysis (#2474) 2019-03-26 14:39:16 -04:00
struct_cfg_analysis.h Check for unreachable blocks in merge-return. (#1966) 2018-10-10 15:18:15 -04:00
tree_iterator.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
type_manager.cpp Added additional changes for the new AccelerationStructureNV type. (#2218) 2018-12-19 21:42:39 +00:00
type_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
types.cpp Recognize OpTypeAccelerationStructureNV as a type instruction (#2190) 2018-12-11 19:03:55 -05:00
types.h Added additional changes for the new AccelerationStructureNV type. (#2218) 2018-12-19 21:42:39 +00:00
unify_const_pass.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
unify_const_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
upgrade_memory_model.cpp Upgrade modf and frexp (#2266) 2019-01-07 12:36:38 -05:00
upgrade_memory_model.h Upgrade modf and frexp (#2266) 2019-01-07 12:36:38 -05:00
value_number_table.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
value_number_table.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
vector_dce.cpp Handle extract with no index in VDCE. (#2305) 2019-01-18 15:43:36 -05:00
vector_dce.h Handle extract with no index in VDCE. (#2305) 2019-01-18 15:43:36 -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