mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-11 11:00:22 +02:00
28 lines
1008 B
C++
28 lines
1008 B
C++
#include "Interface/IR/Passes.h"
|
|
#include "Interface/IR/PassManager.h"
|
|
|
|
namespace FEXCore::IR {
|
|
void PassManager::AddDefaultPasses() {
|
|
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateConstProp()));
|
|
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateRedundantContextLoadElimination()));
|
|
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateRedundantFlagCalculationEliminination()));
|
|
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateSyscallOptimization()));
|
|
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreatePassDeadContextStoreElimination()));
|
|
|
|
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateIRCompaction()));
|
|
}
|
|
|
|
void PassManager::AddDefaultValidationPasses() {
|
|
// Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(Validation::CreateIRValidation()));
|
|
}
|
|
|
|
bool PassManager::Run(OpDispatchBuilder *Disp) {
|
|
bool Changed = false;
|
|
for (auto const &Pass : Passes) {
|
|
Changed |= Pass->Run(Disp);
|
|
}
|
|
return Changed;
|
|
}
|
|
|
|
}
|