1 | #pragma once |
2 | |
3 | #ifndef _TRITON_IR_ENUMS_H_ |
4 | #define _TRITON_IR_ENUMS_H_ |
5 | |
6 | namespace triton{ |
7 | namespace ir{ |
8 | |
9 | |
10 | enum binary_op_t: unsigned int{ |
11 | Add, |
12 | FAdd, |
13 | Sub, |
14 | FSub, |
15 | Mul, |
16 | FMul, |
17 | UDiv, |
18 | SDiv, |
19 | FDiv, |
20 | URem, |
21 | SRem, |
22 | FRem, |
23 | Shl, |
24 | LShr, |
25 | AShr, |
26 | And, |
27 | Or, |
28 | Xor |
29 | }; |
30 | |
31 | enum class atomic_rmw_op_t: unsigned int{ |
32 | And, |
33 | Or, |
34 | Xor, |
35 | Add, |
36 | Max, |
37 | Min, |
38 | UMax, |
39 | UMin, |
40 | FAdd, |
41 | Xchg, |
42 | }; |
43 | |
44 | enum cast_op_t: unsigned int { |
45 | Trunc, |
46 | ZExt, |
47 | SExt, |
48 | FPTrunc, |
49 | FPExt, |
50 | UIToFP, |
51 | SIToFP, |
52 | FPToUI, |
53 | FPToSI, |
54 | PtrToInt, |
55 | IntToPtr, |
56 | BitCast, |
57 | AddrSpaceCast |
58 | }; |
59 | |
60 | enum cmp_pred_t: unsigned int { |
61 | FIRST_FCMP_PREDICATE, |
62 | FCMP_FALSE, |
63 | FCMP_OEQ, |
64 | FCMP_OGT, |
65 | FCMP_OGE, |
66 | FCMP_OLT, |
67 | FCMP_OLE, |
68 | FCMP_ONE, |
69 | FCMP_ORD, |
70 | FCMP_UNO, |
71 | FCMP_UEQ, |
72 | FCMP_UGT, |
73 | FCMP_UGE, |
74 | FCMP_ULT, |
75 | FCMP_ULE, |
76 | FCMP_UNE, |
77 | FCMP_TRUE, |
78 | LAST_FCMP_PREDICATE, |
79 | FIRST_ICMP_PREDICATE, |
80 | ICMP_EQ, |
81 | ICMP_NE, |
82 | ICMP_UGT, |
83 | ICMP_UGE, |
84 | ICMP_ULT, |
85 | ICMP_ULE, |
86 | ICMP_SGT, |
87 | ICMP_SGE, |
88 | ICMP_SLT, |
89 | ICMP_SLE, |
90 | LAST_ICMP_PREDICATE |
91 | }; |
92 | |
93 | enum value_id_t: unsigned { |
94 | /* ------------ * |
95 | INSTRUCTIONS |
96 | * ------------ */ |
97 | INST_BEGIN, |
98 | // call |
99 | INST_CALL, |
100 | INST_LAUNCH, |
101 | // phi |
102 | INST_PHI, |
103 | // arithmetic |
104 | INST_BINOP, |
105 | INST_GETELEMENTPTR, |
106 | INST_SELECT, |
107 | INST_SQRT, |
108 | // cmp |
109 | INST_ICMP, |
110 | INST_FCMP, |
111 | // dequantize |
112 | INST_DEQUANTIZE, |
113 | // cast |
114 | INST_CAST_TRUNC, |
115 | INST_CAST_ZEXT, |
116 | INST_CAST_SEXT, |
117 | INST_CAST_FP_TRUNC, |
118 | INST_CAST_FP_EXT, |
119 | INST_CAST_UI_TO_FP, |
120 | INST_CAST_SI_TO_FP, |
121 | INST_CAST_FP_TO_UI, |
122 | INST_CAST_FP_TO_SI, |
123 | INST_CAST_PTR_TO_INT, |
124 | INST_CAST_INT_TO_PTR, |
125 | INST_CAST_BIT_CAST, |
126 | INST_CAST_ADDR_SPACE_CAST, |
127 | // terminators |
128 | INST_RETURN, |
129 | INST_COND_BRANCH, |
130 | INST_UNCOND_BRANCH, |
131 | // io |
132 | INST_UNMASKED_LOAD, |
133 | INST_MASKED_LOAD, |
134 | INST_MASKED_LOAD_ASYNC, |
135 | INST_UNMASKED_STORE, |
136 | INST_MASKED_STORE, |
137 | // struct |
138 | , |
139 | INST_INSERT_VALUE, |
140 | // retile |
141 | INST_RESHAPE, |
142 | INST_SPLAT, |
143 | INST_CAT, |
144 | INST_BROADCAST, |
145 | INST_DOWNCAST, |
146 | // builtin |
147 | INST_GET_PROGRAM_ID, |
148 | INST_GET_NUM_PROGRAMS, |
149 | // atomics |
150 | INST_ATOMIC_CAS, |
151 | INST_ATOMIC_EXCH, |
152 | INST_ATOMIC_RMW, |
153 | // math |
154 | INST_UMULHI, |
155 | INST_EXP, |
156 | INST_COS, |
157 | INST_SIN, |
158 | INST_LOG, |
159 | // extern |
160 | INST_EXTERN_ELEMENTWISE, |
161 | // array arithmetic |
162 | INST_TRANS, |
163 | INST_REDUCE, |
164 | INST_DOT, |
165 | // intrinsics |
166 | INST_COPY_TO_SHARED, |
167 | INST_COPY_FROM_SHARED, |
168 | INST_CVT_LAYOUT, |
169 | INST_CVT_SCANLINE, |
170 | INST_DECOALESCE, |
171 | INST_RECOALESCE, |
172 | INST_BARRIER, |
173 | INST_ASYNC_WAIT, |
174 | INST_MAKE_RANGE_DYN, |
175 | INST_MAKE_RANGE_STA, |
176 | INST_MAKE_RANGE, |
177 | INST_PREFETCH_S, |
178 | INST_GLOBALTIMER, |
179 | INST_CLOCK, |
180 | }; |
181 | |
182 | |
183 | |
184 | } |
185 | } |
186 | |
187 | #endif |
188 | |