#pragma once

namespace shader::ir::vop3 {
enum Op {
  CMP_F_F32,
  CMP_LT_F32,
  CMP_EQ_F32,
  CMP_LE_F32,
  CMP_GT_F32,
  CMP_LG_F32,
  CMP_GE_F32,
  CMP_O_F32,
  CMP_U_F32,
  CMP_NGE_F32,
  CMP_NLG_F32,
  CMP_NGT_F32,
  CMP_NLE_F32,
  CMP_NEQ_F32,
  CMP_NLT_F32,
  CMP_TRU_F32,
  CMPX_F_F32,
  CMPX_LT_F32,
  CMPX_EQ_F32,
  CMPX_LE_F32,
  CMPX_GT_F32,
  CMPX_LG_F32,
  CMPX_GE_F32,
  CMPX_O_F32,
  CMPX_U_F32,
  CMPX_NGE_F32,
  CMPX_NLG_F32,
  CMPX_NGT_F32,
  CMPX_NLE_F32,
  CMPX_NEQ_F32,
  CMPX_NLT_F32,
  CMPX_TRU_F32,
  CMP_F_F64,
  CMP_LT_F64,
  CMP_EQ_F64,
  CMP_LE_F64,
  CMP_GT_F64,
  CMP_LG_F64,
  CMP_GE_F64,
  CMP_O_F64,
  CMP_U_F64,
  CMP_NGE_F64,
  CMP_NLG_F64,
  CMP_NGT_F64,
  CMP_NLE_F64,
  CMP_NEQ_F64,
  CMP_NLT_F64,
  CMP_TRU_F64,
  CMPX_F_F64,
  CMPX_LT_F64,
  CMPX_EQ_F64,
  CMPX_LE_F64,
  CMPX_GT_F64,
  CMPX_LG_F64,
  CMPX_GE_F64,
  CMPX_O_F64,
  CMPX_U_F64,
  CMPX_NGE_F64,
  CMPX_NLG_F64,
  CMPX_NGT_F64,
  CMPX_NLE_F64,
  CMPX_NEQ_F64,
  CMPX_NLT_F64,
  CMPX_TRU_F64,
  CMPS_F_F32,
  CMPS_LT_F32,
  CMPS_EQ_F32,
  CMPS_LE_F32,
  CMPS_GT_F32,
  CMPS_LG_F32,
  CMPS_GE_F32,
  CMPS_O_F32,
  CMPS_U_F32,
  CMPS_NGE_F32,
  CMPS_NLG_F32,
  CMPS_NGT_F32,
  CMPS_NLE_F32,
  CMPS_NEQ_F32,
  CMPS_NLT_F32,
  CMPS_TRU_F32,
  CMPSX_F_F32,
  CMPSX_LT_F32,
  CMPSX_EQ_F32,
  CMPSX_LE_F32,
  CMPSX_GT_F32,
  CMPSX_LG_F32,
  CMPSX_GE_F32,
  CMPSX_O_F32,
  CMPSX_U_F32,
  CMPSX_NGE_F32,
  CMPSX_NLG_F32,
  CMPSX_NGT_F32,
  CMPSX_NLE_F32,
  CMPSX_NEQ_F32,
  CMPSX_NLT_F32,
  CMPSX_TRU_F32,
  CMPS_F_F64,
  CMPS_LT_F64,
  CMPS_EQ_F64,
  CMPS_LE_F64,
  CMPS_GT_F64,
  CMPS_LG_F64,
  CMPS_GE_F64,
  CMPS_O_F64,
  CMPS_U_F64,
  CMPS_NGE_F64,
  CMPS_NLG_F64,
  CMPS_NGT_F64,
  CMPS_NLE_F64,
  CMPS_NEQ_F64,
  CMPS_NLT_F64,
  CMPS_TRU_F64,
  CMPSX_F_F64,
  CMPSX_LT_F64,
  CMPSX_EQ_F64,
  CMPSX_LE_F64,
  CMPSX_GT_F64,
  CMPSX_LG_F64,
  CMPSX_GE_F64,
  CMPSX_O_F64,
  CMPSX_U_F64,
  CMPSX_NGE_F64,
  CMPSX_NLG_F64,
  CMPSX_NGT_F64,
  CMPSX_NLE_F64,
  CMPSX_NEQ_F64,
  CMPSX_NLT_F64,
  CMPSX_TRU_F64,
  CMP_F_I32,
  CMP_LT_I32,
  CMP_EQ_I32,
  CMP_LE_I32,
  CMP_GT_I32,
  CMP_NE_I32,
  CMP_GE_I32,
  CMP_T_I32,
  CMP_CLASS_F32,
  CMP_LT_I16,
  CMP_EQ_I16,
  CMP_LE_I16,
  CMP_GT_I16,
  CMP_NE_I16,
  CMP_GE_I16,
  CMP_CLASS_F16,
  CMPX_F_I32,
  CMPX_LT_I32,
  CMPX_EQ_I32,
  CMPX_LE_I32,
  CMPX_GT_I32,
  CMPX_NE_I32,
  CMPX_GE_I32,
  CMPX_T_I32,
  CMPX_CLASS_F32,
  CMPX_LT_I16,
  CMPX_EQ_I16,
  CMPX_LE_I16,
  CMPX_GT_I16,
  CMPX_NE_I16,
  CMPX_GE_I16,
  CMPX_CLASS_F16,
  CMP_F_I64,
  CMP_LT_I64,
  CMP_EQ_I64,
  CMP_LE_I64,
  CMP_GT_I64,
  CMP_NE_I64,
  CMP_GE_I64,
  CMP_T_I64,
  CMP_CLASS_F64,
  CMP_LT_U16,
  CMP_EQ_U16,
  CMP_LE_U16,
  CMP_GT_U16,
  CMP_NE_U16,
  CMP_GE_U16,
  CMPX_F_I64 = 176,
  CMPX_LT_I64,
  CMPX_EQ_I64,
  CMPX_LE_I64,
  CMPX_GT_I64,
  CMPX_NE_I64,
  CMPX_GE_I64,
  CMPX_T_I64,
  CMPX_CLASS_F64,
  CMPX_LT_U16,
  CMPX_EQ_U16,
  CMPX_LE_U16,
  CMPX_GT_U16,
  CMPX_NE_U16,
  CMPX_GE_U16,
  CMP_F_U32 = 192,
  CMP_LT_U32,
  CMP_EQ_U32,
  CMP_LE_U32,
  CMP_GT_U32,
  CMP_NE_U32,
  CMP_GE_U32,
  CMP_T_U32,
  CMP_F_F16,
  CMP_LT_F16,
  CMP_EQ_F16,
  CMP_LE_F16,
  CMP_GT_F16,
  CMP_LG_F16,
  CMP_GE_F16,
  CMP_O_F16,
  CMPX_F_U32,
  CMPX_LT_U32,
  CMPX_EQ_U32,
  CMPX_LE_U32,
  CMPX_GT_U32,
  CMPX_NE_U32,
  CMPX_GE_U32,
  CMPX_T_U32,
  CMPX_F_F16,
  CMPX_LT_F16,
  CMPX_EQ_F16,
  CMPX_LE_F16,
  CMPX_GT_F16,
  CMPX_LG_F16,
  CMPX_GE_F16,
  CMPX_O_F16,
  CMP_F_U64,
  CMP_LT_U64,
  CMP_EQ_U64,
  CMP_LE_U64,
  CMP_GT_U64,
  CMP_NE_U64,
  CMP_GE_U64,
  CMP_T_U64,
  CMP_U_F16,
  CMP_NGE_F16,
  CMP_NLG_F16,
  CMP_NGT_F16,
  CMP_NLE_F16,
  CMP_NEQ_F16,
  CMP_NLT_F16,
  CMP_TRU_F16,
  CMPX_F_U64,
  CMPX_LT_U64,
  CMPX_EQ_U64,
  CMPX_LE_U64,
  CMPX_GT_U64,
  CMPX_NE_U64,
  CMPX_GE_U64,
  CMPX_T_U64,
  CNDMASK_B32 = 256,
  READLANE_B32,
  WRITELANE_B32,
  ADD_F32,
  SUB_F32,
  SUBREV_F32,
  MAC_LEGACY_F32,
  MUL_LEGACY_F32,
  MUL_F32,
  MUL_I32_I24,
  MUL_HI_I32_I24,
  MUL_U32_U24,
  MUL_HI_U32_U24,
  MIN_LEGACY_F32,
  MAX_LEGACY_F32,
  MIN_F32,
  MAX_F32,
  MIN_I32,
  MAX_I32,
  MIN_U32,
  MAX_U32,
  LSHR_B32,
  LSHRREV_B32,
  ASHR_I32,
  ASHRREV_I32,
  LSHL_B32,
  LSHLREV_B32,
  AND_B32,
  OR_B32,
  XOR_B32,
  BFM_B32,
  MAC_F32,
  MADMK_F32,
  MADAK_F32,
  BCNT_U32_B32,
  MBCNT_LO_U32_B32,
  MBCNT_HI_U32_B32,
  ADD_I32,
  SUB_I32,
  SUBREV_I32,
  ADDC_U32,
  SUBB_U32,
  SUBBREV_U32,
  LDEXP_F32,
  CVT_PKACCUM_U8_F32,
  CVT_PKNORM_I16_F32,
  CVT_PKNORM_U16_F32,
  CVT_PKRTZ_F16_F32,
  CVT_PK_U16_U32,
  CVT_PK_I16_I32,
  MAD_LEGACY_F32 = 320,
  MAD_F32,
  MAD_I32_I24,
  MAD_U32_U24,
  CUBEID_F32,
  CUBESC_F32,
  CUBETC_F32,
  CUBEMA_F32,
  BFE_U32,
  BFE_I32,
  BFI_B32,
  FMA_F32,
  FMA_F64,
  LERP_U8,
  ALIGNBIT_B32,
  ALIGNBYTE_B32,
  MULLIT_F32,
  MIN3_F32,
  MIN3_I32,
  MIN3_U32,
  MAX3_F32,
  MAX3_I32,
  MAX3_U32,
  MED3_F32,
  MED3_I32,
  MED3_U32,
  SAD_U8,
  SAD_HI_U8,
  SAD_U16,
  SAD_U32,
  CVT_PK_U8_F32,
  DIV_FIXUP_F32,
  DIV_FIXUP_F64,
  LSHL_B64,
  LSHR_B64,
  ASHR_I64,
  ADD_F64,
  MUL_F64,
  MIN_F64,
  MAX_F64,
  LDEXP_F64,
  MUL_LO_U32,
  MUL_HI_U32,
  MUL_LO_I32,
  MUL_HI_I32,
  DIV_SCALE_F32,
  DIV_SCALE_F64,
  DIV_FMAS_F32,
  DIV_FMAS_F64,
  MSAD_U8,
  QSAD_U8,
  MQSAD_U8,
  TRIG_PREOP_F64,
  MQSAD_U32_U8,
  MAD_U64_U32,
  MAD_I64_I32,
  NOP = 384,
  MOV_B32,
  READFIRSTLANE_B32,
  CVT_I32_F64,
  CVT_F64_I32,
  CVT_F32_I32,
  CVT_F32_U32,
  CVT_U32_F32,
  CVT_I32_F32,
  MOV_FED_B32,
  CVT_F16_F32,
  CVT_F32_F16,
  CVT_RPI_I32_F32,
  CVT_FLR_I32_F32,
  CVT_OFF_F32_I4,
  CVT_F32_F64,
  CVT_F64_F32,
  CVT_F32_UBYTE0,
  CVT_F32_UBYTE1,
  CVT_F32_UBYTE2,
  CVT_F32_UBYTE3,
  CVT_U32_F64,
  CVT_F64_U32,
  FRACT_F32 = 416,
  TRUNC_F32,
  CEIL_F32,
  RNDNE_F32,
  FLOOR_F32,
  EXP_F32,
  LOG_CLAMP_F32,
  LOG_F32,
  RCP_CLAMP_F32,
  RCP_LEGACY_F32,
  RCP_F32,
  RCP_IFLAG_F32,
  RSQ_CLAMP_F32,
  RSQ_LEGACY_F32,
  RSQ_F32,
  RCP_F64,
  RCP_CLAMP_F64,
  RSQ_F64,
  RSQ_CLAMP_F64,
  SQRT_F32,
  SQRT_F64,
  SIN_F32,
  COS_F32,
  NOT_B32,
  BFREV_B32,
  FFBH_U32,
  FFBL_B32,
  FFBH_I32,
  FREXP_EXP_I32_F64,
  FREXP_MANT_F64,
  FRACT_F64,
  FREXP_EXP_I32_F32,
  FREXP_MANT_F32,
  CLREXCP,
  MOVRELD_B32,
  MOVRELS_B32,
  MOVRELSD_B32,

  OpCount
};
inline const char *getInstructionName(unsigned id) {
  switch (id) {
  case CMP_F_F32:
    return "v_cmp_f_f32";
  case CMP_LT_F32:
    return "v_cmp_lt_f32";
  case CMP_EQ_F32:
    return "v_cmp_eq_f32";
  case CMP_LE_F32:
    return "v_cmp_le_f32";
  case CMP_GT_F32:
    return "v_cmp_gt_f32";
  case CMP_LG_F32:
    return "v_cmp_lg_f32";
  case CMP_GE_F32:
    return "v_cmp_ge_f32";
  case CMP_O_F32:
    return "v_cmp_o_f32";
  case CMP_U_F32:
    return "v_cmp_u_f32";
  case CMP_NGE_F32:
    return "v_cmp_nge_f32";
  case CMP_NLG_F32:
    return "v_cmp_nlg_f32";
  case CMP_NGT_F32:
    return "v_cmp_ngt_f32";
  case CMP_NLE_F32:
    return "v_cmp_nle_f32";
  case CMP_NEQ_F32:
    return "v_cmp_neq_f32";
  case CMP_NLT_F32:
    return "v_cmp_nlt_f32";
  case CMP_TRU_F32:
    return "v_cmp_tru_f32";
  case CMPX_F_F32:
    return "v_cmpx_f_f32";
  case CMPX_LT_F32:
    return "v_cmpx_lt_f32";
  case CMPX_EQ_F32:
    return "v_cmpx_eq_f32";
  case CMPX_LE_F32:
    return "v_cmpx_le_f32";
  case CMPX_GT_F32:
    return "v_cmpx_gt_f32";
  case CMPX_LG_F32:
    return "v_cmpx_lg_f32";
  case CMPX_GE_F32:
    return "v_cmpx_ge_f32";
  case CMPX_O_F32:
    return "v_cmpx_o_f32";
  case CMPX_U_F32:
    return "v_cmpx_u_f32";
  case CMPX_NGE_F32:
    return "v_cmpx_nge_f32";
  case CMPX_NLG_F32:
    return "v_cmpx_nlg_f32";
  case CMPX_NGT_F32:
    return "v_cmpx_ngt_f32";
  case CMPX_NLE_F32:
    return "v_cmpx_nle_f32";
  case CMPX_NEQ_F32:
    return "v_cmpx_neq_f32";
  case CMPX_NLT_F32:
    return "v_cmpx_nlt_f32";
  case CMPX_TRU_F32:
    return "v_cmpx_tru_f32";
  case CMP_F_F64:
    return "v_cmp_f_f64";
  case CMP_LT_F64:
    return "v_cmp_lt_f64";
  case CMP_EQ_F64:
    return "v_cmp_eq_f64";
  case CMP_LE_F64:
    return "v_cmp_le_f64";
  case CMP_GT_F64:
    return "v_cmp_gt_f64";
  case CMP_LG_F64:
    return "v_cmp_lg_f64";
  case CMP_GE_F64:
    return "v_cmp_ge_f64";
  case CMP_O_F64:
    return "v_cmp_o_f64";
  case CMP_U_F64:
    return "v_cmp_u_f64";
  case CMP_NGE_F64:
    return "v_cmp_nge_f64";
  case CMP_NLG_F64:
    return "v_cmp_nlg_f64";
  case CMP_NGT_F64:
    return "v_cmp_ngt_f64";
  case CMP_NLE_F64:
    return "v_cmp_nle_f64";
  case CMP_NEQ_F64:
    return "v_cmp_neq_f64";
  case CMP_NLT_F64:
    return "v_cmp_nlt_f64";
  case CMP_TRU_F64:
    return "v_cmp_tru_f64";
  case CMPX_F_F64:
    return "v_cmpx_f_f64";
  case CMPX_LT_F64:
    return "v_cmpx_lt_f64";
  case CMPX_EQ_F64:
    return "v_cmpx_eq_f64";
  case CMPX_LE_F64:
    return "v_cmpx_le_f64";
  case CMPX_GT_F64:
    return "v_cmpx_gt_f64";
  case CMPX_LG_F64:
    return "v_cmpx_lg_f64";
  case CMPX_GE_F64:
    return "v_cmpx_ge_f64";
  case CMPX_O_F64:
    return "v_cmpx_o_f64";
  case CMPX_U_F64:
    return "v_cmpx_u_f64";
  case CMPX_NGE_F64:
    return "v_cmpx_nge_f64";
  case CMPX_NLG_F64:
    return "v_cmpx_nlg_f64";
  case CMPX_NGT_F64:
    return "v_cmpx_ngt_f64";
  case CMPX_NLE_F64:
    return "v_cmpx_nle_f64";
  case CMPX_NEQ_F64:
    return "v_cmpx_neq_f64";
  case CMPX_NLT_F64:
    return "v_cmpx_nlt_f64";
  case CMPX_TRU_F64:
    return "v_cmpx_tru_f64";
  case CMPS_F_F32:
    return "v_cmps_f_f32";
  case CMPS_LT_F32:
    return "v_cmps_lt_f32";
  case CMPS_EQ_F32:
    return "v_cmps_eq_f32";
  case CMPS_LE_F32:
    return "v_cmps_le_f32";
  case CMPS_GT_F32:
    return "v_cmps_gt_f32";
  case CMPS_LG_F32:
    return "v_cmps_lg_f32";
  case CMPS_GE_F32:
    return "v_cmps_ge_f32";
  case CMPS_O_F32:
    return "v_cmps_o_f32";
  case CMPS_U_F32:
    return "v_cmps_u_f32";
  case CMPS_NGE_F32:
    return "v_cmps_nge_f32";
  case CMPS_NLG_F32:
    return "v_cmps_nlg_f32";
  case CMPS_NGT_F32:
    return "v_cmps_ngt_f32";
  case CMPS_NLE_F32:
    return "v_cmps_nle_f32";
  case CMPS_NEQ_F32:
    return "v_cmps_neq_f32";
  case CMPS_NLT_F32:
    return "v_cmps_nlt_f32";
  case CMPS_TRU_F32:
    return "v_cmps_tru_f32";
  case CMPSX_F_F32:
    return "v_cmpsx_f_f32";
  case CMPSX_LT_F32:
    return "v_cmpsx_lt_f32";
  case CMPSX_EQ_F32:
    return "v_cmpsx_eq_f32";
  case CMPSX_LE_F32:
    return "v_cmpsx_le_f32";
  case CMPSX_GT_F32:
    return "v_cmpsx_gt_f32";
  case CMPSX_LG_F32:
    return "v_cmpsx_lg_f32";
  case CMPSX_GE_F32:
    return "v_cmpsx_ge_f32";
  case CMPSX_O_F32:
    return "v_cmpsx_o_f32";
  case CMPSX_U_F32:
    return "v_cmpsx_u_f32";
  case CMPSX_NGE_F32:
    return "v_cmpsx_nge_f32";
  case CMPSX_NLG_F32:
    return "v_cmpsx_nlg_f32";
  case CMPSX_NGT_F32:
    return "v_cmpsx_ngt_f32";
  case CMPSX_NLE_F32:
    return "v_cmpsx_nle_f32";
  case CMPSX_NEQ_F32:
    return "v_cmpsx_neq_f32";
  case CMPSX_NLT_F32:
    return "v_cmpsx_nlt_f32";
  case CMPSX_TRU_F32:
    return "v_cmpsx_tru_f32";
  case CMPS_F_F64:
    return "v_cmps_f_f64";
  case CMPS_LT_F64:
    return "v_cmps_lt_f64";
  case CMPS_EQ_F64:
    return "v_cmps_eq_f64";
  case CMPS_LE_F64:
    return "v_cmps_le_f64";
  case CMPS_GT_F64:
    return "v_cmps_gt_f64";
  case CMPS_LG_F64:
    return "v_cmps_lg_f64";
  case CMPS_GE_F64:
    return "v_cmps_ge_f64";
  case CMPS_O_F64:
    return "v_cmps_o_f64";
  case CMPS_U_F64:
    return "v_cmps_u_f64";
  case CMPS_NGE_F64:
    return "v_cmps_nge_f64";
  case CMPS_NLG_F64:
    return "v_cmps_nlg_f64";
  case CMPS_NGT_F64:
    return "v_cmps_ngt_f64";
  case CMPS_NLE_F64:
    return "v_cmps_nle_f64";
  case CMPS_NEQ_F64:
    return "v_cmps_neq_f64";
  case CMPS_NLT_F64:
    return "v_cmps_nlt_f64";
  case CMPS_TRU_F64:
    return "v_cmps_tru_f64";
  case CMPSX_F_F64:
    return "v_cmpsx_f_f64";
  case CMPSX_LT_F64:
    return "v_cmpsx_lt_f64";
  case CMPSX_EQ_F64:
    return "v_cmpsx_eq_f64";
  case CMPSX_LE_F64:
    return "v_cmpsx_le_f64";
  case CMPSX_GT_F64:
    return "v_cmpsx_gt_f64";
  case CMPSX_LG_F64:
    return "v_cmpsx_lg_f64";
  case CMPSX_GE_F64:
    return "v_cmpsx_ge_f64";
  case CMPSX_O_F64:
    return "v_cmpsx_o_f64";
  case CMPSX_U_F64:
    return "v_cmpsx_u_f64";
  case CMPSX_NGE_F64:
    return "v_cmpsx_nge_f64";
  case CMPSX_NLG_F64:
    return "v_cmpsx_nlg_f64";
  case CMPSX_NGT_F64:
    return "v_cmpsx_ngt_f64";
  case CMPSX_NLE_F64:
    return "v_cmpsx_nle_f64";
  case CMPSX_NEQ_F64:
    return "v_cmpsx_neq_f64";
  case CMPSX_NLT_F64:
    return "v_cmpsx_nlt_f64";
  case CMPSX_TRU_F64:
    return "v_cmpsx_tru_f64";
  case CMP_F_I32:
    return "v_cmp_f_i32";
  case CMP_LT_I32:
    return "v_cmp_lt_i32";
  case CMP_EQ_I32:
    return "v_cmp_eq_i32";
  case CMP_LE_I32:
    return "v_cmp_le_i32";
  case CMP_GT_I32:
    return "v_cmp_gt_i32";
  case CMP_NE_I32:
    return "v_cmp_ne_i32";
  case CMP_GE_I32:
    return "v_cmp_ge_i32";
  case CMP_T_I32:
    return "v_cmp_t_i32";
  case CMP_CLASS_F32:
    return "v_cmp_class_f32";
  case CMP_LT_I16:
    return "v_cmp_lt_i16";
  case CMP_EQ_I16:
    return "v_cmp_eq_i16";
  case CMP_LE_I16:
    return "v_cmp_le_i16";
  case CMP_GT_I16:
    return "v_cmp_gt_i16";
  case CMP_NE_I16:
    return "v_cmp_ne_i16";
  case CMP_GE_I16:
    return "v_cmp_ge_i16";
  case CMP_CLASS_F16:
    return "v_cmp_class_f16";
  case CMPX_F_I32:
    return "v_cmpx_f_i32";
  case CMPX_LT_I32:
    return "v_cmpx_lt_i32";
  case CMPX_EQ_I32:
    return "v_cmpx_eq_i32";
  case CMPX_LE_I32:
    return "v_cmpx_le_i32";
  case CMPX_GT_I32:
    return "v_cmpx_gt_i32";
  case CMPX_NE_I32:
    return "v_cmpx_ne_i32";
  case CMPX_GE_I32:
    return "v_cmpx_ge_i32";
  case CMPX_T_I32:
    return "v_cmpx_t_i32";
  case CMPX_CLASS_F32:
    return "v_cmpx_class_f32";
  case CMPX_LT_I16:
    return "v_cmpx_lt_i16";
  case CMPX_EQ_I16:
    return "v_cmpx_eq_i16";
  case CMPX_LE_I16:
    return "v_cmpx_le_i16";
  case CMPX_GT_I16:
    return "v_cmpx_gt_i16";
  case CMPX_NE_I16:
    return "v_cmpx_ne_i16";
  case CMPX_GE_I16:
    return "v_cmpx_ge_i16";
  case CMPX_CLASS_F16:
    return "v_cmpx_class_f16";
  case CMP_F_I64:
    return "v_cmp_f_i64";
  case CMP_LT_I64:
    return "v_cmp_lt_i64";
  case CMP_EQ_I64:
    return "v_cmp_eq_i64";
  case CMP_LE_I64:
    return "v_cmp_le_i64";
  case CMP_GT_I64:
    return "v_cmp_gt_i64";
  case CMP_NE_I64:
    return "v_cmp_ne_i64";
  case CMP_GE_I64:
    return "v_cmp_ge_i64";
  case CMP_T_I64:
    return "v_cmp_t_i64";
  case CMP_CLASS_F64:
    return "v_cmp_class_f64";
  case CMP_LT_U16:
    return "v_cmp_lt_u16";
  case CMP_EQ_U16:
    return "v_cmp_eq_u16";
  case CMP_LE_U16:
    return "v_cmp_le_u16";
  case CMP_GT_U16:
    return "v_cmp_gt_u16";
  case CMP_NE_U16:
    return "v_cmp_ne_u16";
  case CMP_GE_U16:
    return "v_cmp_ge_u16";
  case CMPX_F_I64:
    return "v_cmpx_f_i64";
  case CMPX_LT_I64:
    return "v_cmpx_lt_i64";
  case CMPX_EQ_I64:
    return "v_cmpx_eq_i64";
  case CMPX_LE_I64:
    return "v_cmpx_le_i64";
  case CMPX_GT_I64:
    return "v_cmpx_gt_i64";
  case CMPX_NE_I64:
    return "v_cmpx_ne_i64";
  case CMPX_GE_I64:
    return "v_cmpx_ge_i64";
  case CMPX_T_I64:
    return "v_cmpx_t_i64";
  case CMPX_CLASS_F64:
    return "v_cmpx_class_f64";
  case CMPX_LT_U16:
    return "v_cmpx_lt_u16";
  case CMPX_EQ_U16:
    return "v_cmpx_eq_u16";
  case CMPX_LE_U16:
    return "v_cmpx_le_u16";
  case CMPX_GT_U16:
    return "v_cmpx_gt_u16";
  case CMPX_NE_U16:
    return "v_cmpx_ne_u16";
  case CMPX_GE_U16:
    return "v_cmpx_ge_u16";
  case CMP_F_U32:
    return "v_cmp_f_u32";
  case CMP_LT_U32:
    return "v_cmp_lt_u32";
  case CMP_EQ_U32:
    return "v_cmp_eq_u32";
  case CMP_LE_U32:
    return "v_cmp_le_u32";
  case CMP_GT_U32:
    return "v_cmp_gt_u32";
  case CMP_NE_U32:
    return "v_cmp_ne_u32";
  case CMP_GE_U32:
    return "v_cmp_ge_u32";
  case CMP_T_U32:
    return "v_cmp_t_u32";
  case CMP_F_F16:
    return "v_cmp_f_f16";
  case CMP_LT_F16:
    return "v_cmp_lt_f16";
  case CMP_EQ_F16:
    return "v_cmp_eq_f16";
  case CMP_LE_F16:
    return "v_cmp_le_f16";
  case CMP_GT_F16:
    return "v_cmp_gt_f16";
  case CMP_LG_F16:
    return "v_cmp_lg_f16";
  case CMP_GE_F16:
    return "v_cmp_ge_f16";
  case CMP_O_F16:
    return "v_cmp_o_f16";
  case CMPX_F_U32:
    return "v_cmpx_f_u32";
  case CMPX_LT_U32:
    return "v_cmpx_lt_u32";
  case CMPX_EQ_U32:
    return "v_cmpx_eq_u32";
  case CMPX_LE_U32:
    return "v_cmpx_le_u32";
  case CMPX_GT_U32:
    return "v_cmpx_gt_u32";
  case CMPX_NE_U32:
    return "v_cmpx_ne_u32";
  case CMPX_GE_U32:
    return "v_cmpx_ge_u32";
  case CMPX_T_U32:
    return "v_cmpx_t_u32";
  case CMPX_F_F16:
    return "v_cmpx_f_f16";
  case CMPX_LT_F16:
    return "v_cmpx_lt_f16";
  case CMPX_EQ_F16:
    return "v_cmpx_eq_f16";
  case CMPX_LE_F16:
    return "v_cmpx_le_f16";
  case CMPX_GT_F16:
    return "v_cmpx_gt_f16";
  case CMPX_LG_F16:
    return "v_cmpx_lg_f16";
  case CMPX_GE_F16:
    return "v_cmpx_ge_f16";
  case CMPX_O_F16:
    return "v_cmpx_o_f16";
  case CMP_F_U64:
    return "v_cmp_f_u64";
  case CMP_LT_U64:
    return "v_cmp_lt_u64";
  case CMP_EQ_U64:
    return "v_cmp_eq_u64";
  case CMP_LE_U64:
    return "v_cmp_le_u64";
  case CMP_GT_U64:
    return "v_cmp_gt_u64";
  case CMP_NE_U64:
    return "v_cmp_ne_u64";
  case CMP_GE_U64:
    return "v_cmp_ge_u64";
  case CMP_T_U64:
    return "v_cmp_t_u64";
  case CMP_U_F16:
    return "v_cmp_u_f16";
  case CMP_NGE_F16:
    return "v_cmp_nge_f16";
  case CMP_NLG_F16:
    return "v_cmp_nlg_f16";
  case CMP_NGT_F16:
    return "v_cmp_ngt_f16";
  case CMP_NLE_F16:
    return "v_cmp_nle_f16";
  case CMP_NEQ_F16:
    return "v_cmp_neq_f16";
  case CMP_NLT_F16:
    return "v_cmp_nlt_f16";
  case CMP_TRU_F16:
    return "v_cmp_tru_f16";
  case CMPX_F_U64:
    return "v_cmpx_f_u64";
  case CMPX_LT_U64:
    return "v_cmpx_lt_u64";
  case CMPX_EQ_U64:
    return "v_cmpx_eq_u64";
  case CMPX_LE_U64:
    return "v_cmpx_le_u64";
  case CMPX_GT_U64:
    return "v_cmpx_gt_u64";
  case CMPX_NE_U64:
    return "v_cmpx_ne_u64";
  case CMPX_GE_U64:
    return "v_cmpx_ge_u64";
  case CMPX_T_U64:
    return "v_cmpx_t_u64";
  case CNDMASK_B32:
    return "v_cndmask_b32";
  case READLANE_B32:
    return "v_readlane_b32";
  case WRITELANE_B32:
    return "v_writelane_b32";
  case ADD_F32:
    return "v_add_f32";
  case SUB_F32:
    return "v_sub_f32";
  case SUBREV_F32:
    return "v_subrev_f32";
  case MAC_LEGACY_F32:
    return "v_mac_legacy_f32";
  case MUL_LEGACY_F32:
    return "v_mul_legacy_f32";
  case MUL_F32:
    return "v_mul_f32";
  case MUL_I32_I24:
    return "v_mul_i32_i24";
  case MUL_HI_I32_I24:
    return "v_mul_hi_i32_i24";
  case MUL_U32_U24:
    return "v_mul_u32_u24";
  case MUL_HI_U32_U24:
    return "v_mul_hi_u32_u24";
  case MIN_LEGACY_F32:
    return "v_min_legacy_f32";
  case MAX_LEGACY_F32:
    return "v_max_legacy_f32";
  case MIN_F32:
    return "v_min_f32";
  case MAX_F32:
    return "v_max_f32";
  case MIN_I32:
    return "v_min_i32";
  case MAX_I32:
    return "v_max_i32";
  case MIN_U32:
    return "v_min_u32";
  case MAX_U32:
    return "v_max_u32";
  case LSHR_B32:
    return "v_lshr_b32";
  case LSHRREV_B32:
    return "v_lshrrev_b32";
  case ASHR_I32:
    return "v_ashr_i32";
  case ASHRREV_I32:
    return "v_ashrrev_i32";
  case LSHL_B32:
    return "v_lshl_b32";
  case LSHLREV_B32:
    return "v_lshlrev_b32";
  case AND_B32:
    return "v_and_b32";
  case OR_B32:
    return "v_or_b32";
  case XOR_B32:
    return "v_xor_b32";
  case BFM_B32:
    return "v_bfm_b32";
  case MAC_F32:
    return "v_mac_f32";
  case MADMK_F32:
    return "v_madmk_f32";
  case MADAK_F32:
    return "v_madak_f32";
  case BCNT_U32_B32:
    return "v_bcnt_u32_b32";
  case MBCNT_LO_U32_B32:
    return "v_mbcnt_lo_u32_b32";
  case MBCNT_HI_U32_B32:
    return "v_mbcnt_hi_u32_b32";
  case ADD_I32:
    return "v_add_i32";
  case SUB_I32:
    return "v_sub_i32";
  case SUBREV_I32:
    return "v_subrev_i32";
  case ADDC_U32:
    return "v_addc_u32";
  case SUBB_U32:
    return "v_subb_u32";
  case SUBBREV_U32:
    return "v_subbrev_u32";
  case LDEXP_F32:
    return "v_ldexp_f32";
  case CVT_PKACCUM_U8_F32:
    return "v_cvt_pkaccum_u8_f32";
  case CVT_PKNORM_I16_F32:
    return "v_cvt_pknorm_i16_f32";
  case CVT_PKNORM_U16_F32:
    return "v_cvt_pknorm_u16_f32";
  case CVT_PKRTZ_F16_F32:
    return "v_cvt_pkrtz_f16_f32";
  case CVT_PK_U16_U32:
    return "v_cvt_pk_u16_u32";
  case CVT_PK_I16_I32:
    return "v_cvt_pk_i16_i32";
  case MAD_LEGACY_F32:
    return "v_mad_legacy_f32";
  case MAD_F32:
    return "v_mad_f32";
  case MAD_I32_I24:
    return "v_mad_i32_i24";
  case MAD_U32_U24:
    return "v_mad_u32_u24";
  case CUBEID_F32:
    return "v_cubeid_f32";
  case CUBESC_F32:
    return "v_cubesc_f32";
  case CUBETC_F32:
    return "v_cubetc_f32";
  case CUBEMA_F32:
    return "v_cubema_f32";
  case BFE_U32:
    return "v_bfe_u32";
  case BFE_I32:
    return "v_bfe_i32";
  case BFI_B32:
    return "v_bfi_b32";
  case FMA_F32:
    return "v_fma_f32";
  case FMA_F64:
    return "v_fma_f64";
  case LERP_U8:
    return "v_lerp_u8";
  case ALIGNBIT_B32:
    return "v_alignbit_b32";
  case ALIGNBYTE_B32:
    return "v_alignbyte_b32";
  case MULLIT_F32:
    return "v_mullit_f32";
  case MIN3_F32:
    return "v_min3_f32";
  case MIN3_I32:
    return "v_min3_i32";
  case MIN3_U32:
    return "v_min3_u32";
  case MAX3_F32:
    return "v_max3_f32";
  case MAX3_I32:
    return "v_max3_i32";
  case MAX3_U32:
    return "v_max3_u32";
  case MED3_F32:
    return "v_med3_f32";
  case MED3_I32:
    return "v_med3_i32";
  case MED3_U32:
    return "v_med3_u32";
  case SAD_U8:
    return "v_sad_u8";
  case SAD_HI_U8:
    return "v_sad_hi_u8";
  case SAD_U16:
    return "v_sad_u16";
  case SAD_U32:
    return "v_sad_u32";
  case CVT_PK_U8_F32:
    return "v_cvt_pk_u8_f32";
  case DIV_FIXUP_F32:
    return "v_div_fixup_f32";
  case DIV_FIXUP_F64:
    return "v_div_fixup_f64";
  case LSHL_B64:
    return "v_lshl_b64";
  case LSHR_B64:
    return "v_lshr_b64";
  case ASHR_I64:
    return "v_ashr_i64";
  case ADD_F64:
    return "v_add_f64";
  case MUL_F64:
    return "v_mul_f64";
  case MIN_F64:
    return "v_min_f64";
  case MAX_F64:
    return "v_max_f64";
  case LDEXP_F64:
    return "v_ldexp_f64";
  case MUL_LO_U32:
    return "v_mul_lo_u32";
  case MUL_HI_U32:
    return "v_mul_hi_u32";
  case MUL_LO_I32:
    return "v_mul_lo_i32";
  case MUL_HI_I32:
    return "v_mul_hi_i32";
  case DIV_SCALE_F32:
    return "v_div_scale_f32";
  case DIV_SCALE_F64:
    return "v_div_scale_f64";
  case DIV_FMAS_F32:
    return "v_div_fmas_f32";
  case DIV_FMAS_F64:
    return "v_div_fmas_f64";
  case MSAD_U8:
    return "v_msad_u8";
  case QSAD_U8:
    return "v_qsad_u8";
  case MQSAD_U8:
    return "v_mqsad_u8";
  case TRIG_PREOP_F64:
    return "v_trig_preop_f64";
  case MQSAD_U32_U8:
    return "v_mqsad_u32_u8";
  case MAD_U64_U32:
    return "v_mad_u64_u32";
  case MAD_I64_I32:
    return "v_mad_i64_i32";
  case NOP:
    return "v_nop";
  case MOV_B32:
    return "v_mov_b32";
  case READFIRSTLANE_B32:
    return "v_readfirstlane_b32";
  case CVT_I32_F64:
    return "v_cvt_i32_f64";
  case CVT_F64_I32:
    return "v_cvt_f64_i32";
  case CVT_F32_I32:
    return "v_cvt_f32_i32";
  case CVT_F32_U32:
    return "v_cvt_f32_u32";
  case CVT_U32_F32:
    return "v_cvt_u32_f32";
  case CVT_I32_F32:
    return "v_cvt_i32_f32";
  case MOV_FED_B32:
    return "v_mov_fed_b32";
  case CVT_F16_F32:
    return "v_cvt_f16_f32";
  case CVT_F32_F16:
    return "v_cvt_f32_f16";
  case CVT_RPI_I32_F32:
    return "v_cvt_rpi_i32_f32";
  case CVT_FLR_I32_F32:
    return "v_cvt_flr_i32_f32";
  case CVT_OFF_F32_I4:
    return "v_cvt_off_f32_i4";
  case CVT_F32_F64:
    return "v_cvt_f32_f64";
  case CVT_F64_F32:
    return "v_cvt_f64_f32";
  case CVT_F32_UBYTE0:
    return "v_cvt_f32_ubyte0";
  case CVT_F32_UBYTE1:
    return "v_cvt_f32_ubyte1";
  case CVT_F32_UBYTE2:
    return "v_cvt_f32_ubyte2";
  case CVT_F32_UBYTE3:
    return "v_cvt_f32_ubyte3";
  case CVT_U32_F64:
    return "v_cvt_u32_f64";
  case CVT_F64_U32:
    return "v_cvt_f64_u32";
  case FRACT_F32:
    return "v_fract_f32";
  case TRUNC_F32:
    return "v_trunc_f32";
  case CEIL_F32:
    return "v_ceil_f32";
  case RNDNE_F32:
    return "v_rndne_f32";
  case FLOOR_F32:
    return "v_floor_f32";
  case EXP_F32:
    return "v_exp_f32";
  case LOG_CLAMP_F32:
    return "v_log_clamp_f32";
  case LOG_F32:
    return "v_log_f32";
  case RCP_CLAMP_F32:
    return "v_rcp_clamp_f32";
  case RCP_LEGACY_F32:
    return "v_rcp_legacy_f32";
  case RCP_F32:
    return "v_rcp_f32";
  case RCP_IFLAG_F32:
    return "v_rcp_iflag_f32";
  case RSQ_CLAMP_F32:
    return "v_rsq_clamp_f32";
  case RSQ_LEGACY_F32:
    return "v_rsq_legacy_f32";
  case RSQ_F32:
    return "v_rsq_f32";
  case RCP_F64:
    return "v_rcp_f64";
  case RCP_CLAMP_F64:
    return "v_rcp_clamp_f64";
  case RSQ_F64:
    return "v_rsq_f64";
  case RSQ_CLAMP_F64:
    return "v_rsq_clamp_f64";
  case SQRT_F32:
    return "v_sqrt_f32";
  case SQRT_F64:
    return "v_sqrt_f64";
  case SIN_F32:
    return "v_sin_f32";
  case COS_F32:
    return "v_cos_f32";
  case NOT_B32:
    return "v_not_b32";
  case BFREV_B32:
    return "v_bfrev_b32";
  case FFBH_U32:
    return "v_ffbh_u32";
  case FFBL_B32:
    return "v_ffbl_b32";
  case FFBH_I32:
    return "v_ffbh_i32";
  case FREXP_EXP_I32_F64:
    return "v_frexp_exp_i32_f64";
  case FREXP_MANT_F64:
    return "v_frexp_mant_f64";
  case FRACT_F64:
    return "v_fract_f64";
  case FREXP_EXP_I32_F32:
    return "v_frexp_exp_i32_f32";
  case FREXP_MANT_F32:
    return "v_frexp_mant_f32";
  case CLREXCP:
    return "v_clrexcp";
  case MOVRELD_B32:
    return "v_movreld_b32";
  case MOVRELS_B32:
    return "v_movrels_b32";
  case MOVRELSD_B32:
    return "v_movrelsd_b32";
  }
  return nullptr;
}
} // namespace shader::ir::vop3
