Macro psp::vfpu_asm

source ·
macro_rules! vfpu_asm {
    ($($t:tt)*) => { ... };
}
Expand description

A macro-based VFPU assembler.

This follows the standard Rust asm! macro syntax, with support for VFPU instructions.

Limitations:

  • Currently, registers cannot be specified by name in operands. For example this is invalid: out("t0") _, instead you must use out("$8").

§A note on transposed matrices

While some documentation online suggests that the M___ registers represent matrices, and the adjacent E___ registers represent their inverse, this is somewhat wrong.

It can be better said that M___ interprets the registers as being stored in row-major format, and E___ interprets the registers as being stored in column-major format. While many instructions (vmmov, vmidt, vmzero) aren’t sensitive to matrix transpositions, this matters for vtfm_ and vhtfm_.

vmmul is an exception to this rule. See this comment for more details.