| AI Engine-ML v2 Intrinsics User Guide v2025.2

Loading...
Searching...
No Matches
Emulated Multiply-accumulate of Complex 32b x Complex 32b datatypes
Vector Operations » Multiply Accumulate

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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ mac_elem_16_cc()

v16cacc64 mac_elem_16_cc | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1,
|  | v16cacc64 | acc1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ mac_elem_16_cn()

v16cacc64 mac_elem_16_cn | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1,
|  | v16cacc64 | acc1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input
  zero_acc1 | Zeroing mask for acc1
  sub_mask | Negation mask of complex multiplication
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ mac_elem_8()

v8cacc64 mac_elem_8 | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ mac_elem_8_cc()

v8cacc64 mac_elem_8_cc | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ mac_elem_8_cn()

v8cacc64 mac_elem_8_cn | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 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

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation 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

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input
  zero_acc1 | Zeroing mask for acc1
  sub_mask | Negation mask of complex multiplication
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation mask of acc1

Returns
  Result of operation

## ◆ mac_elem_8_nc()

v8cacc64 mac_elem_8_nc | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ msc_elem_16()

v16cacc64 msc_elem_16 | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1,
|  | v16cacc64 | acc1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ msc_elem_16_cc()

v16cacc64 msc_elem_16_cc | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1,
|  | v16cacc64 | acc1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ msc_elem_16_cn()

v16cacc64 msc_elem_16_cn | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1,
|  | v16cacc64 | acc1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input
  zero_acc1 | Zeroing mask for acc1
  sub_mask | Negation mask of complex multiplication
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ msc_elem_8()

v8cacc64 msc_elem_8 | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ msc_elem_8_cc()

v8cacc64 msc_elem_8_cc | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ msc_elem_8_cn()

v8cacc64 msc_elem_8_cn | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 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

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation 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

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input
  zero_acc1 | Zeroing mask for acc1
  sub_mask | Negation mask of complex multiplication
  sub_mul | Negation mask of multiplication result
  sub_acc1 | Negation mask of acc1

Returns
  Result of operation

## ◆ msc_elem_8_nc()

v8cacc64 msc_elem_8_nc | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | v8cacc64 | acc1 )

Parameters

  a | Matrix A
  b | Matrix B
  acc1 | Accumulator 1 input

Returns
  Result of operation

## ◆ mul_elem_16()

v16cacc64 mul_elem_16 | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)

Returns
  Result of operation

## ◆ mul_elem_16_cc()

v16cacc64 mul_elem_16_cc | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)

Returns
  Result of operation

## ◆ mul_elem_16_cn()

v16cacc64 mul_elem_16_cn | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  sub_mul | Negation mask for multiplication result

Returns
  Result of operation

## ◆ mul_elem_16_nc()

v16cacc64 mul_elem_16_nc | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)

Returns
  Result of operation

## ◆ mul_elem_8()

v8cacc64 mul_elem_8 | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ mul_elem_8_cc()

v8cacc64 mul_elem_8_cc | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ mul_elem_8_cn()

v8cacc64 mul_elem_8_cn | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ mul_elem_8_conf()

v8cacc64 mul_elem_8_conf | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | int | sub_mul )

Parameters

  a | Matrix A
  b | Matrix B
  sub_mul | Negation mask for multiplication result

Returns
  Result of operation

## ◆ mul_elem_8_nc()

v8cacc64 mul_elem_8_nc | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ negmul_elem_16()

v16cacc64 negmul_elem_16 | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)

Returns
  Result of operation

## ◆ negmul_elem_16_cc()

v16cacc64 negmul_elem_16_cc | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)

Returns
  Result of operation

## ◆ negmul_elem_16_cn()

v16cacc64 negmul_elem_16_cn | ( | v16cint32 | a,
|  | v8cint32 | b0,
|  | v8cint32 | b1 )

Parameters

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)
  sub_mul | Negation 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

  a | Matrix A
  b0 | Matrix B (first halft)
  b1 | Matrix B (second halft)

Returns
  Result of operation

## ◆ negmul_elem_8()

v8cacc64 negmul_elem_8 | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ negmul_elem_8_cc()

v8cacc64 negmul_elem_8_cc | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ negmul_elem_8_cn()

v8cacc64 negmul_elem_8_cn | ( | v8cint32 | a,
|  | v8cint32 | b )

Parameters

  a | Matrix A
  b | Matrix B

Returns
  Result of operation

## ◆ negmul_elem_8_conf()

v8cacc64 negmul_elem_8_conf | ( | v8cint32 | a,
|  | v8cint32 | b,
|  | int | sub_mul )

Parameters

  a | Matrix A
  b | Matrix B
  sub_mul | Negation 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

  a | Matrix A
  b | Matrix B

Returns
  Result of operation