Technical data
Optimizing with MACRO-32
Example 3–10 Matrix Multiply—Optimal
msync R0 ;synchronize with scalar
mtvlr #N ;
;
loop2: ;first segment
;
vldl A(I,K),#4,v0 ;
;mul
;
vsmulf B(K,J),v0,v2 ;
vsmulf B(K,J+1),v0,v3 ;
vsmulf B(K,J+2),v0,v4 ;
vsmulf B(K,J+3),v0,v5 ;
vsmulf B(K,J+4),v0,v6 ;
vsmulf B(K,J+5),v0,v7 ;
vsmulf B(K,J+6),v0,v8 ;
vsmulf B(K,J+7),v0,v9 ;
vsmulf B(K,J+8),v0,v10 ;
vsmulf B(K,J+9),v0,v11 ;
vsmulf B(K,J+10),v0,v12 ;
vsmulf B(K,J+11),v0,v13 ;
vsmulf B(K,J+12),v0,v14 ;
vsmulf B(K,J+13),v0,v15 ;
; update
;
INC K
loop1: ;
;load col of A
;
vldl A(I,K),#4,v0 ;
;mul and add
;
vsmulf B(K,J),v0,v1
vvaddf v1,v2,v2 ;
vsmulf B(K,J+1),v0,v1
vvaddf v1,v3,v3 ;
vsmulf B(K,J+2),v0,v1
vvaddf v1,v4,v4 ;
vsmulf B(K,J+3),v0,v1
Example 3–10 Cont’d on next page
3–26