Skip to main content

luaur_code_gen/functions/
get_cmd_name.rs

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    // (C++ `switch` returned from each `case`; the match is exhaustive over all
224    // 216 IrCmd variants, so it IS the return value. The original port discarded
225    // it with `;` and always fell through to LUAU_UNREACHABLE — guaranteed UB.)
226}