Skip to content

shz_xmtrx_apply_store_unaligned_4x4

Markdown
SHZ_INLINE void shz_xmtrx_apply_store_unaligned_4x4(float out[16], const float in[16]) SHZ_NOEXCEPT;

Multiplies XMTRX by the unaligned matrix, in, storing the result within the unaligned matrix, out.

NameTypeDescription
outfloat [16]
inconst float [16]

Nothing (void).

This routine is roughly equivalent to: shz_xmtrx_apply_unaligned_4x4(in); shz_xmtrx_store_unaligned_4x4(out);

However, it has been optimized and pipelined for performing the multiply and store in parallel.

  • This is useful for when you want to multiply a batch of matrices by the same matrix, held within XMTRX.
  • The result of the multiplication is not stored within XMTRX, despite it getting clobbered.
  • _unaligned: Works on matrix data that is not 8-byte aligned, passed as a plain float[16]. The default routines use 64-bit paired FMOV loads that need 8-byte alignment. (Naming and Suffixes)
  • C++ equivalent: none (call the C function from C++)
  • Type-generic form: none
  • Back-ends: SH4: shared C implementation · SW: portable C · SPU: shared C implementation
  • Defined in: sh4zam/shz_xmtrx.h:677
  • Module: XMTRX, section "Compound Operations"

shz_xmtrx_apply_unaligned_4x4, shz_xmtrx_store_unaligned_4x4, shz_xmtrx_apply_store_4x4