B.1.21 1x3 3x3 and 1x4 4x4 Matrix Multiply
move
move
move
move
move
move
fmpy.s d4,d5,d3
fmpy.s d4,d5,d0
fmpy
fmpy
fmpy.s d4,d5,d1
fmpy
fmpy
fmpy.s d4,d5,d2
fmpy
move
move
move
move
move
fmpy.s d7,d4,d0
fmpy.s d7,d3,d1
fmpy
fmpy
fmpy
fmpy.s d7,d3,d2
fmpy
fmpy
B-38
1x3 3x3 Matrix Multiply
#mat_a,r0
#2,m0
#mat_b,r4
#-1,m4
#mat_c,r1
d4,d5,d3 fadd.s d3,d0 x:(r0)+,d4.s y:(r4)+,d5.s ;a11,b12 1
d4,d5,d3 fadd.s d3,d0 x:(r0)+,d4.s y:(r4)+,d5.s ;a12,b22 1
d4,d5,d3 fadd.s d3,d1 x:(r0)+,d4.s y:(r4)+,d5.s ;a11,b13 1
d4,d5,d3 fadd.s d3,d1 x:(r0)+,d4.s y:(r4)+,d5.s ;a12,b23 1
d4,d5,d3 fadd.s d3,d2
fadd.s d3,d2
1x4 4x4 Matrix Multiply
#mata,r0
;[1x4] matrix pointer, X memory
#matb,r4
;[4x4] matrix pointer, Y memory
#matc,r1
;output matrix, X memory
d7,d5,d1 fadd.s d1,d0 x:(r0)+,d6.s y:(r4)+,d7.s ;a14,b41 1
d7,d6,d1 fadd.s d1,d0
d7,d4,d1 fadd.s d1,d0
d7,d5,d2 fadd.s d2,d1
d7,d6,d2 fadd.s d2,d1
DSP96002 USER'S MANUAL
;point to A matrix
;mod 3
;point to B matrix
;set for linear addressing
;output C matrix
x:(r0)+,d4.s y:(r4)+,d5.s ;a11,b11 1
x:(r0)+,d4.s y:(r4)+,d5.s ;a12,b21 1
x:(r0)+,d4.s y:(r4)+,d5.s ;a13,b31 1
x:(r0)+,d4.s y:(r4)+,d5.s ;a13,b32 1
x:(r0)+,d4.s y:(r4)+,d5.s ;a13,b33 1
d0.s,y:(r1)+ ;save 1
d1.s,y:(r1)+ ;save 2
d2.s,y:(r1)+ ;save 3
x:(r0)+,d4.s y:(r4)+,d7.s ;a11,b11 1
x:(r0)+,d3.s y:(r4)+,d7.s ;a12,b21 1
x:(r0)+,d5.s y:(r4)+,d7.s ;a13,b31 1
y:(r4)+,d7.s ;b12
y:(r4)+,d7.s ;b22
d0.s,x:(r1)+ y:(r4)+,d7.s ;b32
y:(r4)+,d7.s ;b42
y:(r4)+,d7.s ;b13
Program ICycles
Words
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
--- ---
Totals:
12
12
Program ICycles
Words
1
1
1
1
1
1
1
1
1
1
1
1
1
1
MOTOROLA