DMAC ACC:P,loc32,*XAR7/++
6-88
Example
; Calculate sum of product using dual 16-bit multiply:
; int16 X[N] ; Data information
; int16 C[N] ; Coefficient information (located in low 4M)
; ; Data and Coeff must be aligned to even address
; ; N must be an even number
; sum = 0;
; for(i=0; i < N; i++)
; sum = sum + (X[i] * C[i]) >> 5;
MOVL XAR2,#X ; XAR2 = pointer to X
MOVL XAR7,#C ; XAR7 = pointer to C
SPM −5 ; Set product shift to ”>> 5”
ZAPA ; Zero ACC, P, OVC
RPT #(N/2)−1 ; Repeat next instruction N/2 times
||DMAC P,*XAR2++,*XAR7++ ; ACC = ACC + (X[i+1] * C[i+1]) >> 5
; P = P + (X[i] * C[i]) >> 5 i++
ADDL ACC,@P ; Perform final accumulate
MOVL @sum,ACC ; Store final result into sum