-
Notifications
You must be signed in to change notification settings - Fork 11
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) |