Squashed 'third_party/SPIRV-Tools/' changes from fd773eb50d6..55af3902fc2
55af3902fc2 Fix function use (#3372)
9cb2571a184 spirv-val: allow DebugInfoNone for DebugTypeComposite.Size (#3374)
4386ef4234e Add validation support for ImageGatherBiasLodAMD (#3363)
b0264b87ffb Fix validation failure on OpDecorationGroup (#3365)
4410272bdda Remove deprecated interfaces from instrument passes (#3361)
50b15578866 Preserve debug info in inline pass (#3349)
4dbe18b0c86 Reject folding comparisons with unfoldable types. (#3370)
55193b06e5e Improve build instructions for fuzzer (#3364)
3c47dac2820 Add unrolling to performance passes (#3082)
2b987c49a4e Handle OpConstantNull in ssa-rewrite (#3362)
95df4c9643c Add in a bunch of missed files to the BUILD.gn (#3360)
90930cb3115 Remove stale entries from BUILD.gn (#3358)
18ba3d9a353 allow cross compiling for Windows Store, UWP, etc. (#3330)
2f69ea849aa spirv-fuzz: Remove FuzzerPassAddUsefulConstructs (#3341)
522561619a9 Add support for StorageBuffer (#3348)
b75dbf82a69 Prevent Effcee install his things when build spirv-tools with testing enabled (#3256)
85c7e7956bf Don't register edges twice in merge return (#3350)
bd0a2da946c Revert "Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)" (#3345)
31182763704 spirv-reduce: Remove unused struct members (#3329)
a6b0e132ecc Add adjust branch weights transformation (#3336)
d4fac3451b7 Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)
233246bc9c5 [spirv-opt] refactor inlining pass (#3328)
2992386ebea spirv-reduce: Remove unused uniforms and similar (#3321)
a9f2a145e65 spirv-fuzz: Fix to fact manager (#3339)
045a26e6e37 spirv-fuzz: Get rid of unnecessary template method (#3340)
63fa9114a93 Do merge return if the return is not at the end of the function. (#3337)
c8590c18bd0 Preserve debug info for wrap-opkill (#3331)
d2b48621949 Validate ShaderCallKHR memory scope (#3332)
2e1d208ed9d spirv-fuzz: Do not allow adding stores to read-only pointers (#3316)
54fb17b2d30 reduce: increase default step limit (#3327)
49842b88eec Generalize IsReadOnlyVariable() to apply to pointers (#3325)
49ca250b44c Delete nullptr in function bb list immedietly (#3326)
d0a87194f7b Set DebugScope for termination instructions (#3323)
f278b467dfd spirv-fuzz: Do not outline regions that end with a loop header (#3312)
23d68608b00 vscode: Handle '|' chains on BitEnum / ValueEnum (#3309)
42268740c95 Add debug information analysis (#3305)
eed48ae479d Add spvtools::opt::Operand::AsLiteralUint64 (#3320)
94d6002dc53 spirv-fuzz: Pass on validator options during shrinking (#3317)
88faf63ad3c spirv-fuzz: Clamp statically out-of-bounds accesses in code donation (#3315)
b74199a22d4 spirv-fuzz: Fix memory management in the fact manager (#3313)
d158ffe5405 spirv-fuzz: Do not replace the Sample argument in OpImageTexelPointer (#3311)
5547553a0c7 Allow various validation options to be passed to spirv-opt (#3314)
30ffe62e257 typo fix: in README.md exectuable->executable (#3306)
67f4838659f spirv-fuzz: Make handling of synonym facts more efficient (#3301)
61b7de3c39f Remove unreachable code. (#3304)
ed96301c6c4 spirv-fuzz: Fix to outliner (#3302)
c018fc6ae66 spirv-fuzz: Do not outline regions that produce pointer outputs (#3291)
f460cca9dca spirv-fuzz: Handle OpRuntimeArray when replacing ids with synonyms (#3292)
2f180468a71 spirv-fuzz: Handle image storage class in donation (#3290)
f82d47003e7 spirv-fuzz: Respect rules for OpSampledImage (#3287)
7ce2db1763b spirv-fuzz: Fix comment. (#3300)
7d65bce0bbe Sampled images as read-only storage (#3295)
2a2bdbd5d72 Remove implicit fallthrough (#3298)
49566448944 Add tests for recently added command line option (#3297)
ca5751590ed If SPIRV-Headers is in our tree, include it as subproject (#3299)
e70d25f6fa5 Struct CFG analysus and single block loop (#3293)
000040e707a Preserve debug info in eliminate-dead-functions (#3251)
c531099eb34 Update acorn version (#3294)
34be23373b9 Handle more cases in dead member elim (#3289)
d0490ef080c Fix pch macro to ignore clang-cl (#3283)
538512e8e89 spirv-fuzz: Improve the handling of equation facts (#3281)
183e3242a36 spirv-fuzz: Handle more general SPIR-V in donation (#3280)
4af38c49bfe spirv-fuzz: Improve support for compute shaders in donation (#3277)
e95fbfb1f50 spirv-fuzz: Transformation to add OpConstantNull (#3273)
5d491a7ed66 spirv-fuzz: Handle isomorphic types property in composite construction (#3262)
bfd25ace084 spirv-fuzz: Limit adding of new variables to 'basic' types (#3257)
f28cdeff16f spirv-fuzz: Only replace regular ids with synonyms (#3255)
8d4261bc440 spirv-fuzz: Introduce TransformationContext (#3272)
2fdea57d19d spirv-fuzz: Add validator options (#3254)
af01d57b5e3 Update dominates to check for null nodes (#3271)
f20c0d7971c Set wrapped kill basic block's parent (#3269)
c37c94929bf Validate Buffer and BufferBlock apply only to struct types (#3259)
git-subtree-dir: third_party/SPIRV-Tools
git-subtree-split: 55af3902fc24db889b0ef8010a83efca04a6352c
diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp
index 0a937e8..25adee9 100644
--- a/source/opt/optimizer.cpp
+++ b/source/opt/optimizer.cpp
@@ -175,9 +175,18 @@
.RegisterPass(CreateAggressiveDCEPass())
.RegisterPass(CreateCCPPass())
.RegisterPass(CreateAggressiveDCEPass())
+ .RegisterPass(CreateLoopUnrollPass(true))
+ .RegisterPass(CreateDeadBranchElimPass())
.RegisterPass(CreateRedundancyEliminationPass())
.RegisterPass(CreateCombineAccessChainsPass())
.RegisterPass(CreateSimplificationPass())
+ .RegisterPass(CreateScalarReplacementPass())
+ .RegisterPass(CreateLocalAccessChainConvertPass())
+ .RegisterPass(CreateLocalSingleBlockLoadStoreElimPass())
+ .RegisterPass(CreateLocalSingleStoreElimPass())
+ .RegisterPass(CreateAggressiveDCEPass())
+ .RegisterPass(CreateSSARewritePass())
+ .RegisterPass(CreateAggressiveDCEPass())
.RegisterPass(CreateVectorDCEPass())
.RegisterPass(CreateDeadInsertElimPass())
.RegisterPass(CreateDeadBranchElimPass())
@@ -407,19 +416,19 @@
} else if (pass_name == "replace-invalid-opcode") {
RegisterPass(CreateReplaceInvalidOpcodePass());
} else if (pass_name == "inst-bindless-check") {
- RegisterPass(CreateInstBindlessCheckPass(7, 23, false, false, 2));
+ RegisterPass(CreateInstBindlessCheckPass(7, 23, false, false));
RegisterPass(CreateSimplificationPass());
RegisterPass(CreateDeadBranchElimPass());
RegisterPass(CreateBlockMergePass());
RegisterPass(CreateAggressiveDCEPass());
} else if (pass_name == "inst-desc-idx-check") {
- RegisterPass(CreateInstBindlessCheckPass(7, 23, true, true, 2));
+ RegisterPass(CreateInstBindlessCheckPass(7, 23, true, true));
RegisterPass(CreateSimplificationPass());
RegisterPass(CreateDeadBranchElimPass());
RegisterPass(CreateBlockMergePass());
RegisterPass(CreateAggressiveDCEPass());
} else if (pass_name == "inst-buff-addr-check") {
- RegisterPass(CreateInstBuffAddrCheckPass(7, 23, 2));
+ RegisterPass(CreateInstBuffAddrCheckPass(7, 23));
RegisterPass(CreateAggressiveDCEPass());
} else if (pass_name == "convert-relaxed-to-half") {
RegisterPass(CreateConvertRelaxedToHalfPass());
@@ -498,7 +507,7 @@
} else if (pass_name == "legalize-vector-shuffle") {
RegisterPass(CreateLegalizeVectorShufflePass());
} else if (pass_name == "split-invalid-unreachable") {
- RegisterPass(CreateLegalizeVectorShufflePass());
+ RegisterPass(CreateSplitInvalidUnreachablePass());
} else if (pass_name == "decompose-initialized-variables") {
RegisterPass(CreateDecomposeInitializedVariablesPass());
} else if (pass_name == "graphics-robust-access") {
@@ -885,12 +894,10 @@
Optimizer::PassToken CreateInstBindlessCheckPass(uint32_t desc_set,
uint32_t shader_id,
bool input_length_enable,
- bool input_init_enable,
- uint32_t version) {
+ bool input_init_enable) {
return MakeUnique<Optimizer::PassToken::Impl>(
- MakeUnique<opt::InstBindlessCheckPass>(desc_set, shader_id,
- input_length_enable,
- input_init_enable, version));
+ MakeUnique<opt::InstBindlessCheckPass>(
+ desc_set, shader_id, input_length_enable, input_init_enable));
}
Optimizer::PassToken CreateInstDebugPrintfPass(uint32_t desc_set,
@@ -900,10 +907,9 @@
}
Optimizer::PassToken CreateInstBuffAddrCheckPass(uint32_t desc_set,
- uint32_t shader_id,
- uint32_t version) {
+ uint32_t shader_id) {
return MakeUnique<Optimizer::PassToken::Impl>(
- MakeUnique<opt::InstBuffAddrCheckPass>(desc_set, shader_id, version));
+ MakeUnique<opt::InstBuffAddrCheckPass>(desc_set, shader_id));
}
Optimizer::PassToken CreateConvertRelaxedToHalfPass() {