use crate::enums::ir_cmd::IrCmd;
use luaur_common::macros::luau_unreachable::LUAU_UNREACHABLE;
pub fn get_cmd_name(cmd: IrCmd) -> &'static str {
match cmd {
IrCmd::NOP => "NOP",
IrCmd::LOAD_TAG => "LOAD_TAG",
IrCmd::LOAD_POINTER => "LOAD_POINTER",
IrCmd::LOAD_DOUBLE => "LOAD_DOUBLE",
IrCmd::LOAD_INT => "LOAD_INT",
IrCmd::LOAD_INT64 => "LOAD_INT64",
IrCmd::LOAD_FLOAT => "LOAD_FLOAT",
IrCmd::LOAD_TVALUE => "LOAD_TVALUE",
IrCmd::LOAD_ENV => "LOAD_ENV",
IrCmd::GET_ARR_ADDR => "GET_ARR_ADDR",
IrCmd::GET_SLOT_NODE_ADDR => "GET_SLOT_NODE_ADDR",
IrCmd::GET_HASH_NODE_ADDR => "GET_HASH_NODE_ADDR",
IrCmd::GET_CLOSURE_UPVAL_ADDR => "GET_CLOSURE_UPVAL_ADDR",
IrCmd::STORE_TAG => "STORE_TAG",
IrCmd::STORE_EXTRA => "STORE_EXTRA",
IrCmd::STORE_POINTER => "STORE_POINTER",
IrCmd::STORE_DOUBLE => "STORE_DOUBLE",
IrCmd::STORE_INT => "STORE_INT",
IrCmd::STORE_INT64 => "STORE_INT64",
IrCmd::STORE_VECTOR => "STORE_VECTOR",
IrCmd::STORE_TVALUE => "STORE_TVALUE",
IrCmd::STORE_SPLIT_TVALUE => "STORE_SPLIT_TVALUE",
IrCmd::ADD_INT => "ADD_INT",
IrCmd::SUB_INT => "SUB_INT",
IrCmd::ADD_INT64 => "ADD_INT64",
IrCmd::SUB_INT64 => "SUB_INT64",
IrCmd::MUL_INT64 => "MUL_INT64",
IrCmd::DIV_INT64 => "DIV_INT64",
IrCmd::IDIV_INT64 => "IDIV_INT64",
IrCmd::CHECK_DIV_INT64 => "CHECK_DIV_INT64",
IrCmd::UDIV_INT64 => "UDIV_INT64",
IrCmd::REM_INT64 => "REM_INT64",
IrCmd::UREM_INT64 => "UREM_INT64",
IrCmd::MOD_INT64 => "MOD_INT64",
IrCmd::SEXTI8_INT => "SEXTI8_INT",
IrCmd::SEXTI16_INT => "SEXTI16_INT",
IrCmd::ADD_NUM => "ADD_NUM",
IrCmd::SUB_NUM => "SUB_NUM",
IrCmd::MUL_NUM => "MUL_NUM",
IrCmd::DIV_NUM => "DIV_NUM",
IrCmd::IDIV_NUM => "IDIV_NUM",
IrCmd::MOD_NUM => "MOD_NUM",
IrCmd::MIN_NUM => "MIN_NUM",
IrCmd::MAX_NUM => "MAX_NUM",
IrCmd::UNM_NUM => "UNM_NUM",
IrCmd::FLOOR_NUM => "FLOOR_NUM",
IrCmd::CEIL_NUM => "CEIL_NUM",
IrCmd::ROUND_NUM => "ROUND_NUM",
IrCmd::SQRT_NUM => "SQRT_NUM",
IrCmd::ABS_NUM => "ABS_NUM",
IrCmd::SIGN_NUM => "SIGN_NUM",
IrCmd::ADD_FLOAT => "ADD_FLOAT",
IrCmd::SUB_FLOAT => "SUB_FLOAT",
IrCmd::MUL_FLOAT => "MUL_FLOAT",
IrCmd::DIV_FLOAT => "DIV_FLOAT",
IrCmd::MIN_FLOAT => "MIN_FLOAT",
IrCmd::MAX_FLOAT => "MAX_FLOAT",
IrCmd::UNM_FLOAT => "UNM_FLOAT",
IrCmd::FLOOR_FLOAT => "FLOOR_FLOAT",
IrCmd::CEIL_FLOAT => "CEIL_FLOAT",
IrCmd::SQRT_FLOAT => "SQRT_FLOAT",
IrCmd::ABS_FLOAT => "ABS_FLOAT",
IrCmd::SIGN_FLOAT => "SIGN_FLOAT",
IrCmd::SELECT_NUM => "SELECT_NUM",
IrCmd::SELECT_INT64 => "SELECT_INT64",
IrCmd::MULADD_NUM => "MULADD_NUM",
IrCmd::SELECT_VEC => "SELECT_VEC",
IrCmd::SELECT_IF_TRUTHY => "SELECT_IF_TRUTHY",
IrCmd::ADD_VEC => "ADD_VEC",
IrCmd::SUB_VEC => "SUB_VEC",
IrCmd::MUL_VEC => "MUL_VEC",
IrCmd::DIV_VEC => "DIV_VEC",
IrCmd::IDIV_VEC => "IDIV_VEC",
IrCmd::MULADD_VEC => "MULADD_VEC",
IrCmd::UNM_VEC => "UNM_VEC",
IrCmd::MIN_VEC => "MIN_VEC",
IrCmd::MAX_VEC => "MAX_VEC",
IrCmd::FLOOR_VEC => "FLOOR_VEC",
IrCmd::CEIL_VEC => "CEIL_VEC",
IrCmd::ABS_VEC => "ABS_VEC",
IrCmd::DOT_VEC => "DOT_VEC",
IrCmd::EXTRACT_VEC => "EXTRACT_VEC",
IrCmd::NOT_ANY => "NOT_ANY",
IrCmd::CMP_ANY => "CMP_ANY",
IrCmd::CMP_INT => "CMP_INT",
IrCmd::CMP_INT64 => "CMP_INT64",
IrCmd::CMP_TAG => "CMP_TAG",
IrCmd::CMP_SPLIT_TVALUE => "CMP_SPLIT_TVALUE",
IrCmd::JUMP => "JUMP",
IrCmd::JUMP_IF_TRUTHY => "JUMP_IF_TRUTHY",
IrCmd::JUMP_IF_FALSY => "JUMP_IF_FALSY",
IrCmd::JUMP_EQ_TAG => "JUMP_EQ_TAG",
IrCmd::JUMP_CMP_INT => "JUMP_CMP_INT",
IrCmd::JUMP_EQ_POINTER => "JUMP_EQ_POINTER",
IrCmd::JUMP_CMP_NUM => "JUMP_CMP_NUM",
IrCmd::JUMP_CMP_FLOAT => "JUMP_CMP_FLOAT",
IrCmd::JUMP_FORN_LOOP_COND => "JUMP_FORN_LOOP_COND",
IrCmd::JUMP_SLOT_MATCH => "JUMP_SLOT_MATCH",
IrCmd::TABLE_LEN => "TABLE_LEN",
IrCmd::TABLE_SETNUM => "TABLE_SETNUM",
IrCmd::STRING_LEN => "STRING_LEN",
IrCmd::NEW_TABLE => "NEW_TABLE",
IrCmd::DUP_TABLE => "DUP_TABLE",
IrCmd::TRY_NUM_TO_INDEX => "TRY_NUM_TO_INDEX",
IrCmd::TRY_CALL_FASTGETTM => "TRY_CALL_FASTGETTM",
IrCmd::NEW_USERDATA => "NEW_USERDATA",
IrCmd::INT64_TO_NUM => "INT64_TO_NUM",
IrCmd::INT_TO_NUM => "INT_TO_NUM",
IrCmd::UINT_TO_NUM => "UINT_TO_NUM",
IrCmd::UINT_TO_FLOAT => "UINT_TO_FLOAT",
IrCmd::NUM_TO_INT => "NUM_TO_INT",
IrCmd::NUM_TO_INT64 => "NUM_TO_INT64",
IrCmd::NUM_TO_UINT => "NUM_TO_UINT",
IrCmd::FLOAT_TO_NUM => "FLOAT_TO_NUM",
IrCmd::NUM_TO_FLOAT => "NUM_TO_FLOAT",
IrCmd::FLOAT_TO_VEC => "FLOAT_TO_VEC",
IrCmd::TAG_VECTOR => "TAG_VECTOR",
IrCmd::TRUNCATE_UINT => "TRUNCATE_UINT",
IrCmd::ADJUST_STACK_TO_REG => "ADJUST_STACK_TO_REG",
IrCmd::ADJUST_STACK_TO_TOP => "ADJUST_STACK_TO_TOP",
IrCmd::FASTCALL => "FASTCALL",
IrCmd::INVOKE_FASTCALL => "INVOKE_FASTCALL",
IrCmd::CHECK_FASTCALL_RES => "CHECK_FASTCALL_RES",
IrCmd::DO_ARITH => "DO_ARITH",
IrCmd::DO_LEN => "DO_LEN",
IrCmd::GET_TABLE => "GET_TABLE",
IrCmd::SET_TABLE => "SET_TABLE",
IrCmd::GET_CACHED_IMPORT => "GET_CACHED_IMPORT",
IrCmd::CONCAT => "CONCAT",
IrCmd::GET_UPVALUE => "GET_UPVALUE",
IrCmd::SET_UPVALUE => "SET_UPVALUE",
IrCmd::CHECK_TAG => "CHECK_TAG",
IrCmd::CHECK_TRUTHY => "CHECK_TRUTHY",
IrCmd::CHECK_READONLY => "CHECK_READONLY",
IrCmd::CHECK_NO_METATABLE => "CHECK_NO_METATABLE",
IrCmd::CHECK_SAFE_ENV => "CHECK_SAFE_ENV",
IrCmd::CHECK_ARRAY_SIZE => "CHECK_ARRAY_SIZE",
IrCmd::CHECK_SLOT_MATCH => "CHECK_SLOT_MATCH",
IrCmd::CHECK_NODE_NO_NEXT => "CHECK_NODE_NO_NEXT",
IrCmd::CHECK_NODE_VALUE => "CHECK_NODE_VALUE",
IrCmd::CHECK_BUFFER_LEN => "CHECK_BUFFER_LEN",
IrCmd::CHECK_USERDATA_TAG => "CHECK_USERDATA_TAG",
IrCmd::CHECK_CMP_NUM => "CHECK_CMP_NUM",
IrCmd::CHECK_CMP_INT => "CHECK_CMP_INT",
IrCmd::CHECK_CMP_INT64 => "CHECK_CMP_INT64",
IrCmd::INTERRUPT => "INTERRUPT",
IrCmd::CHECK_GC => "CHECK_GC",
IrCmd::BARRIER_OBJ => "BARRIER_OBJ",
IrCmd::BARRIER_TABLE_BACK => "BARRIER_TABLE_BACK",
IrCmd::BARRIER_TABLE_FORWARD => "BARRIER_TABLE_FORWARD",
IrCmd::SET_SAVEDPC => "SET_SAVEDPC",
IrCmd::CLOSE_UPVALS => "CLOSE_UPVALS",
IrCmd::CAPTURE => "CAPTURE",
IrCmd::SETLIST => "SETLIST",
IrCmd::CALL => "CALL",
IrCmd::RETURN => "RETURN",
IrCmd::FORGLOOP => "FORGLOOP",
IrCmd::FORGLOOP_FALLBACK => "FORGLOOP_FALLBACK",
IrCmd::FORGPREP_XNEXT_FALLBACK => "FORGPREP_XNEXT_FALLBACK",
IrCmd::COVERAGE => "COVERAGE",
IrCmd::FALLBACK_GETGLOBAL => "FALLBACK_GETGLOBAL",
IrCmd::FALLBACK_SETGLOBAL => "FALLBACK_SETGLOBAL",
IrCmd::FALLBACK_GETTABLEKS => "FALLBACK_GETTABLEKS",
IrCmd::FALLBACK_SETTABLEKS => "FALLBACK_SETTABLEKS",
IrCmd::FALLBACK_NAMECALL => "FALLBACK_NAMECALL",
IrCmd::FALLBACK_PREPVARARGS => "FALLBACK_PREPVARARGS",
IrCmd::FALLBACK_GETVARARGS => "FALLBACK_GETVARARGS",
IrCmd::NEWCLOSURE => "NEWCLOSURE",
IrCmd::FALLBACK_DUPCLOSURE => "FALLBACK_DUPCLOSURE",
IrCmd::FALLBACK_FORGPREP => "FALLBACK_FORGPREP",
IrCmd::SUBSTITUTE => "SUBSTITUTE",
IrCmd::MARK_USED => "MARK_USED",
IrCmd::MARK_DEAD => "MARK_DEAD",
IrCmd::BITAND_INT64 => "BITAND_INT64",
IrCmd::BITXOR_INT64 => "BITXOR_INT64",
IrCmd::BITOR_INT64 => "BITOR_INT64",
IrCmd::BITNOT_INT64 => "BITNOT_INT64",
IrCmd::BITLSHIFT_INT64 => "BITLSHIFT_INT64",
IrCmd::BITRSHIFT_INT64 => "BITRSHIFT_INT64",
IrCmd::BITARSHIFT_INT64 => "BITARSHIFT_INT64",
IrCmd::BITLROTATE_INT64 => "BITLROTATE_INT64",
IrCmd::BITRROTATE_INT64 => "BITRROTATE_INT64",
IrCmd::BITCOUNTLZ_INT64 => "BITCOUNTLZ_INT64",
IrCmd::BITCOUNTRZ_INT64 => "BITCOUNTRZ_INT64",
IrCmd::BYTESWAP_INT64 => "BYTESWAP_INT64",
IrCmd::BITAND_UINT => "BITAND_UINT",
IrCmd::BITXOR_UINT => "BITXOR_UINT",
IrCmd::BITOR_UINT => "BITOR_UINT",
IrCmd::BITNOT_UINT => "BITNOT_UINT",
IrCmd::BITLSHIFT_UINT => "BITLSHIFT_UINT",
IrCmd::BITRSHIFT_UINT => "BITRSHIFT_UINT",
IrCmd::BITARSHIFT_UINT => "BITARSHIFT_UINT",
IrCmd::BITLROTATE_UINT => "BITLROTATE_UINT",
IrCmd::BITRROTATE_UINT => "BITRROTATE_UINT",
IrCmd::BITCOUNTLZ_UINT => "BITCOUNTLZ_UINT",
IrCmd::BITCOUNTRZ_UINT => "BITCOUNTRZ_UINT",
IrCmd::BYTESWAP_UINT => "BYTESWAP_UINT",
IrCmd::INVOKE_LIBM => "INVOKE_LIBM",
IrCmd::GET_TYPE => "GET_TYPE",
IrCmd::GET_TYPEOF => "GET_TYPEOF",
IrCmd::FINDUPVAL => "FINDUPVAL",
IrCmd::BUFFER_READI8 => "BUFFER_READI8",
IrCmd::BUFFER_READU8 => "BUFFER_READU8",
IrCmd::BUFFER_WRITEI8 => "BUFFER_WRITEI8",
IrCmd::BUFFER_READI16 => "BUFFER_READI16",
IrCmd::BUFFER_READU16 => "BUFFER_READU16",
IrCmd::BUFFER_WRITEI16 => "BUFFER_WRITEI16",
IrCmd::BUFFER_READI32 => "BUFFER_READI32",
IrCmd::BUFFER_WRITEI32 => "BUFFER_WRITEI32",
IrCmd::BUFFER_READF32 => "BUFFER_READF32",
IrCmd::BUFFER_WRITEF32 => "BUFFER_WRITEF32",
IrCmd::BUFFER_READF64 => "BUFFER_READF64",
IrCmd::BUFFER_WRITEF64 => "BUFFER_WRITEF64",
IrCmd::BUFFER_READI64 => "BUFFER_READI64",
IrCmd::BUFFER_WRITEI64 => "BUFFER_WRITEI64",
IrCmd::JUMP_CMP_PROTOID => "JUMP_CMP_PROTOID",
}
}