1#ifndef TDL_INCLUDE_CODEGEN_OPTIMIZE_TRANS_H
2#define TDL_INCLUDE_CODEGEN_OPTIMIZE_TRANS_H
3
4#include "triton/codegen/target.h"
5
6namespace triton {
7
8namespace ir {
9 class module;
10 class value;
11 class instruction;
12 class trans_inst;
13 class builder;
14 class constant_int;
15 class dot_inst;
16}
17
18namespace codegen{
19namespace analysis{
20class layouts;
21}
22
23namespace transform{
24
25class peephole {
26private:
27// bool rewrite_cts_cfs(ir::instruction *value, ir::builder &builder);
28 bool rewrite_trans_phi(ir::instruction* value, ir::builder &builder);
29 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);
30 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);
31 bool rewrite_dot(ir::instruction *value, ir::builder& builder);
32 bool rewrite_mult(ir::instruction *value, ir::builder& builder);
33 bool rewrite_insert_extract(ir::instruction *value, ir::builder& builder);
34
35
36 bool rewrite_unit_red(ir::instruction *value, ir::builder& builder);
37 bool rewrite_gep_ptr_min_off_plus_off(ir::instruction *value, ir::builder& builder);
38 bool rewrite_select_masked_load(ir::instruction *value, ir::builder& builder);
39 bool rewrite_load_to_shared(ir::instruction *value, ir::builder& builder);
40 bool rewrite_cvt_layout(ir::instruction *value, ir::builder& builder);
41
42public:
43 peephole(target* tgt, analysis::layouts* layouts): tgt_(tgt), layouts_(layouts) {}
44 void run(ir::module &mod);
45
46private:
47 target* tgt_;
48 analysis::layouts* layouts_;
49};
50
51
52}
53}
54}
55
56#endif
57