Texas Instruments TMS320C64X User Manual

Page 101

Advertising
background image

DSP_mat_mul

4-73

C64x+ DSPLIB Reference

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. */

/* −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− */

Advertising