Skip to content

Vector Dot Product Kernels

Module: Basic Math Functions / Vector Absolute Value

More...

Functions

Name
void plp_abs_i16s_rv32im(const int16_t * pSrc, int16_t * pDst, uint32_t blockSize)
Element-by-element absolute value of 16-bit integer vectors kernel for RV32IM extension.
void plp_abs_i16s_xpulpv2(const int16_t * pSrc, int16_t * pDst, uint32_t blockSize)
Element-by-element absolute value of 16-bit integer vectors kernel for XPULPV2 extension.
void plp_abs_i32s_rv32im(const int32_t * pSrc, int32_t * pDst, uint32_t blockSize)
Element-by-element absolute value of 32-bit integer vectors kernel for RV32IM extension.
void plp_abs_i32s_xpulpv2(const int32_t * pSrc, int32_t * pDst, uint32_t blockSize)
Element-by-element absolute value of 32-bit integer vectors kernel for XPULPV2 extension.
void plp_abs_i8s_rv32im(const int8_t * pSrc, int8_t * pDst, uint32_t blockSize)
Element-by-element absolute value of 8-bit integer vectors kernel for RV32IM extension.
void plp_abs_i8s_xpulpv2(const int8_t * pSrc, int8_t * pDst, uint32_t blockSize)
Element-by-element absolute value of 8-bit integer vectors kernel for XPULPV2 extension.

Detailed Description

The Vector Absolute Value computes the absolute value of a vector on an element-by-element basis. The vectors are multiplied element-by-element and then summed. pDst[n] = __builtin_abs(pSrc[n]), 0 <= n < blockSize. There are separate functions for floating point, integer, and fixed point 32- 16- 8-bit data types. For lower precision integers (16- and 8-bit), functions exploiting SIMD instructions are provided.

The naming scheme of the functions follows the following pattern (for example plp_dot_prod_i32s): _ _ _ , with

data type = {f, i, q} respectively for floats, integers, fixed points

precision = {32, 16, 8} bits

method = {s, p} respectively meaning single core or parallel multicore implementation.

isa extension = rv32im, xpulpv2, etc. of which rv32im is the most general one.

Functions Documentation

function plp_abs_i16s_rv32im

void plp_abs_i16s_rv32im(
    const int16_t * pSrc,
    int16_t * pDst,
    uint32_t blockSize
)

Element-by-element absolute value of 16-bit integer vectors kernel for RV32IM extension.

Parameters:

  • pSrc points to the input vector
  • pDst points to the output vector
  • blockSize number of samples in each vector

Return: none

function plp_abs_i16s_xpulpv2

void plp_abs_i16s_xpulpv2(
    const int16_t * pSrc,
    int16_t * pDst,
    uint32_t blockSize
)

Element-by-element absolute value of 16-bit integer vectors kernel for XPULPV2 extension.

Parameters:

  • pSrc points to the input vector
  • pDst points to the output vector
  • blockSize number of samples in each vector

Return: none

function plp_abs_i32s_rv32im

void plp_abs_i32s_rv32im(
    const int32_t * pSrc,
    int32_t * pDst,
    uint32_t blockSize
)

Element-by-element absolute value of 32-bit integer vectors kernel for RV32IM extension.

Parameters:

  • pSrc points to the input vector
  • pDst points to the output vector
  • blockSize number of samples in each vector

Return: none

function plp_abs_i32s_xpulpv2

void plp_abs_i32s_xpulpv2(
    const int32_t * pSrc,
    int32_t * pDst,
    uint32_t blockSize
)

Element-by-element absolute value of 32-bit integer vectors kernel for XPULPV2 extension.

Parameters:

  • pSrc points to the input vector
  • pDst points to the output vector
  • blockSize number of samples in each vector

Return: none

function plp_abs_i8s_rv32im

void plp_abs_i8s_rv32im(
    const int8_t * pSrc,
    int8_t * pDst,
    uint32_t blockSize
)

Element-by-element absolute value of 8-bit integer vectors kernel for RV32IM extension.

Parameters:

  • pSrc points to the input vector
  • pDst points to the output vector
  • blockSize number of samples in each vector

Return: none

function plp_abs_i8s_xpulpv2

void plp_abs_i8s_xpulpv2(
    const int8_t * pSrc,
    int8_t * pDst,
    uint32_t blockSize
)

Element-by-element absolute value of 8-bit integer vectors kernel for XPULPV2 extension.

Parameters:

  • pSrc points to the input vector
  • pDst points to the output vector
  • blockSize number of samples in each vector

Return: none


Updated on 2023-03-01 at 16:16:32 +0000