Files
Odin/core/rexcode/isa/mips/mnemonics.odin
Brendan Punsky 95df04fbe1 rexcode: re-house ISA packages under core:rexcode/isa/<arch>
Move all ten ISA packages (x86, arm32, arm64, mips, riscv, ppc, ppc_vle,
rsp, mos6502, mos65816) from core/rexcode/<arch> to core/rexcode/isa/<arch>,
so the import pattern is now `import "core:rexcode/isa/x86"`. The shared
core stays at core:rexcode/isa.

Mechanical: relative `import "../isa"` / "../../isa" -> absolute
"core:rexcode/isa" (the only path that survives the move; the "../" and
"../.." self/generated imports move with their packages). build.lua now
builds paths as <root>/isa/<name>; stale `cd <arch>` hints in the verify
tools and the doc.odin paths updated.

WASM stays at core/rexcode/wasm for now -- it is an IR, not an ISA, and
will move under the forthcoming core:rexcode/ir once that layer lands.

All 10 arches gen/builders/check/test green; import core:rexcode/isa/x86
verified working; wasm still compiles.
2026-06-18 19:03:27 -04:00

576 lines
16 KiB
Odin
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// rexcode · Brendan Punsky (dotbmp@github), original author
package rexcode_mips
// =============================================================================
// MIPS MNEMONICS
// =============================================================================
//
// Covers MIPS I/II/III/IV/V, MIPS32/64 R1/R2/R6 (selected), FPU (COP1) in
// full, COP0 essentials, and console extensions: PS1 GTE (full), PS2 EE
// MMI (broad subset), PSP Allegrex VFPU (major families). FP arithmetic
// is bake-the-format-into-the-mnemonic: ADD.S => .ADD_S, ADD.D => .ADD_D,
// etc. — keeps the encoding lookup O(1).
Mnemonic :: enum u16 {
INVALID = 0,
// -------------------------------------------------------------------------
// MIPS I — core integer
// -------------------------------------------------------------------------
// R-type arithmetic
ADD, ADDU, SUB, SUBU,
MULT, MULTU, DIV, DIVU,
MFHI, MFLO, MTHI, MTLO,
AND, OR, XOR, NOR,
SLT, SLTU,
// R-type shifts
SLL, SRL, SRA,
SLLV, SRLV, SRAV,
// I-type arithmetic
ADDI, ADDIU,
SLTI, SLTIU,
ANDI, ORI, XORI,
LUI,
// I-type branches
BEQ, BNE, BLEZ, BGTZ,
// REGIMM branches
BLTZ, BGEZ, BLTZAL, BGEZAL,
// J-type
J, JAL,
// R-type jumps
JR, JALR,
// Loads
LB, LH, LW, LBU, LHU, LWL, LWR,
// Stores
SB, SH, SW, SWL, SWR,
// System
SYSCALL, BREAK, NOP,
// -------------------------------------------------------------------------
// MIPS II additions
// -------------------------------------------------------------------------
// Atomic
LL, SC,
// Synchronization
SYNC,
// Traps (immediate and register variants)
TGEI, TGEIU, TLTI, TLTIU, TEQI, TNEI,
TGE, TGEU, TLT, TLTU, TEQ, TNE,
// Branch-likely (skip delay slot if not taken)
BEQL, BNEL, BLEZL, BGTZL,
BLTZL, BGEZL, BLTZALL, BGEZALL,
// -------------------------------------------------------------------------
// MIPS III additions (64-bit core)
// -------------------------------------------------------------------------
DADD, DADDU, DSUB, DSUBU,
DADDI, DADDIU,
DMULT, DMULTU, DDIV, DDIVU,
DSLL, DSRL, DSRA,
DSLLV, DSRLV, DSRAV,
DSLL32, DSRL32, DSRA32,
LD, LDL, LDR, LWU,
SD, SDL, SDR,
LLD, SCD,
// -------------------------------------------------------------------------
// MIPS IV additions
// -------------------------------------------------------------------------
MOVN, MOVZ,
MOVF, MOVT, // FP-condition-based GPR move
PREF, PREFX,
LWXC1, SWXC1, LDXC1, SDXC1, // indexed FP load/store
// -------------------------------------------------------------------------
// MIPS32 R1 / R2 — integer additions
// -------------------------------------------------------------------------
CLZ, CLO, DCLZ, DCLO,
MUL, // SPECIAL2 multiply-to-rd (doesn't touch HI/LO)
MADD, MADDU, MSUB, MSUBU,
SDBBP,
SSNOP, EHB, PAUSE,
// R2 bitfield + shuffle
EXT, INS,
DEXT, DEXTM, DEXTU,
DINS, DINSM, DINSU,
ROTR, ROTRV,
DROTR, DROTRV, DROTR32,
WSBH, DSBH, DSHD,
SEB, SEH,
// R2 misc
RDHWR, RDPGPR, WRPGPR,
DI, EI,
ERET, DERET,
WAIT,
// -------------------------------------------------------------------------
// MIPS32 R6 — compact branches and new mul/div
// -------------------------------------------------------------------------
// Compact (no delay slot)
BC, BALC, // 26-bit
BEQC, BNEC, BLTC, BGEC, BLTUC, BGEUC,
BLEZC, BGEZC, BGTZC, BLTZC,
BEQZC, BNEZC,
BC1EQZ, BC1NEZ, BC2EQZ, BC2NEZ,
JIC, JIALC,
// R6 mul/div (replaces MULT/MULTU/DIV/DIVU; results in single GPR)
MUH, MULU, MUHU, MOD, MODU,
DMUL_R6, DMUH, DMULU, DMUHU,
DDIV_R6, DMOD, DDIVU_R6, DMODU,
// R6 PC-relative immediates
AUI, AUIPC, ALUIPC, DAUI, DAHI, DATI,
// R6 misc
ALIGN, DALIGN,
BITSWAP, DBITSWAP,
LSA, DLSA,
LWPC, LWUPC, LDPC,
SELEQZ, SELNEZ,
// R6 CRC32 (optional in MIPS32 R6)
CRC32B, CRC32H, CRC32W, CRC32D,
CRC32CB, CRC32CH, CRC32CW, CRC32CD,
SIGRIE, // signal reserved instruction exception
// -------------------------------------------------------------------------
// FPU (COP1) — moves between GPR/FPR/FCR
// -------------------------------------------------------------------------
MFC1, MTC1, DMFC1, DMTC1, CFC1, CTC1,
MFHC1, MTHC1, // R2: high word of paired single
LWC1, SWC1, LDC1, SDC1,
// -------------------------------------------------------------------------
// FPU arithmetic — .S (single), .D (double), .PS (paired single)
// -------------------------------------------------------------------------
ADD_S, ADD_D, ADD_PS,
SUB_S, SUB_D, SUB_PS,
MUL_S, MUL_D, MUL_PS,
DIV_S, DIV_D,
SQRT_S, SQRT_D,
ABS_S, ABS_D, ABS_PS,
NEG_S, NEG_D, NEG_PS,
MOV_S, MOV_D, MOV_PS,
RECIP_S, RECIP_D,
RSQRT_S, RSQRT_D,
// FMA family (MIPS IV+)
MADD_S, MADD_D, MADD_PS,
MSUB_S, MSUB_D, MSUB_PS,
NMADD_S, NMADD_D, NMADD_PS,
NMSUB_S, NMSUB_D, NMSUB_PS,
// Conditional move (FPR by GPR / FCC)
MOVN_S, MOVN_D, MOVN_PS,
MOVZ_S, MOVZ_D, MOVZ_PS,
MOVF_S, MOVF_D, MOVF_PS,
MOVT_S, MOVT_D, MOVT_PS,
// -------------------------------------------------------------------------
// FPU conversions
// -------------------------------------------------------------------------
CVT_S_D, CVT_S_W, CVT_S_L,
CVT_D_S, CVT_D_W, CVT_D_L,
CVT_W_S, CVT_W_D,
CVT_L_S, CVT_L_D,
CVT_PS_S, CVT_S_PU, CVT_S_PL,
PLL_PS, PLU_PS, PUL_PS, PUU_PS,
// FPU round-to-fixed-point
ROUND_W_S, ROUND_W_D, ROUND_L_S, ROUND_L_D,
TRUNC_W_S, TRUNC_W_D, TRUNC_L_S, TRUNC_L_D,
CEIL_W_S, CEIL_W_D, CEIL_L_S, CEIL_L_D,
FLOOR_W_S, FLOOR_W_D, FLOOR_L_S, FLOOR_L_D,
// -------------------------------------------------------------------------
// FPU compares — 16 conditions × 3 formats (.S, .D, .PS) = 48
// -------------------------------------------------------------------------
C_F_S, C_F_D, C_F_PS,
C_UN_S, C_UN_D, C_UN_PS,
C_EQ_S, C_EQ_D, C_EQ_PS,
C_UEQ_S, C_UEQ_D, C_UEQ_PS,
C_OLT_S, C_OLT_D, C_OLT_PS,
C_ULT_S, C_ULT_D, C_ULT_PS,
C_OLE_S, C_OLE_D, C_OLE_PS,
C_ULE_S, C_ULE_D, C_ULE_PS,
C_SF_S, C_SF_D, C_SF_PS,
C_NGLE_S, C_NGLE_D, C_NGLE_PS,
C_SEQ_S, C_SEQ_D, C_SEQ_PS,
C_NGL_S, C_NGL_D, C_NGL_PS,
C_LT_S, C_LT_D, C_LT_PS,
C_NGE_S, C_NGE_D, C_NGE_PS,
C_LE_S, C_LE_D, C_LE_PS,
C_NGT_S, C_NGT_D, C_NGT_PS,
// FPU branches
BC1F, BC1T, BC1FL, BC1TL,
// -------------------------------------------------------------------------
// COP0 (system control)
// -------------------------------------------------------------------------
MFC0, MTC0, DMFC0, DMTC0,
MFHC0, MTHC0, // R5+ high half of 64-bit registers
TLBP, TLBR, TLBWI, TLBWR,
CACHE,
// -------------------------------------------------------------------------
// PS1 GTE (COP2) — Geometry Transformation Engine
// -------------------------------------------------------------------------
// Standard COP2 moves (GTE registers via these)
MFC2, MTC2, CFC2, CTC2, LWC2, SWC2,
LDC2, SDC2, // LDC2/SDC2 exist on MIPS II+; PS1 R3000A does not implement
// GTE ops (cofun-encoded, no GPR operands)
RTPS, RTPT,
DPCS, DPCT,
INTPL,
MVMVA,
NCDS, NCDT,
NCCS, NCCT,
NCS, NCT,
CDP, CC,
NCLIP,
AVSZ3, AVSZ4,
OP_GTE, // "OP" (cross product) — disambiguated from MIPS R6 OP
GPF, GPL,
SQR_GTE, // "SQR" — disambiguated from generic
DCPL, // depth-cue per light
// -------------------------------------------------------------------------
// PS2 EE — Multimedia Instructions (R5900 SPECIAL2 / MMI sub-spaces)
// -------------------------------------------------------------------------
// 128-bit GPR load/store
LQ, SQ,
// VU0 macro-mode 128-bit COP2 moves
LQC2, SQC2,
// Second HI/LO pair (R5900 dual MAC)
MFHI1, MFLO1, MTHI1, MTLO1,
MULT1, MULTU1, DIV1, DIVU1,
MADD_EE, MADDU_EE, MSUB_EE, MSUBU_EE,
MADD1, MADDU1, MSUB1, MSUBU1,
// Packed pack/unpack HI:LO
PMFHL_LW, PMFHL_UW, PMFHL_LH, PMFHL_SH, PMFHL_SLW,
PMTHL_LW,
// Parallel arithmetic (byte/halfword/word lanes)
PADDB, PADDH, PADDW,
PADDSB, PADDSH, PADDSW,
PADDUB, PADDUH, PADDUW,
PSUBB, PSUBH, PSUBW,
PSUBSB, PSUBSH, PSUBSW,
PSUBUB, PSUBUH, PSUBUW,
// Parallel shifts
PSLLH, PSRLH, PSRAH,
PSLLW, PSRLW, PSRAW,
PSLLVW, PSRLVW, PSRAVW,
QFSRV, // quad funnel shift right (across 128 bits)
// Parallel logical
PAND, POR, PXOR, PNOR,
// Parallel compare
PCEQB, PCEQH, PCEQW,
PCGTB, PCGTH, PCGTW,
// Parallel multiply / divide
PMULTW, PMULTUW, PMULTH,
PMADDW, PMADDUW, PMADDH,
PMSUBW, PMSUBH,
PHMADH, PHMSBH,
PDIVW, PDIVUW, PDIVBW,
// Pack / rearrange
PCPYLD, PCPYUD, PCPYH,
PINTH, PINTOH,
PEXEH, PEXEW,
PEXCH, PEXCW,
PROT3W,
PPACB, PPACH, PPACW,
PPAC5, PEXT5,
PEXTLB, PEXTLH, PEXTLW,
PEXTUB, PEXTUH, PEXTUW,
// MMI HI/LO helpers
PMFHI, PMFLO, PMTHI, PMTLO,
// Misc MMI
PLZCW, PABSH, PABSW,
PMAXH, PMAXW, PMINH, PMINW,
// Shift-amount register
MFSA, MTSA, MTSAB, MTSAH,
// -------------------------------------------------------------------------
// MIPS DSP ASE (rev 1 + rev 2). 4-accumulator (ac0..ac3) packed-SIMD
// operating on .QB (4×8-bit) and .PH (2×16-bit) lanes. Used heavily on
// Ingenic XBurst, BCM/Atheros routers, and various 32-bit embedded MIPS.
// -------------------------------------------------------------------------
// Packed add/sub (saturating)
ADDQ_PH, ADDQ_S_PH, ADDQ_S_W,
SUBQ_PH, SUBQ_S_PH, SUBQ_S_W,
ADDU_QB, ADDU_S_QB, ADDU_PH, ADDU_S_PH,
SUBU_QB, SUBU_S_QB, SUBU_PH, SUBU_S_PH,
ADDSC, ADDWC, // 32-bit + carry/borrow
// Packed multiply / dot-product / accumulate
MULEU_S_PH_QBL, MULEU_S_PH_QBR,
MULEQ_S_W_PHL, MULEQ_S_W_PHR,
MULQ_RS_PH, MULQ_S_PH,
MULSAQ_S_W_PH,
DPAQ_S_W_PH, DPSQ_S_W_PH,
DPAQ_SA_L_W, DPSQ_SA_L_W,
DPAU_H_QBL, DPAU_H_QBR,
DPSU_H_QBL, DPSU_H_QBR,
DPA_W_PH, DPS_W_PH, // R2
DPAX_W_PH, DPSX_W_PH, // R2
MAQ_S_W_PHL, MAQ_S_W_PHR,
MAQ_SA_W_PHL, MAQ_SA_W_PHR,
// Extract / position / accumulator helpers
EXTR_W, EXTR_R_W, EXTR_RS_W, EXTR_S_H,
EXTRV_W, EXTRV_R_W, EXTRV_RS_W, EXTRV_S_H,
EXTP, EXTPV, EXTPDP, EXTPDPV,
SHILO, SHILOV,
MTHLIP,
WRDSP, RDDSP,
// Pack / unpack
PRECRQ_QB_PH, PRECRQ_PH_W,
PRECRQU_S_QB_PH,
PRECEQ_W_PHL, PRECEQ_W_PHR,
PRECEQU_PH_QBL, PRECEQU_PH_QBR,
PRECEQU_PH_QBLA, PRECEQU_PH_QBRA,
PRECEU_PH_QBL, PRECEU_PH_QBR,
PRECEU_PH_QBLA, PRECEU_PH_QBRA,
PRECRQ_RS_PH_W,
// Compare / pick
CMPU_EQ_QB, CMPU_LT_QB, CMPU_LE_QB,
CMP_EQ_PH, CMP_LT_PH, CMP_LE_PH,
CMPGU_EQ_QB, CMPGU_LT_QB, CMPGU_LE_QB,
PICK_QB, PICK_PH,
// Shift
SHLL_QB, SHLL_PH, SHLL_S_PH, SHLL_S_W,
SHLLV_QB, SHLLV_PH, SHLLV_S_PH, SHLLV_S_W,
SHRL_QB, SHRL_PH,
SHRLV_QB, SHRLV_PH,
SHRA_QB, SHRA_R_QB, SHRA_PH, SHRA_R_PH, SHRA_R_W,
SHRAV_QB, SHRAV_R_QB, SHRAV_PH, SHRAV_R_PH, SHRAV_R_W,
// Indexed loads (rs+rt addressing) — register-register addressing.
LBUX, LHX, LWX,
// DSP control / branch
BPOSGE32, // branch if DSPControl.pos >= 32
INSV, // insert variable position
BITREV, // R2 bit reversal
ABSQ_S_PH, ABSQ_S_W,
REPL_PH, REPLV_PH,
REPL_QB, REPLV_QB,
// -------------------------------------------------------------------------
// MIPS SIMD Architecture (MSA). Modern MIPS32/64 R5+ optional extension
// with 32× 128-bit vector registers ($w0..$w31). 4-byte instructions in
// opcode space 0x1E (CONFLICTS WITH PS2 LQ on R5900 — consumers
// disambiguate by target ISA).
// -------------------------------------------------------------------------
// Vector register-register integer arithmetic (.B/.H/.W/.D lane width)
ADDV_B, ADDV_H, ADDV_W, ADDV_D,
SUBV_B, SUBV_H, SUBV_W, SUBV_D,
ADDS_S_B, ADDS_S_H, ADDS_S_W, ADDS_S_D,
ADDS_U_B, ADDS_U_H, ADDS_U_W, ADDS_U_D,
SUBS_S_B, SUBS_S_H, SUBS_S_W, SUBS_S_D,
SUBS_U_B, SUBS_U_H, SUBS_U_W, SUBS_U_D,
MULV_B, MULV_H, MULV_W, MULV_D,
DIV_S_B, DIV_S_H, DIV_S_W, DIV_S_D,
DIV_U_B, DIV_U_H, DIV_U_W, DIV_U_D,
MOD_S_B, MOD_S_H, MOD_S_W, MOD_S_D,
MOD_U_B, MOD_U_H, MOD_U_W, MOD_U_D,
MADDV_B, MADDV_H, MADDV_W, MADDV_D,
MSUBV_B, MSUBV_H, MSUBV_W, MSUBV_D,
DOTP_S_H, DOTP_S_W, DOTP_S_D,
DOTP_U_H, DOTP_U_W, DOTP_U_D,
// Vector logical
AND_V, OR_V, NOR_V, XOR_V,
ANDI_B, ORI_B, NORI_B, XORI_B,
BSEL_V, BSELI_B,
BMNZ_V, BMNZI_B, BMZ_V, BMZI_B,
// Vector compare
CEQ_B, CEQ_H, CEQ_W, CEQ_D,
CLT_S_B, CLT_S_H, CLT_S_W, CLT_S_D,
CLT_U_B, CLT_U_H, CLT_U_W, CLT_U_D,
CLE_S_B, CLE_S_H, CLE_S_W, CLE_S_D,
CLE_U_B, CLE_U_H, CLE_U_W, CLE_U_D,
// Vector min/max
MIN_S_B, MIN_S_H, MIN_S_W, MIN_S_D,
MIN_U_B, MIN_U_H, MIN_U_W, MIN_U_D,
MAX_S_B, MAX_S_H, MAX_S_W, MAX_S_D,
MAX_U_B, MAX_U_H, MAX_U_W, MAX_U_D,
// Vector shifts
SLL_B, SLL_H, SLL_W, SLL_D,
SRL_B, SRL_H, SRL_W, SRL_D,
SRA_B, SRA_H, SRA_W, SRA_D,
SLLI_B, SLLI_H, SLLI_W, SLLI_D,
SRLI_B, SRLI_H, SRLI_W, SRLI_D,
SRAI_B, SRAI_H, SRAI_W, SRAI_D,
// Vector FP arithmetic
FADD_W, FADD_D, FSUB_W, FSUB_D,
FMUL_W, FMUL_D, FDIV_W, FDIV_D,
FSQRT_W, FSQRT_D, FRSQRT_W, FRSQRT_D,
FRCP_W, FRCP_D, FRINT_W, FRINT_D,
FMAX_W, FMAX_D, FMIN_W, FMIN_D,
FCEQ_W, FCEQ_D, FCNE_W, FCNE_D,
FCLT_W, FCLT_D, FCLE_W, FCLE_D,
// Vector conversion
FFINT_S_W, FFINT_S_D, FFINT_U_W, FFINT_U_D,
FTRUNC_S_W, FTRUNC_S_D, FTRUNC_U_W, FTRUNC_U_D,
FCVT_S_W, FCVT_S_D, FCVT_D_W,
// Vector load/store + immediate
LD_B, LD_H, LD_W, LD_D,
ST_B, ST_H, ST_W, ST_D,
LDI_B, LDI_H, LDI_W, LDI_D,
// Vector shuffle / copy / insert
COPY_S_B, COPY_S_H, COPY_S_W,
COPY_U_B, COPY_U_H, COPY_U_W,
INSERT_B, INSERT_H, INSERT_W, INSERT_D,
INSVE_B, INSVE_H, INSVE_W, INSVE_D,
SHF_B, SHF_H, SHF_W,
VSHF_B, VSHF_H, VSHF_W, VSHF_D,
SLD_B, SLD_H, SLD_W, SLD_D,
SLDI_B, SLDI_H, SLDI_W, SLDI_D,
SPLAT_B, SPLAT_H, SPLAT_W, SPLAT_D,
SPLATI_B, SPLATI_H, SPLATI_W, SPLATI_D,
// MSA branches (vector all-zero / any-non-zero across all lanes / per-lane)
BZ_V, BNZ_V,
BZ_B, BZ_H, BZ_W, BZ_D,
BNZ_B, BNZ_H, BNZ_W, BNZ_D,
// Element-permute / count / bit-ops
NLOC_B, NLOC_H, NLOC_W, NLOC_D,
NLZC_B, NLZC_H, NLZC_W, NLZC_D,
PCNT_B, PCNT_H, PCNT_W, PCNT_D,
// -------------------------------------------------------------------------
// PSP Allegrex VFPU (Vector FPU) — major families
// -------------------------------------------------------------------------
//
// VFPU operates on 128 32-bit registers organised as 8 matrices of 4x4.
// Each instruction has a suffix .s / .p / .t / .q for scalar / pair /
// triple / quad lane width. This enum names the major mnemonics; the
// ENCODING_TABLE has stubs to be filled in as the project needs them.
// Move / load / store / immediates
VMOV_S, VMOV_P, VMOV_T, VMOV_Q,
LV_S, LV_Q,
SV_S, SV_Q,
LVL_Q, LVR_Q,
SVL_Q, SVR_Q,
VIIM_S, VFIM_S,
// Arithmetic
VADD_S, VADD_P, VADD_T, VADD_Q,
VSUB_S, VSUB_P, VSUB_T, VSUB_Q,
VMUL_S, VMUL_P, VMUL_T, VMUL_Q,
VDIV_S, VDIV_P, VDIV_T, VDIV_Q,
VABS_S, VABS_P, VABS_T, VABS_Q,
VNEG_S, VNEG_P, VNEG_T, VNEG_Q,
VSQRT_S,
VRCP_S, VRCP_P, VRCP_T, VRCP_Q,
VRSQ_S, VRSQ_P, VRSQ_T, VRSQ_Q,
// Reductions / dot / scale
VDOT_P, VDOT_T, VDOT_Q,
VSCL_P, VSCL_T, VSCL_Q,
VHDP_P, VHDP_T, VHDP_Q,
VAVG_P, VAVG_T, VAVG_Q,
VFAD_P, VFAD_T, VFAD_Q,
// Matrix ops
VMMUL_P, VMMUL_T, VMMUL_Q,
VTFM2_P, VTFM3_T, VTFM4_Q,
VHTFM2_P, VHTFM3_T, VHTFM4_Q,
VMSCL_P, VMSCL_T, VMSCL_Q,
VMMOV_P, VMMOV_T, VMMOV_Q,
VMIDT_P, VMIDT_T, VMIDT_Q,
VMZERO_P, VMZERO_T, VMZERO_Q,
VMONE_P, VMONE_T, VMONE_Q,
// Cross / quaternion
VCRS_T, VCRSP_T,
VQMUL_Q,
// Compares & sel
VCMP_S, VCMP_P, VCMP_T, VCMP_Q,
VMIN_S, VMIN_P, VMIN_T, VMIN_Q,
VMAX_S, VMAX_P, VMAX_T, VMAX_Q,
// Transcendentals
VSIN_S, VCOS_S, VEXP2_S, VLOG2_S,
VASIN_S, VNRCP_S, VNSIN_S, VREXP2_S,
VSGN_S,
// Conversion
VI2F_S, VI2F_P, VI2F_T, VI2F_Q,
VF2IN_S, VF2IN_P, VF2IN_T, VF2IN_Q,
VF2IZ_S, VF2IZ_P, VF2IZ_T, VF2IZ_Q,
VF2IU_S, VF2IU_P, VF2IU_T, VF2IU_Q,
VF2ID_S, VF2ID_P, VF2ID_T, VF2ID_Q,
VF2H_P, VH2F_S,
// Control / move-between
VFLUSH, VSYNC, VNOP,
VPFXS, VPFXT, VPFXD,
VCST_S, VCST_P, VCST_T, VCST_Q,
MFV, MTV, MFVC, MTVC,
BVF, BVT, BVFL, BVTL,
}