ragnarok2040 - 2012-12-22

New changes

VU0 Syntax:

The new syntax requires that VU0 register names be prefixed with a '$' symbol and only single digit numerals be used for registers 0 through 9.

For example:

  • $vf0-$vf9
  • $vf10-$vf31
  • $vi0-$vf9
  • $vi10-$vi31

Numerical register names are to be used for the transfer instructions lqc2/sqc2/ctc2/cfc2/qmtc2/qmfc2.

For example:

  • $0-$9
  • $10-$31

The "vcallms" instruction only takes immediate expressions, now. The assembler divides the value given by 8 implicitly.

The "vcallmsr" instruction takes no arguments now. It didn't need the "vi27" operand, since it was set as part of the instruction. I don't think it was possible to change the register number.

Options:

-mr5900-legacy-vu0

This option enables support for legacy VU0 register name syntax.

The '$' symbol becomes optional.
Double digits can be used for registers 0 through 9.
VU0 register names can be used for transfer instructions.

For example:

  • $vf0-$vf9
  • $vf10-$vf31
  • $vi0-$vf9
  • $vi10-$vi31
  • vf00-vf09
  • vf10-vf31
  • vi00-vf09
  • vi10-vi31
  • $vf00-$vf09
  • $vf10-$vf31
  • $vi00-$vf09
  • $vi10-$vi31
Errata

This option enables integer and floating point register names to be used interchangeably for the ctc2/cfc2/qmtc2/qmfc2 instructions. Make sure to keep track.

-mhard-ldsd

This forces the assembler to output a hardware "ld/sd" instruction regardless of ABI/ISA. This simulates the prior behavior of the r5900 toolchain, but should only be used for debugging purposes.

 
Last edit: ragnarok2040 2012-12-22