1 | #ifndef TDL_INCLUDE_CODEGEN_OPTIMIZE_TRANS_H |
2 | #define TDL_INCLUDE_CODEGEN_OPTIMIZE_TRANS_H |
3 | |
4 | #include "triton/codegen/target.h" |
5 | |
6 | namespace triton { |
7 | |
8 | namespace 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 | |
18 | namespace codegen{ |
19 | namespace analysis{ |
20 | class layouts; |
21 | } |
22 | |
23 | namespace transform{ |
24 | |
25 | class peephole { |
26 | private: |
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 (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 | |
42 | public: |
43 | peephole(target* tgt, analysis::layouts* layouts): tgt_(tgt), layouts_(layouts) {} |
44 | void run(ir::module &mod); |
45 | |
46 | private: |
47 | target* tgt_; |
48 | analysis::layouts* layouts_; |
49 | }; |
50 | |
51 | |
52 | } |
53 | } |
54 | } |
55 | |
56 | #endif |
57 | |