AI Engine-ML v2 Intrinsics User Guide  v2025.1
Loading...
Searching...
No Matches
Emulated Multiply-accumulate of Complex 32b x Complex 32b datatypes

Matrix multiplications in which matrix A has data elements of complex 32 bit and matrix B has data elements of complex 32 bit. These operations are emulated on top of Multiply-accumulate of 32b x 16b complex integer datatypes and might not have optimal performance. More...

Emulated Multiplication of Channel by channel complex multiplication of (1x1) with (1x1)

v8cacc64 mul_elem_8 (v8cint32 a, v8cint32 b)
 
v8cacc64 negmul_elem_8 (v8cint32 a, v8cint32 b)
 
v8cacc64 mac_elem_8 (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v8cacc64 msc_elem_8 (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v16cacc64 mul_elem_16 (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 negmul_elem_16 (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 mac_elem_16 (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 
v16cacc64 msc_elem_16 (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 

Emulated Multiplication of Channel by channel complex multiplication of (1x1) with (1x1) with dynamic negation of multiplication result

v8cacc64 mul_elem_8_conf (v8cint32 a, v8cint32 b, int sub_mul)
 
v8cacc64 negmul_elem_8_conf (v8cint32 a, v8cint32 b, int sub_mul)
 
v16cacc64 mul_elem_16_conf (v16cint32 a, v8cint32 b0, v8cint32 b1, int sub_mul)
 
v16cacc64 negmul_elem_16_conf (v16cint32 a, v8cint32 b0, v8cint32 b1, int sub_mul)
 

Emulated Multiplication of Channel by channel complex multiplication of (1x1) with (1x1) with dynamic negation of multiplication result, negation of acc1

v8cacc64 mac_elem_8_conf (v8cint32 a, v8cint32 b, v8cacc64 acc1, int sub_mul, int sub_acc1)
 
v8cacc64 msc_elem_8_conf (v8cint32 a, v8cint32 b, v8cacc64 acc1, int sub_mul, int sub_acc1)
 
v16cacc64 mac_elem_16_conf (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1, int sub_mul, int sub_acc1)
 
v16cacc64 msc_elem_16_conf (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1, int sub_mul, int sub_acc1)
 

Emulated Multiplication of Channel by channel complex multiplication of (1x1) with (1x1) with dynamic negation of multiplication result, negation of acc1, and zeroing of acc1

v8cacc64 mac_elem_8_conf (v8cint32 a, v8cint32 b, v8cacc64 acc1, int zero_acc1, int sub_mask, int sub_mul, int sub_acc1)
 
v8cacc64 msc_elem_8_conf (v8cint32 a, v8cint32 b, v8cacc64 acc1, int zero_acc1, int sub_mask, int sub_mul, int sub_acc1)
 
v16cacc64 mac_elem_16_conf (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1, int zero_acc1, int sub_mask, int sub_mul, int sub_acc1)
 
v16cacc64 msc_elem_16_conf (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1, int zero_acc1, int sub_mask, int sub_mul, int sub_acc1)
 

Emulated Multiplication of Channel by channel complex multiplication of (1x2) with (2x1) with a & b conjugate

v8cacc64 mul_elem_8_cc (v8cint32 a, v8cint32 b)
 
v8cacc64 negmul_elem_8_cc (v8cint32 a, v8cint32 b)
 
v8cacc64 mac_elem_8_cc (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v8cacc64 msc_elem_8_cc (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v8cacc64 mul_elem_8_cn (v8cint32 a, v8cint32 b)
 
v8cacc64 negmul_elem_8_cn (v8cint32 a, v8cint32 b)
 
v8cacc64 mac_elem_8_cn (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v8cacc64 msc_elem_8_cn (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v8cacc64 mul_elem_8_nc (v8cint32 a, v8cint32 b)
 
v8cacc64 negmul_elem_8_nc (v8cint32 a, v8cint32 b)
 
v8cacc64 mac_elem_8_nc (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v8cacc64 msc_elem_8_nc (v8cint32 a, v8cint32 b, v8cacc64 acc1)
 
v16cacc64 mul_elem_16_cc (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 negmul_elem_16_cc (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 mac_elem_16_cc (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 
v16cacc64 msc_elem_16_cc (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 
v16cacc64 mul_elem_16_cn (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 negmul_elem_16_cn (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 mac_elem_16_cn (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 
v16cacc64 msc_elem_16_cn (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 
v16cacc64 mul_elem_16_nc (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 negmul_elem_16_nc (v16cint32 a, v8cint32 b0, v8cint32 b1)
 
v16cacc64 mac_elem_16_nc (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 
v16cacc64 msc_elem_16_nc (v16cint32 a, v8cint32 b0, v8cint32 b1, v16cacc64 acc1)
 

Detailed Description

Matrix multiplications in which matrix A has data elements of complex 32 bit and matrix B has data elements of complex 32 bit. These operations are emulated on top of Multiply-accumulate of 32b x 16b complex integer datatypes and might not have optimal performance.

For an explanation how these operations works see Multiply Accumulate.

Function Documentation

◆ mac_elem_16()

v16cacc64 mac_elem_16 ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_16_cc()

v16cacc64 mac_elem_16_cc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_16_cn()

v16cacc64 mac_elem_16_cn ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_16_conf() [1/2]

v16cacc64 mac_elem_16_conf ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ mac_elem_16_conf() [2/2]

v16cacc64 mac_elem_16_conf ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1,
int zero_acc1,
int sub_mask,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
zero_acc1Zeroing mask for acc1
sub_maskNegation mask of complex multiplication
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ mac_elem_16_nc()

v16cacc64 mac_elem_16_nc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_8()

v8cacc64 mac_elem_8 ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_8_cc()

v8cacc64 mac_elem_8_cc ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_8_cn()

v8cacc64 mac_elem_8_cn ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ mac_elem_8_conf() [1/2]

v8cacc64 mac_elem_8_conf ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ mac_elem_8_conf() [2/2]

v8cacc64 mac_elem_8_conf ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1,
int zero_acc1,
int sub_mask,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
zero_acc1Zeroing mask for acc1
sub_maskNegation mask of complex multiplication
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ mac_elem_8_nc()

v8cacc64 mac_elem_8_nc ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_16()

v16cacc64 msc_elem_16 ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_16_cc()

v16cacc64 msc_elem_16_cc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_16_cn()

v16cacc64 msc_elem_16_cn ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_16_conf() [1/2]

v16cacc64 msc_elem_16_conf ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ msc_elem_16_conf() [2/2]

v16cacc64 msc_elem_16_conf ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1,
int zero_acc1,
int sub_mask,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
zero_acc1Zeroing mask for acc1
sub_maskNegation mask of complex multiplication
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ msc_elem_16_nc()

v16cacc64 msc_elem_16_nc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
v16cacc64 acc1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_8()

v8cacc64 msc_elem_8 ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_8_cc()

v8cacc64 msc_elem_8_cc ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_8_cn()

v8cacc64 msc_elem_8_cn ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ msc_elem_8_conf() [1/2]

v8cacc64 msc_elem_8_conf ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ msc_elem_8_conf() [2/2]

v8cacc64 msc_elem_8_conf ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1,
int zero_acc1,
int sub_mask,
int sub_mul,
int sub_acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
zero_acc1Zeroing mask for acc1
sub_maskNegation mask of complex multiplication
sub_mulNegation mask of multiplication result
sub_acc1Negation mask of acc1
Returns
Result of operation

◆ msc_elem_8_nc()

v8cacc64 msc_elem_8_nc ( v8cint32 a,
v8cint32 b,
v8cacc64 acc1 )
Parameters
aMatrix A
bMatrix B
acc1Accumulator 1 input
Returns
Result of operation

◆ mul_elem_16()

v16cacc64 mul_elem_16 ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ mul_elem_16_cc()

v16cacc64 mul_elem_16_cc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ mul_elem_16_cn()

v16cacc64 mul_elem_16_cn ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ mul_elem_16_conf()

v16cacc64 mul_elem_16_conf ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
int sub_mul )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
sub_mulNegation mask for multiplication result
Returns
Result of operation

◆ mul_elem_16_nc()

v16cacc64 mul_elem_16_nc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ mul_elem_8()

v8cacc64 mul_elem_8 ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ mul_elem_8_cc()

v8cacc64 mul_elem_8_cc ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ mul_elem_8_cn()

v8cacc64 mul_elem_8_cn ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ mul_elem_8_conf()

v8cacc64 mul_elem_8_conf ( v8cint32 a,
v8cint32 b,
int sub_mul )
Parameters
aMatrix A
bMatrix B
sub_mulNegation mask for multiplication result
Returns
Result of operation

◆ mul_elem_8_nc()

v8cacc64 mul_elem_8_nc ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ negmul_elem_16()

v16cacc64 negmul_elem_16 ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ negmul_elem_16_cc()

v16cacc64 negmul_elem_16_cc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ negmul_elem_16_cn()

v16cacc64 negmul_elem_16_cn ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ negmul_elem_16_conf()

v16cacc64 negmul_elem_16_conf ( v16cint32 a,
v8cint32 b0,
v8cint32 b1,
int sub_mul )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
sub_mulNegation mask for multiplication result. If a bit of sub_mul is set the corresponding vector lane of the output accumulator will be negated.
Returns
Result of operation

◆ negmul_elem_16_nc()

v16cacc64 negmul_elem_16_nc ( v16cint32 a,
v8cint32 b0,
v8cint32 b1 )
Parameters
aMatrix A
b0Matrix B (first halft)
b1Matrix B (second halft)
Returns
Result of operation

◆ negmul_elem_8()

v8cacc64 negmul_elem_8 ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ negmul_elem_8_cc()

v8cacc64 negmul_elem_8_cc ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ negmul_elem_8_cn()

v8cacc64 negmul_elem_8_cn ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation

◆ negmul_elem_8_conf()

v8cacc64 negmul_elem_8_conf ( v8cint32 a,
v8cint32 b,
int sub_mul )
Parameters
aMatrix A
bMatrix B
sub_mulNegation mask for multiplication result. If a bit of sub_mul is set the corresponding vector lane of the output accumulator will be negated.
Returns
Result of operation

◆ negmul_elem_8_nc()

v8cacc64 negmul_elem_8_nc ( v8cint32 a,
v8cint32 b )
Parameters
aMatrix A
bMatrix B
Returns
Result of operation