Vulkan: Use the optimization passes automatically added by CoroSplit
This pass is automatically added by LLVM when using the CoroSplit pass
which is not peformed by regular functions. These passes have been shown
to provide a big performance gain for certain dEQP tests.
Bug: b/135609394
Bug: b/137167505
Change-Id: Iecdae495bc741c855c38daf67f95ad83155fc213
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/33969
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 3c7ad2c..cac17f5 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -82,7 +82,14 @@
void setReactorDefaultConfig()
{
auto cfg = rr::Config::Edit()
- .set(rr::Optimization::Level::Default);
+ .set(rr::Optimization::Level::Default)
+ .clearOptimizationPasses()
+ .add(rr::Optimization::Pass::ScalarReplAggregates)
+ .add(rr::Optimization::Pass::SCCP)
+ .add(rr::Optimization::Pass::CFGSimplification)
+ .add(rr::Optimization::Pass::EarlyCSEPass)
+ .add(rr::Optimization::Pass::CFGSimplification)
+ .add(rr::Optimization::Pass::InstructionCombining);
rr::Nucleus::adjustDefaultConfig(cfg);
}