| AI Engine-ML Intrinsics User Guide (v2025.2)

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

## 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

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