AI Engine-ML Intrinsics User Guide  (v2023.2)
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...

Overview

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.

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)
 

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)
 

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)
 

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)
 

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)
 

Function Documentation

◆ 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_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_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_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