This function computes the expression “y = x1*x2” for the matrices x1
and x2. The column dimension of x1 must match the row dimension of x2.
The resulting matrix has the same number of rows as x1 and the same
number of columns as x2. The values stored in the matrices are assumed
to be single-precision floating-point values. This code is suitable for
dense matrices. No optimizations are made for sparse matrices.
@param x1 = Pointer to r1 by c1 input matrix.
@param r1 = Number of rows in x1.
@param c1 = Number of columns in x1. Also number of rows in x2.
@param x2 = Pointer to c1 by c2 input matrix.
@param c2 = Number of columns in x2.
@param y = Pointer to r1 by c2 output matrix.
- Algorithm:
- DSPF_sp_mat_mul.c is the natural C equivalent of the optimized intrinsic C code withoutrestrictions. Note that the intrinsic C code is optimized and restrictions may apply.
- Assumptions:
- The arrays ‘x1’, ‘x2’, and ‘y’ are stored in distinct arrays. That is, in-place processing is not allowed.
All r1, c1, c2 are assumed to be > 1.
5 Floats are always loaded extra from the locations:
x2[c1’ * c2’], x2[c1’ * c2’ + 1],
x1[r1 * c1’], x1[r1’ * c1’] and x1[2 * c1]
where
r1’ = r1 + (r1&1)
c2’ = c2 + (c2&1)
c1’ = c1 + 1 + 2*(c1&1)
If (r1&1) means r1 is odd, one extra row of x1[] matrix is loaded
If (c2&1) means c2 is odd, one extra col of x2[] matrix is loaded
- Implementation Notes:
- Interruptibility : The code is interruptible.
Endian support : supports both Little and Big endian modes.