1#ifndef TDL_INCLUDE_CODEGEN_OPTIMIZE_REORDER_H
2#define TDL_INCLUDE_CODEGEN_OPTIMIZE_REORDER_H
3
4#include <map>
5#include <set>
6#include <vector>
7
8namespace triton {
9
10namespace ir {
11 class module;
12 class value;
13 class io_inst;
14 class instruction;
15 class builder;
16}
17
18namespace codegen{
19
20namespace analysis{
21 class align;
22 class layouts;
23 class cts;
24}
25
26namespace transform{
27
28class coalesce {
29private:
30 void extract_io_use(ir::value *v, std::set<ir::io_inst*>& result);
31 void extract_ld(ir::io_inst *i, std::map<int, std::vector<triton::ir::io_inst *> > &result);
32 ir::value* rematerialize(ir::value *v, ir::builder& builder, std::map<ir::value*, ir::value*>& seen);
33
34public:
35 coalesce(analysis::align* align, triton::codegen::analysis::layouts *layouts, bool has_sm80);
36 triton::ir::value *simplify(ir::instruction* i, triton::ir::builder &builder);
37 void run(ir::module &mod);
38
39private:
40 bool has_sm80_;
41 analysis::align* align_;
42 analysis::layouts* layout_;
43};
44
45}
46}
47}
48
49#endif
50