DSP_mat_mul

4.6 Matrix

 

 

 

 

 

Matrix Multiplication

DSP_mat_mul

Function

 

 

 

 

void DSP_mat_mul(const short * restrict x, int r1, int c1, const short * restrict

 

 

y, int c2, short * restrict r, int qs)

Arguments

 

x [r1*c1]

Pointer to input matrix of size r1*c1.

 

 

r1

Number of rows in matrix x.

 

 

c1

Number of columns in matrix x. Also number of rows in y.

 

 

y [c1*c2]

Pointer to input matrix of size c1*c2.

 

 

c2

Number of columns in matrix y.

 

 

r [r1*c2]

Pointer to output matrix of size r1*c2.

 

 

qs

Final right−shift to apply to the result.

Description

 

This function computes the expression “r = x * y” for the matrices x and y. The

 

 

columnar dimension of x must match the row dimension of y. The resulting

 

 

matrix has the same number of rows as x and the same number of columns as

 

 

y.

 

 

 

 

The values stored in the matrices are assumed to be fixed-point or integer

 

 

values. All intermediate sums are retained to 32-bit precision, and no overflow

 

 

checking is performed. The results are right-shifted by a user-specified

 

 

amount, and then truncated to 16 bits.

Algorithm

 

This is the C equivalent of the assembly code without restrictions. Note that the

 

 

assembly code is hand optimized and restrictions may apply.

void DSP_mat_mul(short *x, int r1, int c1, short *y, int c2, short *r, int qs)

{

int i, j, k; int sum;

/* −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− */ /* Multiply each row in x by each column in y. The */ /* product of row m in x and column n in y is placed */

/* in position (m,n) in the result.*/ /* −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− */

C64x+ DSPLIB Reference

4-73

Page 101
Image 101
Texas Instruments TMS320C64X manual Matrix Multiplication, DSPmatmul