1use crate::enums::ir_cmd::IrCmd;
2use luaur_common::macros::luau_unreachable::LUAU_UNREACHABLE;
3
4pub fn get_cmd_name(cmd: IrCmd) -> &'static str {
5 match cmd {
6 IrCmd::NOP => "NOP",
7 IrCmd::LOAD_TAG => "LOAD_TAG",
8 IrCmd::LOAD_POINTER => "LOAD_POINTER",
9 IrCmd::LOAD_DOUBLE => "LOAD_DOUBLE",
10 IrCmd::LOAD_INT => "LOAD_INT",
11 IrCmd::LOAD_INT64 => "LOAD_INT64",
12 IrCmd::LOAD_FLOAT => "LOAD_FLOAT",
13 IrCmd::LOAD_TVALUE => "LOAD_TVALUE",
14 IrCmd::LOAD_ENV => "LOAD_ENV",
15 IrCmd::GET_ARR_ADDR => "GET_ARR_ADDR",
16 IrCmd::GET_SLOT_NODE_ADDR => "GET_SLOT_NODE_ADDR",
17 IrCmd::GET_HASH_NODE_ADDR => "GET_HASH_NODE_ADDR",
18 IrCmd::GET_CLOSURE_UPVAL_ADDR => "GET_CLOSURE_UPVAL_ADDR",
19 IrCmd::STORE_TAG => "STORE_TAG",
20 IrCmd::STORE_EXTRA => "STORE_EXTRA",
21 IrCmd::STORE_POINTER => "STORE_POINTER",
22 IrCmd::STORE_DOUBLE => "STORE_DOUBLE",
23 IrCmd::STORE_INT => "STORE_INT",
24 IrCmd::STORE_INT64 => "STORE_INT64",
25 IrCmd::STORE_VECTOR => "STORE_VECTOR",
26 IrCmd::STORE_TVALUE => "STORE_TVALUE",
27 IrCmd::STORE_SPLIT_TVALUE => "STORE_SPLIT_TVALUE",
28 IrCmd::ADD_INT => "ADD_INT",
29 IrCmd::SUB_INT => "SUB_INT",
30 IrCmd::ADD_INT64 => "ADD_INT64",
31 IrCmd::SUB_INT64 => "SUB_INT64",
32 IrCmd::MUL_INT64 => "MUL_INT64",
33 IrCmd::DIV_INT64 => "DIV_INT64",
34 IrCmd::IDIV_INT64 => "IDIV_INT64",
35 IrCmd::CHECK_DIV_INT64 => "CHECK_DIV_INT64",
36 IrCmd::UDIV_INT64 => "UDIV_INT64",
37 IrCmd::REM_INT64 => "REM_INT64",
38 IrCmd::UREM_INT64 => "UREM_INT64",
39 IrCmd::MOD_INT64 => "MOD_INT64",
40 IrCmd::SEXTI8_INT => "SEXTI8_INT",
41 IrCmd::SEXTI16_INT => "SEXTI16_INT",
42 IrCmd::ADD_NUM => "ADD_NUM",
43 IrCmd::SUB_NUM => "SUB_NUM",
44 IrCmd::MUL_NUM => "MUL_NUM",
45 IrCmd::DIV_NUM => "DIV_NUM",
46 IrCmd::IDIV_NUM => "IDIV_NUM",
47 IrCmd::MOD_NUM => "MOD_NUM",
48 IrCmd::MIN_NUM => "MIN_NUM",
49 IrCmd::MAX_NUM => "MAX_NUM",
50 IrCmd::UNM_NUM => "UNM_NUM",
51 IrCmd::FLOOR_NUM => "FLOOR_NUM",
52 IrCmd::CEIL_NUM => "CEIL_NUM",
53 IrCmd::ROUND_NUM => "ROUND_NUM",
54 IrCmd::SQRT_NUM => "SQRT_NUM",
55 IrCmd::ABS_NUM => "ABS_NUM",
56 IrCmd::SIGN_NUM => "SIGN_NUM",
57 IrCmd::ADD_FLOAT => "ADD_FLOAT",
58 IrCmd::SUB_FLOAT => "SUB_FLOAT",
59 IrCmd::MUL_FLOAT => "MUL_FLOAT",
60 IrCmd::DIV_FLOAT => "DIV_FLOAT",
61 IrCmd::MIN_FLOAT => "MIN_FLOAT",
62 IrCmd::MAX_FLOAT => "MAX_FLOAT",
63 IrCmd::UNM_FLOAT => "UNM_FLOAT",
64 IrCmd::FLOOR_FLOAT => "FLOOR_FLOAT",
65 IrCmd::CEIL_FLOAT => "CEIL_FLOAT",
66 IrCmd::SQRT_FLOAT => "SQRT_FLOAT",
67 IrCmd::ABS_FLOAT => "ABS_FLOAT",
68 IrCmd::SIGN_FLOAT => "SIGN_FLOAT",
69 IrCmd::SELECT_NUM => "SELECT_NUM",
70 IrCmd::SELECT_INT64 => "SELECT_INT64",
71 IrCmd::MULADD_NUM => "MULADD_NUM",
72 IrCmd::SELECT_VEC => "SELECT_VEC",
73 IrCmd::SELECT_IF_TRUTHY => "SELECT_IF_TRUTHY",
74 IrCmd::ADD_VEC => "ADD_VEC",
75 IrCmd::SUB_VEC => "SUB_VEC",
76 IrCmd::MUL_VEC => "MUL_VEC",
77 IrCmd::DIV_VEC => "DIV_VEC",
78 IrCmd::IDIV_VEC => "IDIV_VEC",
79 IrCmd::MULADD_VEC => "MULADD_VEC",
80 IrCmd::UNM_VEC => "UNM_VEC",
81 IrCmd::MIN_VEC => "MIN_VEC",
82 IrCmd::MAX_VEC => "MAX_VEC",
83 IrCmd::FLOOR_VEC => "FLOOR_VEC",
84 IrCmd::CEIL_VEC => "CEIL_VEC",
85 IrCmd::ABS_VEC => "ABS_VEC",
86 IrCmd::DOT_VEC => "DOT_VEC",
87 IrCmd::EXTRACT_VEC => "EXTRACT_VEC",
88 IrCmd::NOT_ANY => "NOT_ANY",
89 IrCmd::CMP_ANY => "CMP_ANY",
90 IrCmd::CMP_INT => "CMP_INT",
91 IrCmd::CMP_INT64 => "CMP_INT64",
92 IrCmd::CMP_TAG => "CMP_TAG",
93 IrCmd::CMP_SPLIT_TVALUE => "CMP_SPLIT_TVALUE",
94 IrCmd::JUMP => "JUMP",
95 IrCmd::JUMP_IF_TRUTHY => "JUMP_IF_TRUTHY",
96 IrCmd::JUMP_IF_FALSY => "JUMP_IF_FALSY",
97 IrCmd::JUMP_EQ_TAG => "JUMP_EQ_TAG",
98 IrCmd::JUMP_CMP_INT => "JUMP_CMP_INT",
99 IrCmd::JUMP_EQ_POINTER => "JUMP_EQ_POINTER",
100 IrCmd::JUMP_CMP_NUM => "JUMP_CMP_NUM",
101 IrCmd::JUMP_CMP_FLOAT => "JUMP_CMP_FLOAT",
102 IrCmd::JUMP_FORN_LOOP_COND => "JUMP_FORN_LOOP_COND",
103 IrCmd::JUMP_SLOT_MATCH => "JUMP_SLOT_MATCH",
104 IrCmd::TABLE_LEN => "TABLE_LEN",
105 IrCmd::TABLE_SETNUM => "TABLE_SETNUM",
106 IrCmd::STRING_LEN => "STRING_LEN",
107 IrCmd::NEW_TABLE => "NEW_TABLE",
108 IrCmd::DUP_TABLE => "DUP_TABLE",
109 IrCmd::TRY_NUM_TO_INDEX => "TRY_NUM_TO_INDEX",
110 IrCmd::TRY_CALL_FASTGETTM => "TRY_CALL_FASTGETTM",
111 IrCmd::NEW_USERDATA => "NEW_USERDATA",
112 IrCmd::INT64_TO_NUM => "INT64_TO_NUM",
113 IrCmd::INT_TO_NUM => "INT_TO_NUM",
114 IrCmd::UINT_TO_NUM => "UINT_TO_NUM",
115 IrCmd::UINT_TO_FLOAT => "UINT_TO_FLOAT",
116 IrCmd::NUM_TO_INT => "NUM_TO_INT",
117 IrCmd::NUM_TO_INT64 => "NUM_TO_INT64",
118 IrCmd::NUM_TO_UINT => "NUM_TO_UINT",
119 IrCmd::FLOAT_TO_NUM => "FLOAT_TO_NUM",
120 IrCmd::NUM_TO_FLOAT => "NUM_TO_FLOAT",
121 IrCmd::FLOAT_TO_VEC => "FLOAT_TO_VEC",
122 IrCmd::TAG_VECTOR => "TAG_VECTOR",
123 IrCmd::TRUNCATE_UINT => "TRUNCATE_UINT",
124 IrCmd::ADJUST_STACK_TO_REG => "ADJUST_STACK_TO_REG",
125 IrCmd::ADJUST_STACK_TO_TOP => "ADJUST_STACK_TO_TOP",
126 IrCmd::FASTCALL => "FASTCALL",
127 IrCmd::INVOKE_FASTCALL => "INVOKE_FASTCALL",
128 IrCmd::CHECK_FASTCALL_RES => "CHECK_FASTCALL_RES",
129 IrCmd::DO_ARITH => "DO_ARITH",
130 IrCmd::DO_LEN => "DO_LEN",
131 IrCmd::GET_TABLE => "GET_TABLE",
132 IrCmd::SET_TABLE => "SET_TABLE",
133 IrCmd::GET_CACHED_IMPORT => "GET_CACHED_IMPORT",
134 IrCmd::CONCAT => "CONCAT",
135 IrCmd::GET_UPVALUE => "GET_UPVALUE",
136 IrCmd::SET_UPVALUE => "SET_UPVALUE",
137 IrCmd::CHECK_TAG => "CHECK_TAG",
138 IrCmd::CHECK_TRUTHY => "CHECK_TRUTHY",
139 IrCmd::CHECK_READONLY => "CHECK_READONLY",
140 IrCmd::CHECK_NO_METATABLE => "CHECK_NO_METATABLE",
141 IrCmd::CHECK_SAFE_ENV => "CHECK_SAFE_ENV",
142 IrCmd::CHECK_ARRAY_SIZE => "CHECK_ARRAY_SIZE",
143 IrCmd::CHECK_SLOT_MATCH => "CHECK_SLOT_MATCH",
144 IrCmd::CHECK_NODE_NO_NEXT => "CHECK_NODE_NO_NEXT",
145 IrCmd::CHECK_NODE_VALUE => "CHECK_NODE_VALUE",
146 IrCmd::CHECK_BUFFER_LEN => "CHECK_BUFFER_LEN",
147 IrCmd::CHECK_USERDATA_TAG => "CHECK_USERDATA_TAG",
148 IrCmd::CHECK_CMP_NUM => "CHECK_CMP_NUM",
149 IrCmd::CHECK_CMP_INT => "CHECK_CMP_INT",
150 IrCmd::CHECK_CMP_INT64 => "CHECK_CMP_INT64",
151 IrCmd::INTERRUPT => "INTERRUPT",
152 IrCmd::CHECK_GC => "CHECK_GC",
153 IrCmd::BARRIER_OBJ => "BARRIER_OBJ",
154 IrCmd::BARRIER_TABLE_BACK => "BARRIER_TABLE_BACK",
155 IrCmd::BARRIER_TABLE_FORWARD => "BARRIER_TABLE_FORWARD",
156 IrCmd::SET_SAVEDPC => "SET_SAVEDPC",
157 IrCmd::CLOSE_UPVALS => "CLOSE_UPVALS",
158 IrCmd::CAPTURE => "CAPTURE",
159 IrCmd::SETLIST => "SETLIST",
160 IrCmd::CALL => "CALL",
161 IrCmd::RETURN => "RETURN",
162 IrCmd::FORGLOOP => "FORGLOOP",
163 IrCmd::FORGLOOP_FALLBACK => "FORGLOOP_FALLBACK",
164 IrCmd::FORGPREP_XNEXT_FALLBACK => "FORGPREP_XNEXT_FALLBACK",
165 IrCmd::COVERAGE => "COVERAGE",
166 IrCmd::FALLBACK_GETGLOBAL => "FALLBACK_GETGLOBAL",
167 IrCmd::FALLBACK_SETGLOBAL => "FALLBACK_SETGLOBAL",
168 IrCmd::FALLBACK_GETTABLEKS => "FALLBACK_GETTABLEKS",
169 IrCmd::FALLBACK_SETTABLEKS => "FALLBACK_SETTABLEKS",
170 IrCmd::FALLBACK_NAMECALL => "FALLBACK_NAMECALL",
171 IrCmd::FALLBACK_PREPVARARGS => "FALLBACK_PREPVARARGS",
172 IrCmd::FALLBACK_GETVARARGS => "FALLBACK_GETVARARGS",
173 IrCmd::NEWCLOSURE => "NEWCLOSURE",
174 IrCmd::FALLBACK_DUPCLOSURE => "FALLBACK_DUPCLOSURE",
175 IrCmd::FALLBACK_FORGPREP => "FALLBACK_FORGPREP",
176 IrCmd::SUBSTITUTE => "SUBSTITUTE",
177 IrCmd::MARK_USED => "MARK_USED",
178 IrCmd::MARK_DEAD => "MARK_DEAD",
179 IrCmd::BITAND_INT64 => "BITAND_INT64",
180 IrCmd::BITXOR_INT64 => "BITXOR_INT64",
181 IrCmd::BITOR_INT64 => "BITOR_INT64",
182 IrCmd::BITNOT_INT64 => "BITNOT_INT64",
183 IrCmd::BITLSHIFT_INT64 => "BITLSHIFT_INT64",
184 IrCmd::BITRSHIFT_INT64 => "BITRSHIFT_INT64",
185 IrCmd::BITARSHIFT_INT64 => "BITARSHIFT_INT64",
186 IrCmd::BITLROTATE_INT64 => "BITLROTATE_INT64",
187 IrCmd::BITRROTATE_INT64 => "BITRROTATE_INT64",
188 IrCmd::BITCOUNTLZ_INT64 => "BITCOUNTLZ_INT64",
189 IrCmd::BITCOUNTRZ_INT64 => "BITCOUNTRZ_INT64",
190 IrCmd::BYTESWAP_INT64 => "BYTESWAP_INT64",
191 IrCmd::BITAND_UINT => "BITAND_UINT",
192 IrCmd::BITXOR_UINT => "BITXOR_UINT",
193 IrCmd::BITOR_UINT => "BITOR_UINT",
194 IrCmd::BITNOT_UINT => "BITNOT_UINT",
195 IrCmd::BITLSHIFT_UINT => "BITLSHIFT_UINT",
196 IrCmd::BITRSHIFT_UINT => "BITRSHIFT_UINT",
197 IrCmd::BITARSHIFT_UINT => "BITARSHIFT_UINT",
198 IrCmd::BITLROTATE_UINT => "BITLROTATE_UINT",
199 IrCmd::BITRROTATE_UINT => "BITRROTATE_UINT",
200 IrCmd::BITCOUNTLZ_UINT => "BITCOUNTLZ_UINT",
201 IrCmd::BITCOUNTRZ_UINT => "BITCOUNTRZ_UINT",
202 IrCmd::BYTESWAP_UINT => "BYTESWAP_UINT",
203 IrCmd::INVOKE_LIBM => "INVOKE_LIBM",
204 IrCmd::GET_TYPE => "GET_TYPE",
205 IrCmd::GET_TYPEOF => "GET_TYPEOF",
206 IrCmd::FINDUPVAL => "FINDUPVAL",
207 IrCmd::BUFFER_READI8 => "BUFFER_READI8",
208 IrCmd::BUFFER_READU8 => "BUFFER_READU8",
209 IrCmd::BUFFER_WRITEI8 => "BUFFER_WRITEI8",
210 IrCmd::BUFFER_READI16 => "BUFFER_READI16",
211 IrCmd::BUFFER_READU16 => "BUFFER_READU16",
212 IrCmd::BUFFER_WRITEI16 => "BUFFER_WRITEI16",
213 IrCmd::BUFFER_READI32 => "BUFFER_READI32",
214 IrCmd::BUFFER_WRITEI32 => "BUFFER_WRITEI32",
215 IrCmd::BUFFER_READF32 => "BUFFER_READF32",
216 IrCmd::BUFFER_WRITEF32 => "BUFFER_WRITEF32",
217 IrCmd::BUFFER_READF64 => "BUFFER_READF64",
218 IrCmd::BUFFER_WRITEF64 => "BUFFER_WRITEF64",
219 IrCmd::BUFFER_READI64 => "BUFFER_READI64",
220 IrCmd::BUFFER_WRITEI64 => "BUFFER_WRITEI64",
221 IrCmd::JUMP_CMP_PROTOID => "JUMP_CMP_PROTOID",
222 }
223 }