Skip to content

MPY9 Vector Operations

Claudiu Zissulescu edited this page Sep 24, 2021 · 6 revisions

Two element vectors:

Mnemonic OpB type OpC type Operation
vadd2h int16_t int16_t (a.h1, a.h0) = (b.h1, b.h0) + (c.h1, c.h0)
vsub2h int16_t int16_t (a.h1, a.h0) = (b.h1, b.h0) - (c.h1, c.h0)
dmpyh int16_t int16_t a = ACC = (b.h1 * c.h1) + (b.h0 + c.h0)
dmpyhu uint16_t uint16_t a = ACC = (b.h1 * c.h1) + (b.h0 + c.h0)
dmach int16_t int16_t a = ACC = ACC + (b.h1 * c.h1) + (b.h0 + c.h0)
dmachu uint16_t uint16_t a = ACC = ACC + (unsigend) (b.h1 * c.h1) + (unsigned) (b.h0 + c.h0)
vaddsub2h int16_t int16_t (a.h1, a.h0) = (b.h1 + b.h0) (c.h1 - c.h0)
vsubadd2h int16_t int16_t (a.h1, a.h0) = (b.h1 - b.h0) (c.h1 + c.h0)
vmpy2h int16_t int16_t (ACC.w0, ACC.w1) = (A.w0, A.w1) = (b.h1, b.h0) * (c.h1, c.h0)
vmpy2hu uint16_t uint16_t (ACC.w0, ACC.w1) = (A.w0, A.w1) = (unsigned) (b.h1, b.h0) * (c.h1, c.h0)
vmac2h int16_t int16_t (ACC.w0, ACC.w1) = (A.w0, A.w1) = (ACC.w0, ACC.w1) + (b.h1, b.h0) * (c.h1, c.h0)
vmac2hu uint16_t uint16_t (ACC.w0, ACC.w1) = (A.w0, A.w1) = (ACC.w0, ACC.w1) + (unsigned)(b.h1, b.h0) * (unsigned)(c.h1, c.h0)
dmacwh int32_t int16_t A = ACC = ACC + (B.w1 * c.h1) + (B.w0 + c.h0)
dmacwhu uint32_t uint16_t A = ACC = ACC + (unsinged)(B.w1 * c.h1) + (unsigned)(B.w0 + c.h0)
Clone this wiki locally