diff options
author | 2019-11-13 04:08:23 +0100 | |
---|---|---|
committer | 2019-11-12 22:08:23 -0500 | |
commit | 0c70101b74db61f883fdd7907a4975ffff735044 (patch) | |
tree | 067ae1c831088d6853b6f443e5a05a4c5d8cd7aa /3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp | |
parent | c089bea7011de9ca78f43979d902978a113d33e2 (diff) |
Sync bgfx, bx and bimg with upstream; fix the hlsl fs_chroma.sc matrix transposition properly (#5875)
* Sync bgfx with upstream revision 280420d
* Sync bx with upstream revision 267727d
* Sync bimg with upstream revision c1bab10
* Use bgfx helper functions to ensure correct matrix orientation
* Rebuild hlsl chain
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp')
-rw-r--r-- | 3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp b/3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp index 8e36a323a67..01b4258d371 100644 --- a/3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp +++ b/3rdparty/bgfx/3rdparty/spirv-tools/source/fuzz/fuzzer.cpp @@ -18,12 +18,18 @@ #include <memory> #include <sstream> +#include "fuzzer_pass_adjust_memory_operands_masks.h" #include "source/fuzz/fact_manager.h" #include "source/fuzz/fuzzer_context.h" #include "source/fuzz/fuzzer_pass_add_dead_breaks.h" #include "source/fuzz/fuzzer_pass_add_dead_continues.h" +#include "source/fuzz/fuzzer_pass_add_no_contraction_decorations.h" #include "source/fuzz/fuzzer_pass_add_useful_constructs.h" +#include "source/fuzz/fuzzer_pass_adjust_function_controls.h" +#include "source/fuzz/fuzzer_pass_adjust_loop_controls.h" +#include "source/fuzz/fuzzer_pass_adjust_selection_controls.h" #include "source/fuzz/fuzzer_pass_apply_id_synonyms.h" +#include "source/fuzz/fuzzer_pass_construct_composites.h" #include "source/fuzz/fuzzer_pass_copy_objects.h" #include "source/fuzz/fuzzer_pass_obfuscate_constants.h" #include "source/fuzz/fuzzer_pass_permute_blocks.h" @@ -138,6 +144,9 @@ Fuzzer::FuzzerResultStatus Fuzzer::Run( MaybeAddPass<FuzzerPassApplyIdSynonyms>(&passes, ir_context.get(), &fact_manager, &fuzzer_context, transformation_sequence_out); + MaybeAddPass<FuzzerPassConstructComposites>(&passes, ir_context.get(), + &fact_manager, &fuzzer_context, + transformation_sequence_out); MaybeAddPass<FuzzerPassCopyObjects>(&passes, ir_context.get(), &fact_manager, &fuzzer_context, transformation_sequence_out); @@ -162,6 +171,32 @@ Fuzzer::FuzzerResultStatus Fuzzer::Run( passes[fuzzer_context.RandomIndex(passes)]->Apply(); } + // Now apply some passes that it does not make sense to apply repeatedly, + // as they do not unlock other passes. + std::vector<std::unique_ptr<FuzzerPass>> final_passes; + MaybeAddPass<FuzzerPassAdjustFunctionControls>( + &final_passes, ir_context.get(), &fact_manager, &fuzzer_context, + transformation_sequence_out); + MaybeAddPass<FuzzerPassAdjustLoopControls>(&final_passes, ir_context.get(), + &fact_manager, &fuzzer_context, + transformation_sequence_out); + MaybeAddPass<FuzzerPassAdjustMemoryOperandsMasks>( + &final_passes, ir_context.get(), &fact_manager, &fuzzer_context, + transformation_sequence_out); + MaybeAddPass<FuzzerPassAdjustSelectionControls>( + &final_passes, ir_context.get(), &fact_manager, &fuzzer_context, + transformation_sequence_out); + for (auto& pass : final_passes) { + pass->Apply(); + } + + if (fuzzer_context.ChooseEven()) { + FuzzerPassAddNoContractionDecorations(ir_context.get(), &fact_manager, + &fuzzer_context, + transformation_sequence_out) + .Apply(); + } + // Encode the module as a binary. ir_context->module()->ToBinary(binary_out, false); |