Functions
DSPF_sp_mat_mul
Collaboration diagram for DSPF_sp_mat_mul:

Functions

void DSPF_sp_mat_mul (float *x1, const int r1, const int c1, float *x2, const int c2, float *restrict y)
 

Detailed Description

Function Documentation

◆ DSPF_sp_mat_mul()

void DSPF_sp_mat_mul ( float *  x1,
const int  r1,
const int  c1,
float *  x2,
const int  c2,
float *restrict  y 
)
 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.

Copyright 2022, Texas Instruments Incorporated