-
Notifications
You must be signed in to change notification settings - Fork 15
ARC GNU support for DSP instructions
Claudiu Zissulescu edited this page May 11, 2020
·
5 revisions
ARCHS and ARCEM processors are adding support for fixed-point operations via DSP instructions. These instructions are also used/supported by the ARC GNU compiler via <stdfix.h> which is implemented accordingly with C Extensions to support embedded processors standard and GNU GCC manual.
The native fixed-point arithmetic adds:
- saturating arithmetic;
- fixed-point arithmetic;
- Rounding is not considered by the compiler, and it will always be done as specified in ARC's auxiliary register DSP_CTRL;
- prefix and postfix increment and decrement operators (++, --);
- unary arithmetic operators (+, -, !);
- binary arithmetic operators (+, -, *, /);
- binary shift operators (<<, >>);
- relational operators (<, <=, >=, >);
- equality operators (==, !=);
- assignment operators (+=, -=, *=, /=, <<=, >>=);
- conversions to and from integer, floating-point, or fixed-point types.
For more, see GNU GCC manual.
| Mode | plus | minus | mul | div | lshft | rshft |
|---|---|---|---|---|---|---|
| q15 | X | X | X | X | X | X |
| sat q15 | VADDS2H | VSUBS2H | VMPY2HF | X | VASLS2H | VASRS2H |
| q31 | X | X | X | DIVF | X | X |
| sat q31 | ADDS | SUBS | MPYF | X | ASLS | ASRS |
| q63 | X | X | X | X | X | X |
| sat q63 | SATF | SATF | X | X | X | X |
| a32 | X | X | X | X | X | X |
| sat a31 | X | X | X | X | X | X |
| Name | rtl | instruction |
|---|---|---|
| abssh | ss_abs | ABSSH |
| abss | ss_abs | ABSS |