mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-13 14:00:53 +02:00
In the event that the host doesn't support the requirements for running AVX-enabled applications (SVE2 with at least 256-bit wide vectors) but still wanted to run regular SSE-enabled applications, they would be taking a performance hit due to a load/store pessimization (necessary in order for 256-bit loads/stores to work) However, we can add an alternate view into the xmm data that would allow those hosts to use the previous optimization, while still supporting AVX-capable hosts.
35 lines
1.5 KiB
C++
35 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
namespace FEXCore::Utils {
|
|
class IntrusivePooledAllocator;
|
|
}
|
|
|
|
namespace FEXCore::IR {
|
|
class Pass;
|
|
class RegisterAllocationPass;
|
|
class RegisterAllocationData;
|
|
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateConstProp(bool InlineConstants, bool SupportsTSOImm9);
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateContextLoadStoreElimination(bool SupportsAVX);
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateSyscallOptimization();
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateDeadFlagCalculationEliminination();
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateDeadStoreElimination(bool SupportsAVX);
|
|
std::unique_ptr<FEXCore::IR::Pass> CreatePassDeadCodeElimination();
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateIRCompaction(FEXCore::Utils::IntrusivePooledAllocator &Allocator);
|
|
std::unique_ptr<FEXCore::IR::RegisterAllocationPass> CreateRegisterAllocationPass(FEXCore::IR::Pass* CompactionPass,
|
|
bool OptimizeSRA,
|
|
bool SupportsAVX);
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateStaticRegisterAllocationPass(bool SupportsAVX);
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateLongDivideEliminationPass();
|
|
|
|
namespace Validation {
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateIRValidation();
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateRAValidation();
|
|
std::unique_ptr<FEXCore::IR::Pass> CreatePhiValidation();
|
|
std::unique_ptr<FEXCore::IR::Pass> CreateValueDominanceValidation();
|
|
}
|
|
}
|
|
|