| AI Engine Intrinsics User Guide (AIE) v2025.2

Loading...
Searching...
No Matches
Functions
32 bit Real x 16 bit Real
Intrinsics » Vector Operations » MAC intrinsics » Multiplication » Advanced » Integer » Vector MAC » 32 bit x 16 bit

## Overview

Vector MAC intrinsics with 32 bit real by 16 bit real

## Functions
v8acc80 | lmac8 (v8acc80 acc, v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-accumulate intrinsic function using small X input buffer.
v8acc80 | lmac8 (v8acc80 acc, v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-accumulate intrinsic function .
v8acc80 | lmsc8 (v8acc80 acc, v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-subtract intrinsic function using small X input buffer.
v8acc80 | lmsc8 (v8acc80 acc, v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-subtract intrinsic function .
v8acc80 | lmul8 (v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply intrinsic function using small X input buffer.
v8acc80 | lmul8 (v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply intrinsic function .
v8acc80 | lnegmul8 (v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-negate intrinsic function using small X input buffer.
v8acc80 | lnegmul8 (v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-negate intrinsic function .
v16acc48 | mac16 (v16acc48 acc, v16int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply-accumulate intrinsic function using small X input buffer.
v16acc48 | mac16 (v16acc48 acc, v32int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply-accumulate intrinsic function .
v8acc48 | mac8 (v8acc48 acc, v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-accumulate intrinsic function using small X input buffer.
v8acc48 | mac8 (v8acc48 acc, v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-accumulate intrinsic function .
v16acc48 | msc16 (v16acc48 acc, v16int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply-subtract intrinsic function using small X input buffer.
v16acc48 | msc16 (v16acc48 acc, v32int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply-subtract intrinsic function .
v8acc48 | msc8 (v8acc48 acc, v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-subtract intrinsic function using small X input buffer.
v8acc48 | msc8 (v8acc48 acc, v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-subtract intrinsic function .
v16acc48 | mul16 (v16int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply intrinsic function using small X input buffer.
v16acc48 | mul16 (v32int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply intrinsic function .
v8acc48 | mul8 (v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply intrinsic function using small X input buffer.
v8acc48 | mul8 (v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply intrinsic function .
v16acc48 | negmul16 (v16int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply-negate intrinsic function using small X input buffer.
v16acc48 | negmul16 (v32int32 xbuff, int xstart, unsigned int xoffsets, unsigned int xoffsets_hi, v16int16 zbuff, int zstart, unsigned int zoffsets, unsigned int zoffsets_hi)
| Multiply-negate intrinsic function .
v8acc48 | negmul8 (v16int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-negate intrinsic function using small X input buffer.
v8acc48 | negmul8 (v32int32 xbuff, int xstart, unsigned int xoffsets, int xstep, v16int16 zbuff, int zstart, unsigned int zoffsets, int zstep)
| Multiply-negate intrinsic function .

## Function Documentation

## ◆ lmac8() [1/2]

v8acc80 lmac8 | ( | v8acc80 | acc,
|  | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-accumulate intrinsic function using small X input buffer.

acc0 += z00*x00 + z01*x01
acc1 += z10*x10 + z11*x11
acc2 += z20*x20 + z21*x21
acc3 += z30*x30 + z31*x31
acc4 += z40*x40 + z41*x41
acc5 += z50*x50 + z51*x51
acc6 += z60*x60 + z61*x61
acc7 += z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int80 lanes)
  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lmac8() [2/2]

v8acc80 lmac8 | ( | v8acc80 | acc,
|  | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-accumulate intrinsic function .

acc0 += z00*x00 + z01*x01
acc1 += z10*x10 + z11*x11
acc2 += z20*x20 + z21*x21
acc3 += z30*x30 + z31*x31
acc4 += z40*x40 + z41*x41
acc5 += z50*x50 + z51*x51
acc6 += z60*x60 + z61*x61
acc7 += z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int80 lanes)
  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lmsc8() [1/2]

v8acc80 lmsc8 | ( | v8acc80 | acc,
|  | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-subtract intrinsic function using small X input buffer.

acc0 -= z00*x00 + z01*x01
acc1 -= z10*x10 + z11*x11
acc2 -= z20*x20 + z21*x21
acc3 -= z30*x30 + z31*x31
acc4 -= z40*x40 + z41*x41
acc5 -= z50*x50 + z51*x51
acc6 -= z60*x60 + z61*x61
acc7 -= z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int80 lanes)
  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lmsc8() [2/2]

v8acc80 lmsc8 | ( | v8acc80 | acc,
|  | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-subtract intrinsic function .

acc0 -= z00*x00 + z01*x01
acc1 -= z10*x10 + z11*x11
acc2 -= z20*x20 + z21*x21
acc3 -= z30*x30 + z31*x31
acc4 -= z40*x40 + z41*x41
acc5 -= z50*x50 + z51*x51
acc6 -= z60*x60 + z61*x61
acc7 -= z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int80 lanes)
  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lmul8() [1/2]

v8acc80 lmul8 | ( | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply intrinsic function using small X input buffer.

acc0 = z00*x00 + z01*x01
acc1 = z10*x10 + z11*x11
acc2 = z20*x20 + z21*x21
acc3 = z30*x30 + z31*x31
acc4 = z40*x40 + z41*x41
acc5 = z50*x50 + z51*x51
acc6 = z60*x60 + z61*x61
acc7 = z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lmul8() [2/2]

v8acc80 lmul8 | ( | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply intrinsic function .

acc0 = z00*x00 + z01*x01
acc1 = z10*x10 + z11*x11
acc2 = z20*x20 + z21*x21
acc3 = z30*x30 + z31*x31
acc4 = z40*x40 + z41*x41
acc5 = z50*x50 + z51*x51
acc6 = z60*x60 + z61*x61
acc7 = z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lnegmul8() [1/2]

v8acc80 lnegmul8 | ( | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-negate intrinsic function using small X input buffer.

acc0 = -( z00*x00 + z01*x01 )
acc1 = -( z10*x10 + z11*x11 )
acc2 = -( z20*x20 + z21*x21 )
acc3 = -( z30*x30 + z31*x31 )
acc4 = -( z40*x40 + z41*x41 )
acc5 = -( z50*x50 + z51*x51 )
acc6 = -( z60*x60 + z61*x61 )
acc7 = -( z70*x70 + z71*x71 )

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ lnegmul8() [2/2]

v8acc80 lnegmul8 | ( | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-negate intrinsic function .

acc0 = -( z00*x00 + z01*x01 )
acc1 = -( z10*x10 + z11*x11 )
acc2 = -( z20*x20 + z21*x21 )
acc3 = -( z30*x30 + z31*x31 )
acc4 = -( z40*x40 + z41*x41 )
acc5 = -( z50*x50 + z51*x51 )
acc6 = -( z60*x60 + z61*x61 )
acc7 = -( z70*x70 + z71*x71 )

Returns
  Returned accumulation vector (8 x int80 lanes)

Parameters

  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mac16() [1/2]

v16acc48 mac16 | ( | v16acc48 | acc,
|  | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply-accumulate intrinsic function using small X input buffer.

acc0 += z00*x00
acc1 += z10*x10
acc2 += z20*x20
acc3 += z30*x30
acc4 += z40*x40
acc5 += z50*x50
acc6 += z60*x60
acc7 += z70*x70
acc8 += z80*x80
acc9 += z90*x90
acc10 += z100*x100
acc11 += z110*x110
acc12 += z120*x120
acc13 += z130*x130
acc14 += z140*x140
acc15 += z150*x150

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (16 x int48 lanes)
  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mac16() [2/2]

v16acc48 mac16 | ( | v16acc48 | acc,
|  | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply-accumulate intrinsic function .

acc0 += z00*x00
acc1 += z10*x10
acc2 += z20*x20
acc3 += z30*x30
acc4 += z40*x40
acc5 += z50*x50
acc6 += z60*x60
acc7 += z70*x70
acc8 += z80*x80
acc9 += z90*x90
acc10 += z100*x100
acc11 += z110*x110
acc12 += z120*x120
acc13 += z130*x130
acc14 += z140*x140
acc15 += z150*x150

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (16 x int48 lanes)
  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mac8() [1/2]

v8acc48 mac8 | ( | v8acc48 | acc,
|  | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-accumulate intrinsic function using small X input buffer.

acc0 += z00*x00 + z01*x01
acc1 += z10*x10 + z11*x11
acc2 += z20*x20 + z21*x21
acc3 += z30*x30 + z31*x31
acc4 += z40*x40 + z41*x41
acc5 += z50*x50 + z51*x51
acc6 += z60*x60 + z61*x61
acc7 += z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int48 lanes)
  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mac8() [2/2]

v8acc48 mac8 | ( | v8acc48 | acc,
|  | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-accumulate intrinsic function .

acc0 += z00*x00 + z01*x01
acc1 += z10*x10 + z11*x11
acc2 += z20*x20 + z21*x21
acc3 += z30*x30 + z31*x31
acc4 += z40*x40 + z41*x41
acc5 += z50*x50 + z51*x51
acc6 += z60*x60 + z61*x61
acc7 += z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int48 lanes)
  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ msc16() [1/2]

v16acc48 msc16 | ( | v16acc48 | acc,
|  | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply-subtract intrinsic function using small X input buffer.

acc0 -= z00*x00
acc1 -= z10*x10
acc2 -= z20*x20
acc3 -= z30*x30
acc4 -= z40*x40
acc5 -= z50*x50
acc6 -= z60*x60
acc7 -= z70*x70
acc8 -= z80*x80
acc9 -= z90*x90
acc10 -= z100*x100
acc11 -= z110*x110
acc12 -= z120*x120
acc13 -= z130*x130
acc14 -= z140*x140
acc15 -= z150*x150

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (16 x int48 lanes)
  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ msc16() [2/2]

v16acc48 msc16 | ( | v16acc48 | acc,
|  | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply-subtract intrinsic function .

acc0 -= z00*x00
acc1 -= z10*x10
acc2 -= z20*x20
acc3 -= z30*x30
acc4 -= z40*x40
acc5 -= z50*x50
acc6 -= z60*x60
acc7 -= z70*x70
acc8 -= z80*x80
acc9 -= z90*x90
acc10 -= z100*x100
acc11 -= z110*x110
acc12 -= z120*x120
acc13 -= z130*x130
acc14 -= z140*x140
acc15 -= z150*x150

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (16 x int48 lanes)
  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ msc8() [1/2]

v8acc48 msc8 | ( | v8acc48 | acc,
|  | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-subtract intrinsic function using small X input buffer.

acc0 -= z00*x00 + z01*x01
acc1 -= z10*x10 + z11*x11
acc2 -= z20*x20 + z21*x21
acc3 -= z30*x30 + z31*x31
acc4 -= z40*x40 + z41*x41
acc5 -= z50*x50 + z51*x51
acc6 -= z60*x60 + z61*x61
acc7 -= z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int48 lanes)
  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ msc8() [2/2]

v8acc48 msc8 | ( | v8acc48 | acc,
|  | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-subtract intrinsic function .

acc0 -= z00*x00 + z01*x01
acc1 -= z10*x10 + z11*x11
acc2 -= z20*x20 + z21*x21
acc3 -= z30*x30 + z31*x31
acc4 -= z40*x40 + z41*x41
acc5 -= z50*x50 + z51*x51
acc6 -= z60*x60 + z61*x61
acc7 -= z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  acc | Incoming accumulation vector (8 x int48 lanes)
  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mul16() [1/2]

v16acc48 mul16 | ( | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply intrinsic function using small X input buffer.

acc0 = z00*x00
acc1 = z10*x10
acc2 = z20*x20
acc3 = z30*x30
acc4 = z40*x40
acc5 = z50*x50
acc6 = z60*x60
acc7 = z70*x70
acc8 = z80*x80
acc9 = z90*x90
acc10 = z100*x100
acc11 = z110*x110
acc12 = z120*x120
acc13 = z130*x130
acc14 = z140*x140
acc15 = z150*x150

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mul16() [2/2]

v16acc48 mul16 | ( | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply intrinsic function .

acc0 = z00*x00
acc1 = z10*x10
acc2 = z20*x20
acc3 = z30*x30
acc4 = z40*x40
acc5 = z50*x50
acc6 = z60*x60
acc7 = z70*x70
acc8 = z80*x80
acc9 = z90*x90
acc10 = z100*x100
acc11 = z110*x110
acc12 = z120*x120
acc13 = z130*x130
acc14 = z140*x140
acc15 = z150*x150

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mul8() [1/2]

v8acc48 mul8 | ( | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply intrinsic function using small X input buffer.

acc0 = z00*x00 + z01*x01
acc1 = z10*x10 + z11*x11
acc2 = z20*x20 + z21*x21
acc3 = z30*x30 + z31*x31
acc4 = z40*x40 + z41*x41
acc5 = z50*x50 + z51*x51
acc6 = z60*x60 + z61*x61
acc7 = z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ mul8() [2/2]

v8acc48 mul8 | ( | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply intrinsic function .

acc0 = z00*x00 + z01*x01
acc1 = z10*x10 + z11*x11
acc2 = z20*x20 + z21*x21
acc3 = z30*x30 + z31*x31
acc4 = z40*x40 + z41*x41
acc5 = z50*x50 + z51*x51
acc6 = z60*x60 + z61*x61
acc7 = z70*x70 + z71*x71

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ negmul16() [1/2]

v16acc48 negmul16 | ( | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply-negate intrinsic function using small X input buffer.

acc0 = -( z00*x00 )
acc1 = -( z10*x10 )
acc2 = -( z20*x20 )
acc3 = -( z30*x30 )
acc4 = -( z40*x40 )
acc5 = -( z50*x50 )
acc6 = -( z60*x60 )
acc7 = -( z70*x70 )
acc8 = -( z80*x80 )
acc9 = -( z90*x90 )
acc10 = -( z100*x100 )
acc11 = -( z110*x110 )
acc12 = -( z120*x120 )
acc13 = -( z130*x130 )
acc14 = -( z140*x140 )
acc15 = -( z150*x150 )

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ negmul16() [2/2]

v16acc48 negmul16 | ( | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | unsigned int | xoffsets_hi,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | unsigned int | zoffsets_hi
| ) |  |

Multiply-negate intrinsic function .

acc0 = -( z00*x00 )
acc1 = -( z10*x10 )
acc2 = -( z20*x20 )
acc3 = -( z30*x30 )
acc4 = -( z40*x40 )
acc5 = -( z50*x50 )
acc6 = -( z60*x60 )
acc7 = -( z70*x70 )
acc8 = -( z80*x80 )
acc9 = -( z90*x90 )
acc10 = -( z100*x100 )
acc11 = -( z110*x110 )
acc12 = -( z120*x120 )
acc13 = -( z130*x130 )
acc14 = -( z140*x140 )
acc15 = -( z150*x150 )

Returns
  Returned accumulation vector (16 x int48 lanes)

Parameters

  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane. LSB apply to first lane
  xoffsets_hi | 4b offset for each lane. LSB apply to 8th lane
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zoffsets_hi | 4b offset for each lane, applied to input from Z buffer. LSB apply to 8th lane

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ negmul8() [1/2]

v8acc48 negmul8 | ( | v16int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-negate intrinsic function using small X input buffer.

acc0 = -( z00*x00 + z01*x01 )
acc1 = -( z10*x10 + z11*x11 )
acc2 = -( z20*x20 + z21*x21 )
acc3 = -( z30*x30 + z31*x31 )
acc4 = -( z40*x40 + z41*x41 )
acc5 = -( z50*x50 + z51*x51 )
acc6 = -( z60*x60 + z61*x61 )
acc7 = -( z70*x70 + z71*x71 )

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  xbuff | Input buffer of 16 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.

## ◆ negmul8() [2/2]

v8acc48 negmul8 | ( | v32int32 | xbuff,
|  | int | xstart,
|  | unsigned int | xoffsets,
|  | int | xstep,
|  | v16int16 | zbuff,
|  | int | zstart,
|  | unsigned int | zoffsets,
|  | int | zstep
| ) |  |

Multiply-negate intrinsic function .

acc0 = -( z00*x00 + z01*x01 )
acc1 = -( z10*x10 + z11*x11 )
acc2 = -( z20*x20 + z21*x21 )
acc3 = -( z30*x30 + z31*x31 )
acc4 = -( z40*x40 + z41*x41 )
acc5 = -( z50*x50 + z51*x51 )
acc6 = -( z60*x60 + z61*x61 )
acc7 = -( z70*x70 + z71*x71 )

Returns
  Returned accumulation vector (8 x int48 lanes)

Parameters

  xbuff | Input buffer of 32 elements of type int32
  xstart | Starting position offset applied to all lanes of input from X buffer.
  xoffsets | 4b offset for each lane, applied to the x buffer. LSB apply to first lane
  xstep | Step between each column for selection in the xbuffer.
  zbuff | Input buffer of 16 elements of type int16
  zstart | Starting position offset applied to all lanes for input from Z buffer. This must be a compile time constant. Only the 4 LSB of the argument are used.
  zoffsets | 4b offset for each lane, applied to input from Z buffer. LSB apply to first lane
  zstep | Step between each column for selection in the zbuffer.

Note
  - For more information on how data selection works from the buffers go here. The data buffer and coefficient buffer in this intrinsic use the general scheme.
  - Parameter 'zstart' must be a compile time constant.