2021-07-27 12:38:38 -07:00
|
|
|
#ifndef TDL_INCLUDE_CODEGEN_OPTIMIZE_TRANS_H
|
|
|
|
#define TDL_INCLUDE_CODEGEN_OPTIMIZE_TRANS_H
|
|
|
|
|
2021-01-11 19:20:34 -05:00
|
|
|
#include "triton/codegen/target.h"
|
2021-07-27 12:38:38 -07:00
|
|
|
|
|
|
|
namespace triton {
|
|
|
|
|
|
|
|
namespace ir {
|
|
|
|
class module;
|
|
|
|
class value;
|
|
|
|
class instruction;
|
|
|
|
class trans_inst;
|
|
|
|
class builder;
|
|
|
|
class constant_int;
|
|
|
|
class dot_inst;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace codegen{
|
2021-02-21 15:19:39 -08:00
|
|
|
namespace analysis{
|
|
|
|
class layouts;
|
|
|
|
}
|
|
|
|
|
2021-07-27 12:38:38 -07:00
|
|
|
namespace transform{
|
|
|
|
|
|
|
|
class peephole {
|
|
|
|
private:
|
2020-05-11 00:26:03 -04:00
|
|
|
// bool rewrite_cts_cfs(ir::instruction *value, ir::builder &builder);
|
2021-07-27 12:38:38 -07:00
|
|
|
bool rewrite_trans_phi(ir::instruction* value, ir::builder &builder);
|
|
|
|
bool rewrite_dot_fp32(ir::dot_inst *dot, ir::builder& builder, bool trans_a, bool trans_b, ir::value *A, ir::value *B, ir::value *D);
|
|
|
|
bool rewrite_dot_hmma(ir::dot_inst *dot, ir::builder& builder, bool trans_a, bool trans_b, ir::value *A, ir::value *B, ir::value *D);
|
|
|
|
bool rewrite_dot(ir::instruction *value, ir::builder& builder);
|
|
|
|
bool rewrite_mult(ir::instruction *value, ir::builder& builder);
|
|
|
|
bool rewrite_unit_red(ir::instruction *value, ir::builder& builder);
|
|
|
|
bool rewrite_gep_ptr_min_off_plus_off(ir::instruction *value, ir::builder& builder);
|
2021-03-07 14:53:48 -05:00
|
|
|
bool rewrite_select_masked_load(ir::instruction *value, ir::builder& builder);
|
2021-01-11 19:20:34 -05:00
|
|
|
bool rewrite_load_to_shared(ir::instruction *value, ir::builder& builder);
|
2021-08-30 11:50:35 -07:00
|
|
|
bool rewrite_cvt_layout(ir::instruction *value, ir::builder& builder);
|
2021-12-22 01:56:10 +08:00
|
|
|
|
2021-07-27 12:38:38 -07:00
|
|
|
public:
|
2021-02-21 15:19:39 -08:00
|
|
|
peephole(target* tgt, analysis::layouts* layouts): tgt_(tgt), layouts_(layouts) {}
|
2021-07-27 12:38:38 -07:00
|
|
|
void run(ir::module &mod);
|
2021-01-11 19:20:34 -05:00
|
|
|
|
|
|
|
private:
|
|
|
|
target* tgt_;
|
2021-02-21 15:19:39 -08:00
|
|
|
analysis::layouts* layouts_;
|
2021-07-27 12:38:38 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|