mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-14 08:00:50 +02:00
FEXCore: Move to Externals/FEXCore
This commit is contained in:
1 parent
f034cef9fc
commit
e9ea4cbb76
113 files changed
No files matched your search
@@ -0,0 +1,36 @@
|
||||
#include "Interface/IR/Passes.h"
|
||||
#include "Interface/IR/Passes/RegisterAllocationPass.h"
|
||||
#include "Interface/IR/PassManager.h"
|
||||
|
||||
namespace FEXCore::IR {
|
||||
|
||||
void PassManager::AddDefaultPasses() {
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateContextLoadStoreElimination()));
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateConstProp()));
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateRedundantFlagCalculationEliminination()));
|
||||
// Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateDeadFlagCalculationEliminination()));
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateSyscallOptimization()));
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreatePassDeadCodeElimination()));
|
||||
|
||||
// If the IR is compacted post-RA then the node indexing gets messed up and the backend isn't able to find the register assigned to a node
|
||||
// Compact before IR, don't worry about RA generating spills/fills
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(CreateIRCompaction()));
|
||||
}
|
||||
|
||||
void PassManager::AddDefaultValidationPasses() {
|
||||
#ifndef NDEBUG
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(Validation::CreatePhiValidation()));
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(Validation::CreateIRValidation()));
|
||||
Passes.emplace_back(std::unique_ptr<FEXCore::IR::Pass>(Validation::CreateValueDominanceValidation()));
|
||||
#endif
|
||||
}
|
||||
|
||||
bool PassManager::Run(OpDispatchBuilder *Disp) {
|
||||
bool Changed = false;
|
||||
for (auto const &Pass : Passes) {
|
||||
Changed |= Pass->Run(Disp);
|
||||
}
|
||||
return Changed;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user