AE_MULAS32F48P16S.LL_S2 — Legacy HiFi 2 16x16-bit signed fraction (1.15) to 32-bit (1.31) multiply-add (MAC) with 32-bit saturation: slot 2 version.

Instruction Word

Slot
ae_slot2_0
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format ae_format - 64 bit(s) 1111
AE_MULAS32F48P16S.LL_S201100011
ae_fld_mul_x2_S2_q0 3210
ae_fld_mul_x2_S2_d0 3210
ae_fld_mul_x2_S2_d1 3210

Assembler Syntax

AE_MULAS32F48P16S.LL_S2 aed0..15(ae_mul_S2_q0), aed0..15(ae_mul_S2_d0), aed0..15(ae_mul_S2_d1)

C Syntax

#include <xtensa/tie/xt_hifi2.h>

extern void AE_MULAS32F48P16S_LL_S2(ae_q56s d /*inout*/, ae_p24x2s d0, ae_p24x2s d1);

Description

AE_MULAS32F48P16S.LL is a 16x16-bit signed fraction (1.15) multiply-add (MAC) with 32-bit saturation, with each input covering the range [1.0 .. 1.0), and a 32-bit (1.31) output into an AE_DR register. The extension LL indicates that the inputs are d0[23:8] and d1[23:8], and the multiply produces a 32-bit result as output with saturation. Note that the product is saturated before being added to the accumulator. The result of the multiplication is added to the acccumulator contents and written back to the accumulator. Note that the position of the binary point is relative to 1.23 and 17.47 values respectively, the same formats that match the AE_LP16F/AE_SP16F and AE_LQ32F/AE_SQ32F intrinsics. This instruction is provided mainly for compatibility with HiFi 2.

This is equivalent to AE_MULAS32F48P16S.LL and will be automatically used by the compiler as needed.

Implementation Pipeline

In Out
AE_OVERFLOW Wstage, ae_mul_S2_q0 Wstage, ae_mul_S2_d0 Mstage, ae_mul_S2_d1 Mstage AE_OVERFLOW Wstage, ae_mul_S2_q0 Wstage

Protos that use AE_MULAS32F48P16S.LL_S2

proto AE_MULAFS32P16S.LL_S2 { inout ae_q56s d, in ae_p24x2s d0, in ae_p24x2s d1 }{}{
AE_MULAS32F48P16S.LL_S2 d, d0, d1;
}
proto AE_MULAS32F48P16S.LL_S2 { inout ae_q56s d, in ae_p24x2s d0, in ae_p24x2s d1 }{}{
AE_MULAS32F48P16S.LL_S2 d, d0, d1;
}