2016-05-07 17:37:19 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "Core/MIPS/IR/IRInst.h"
|
|
|
|
|
|
2017-12-31 17:14:34 -08:00
|
|
|
typedef bool (*IRPassFunc)(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool IRApplyPasses(const IRPassFunc *passes, size_t c, const IRWriter &in, IRWriter &out, const IROptions &opts);
|
2016-05-08 01:06:07 +02:00
|
|
|
|
2016-05-13 20:14:03 +02:00
|
|
|
// Block optimizer passes of varying usefulness.
|
2018-01-07 18:37:06 -08:00
|
|
|
bool RemoveLoadStoreLeftRight(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
2017-12-31 17:14:34 -08:00
|
|
|
bool PropagateConstants(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool PurgeTemps(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool ReduceLoads(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool ThreeOpToTwoOp(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool OptimizeFPMoves(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool ReorderLoadStore(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
|
|
|
|
bool MergeLoadStore(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
2022-08-21 12:44:35 -07:00
|
|
|
bool ApplyMemoryValidation(const IRWriter &in, IRWriter &out, const IROptions &opts);
|
2023-08-27 11:47:02 -07:00
|
|
|
bool ReduceVec4Flush(const IRWriter &in, IRWriter &out, const IROptions &opts);
|