Files
2026-07-10 09:08:29 -04:00

45 lines
1.9 KiB
C

/* ============================================================================
* duffle DSL — GTE Vendor Mnemonics (opt-in)
* ============================================================================
*
* Provides the textbook MIPS assembly mnemonics for the GTE/COP2
* instructions as thin aliases to the canonical duffle macros in gte.h.
* The duffle names are primary; this header is for users who prefer
* the textbook mnemonics.
*
* USAGE: #include "duffle/gte_vendor_sym.h" // after gte.h
*
* Mapping (vendor -> duffle):
* Transfers (move GPR <-> GTE control/data register):
* gte_mfc2 -> gte_mv_from_data_r (move from coprocessor 2 data reg)
* gte_mtc2 -> gte_mv_to_data_r (move to coprocessor 2 data reg)
* gte_cfc2 -> gte_mv_from_ctrl_r (move from coprocessor 2 control reg)
* gte_ctc2 -> gte_mv_to_ctrl_r (move to coprocessor 2 control reg)
*
* Data load/store (load/store word to coprocessor 2 data register):
* gte_lwc2(rt, base, off) -> gte_lw(rt, base, off)
* gte_swc2(rt, base, off) -> gte_sw(rt, base, off)
* (the lower-level vector variants gte_lw_v0_xy etc. don't have
* vendor mnemonics; they're already gte_-prefixed and short)
* ============================================================================ */
#ifdef INTELLISENSE_DIRECTIVES
# pragma once
# include "gte.h"
#endif
#ifndef DUFFLE_GTE_VENDOR_SYM_H
#define DUFFLE_GTE_VENDOR_SYM_H
/* Transfers (move GPR <-> GTE control/data register) */
#define gte_mfc2(rt, rd) gte_mv_from_data_r((rt), (rd))
#define gte_mtc2(rt, rd) gte_mv_to_data_r((rt), (rd))
#define gte_cfc2(rt, rd) gte_mv_from_ctrl_r((rt), (rd))
#define gte_ctc2(rt, rd) gte_mv_to_ctrl_r((rt), (rd))
/* Data load/store (load/store word to coprocessor 2 data register) */
#define gte_lwc2(rt, base, off) gte_lw((rt), (base), (off))
#define gte_swc2(rt, base, off) gte_sw((rt), (base), (off))
#endif