#pragma once #include namespace FEXCore::Utils { class IntrusivePooledAllocator; } namespace FEXCore::IR { class Pass; class RegisterAllocationPass; class RegisterAllocationData; fextl::unique_ptr CreateConstProp(bool InlineConstants, bool SupportsTSOImm9); fextl::unique_ptr CreateContextLoadStoreElimination(bool SupportsAVX); fextl::unique_ptr CreateSyscallOptimization(); fextl::unique_ptr CreateDeadFlagCalculationEliminination(); fextl::unique_ptr CreateDeadStoreElimination(bool SupportsAVX); fextl::unique_ptr CreatePassDeadCodeElimination(); fextl::unique_ptr CreateIRCompaction(FEXCore::Utils::IntrusivePooledAllocator &Allocator); fextl::unique_ptr CreateRegisterAllocationPass(FEXCore::IR::Pass* CompactionPass, bool OptimizeSRA, bool SupportsAVX); fextl::unique_ptr CreateLongDivideEliminationPass(); namespace Validation { fextl::unique_ptr CreateIRValidation(); fextl::unique_ptr CreateRAValidation(); fextl::unique_ptr CreateValueDominanceValidation(); } namespace Debug { fextl::unique_ptr CreateIRDumper(); } }