1 | #pragma once |
---|---|
2 | |
3 | #ifndef _TRITON_IR_VISITOR_H_ |
4 | #define _TRITON_IR_VISITOR_H_ |
5 | |
6 | |
7 | namespace triton{ |
8 | namespace ir{ |
9 | |
10 | class value; |
11 | |
12 | class instruction; |
13 | |
14 | class call_inst; |
15 | class launch_inst; |
16 | |
17 | class phi_node; |
18 | class binary_operator; |
19 | class getelementptr_inst; |
20 | |
21 | class icmp_inst; |
22 | class fcmp_inst; |
23 | class dequantize_inst; |
24 | class cast_inst; |
25 | class trunc_inst; |
26 | class z_ext_inst; |
27 | class s_ext_inst; |
28 | class fp_trunc_inst; |
29 | class fp_ext_inst; |
30 | class ui_to_fp_inst; |
31 | class si_to_fp_inst; |
32 | class fp_to_ui_inst; |
33 | class fp_to_si_inst; |
34 | class ptr_to_int_inst; |
35 | class int_to_ptr_inst; |
36 | class bit_cast_inst; |
37 | class addr_space_cast_inst; |
38 | |
39 | class return_inst; |
40 | class cond_branch_inst; |
41 | class uncond_branch_inst; |
42 | |
43 | |
44 | class unmasked_load_inst; |
45 | class masked_load_inst; |
46 | class unmasked_store_inst; |
47 | class masked_store_inst; |
48 | |
49 | class extract_value_inst; |
50 | class insert_value_inst; |
51 | |
52 | class retile_inst; |
53 | class reshape_inst; |
54 | class splat_inst; |
55 | class cat_inst; |
56 | class broadcast_inst; |
57 | class downcast_inst; |
58 | |
59 | class umulhi_inst; |
60 | class exp_inst; |
61 | class cos_inst; |
62 | class sin_inst; |
63 | class log_inst; |
64 | |
65 | class get_program_id_inst; |
66 | class get_num_programs_inst; |
67 | class atomic_inst; |
68 | class atomic_cas_inst; |
69 | class atomic_rmw_inst; |
70 | class dot_inst; |
71 | class trans_inst; |
72 | class sqrt_inst; |
73 | class reduce_inst; |
74 | class select_inst; |
75 | |
76 | class cvt_layout_inst; |
77 | class copy_to_shared_inst; |
78 | class copy_from_shared_inst; |
79 | class masked_load_async_inst; |
80 | class barrier_inst; |
81 | class async_wait_inst; |
82 | class make_range_dyn; |
83 | class make_range; |
84 | class prefetch_s_inst; |
85 | class clock_inst; |
86 | class globaltimer_inst; |
87 | |
88 | class extern_elementwise_inst; |
89 | |
90 | class make_range_sta; |
91 | class undef_value; |
92 | class constant_int; |
93 | class constant_fp; |
94 | class global_value; |
95 | class global_object; |
96 | class alloc_const; |
97 | |
98 | class constant_fp; |
99 | class undef_value; |
100 | class constant_int; |
101 | class constant_fp; |
102 | class global_value; |
103 | class global_object; |
104 | class alloc_const; |
105 | |
106 | class function; |
107 | |
108 | class basic_block; |
109 | |
110 | class argument; |
111 | |
112 | class visitor { |
113 | public: |
114 | virtual ~visitor() {} |
115 | |
116 | virtual void visit_value(ir::value*); |
117 | virtual void visit_call_inst(ir::call_inst*) = 0; |
118 | virtual void visit_launch_inst(ir::launch_inst*) = 0; |
119 | |
120 | virtual void visit_basic_block(basic_block*) = 0; |
121 | virtual void visit_argument(argument*) = 0; |
122 | virtual void visit_phi_node(phi_node*) = 0; |
123 | virtual void visit_binary_operator(binary_operator*) = 0; |
124 | virtual void visit_getelementptr_inst(getelementptr_inst*) = 0; |
125 | |
126 | virtual void visit_icmp_inst(icmp_inst*) = 0; |
127 | virtual void visit_fcmp_inst(fcmp_inst*) = 0; |
128 | virtual void visit_dequantize_inst(dequantize_inst*) = 0; |
129 | virtual void visit_cast_inst(cast_inst*) = 0; |
130 | |
131 | virtual void visit_return_inst(return_inst*) = 0; |
132 | virtual void visit_cond_branch_inst(cond_branch_inst*) = 0; |
133 | virtual void visit_uncond_branch_inst(uncond_branch_inst*) = 0; |
134 | |
135 | |
136 | virtual void visit_unmasked_load_inst(unmasked_load_inst*) = 0; |
137 | virtual void visit_masked_load_inst(masked_load_inst*) = 0; |
138 | virtual void visit_unmasked_store_inst(unmasked_store_inst*) = 0; |
139 | virtual void visit_masked_store_inst(masked_store_inst*) = 0; |
140 | |
141 | virtual void visit_umulhi_inst(umulhi_inst*) = 0; |
142 | virtual void visit_exp_inst(exp_inst*) = 0; |
143 | virtual void visit_cos_inst(cos_inst*) = 0; |
144 | virtual void visit_sin_inst(sin_inst*) = 0; |
145 | virtual void visit_log_inst(log_inst*) = 0; |
146 | |
147 | virtual void visit_extract_value_inst(extract_value_inst*) = 0; |
148 | virtual void visit_insert_value_inst(insert_value_inst*) = 0; |
149 | |
150 | virtual void visit_reshape_inst(reshape_inst*) = 0; |
151 | virtual void visit_splat_inst(splat_inst*) = 0; |
152 | virtual void visit_cat_inst(cat_inst*) = 0; |
153 | virtual void visit_broadcast_inst(broadcast_inst*) = 0; |
154 | virtual void visit_downcast_inst(downcast_inst*) = 0; |
155 | |
156 | virtual void visit_get_program_id_inst(get_program_id_inst*) = 0; |
157 | virtual void visit_get_num_programs_inst(get_num_programs_inst*) = 0; |
158 | virtual void visit_atomic_cas_inst(atomic_cas_inst*) = 0; |
159 | virtual void visit_atomic_rmw_inst(atomic_rmw_inst*) = 0; |
160 | virtual void visit_dot_inst(dot_inst*) = 0; |
161 | virtual void visit_trans_inst(trans_inst*) = 0; |
162 | virtual void visit_sqrt_inst(sqrt_inst*) = 0; |
163 | virtual void visit_reduce_inst(reduce_inst*) = 0; |
164 | virtual void visit_select_inst(select_inst*) = 0; |
165 | |
166 | virtual void visit_cvt_layout_inst(cvt_layout_inst*) = 0; |
167 | virtual void visit_copy_to_shared_inst(copy_to_shared_inst*) = 0; |
168 | virtual void visit_copy_from_shared_inst(copy_from_shared_inst*) = 0; |
169 | |
170 | |
171 | virtual void visit_masked_load_async_inst(masked_load_async_inst*)= 0; |
172 | virtual void visit_barrier_inst(barrier_inst*) = 0; |
173 | virtual void visit_async_wait_inst(async_wait_inst*) = 0; |
174 | virtual void visit_make_range(make_range*) = 0; |
175 | virtual void visit_prefetch_s_inst(prefetch_s_inst*) = 0; |
176 | virtual void visit_function(function*) = 0; |
177 | virtual void visit_clock_inst(clock_inst*) = 0; |
178 | virtual void visit_globaltimer_inst(globaltimer_inst*) = 0; |
179 | |
180 | virtual void visit_undef_value(undef_value*) = 0; |
181 | virtual void visit_constant_int(constant_int*) = 0; |
182 | virtual void visit_constant_fp(constant_fp*) = 0; |
183 | virtual void visit_alloc_const(alloc_const*) = 0; |
184 | |
185 | virtual void visit_extern_elementwise_inst(extern_elementwise_inst*) = 0; |
186 | }; |
187 | |
188 | } |
189 | } |
190 | |
191 | #endif |
192 |