mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-10-19 11:30:15 +00:00
802cf053c7
Adding basis of arithmetic merging * Refactored constant collection in ConstantManager * New rules: * consecutive negates * negate of arithmetic op with a constant * consecutive muls * reciprocal of div * Removed IRContext::CanFoldFloatingPoint * replaced by Instruction::IsFloatingPointFoldingAllowed * Fixed some bad tests * added some header comments Added PerformIntegerOperation * minor fixes to constants and tests * fixed IntMultiplyBy1 to work with 64 bit ints * added tests for integer mul merging Adding test for vector integer multiply merging Adding support for merging integer add and sub through negate * Added tests Adding rules to merge mult with preceding divide * Has a couple tests, but needs more * Added more comments Fixed bug in integer division folding * Will no longer merge through integer division if there would be a remainder in the division * Added a bunch more tests Adding rules to merge divide and multiply through divide * Improved comments * Added tests Adding rules to handle mul or div of a negation * Added tests Changes for review * Early exit if no constants are involved in more functions * fixed some comments * removed unused declaration * clarified some logic Adding new rules for add and subtract * Fold adds of adds, subtracts or negates * Fold subtracts of adds, subtracts or negates * Added tests |
||
---|---|---|
.. | ||
dominator_tree | ||
loop_optimizations | ||
aggressive_dead_code_elim_test.cpp | ||
assembly_builder_test.cpp | ||
assembly_builder.h | ||
block_merge_test.cpp | ||
ccp_test.cpp | ||
cfg_cleanup_test.cpp | ||
CMakeLists.txt | ||
common_uniform_elim_test.cpp | ||
compact_ids_test.cpp | ||
dead_branch_elim_test.cpp | ||
dead_insert_elim_test.cpp | ||
dead_variable_elim_test.cpp | ||
decoration_manager_test.cpp | ||
def_use_test.cpp | ||
eliminate_dead_const_test.cpp | ||
eliminate_dead_functions_test.cpp | ||
feature_manager_test.cpp | ||
flatten_decoration_test.cpp | ||
fold_spec_const_op_composite_test.cpp | ||
fold_test.cpp | ||
freeze_spec_const_test.cpp | ||
function_utils.h | ||
if_conversion_test.cpp | ||
inline_opaque_test.cpp | ||
inline_test.cpp | ||
insert_extract_elim_test.cpp | ||
instruction_list_test.cpp | ||
instruction_test.cpp | ||
ir_builder.cpp | ||
ir_context_test.cpp | ||
ir_loader_test.cpp | ||
iterator_test.cpp | ||
line_debug_info_test.cpp | ||
local_access_chain_convert_test.cpp | ||
local_redundancy_elimination_test.cpp | ||
local_single_block_elim.cpp | ||
local_single_store_elim_test.cpp | ||
local_ssa_elim_test.cpp | ||
module_test.cpp | ||
module_utils.h | ||
optimizer_test.cpp | ||
pass_fixture.h | ||
pass_manager_test.cpp | ||
pass_merge_return_test.cpp | ||
pass_remove_duplicates_test.cpp | ||
pass_test.cpp | ||
pass_utils.cpp | ||
pass_utils.h | ||
private_to_local_test.cpp | ||
propagator_test.cpp | ||
redundancy_elimination_test.cpp | ||
replace_invalid_opc_test.cpp | ||
scalar_replacement_test.cpp | ||
set_spec_const_default_value_test.cpp | ||
simplification_test.cpp | ||
strength_reduction_test.cpp | ||
strip_debug_info_test.cpp | ||
type_manager_test.cpp | ||
types_test.cpp | ||
unify_const_test.cpp | ||
utils_test.cpp | ||
value_table_test.cpp | ||
workaround1209_test.cpp |