There are rich sets of MAC intrinsic with additional operations like pre-adding, pre-subtraction, and conjugation. The naming convention for the vector MAC intrinsics is as follows. Optional characteristics are shown in [] and mandatory ones in {}.
[l]{mac|msc|mul|negmul}{2|4|8|16}[_abs|_max|_min|_maxdiff][_conj][{_sym|_antisym}[_ct|_uct]][_c|_cc|_cn|_nc]
Every operation will either be a multiplication, initializing an accumulator, or a MAC operation which accumulates to a running accumulator of 2, 4, 8, or 16 lanes.
-
l
- Denotes that an accumulator with 80-bit lanes is used for the operation.
-
sym
andantisym
- Indicates the use of pre-adding and pre-subtraction respectively.
-
max
,min
, andmaxdiff
- Indicates the pre-selection of lanes in the
xbuff
based on the maximum, minimum, or maximum difference value. -
abs
- Indicates the pre-computation of the absolute value in the
xbuff
. -
ct
- Used for partial pre-adding and pre-subtraction (separate selection for the data input from X for the final column).
-
uct
- Used for unit center optimization for certain types of FIR filters. Refer to the AI Engine Intrinsics User Guide (UG1078) for more information.
-
n
andc
- Used to indicate that the complex conjugate will be used
for one of the input buffers with complex values:
-
c
- The only complex input buffer will be conjugated.
-
cn
- Complex conjugate of X (or XY if pre-adding is used) buffer.
-
nc
- Complex conjugate of Z buffer.
-
cc
- Complex conjugate of both X (or XY if pre-adding is used) and Z buffers.
-
-
conj
- Indicates that the complex conjugate of Z will be used when multiplying the data input from Y.