IMPYAL P,XT,loc32
6-104
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; Calculate signed result:
; Y64 = (X0*C0 + X1*C1 + X2*C2) >> 2
SPM −2 ; Set product shift mode to “>> 2”
ZAPA ; Zero ACC, P, OVCU
MOVL XT,@X0 ; XT = X0
IMPYL P,XT,@C0 ; P = low 32 bits of (X0*C0 << 2)
MOVL XT,@X1 ; XT = X1
IMPYAL P,XT,@C1 ; OVCU:ACC = OVCU:ACC + P,
; P = low 32 bits of (X1*C1 << 2)
MOVL XT,@X2 ; XT = X2
IMPYAL P,XT,@C2 ; OVCU:ACC = OVCU:ACC + P,
; P = low 32 bits of (X2*C2 << 2)
ADDUL ACC,@P ; OVCU:ACC = OVCU:ACC + P
MOVL @Y64+0,ACC ; Store low 32-bit result into Y64
MOVU @AL,OVC ; ACC = OVCU (carry count)
MOVB AH,#0
QMPYL P,XT,@C2 ; P = high 32 bits of (X2*C2)
MOVL XT,@X1 ; XT = X1
QMPYAL P,XT,@C1 ; ACC = ACC + P >> 2,
; P = high 32 bits of (X1*C1)
MOVL XT,@X0 ; XT = X0
QMPYAL P,XT,@C0 ; ACC = ACC + P >> 2,
; P = high 32 bits of (X0*C0)
ADDL ACC,P << PM ; ACC = ACC + P >> 2
MOVL @Y64+2,ACC ; Store high 32-bit result into Y64