1#pragma once
2
3#ifndef _TRITON_IR_ENUMS_H_
4#define _TRITON_IR_ENUMS_H_
5
6namespace triton{
7namespace ir{
8
9
10enum 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
31enum 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
44enum 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
60enum 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
93enum 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 INST_EXTRACT_VALUE,
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