Squashed 'third_party/SPIRV-Tools/' changes from c3f22f7cb..8aa423930
8aa423930 Avoid pessimizing std::move (#3124)
fad92f1e7 Fix typo in validation message (#3122)
578c5ac13 Change default version for CreatInstBindlessCheckPass to 2 (#3119)
9215c1b7d Fix convert-relax-to-half invalid code (#3099) (#3106)
64f36ea52 Support OpenCL.DebugInfo.100 extended instruction set (#3080)
e01bc6d4e spirv-fuzz: Always add new globals to entry point interfaces (#3113)
dcb7169bb spirv-fuzz: Transformation to add a new function to a module (#3114)
2e41d5ece spirv-fuzz: Avoid passing access chains as parameters (#3112)
e70b009b0 Add support for SPV_KHR_non_semantic_info (#3110)
38d7fbaad spirv-fuzz: Transformations to add types, constants and variables (#3101)
fccbc00ac Make Instrumentation format version 2 the default (Step 1) (#3096)
96354f504 spirv-fuzz: Fuzzer pass to merge blocks (#3097)
5c019b592 Start SPIRV-Tools v2020.1
c413b982c Finalize SPIRV-Tools v2019.5
2afbe9051 Update CHANGES
00ca4e5bd Don't crash when folding construct of empty struct (#3092)
0a2b38d08 spirv-fuzz: function outlining fuzzer pass (#3078)
983b5b4fc spirv-fuzz: Use validator to check break/continue dominance conditions (#3089)
e82a42860 WebGPU: Array size at most max signed int + 1 (#3077)
0a5d99d02 Permit the debug instructions in WebGPU SPIR-V - remove from the optimizer (#3083)
af7410597 graphics robust access: use signed clamp (#3073)
3ed458604 Folding: perform add and sub on mismatched integer types (#3084)
47f3eb426 spirv-fuzz: Fix invalid tests (#3079)
b334829a9 Validate nested constructs (#3068)
52e9cc930 spirv-fuzz: Improve debugging facilities (#3074)
54385458c Handle unreachable block when computing register pressure (#3070)
868ca3954 Improve RegisterSizePasses (#3059)
f31f26f73 utils/vscode: Add install.bat (#3071)
03957e8a9 build: cmake: Add support for Fuchsia. (#3062)
a62012ced Add test with explicit example of stripping reflection info (#3064)
8312c523e Permit the debug instructions in WebGPU SPIR-V (#3063)
85f3e93d1 Respect CMAKE_INSTALL_LIBDIR in installed CMake files (#3054)
45dde9ad6 Add missing dealloc (#3061)
2ee9aaa28 Initialize binary for use as guard later (#3058)
0391d0823 Handle OpPhi with no in operands in value numbering (#3056)
ca703c887 Kill the id-to-func map after wrap-opkill (#3055)
57b4cb40b Convert stderr and stdout in status to strings on assignment (#3049)
git-subtree-dir: third_party/SPIRV-Tools
git-subtree-split: 8aa423930db37e37086665efcc55944d577c06e5
diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp
index ece1abe..241aa75 100644
--- a/source/opt/optimizer.cpp
+++ b/source/opt/optimizer.cpp
@@ -198,33 +198,39 @@
.RegisterPass(CreateDeadBranchElimPass())
.RegisterPass(CreateMergeReturnPass())
.RegisterPass(CreateInlineExhaustivePass())
- .RegisterPass(CreateAggressiveDCEPass())
+ .RegisterPass(CreateEliminateDeadFunctionsPass())
.RegisterPass(CreatePrivateToLocalPass())
- .RegisterPass(CreateScalarReplacementPass())
- .RegisterPass(CreateLocalAccessChainConvertPass())
- .RegisterPass(CreateLocalSingleBlockLoadStoreElimPass())
- .RegisterPass(CreateLocalSingleStoreElimPass())
- .RegisterPass(CreateAggressiveDCEPass())
- .RegisterPass(CreateSimplificationPass())
- .RegisterPass(CreateDeadInsertElimPass())
+ .RegisterPass(CreateScalarReplacementPass(0))
.RegisterPass(CreateLocalMultiStoreElimPass())
- .RegisterPass(CreateAggressiveDCEPass())
.RegisterPass(CreateCCPPass())
+ .RegisterPass(CreateLoopUnrollPass(true))
+ .RegisterPass(CreateDeadBranchElimPass())
+ .RegisterPass(CreateSimplificationPass())
+ .RegisterPass(CreateScalarReplacementPass(0))
+ .RegisterPass(CreateLocalSingleStoreElimPass())
+ .RegisterPass(CreateIfConversionPass())
+ .RegisterPass(CreateSimplificationPass())
.RegisterPass(CreateAggressiveDCEPass())
.RegisterPass(CreateDeadBranchElimPass())
- .RegisterPass(CreateIfConversionPass())
- .RegisterPass(CreateAggressiveDCEPass())
.RegisterPass(CreateBlockMergePass())
- .RegisterPass(CreateSimplificationPass())
+ .RegisterPass(CreateLocalAccessChainConvertPass())
+ .RegisterPass(CreateLocalSingleBlockLoadStoreElimPass())
+ .RegisterPass(CreateAggressiveDCEPass())
+ .RegisterPass(CreateCopyPropagateArraysPass())
+ .RegisterPass(CreateVectorDCEPass())
.RegisterPass(CreateDeadInsertElimPass())
+ .RegisterPass(CreateEliminateDeadMembersPass())
+ .RegisterPass(CreateLocalSingleStoreElimPass())
+ .RegisterPass(CreateBlockMergePass())
+ .RegisterPass(CreateLocalMultiStoreElimPass())
.RegisterPass(CreateRedundancyEliminationPass())
- .RegisterPass(CreateCFGCleanupPass())
- .RegisterPass(CreateAggressiveDCEPass());
+ .RegisterPass(CreateSimplificationPass())
+ .RegisterPass(CreateAggressiveDCEPass())
+ .RegisterPass(CreateCFGCleanupPass());
}
Optimizer& Optimizer::RegisterVulkanToWebGPUPasses() {
- return RegisterPass(CreateStripDebugInfoPass())
- .RegisterPass(CreateStripAtomicCounterMemoryPass())
+ return RegisterPass(CreateStripAtomicCounterMemoryPass())
.RegisterPass(CreateGenerateWebGPUInitializersPass())
.RegisterPass(CreateLegalizeVectorShufflePass())
.RegisterPass(CreateSplitInvalidUnreachablePass())