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

Loading...
Searching...
No Matches
Moves between Scalar and Vector Unit
Intrinsics » Vector Conversions

These intrinsics allow inserting or extracting of an individual element into/from a vector. More...

## Overview

These intrinsics allow inserting or extracting of an individual element into/from a vector.

Inserting can be done either by pushing in a new value at one end of the vector and shifting or replacing a specific element.

Note
  An int is converted to a int16 by taking the 16 LSB.
  An int is converted to a cint16 by using the 16 LSB as the real part and the 16 MSB as the imaginary part.
  There is no int8/uint8 support for these intrincs.

## Update element in a vector with a value
v64int16 | upd_elem (v64int16 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v32int16 | upd_elem (v32int16 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v16int16 | upd_elem (v16int16 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v8int16 | upd_elem (v8int16 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v32int32 | upd_elem (v32int32 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v16int32 | upd_elem (v16int32 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v8int32 | upd_elem (v8int32 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v4int32 | upd_elem (v4int32 a, unsigned idx, int b)
| Update element determined by idx in vector a by value b.
v32cint16 | upd_elem (v32cint16 a, unsigned idx, cint16 b)
| Update element determined by idx in vector a by value b.
v16cint16 | upd_elem (v16cint16 a, unsigned idx, cint16 b)
| Update element determined by idx in vector a by value b.
v8cint16 | upd_elem (v8cint16 a, unsigned idx, cint16 b)
| Update element determined by idx in vector a by value b.
v4cint16 | upd_elem (v4cint16 a, unsigned idx, cint16 b)
| Update element determined by idx in vector a by value b.
v32float | upd_elem (v32float a, unsigned idx, float b)
| Update element determined by idx in vector a by value b.
v16float | upd_elem (v16float a, unsigned idx, float b)
| Update element determined by idx in vector a by value b.
v8float | upd_elem (v8float a, unsigned idx, float b)
| Update element determined by idx in vector a by value b.
v4float | upd_elem (v4float a, unsigned idx, float b)
| Update element determined by idx in vector a by value b.

## Update elements in a vector with two 32 bit values
v32int32 | upd_elem (v32int32 a, unsigned idx, int b0, int b1)
| Update elements determined by idx in vector a by values b0 and b1.
v16int32 | upd_elem (v16int32 a, unsigned idx, int b0, int b1)
| Update elements determined by idx in vector a by values b0 and b1.
v8int32 | upd_elem (v8int32 a, unsigned idx, int b0, int b1)
| Update elements determined by idx in vector a by values b0 and b1.
v4int32 | upd_elem (v4int32 a, unsigned idx, int b0, int b1)
| Update elements determined by idx in vector a by values b0 and b1.
v32cint16 | upd_elem (v32cint16 a, unsigned idx, cint16 b0, cint16 b1)
| Update elements determined by idx in vector a by values b0 and b1.
v16cint16 | upd_elem (v16cint16 a, unsigned idx, cint16 b0, cint16 b1)
| Update elements determined by idx in vector a by values b0 and b1.
v8cint16 | upd_elem (v8cint16 a, unsigned idx, cint16 b0, cint16 b1)
| Update elements determined by idx in vector a by values b0 and b1.
v4cint16 | upd_elem (v4cint16 a, unsigned idx, cint16 b0, cint16 b1)
| Update elements determined by idx in vector a by values b0 and b1.
v32float | upd_elem (v32float a, unsigned idx, float b0, float b1)
| Update elements determined by idx in vector a by values b0 and b1.
v16float | upd_elem (v16float a, unsigned idx, float b0, float b1)
| Update elements determined by idx in vector a by values b0 and b1.
v8float | upd_elem (v8float a, unsigned idx, float b0, float b1)
| Update elements determined by idx in vector a by values b0 and b1.
v4float | upd_elem (v4float a, unsigned idx, float b0, float b1)
| Update elements determined by idx in vector a by values b0 and b1.

## Update element in a vector with a complex 32-bit value
v16cint32 | upd_elem (v16cint32 a, unsigned idx, cint32 b)
| Update element determined by idx in vector a by value b.
v8cint32 | upd_elem (v8cint32 a, unsigned idx, cint32 b)
| Update element determined by idx in vector a by value b.
v4cint32 | upd_elem (v4cint32 a, unsigned idx, cint32 b)
| Update element determined by idx in vector a by value b.
v2cint32 | upd_elem (v2cint32 a, unsigned idx, cint32 b)
| Update element determined by idx in vector a by value b.
v16cfloat | upd_elem (v16cfloat a, unsigned idx, cfloat b)
| Update element determined by idx in vector a by value b.
v8cfloat | upd_elem (v8cfloat a, unsigned idx, cfloat b)
| Update element determined by idx in vector a by value b.
v4cfloat | upd_elem (v4cfloat a, unsigned idx, cfloat b)
| Update element determined by idx in vector a by value b.
v2cfloat | upd_elem (v2cfloat a, unsigned idx, cfloat b)
| Update element determined by idx in vector a by value b.

## Extract an element from a vector
int | ext_elem (v64int16 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v32int16 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v16int16 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v8int16 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v32int32 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v16int32 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v8int32 a, unsigned idx)
| Extract element determined by idx from vector a.
int | ext_elem (v4int32 a, unsigned idx)
| Extract element determined by idx from vector a.
cint16 | ext_elem (v32cint16 a, unsigned idx)
| Extract element determined by idx from vector a.
cint16 | ext_elem (v16cint16 a, unsigned idx)
| Extract element determined by idx from vector a.
cint16 | ext_elem (v8cint16 a, unsigned idx)
| Extract element determined by idx from vector a.
cint16 | ext_elem (v4cint16 a, unsigned idx)
| Extract element determined by idx from vector a.
cint32 | ext_elem (v16cint32 a, unsigned idx)
| Extract element determined by idx from vector a.
cint32 | ext_elem (v8cint32 a, unsigned idx)
| Extract element determined by idx from vector a.
cint32 | ext_elem (v4cint32 a, unsigned idx)
| Extract element determined by idx from vector a.
cint32 | ext_elem (v2cint32 a, unsigned idx)
| Extract element determined by idx from vector a.
float | ext_elem (v32float a, unsigned idx)
| Extract element determined by idx from vector a.
float | ext_elem (v16float a, unsigned idx)
| Extract element determined by idx from vector a.
float | ext_elem (v8float a, unsigned idx)
| Extract element determined by idx from vector a.
float | ext_elem (v4float a, unsigned idx)
| Extract element determined by idx from vector a.
cfloat | ext_elem (v16cfloat a, unsigned idx)
| Extract element determined by idx from vector a.
cfloat | ext_elem (v8cfloat a, unsigned idx)
| Extract element determined by idx from vector a.
cfloat | ext_elem (v4cfloat a, unsigned idx)
| Extract element determined by idx from vector a.
cfloat | ext_elem (v2cfloat a, unsigned idx)
| Extract element determined by idx from vector a.

## Extract a 20 bit element from a vector
addr_t | ext_addr (v32int32 a, unsigned idx)
| Extract element determined by idx from vector a.
addr_t | ext_addr (v16int32 a, unsigned idx)
| Extract element determined by idx from vector a.
addr_t | ext_addr (v8int32 a, unsigned idx)
| Extract element determined by idx from vector a.
addr_t | ext_addr (v4int32 a, unsigned idx)
| Extract element determined by idx from vector a.

## Extract two 20 bit elements from a vector
void | ext_addr (v32int32 a, unsigned idx, addr_t &b0, addr_t &b1)
| Extract element determined by idx from vector a.
void | ext_addr (v16int32 a, unsigned idx, addr_t &b0, addr_t &b1)
| Extract element determined by idx from vector a.
void | ext_addr (v8int32 a, unsigned idx, addr_t &b0, addr_t &b1)
| Extract element determined by idx from vector a.
void | ext_addr (v4int32 a, unsigned idx, addr_t &b0, addr_t &b1)
| Extract element determined by idx from vector a.

## Shift elements into a vector
v8int16 | shft_elem (v8int16 vec, int n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v4cint16 | shft_elem (v4cint16 vec, cint16 n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v4int32 | shft_elem (v4int32 vec, int n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v4float | shft_elem (v4float vec, float n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v2cint32 | shft_elem (v2cint32 vec, cint32 n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v2cfloat | shft_elem (v2cfloat vec, cfloat n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v16int16 | shft_elem (v16int16 vec, int n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v8cint16 | shft_elem (v8cint16 vec, cint16 n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v8int32 | shft_elem (v8int32 vec, int n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v8float | shft_elem (v8float vec, float n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v4cint32 | shft_elem (v4cint32 vec, cint32 n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v4cfloat | shft_elem (v4cfloat vec, cfloat n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v32int16 | shft_elem (v32int16 vec, int n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v16cint16 | shft_elem (v16cint16 vec, cint16 n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v16int32 | shft_elem (v16int32 vec, int n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v16float | shft_elem (v16float vec, float n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v8cint32 | shft_elem (v8cint32 vec, cint32 n)
| Insert a new element at the beginning of a vector by shifting the other elements.
v8cfloat | shft_elem (v8cfloat vec, cfloat n)
| Insert a new element at the beginning of a vector by shifting the other elements.

## Function Documentation

## ◆ ext_addr() [1/8]

addr_t ext_addr | ( | v16int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

Returns
  unsigned 20 bit (lower bits) from the corresponding 32 bit vector element

## ◆ ext_addr() [2/8]

void ext_addr | ( | v16int32 | a,
|  | unsigned | idx,
|  | addr_t & | b0,
|  | addr_t & | b1
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector
  b0 | 20 bit value
  b1 | 20 bit value

Extracts 2 20 bit values from the vector and places the lower indexed (2*idx) element into b0 and the higher indexed (2*idx + 1) into b1. The lower 20 bits of a 32 bit vector element are stored in b0/b1.

## ◆ ext_addr() [3/8]

addr_t ext_addr | ( | v32int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

Returns
  unsigned 20 bit (lower bits) from the corresponding 32 bit vector element

## ◆ ext_addr() [4/8]

void ext_addr | ( | v32int32 | a,
|  | unsigned | idx,
|  | addr_t & | b0,
|  | addr_t & | b1
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector
  b0 | 20 bit value
  b1 | 20 bit value

Extracts 2 20 bit values from the vector and places the lower indexed (2*idx) element into b0 and the higher indexed (2*idx + 1) into b1. The lower 20 bits of a 32 bit vector element are stored in b0/b1.

## ◆ ext_addr() [5/8]

addr_t ext_addr | ( | v4int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

Returns
  unsigned 20 bit (lower bits) from the corresponding 32 bit vector element

## ◆ ext_addr() [6/8]

void ext_addr | ( | v4int32 | a,
|  | unsigned | idx,
|  | addr_t & | b0,
|  | addr_t & | b1
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector
  b0 | 20 bit value
  b1 | 20 bit value

Extracts 2 20 bit values from the vector and places the lower indexed (2*idx) element into b0 and the higher indexed (2*idx + 1) into b1. The lower 20 bits of a 32 bit vector element are stored in b0/b1.

## ◆ ext_addr() [7/8]

addr_t ext_addr | ( | v8int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

Returns
  unsigned 20 bit (lower bits) from the corresponding 32 bit vector element

## ◆ ext_addr() [8/8]

void ext_addr | ( | v8int32 | a,
|  | unsigned | idx,
|  | addr_t & | b0,
|  | addr_t & | b1
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector
  b0 | 20 bit value
  b1 | 20 bit value

Extracts 2 20 bit values from the vector and places the lower indexed (2*idx) element into b0 and the higher indexed (2*idx + 1) into b1. The lower 20 bits of a 32 bit vector element are stored in b0/b1.

## ◆ ext_elem() [1/24]

cfloat ext_elem | ( | v16cfloat | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [2/24]

cint16 ext_elem | ( | v16cint16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [3/24]

cint32 ext_elem | ( | v16cint32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [4/24]

float ext_elem | ( | v16float | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [5/24]

int ext_elem | ( | v16int16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [6/24]

int ext_elem | ( | v16int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [7/24]

cfloat ext_elem | ( | v2cfloat | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [8/24]

cint32 ext_elem | ( | v2cint32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [9/24]

cint16 ext_elem | ( | v32cint16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [10/24]

float ext_elem | ( | v32float | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [11/24]

int ext_elem | ( | v32int16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [12/24]

int ext_elem | ( | v32int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [13/24]

cfloat ext_elem | ( | v4cfloat | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [14/24]

cint16 ext_elem | ( | v4cint16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [15/24]

cint32 ext_elem | ( | v4cint32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [16/24]

float ext_elem | ( | v4float | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [17/24]

int ext_elem | ( | v4int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [18/24]

int ext_elem | ( | v64int16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [19/24]

cfloat ext_elem | ( | v8cfloat | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [20/24]

cint16 ext_elem | ( | v8cint16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [21/24]

cint32 ext_elem | ( | v8cint32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [22/24]

float ext_elem | ( | v8float | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [23/24]

int ext_elem | ( | v8int16 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ ext_elem() [24/24]

int ext_elem | ( | v8int32 | a,
|  | unsigned | idx
| ) |  |

Extract element determined by idx from vector a.

Parameters

  a | The vector from which the element will be extracted from
  idx | Index used to choose element in vector

## ◆ shft_elem() [1/18]

v16cint16 shft_elem | ( | v16cint16 | vec,
|  | cint16 | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());
split
void split(int a, unsigned n, int &d0, unsigned &d1)
Intrinsic used to split the 32 bit input data into two resulting variables at the n-th bit.
Definition me_conv.h:367
shft_elem
v8int16 shft_elem(v8int16 vec, int n)
Insert a new element at the beginning of a vector by shifting the other elements.
Definition me_scl2vec.h:482
delay2
int delay2(int)

## ◆ shft_elem() [2/18]

v16float shft_elem | ( | v16float | vec,
|  | float | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [3/18]

v16int16 shft_elem | ( | v16int16 | vec,
|  | int | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [4/18]

v16int32 shft_elem | ( | v16int32 | vec,
|  | int | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [5/18]

v2cfloat shft_elem | ( | v2cfloat | vec,
|  | cfloat | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [6/18]

v2cint32 shft_elem | ( | v2cint32 | vec,
|  | cint32 | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [7/18]

v32int16 shft_elem | ( | v32int16 | vec,
|  | int | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [8/18]

v4cfloat shft_elem | ( | v4cfloat | vec,
|  | cfloat | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [9/18]

v4cint16 shft_elem | ( | v4cint16 | vec,
|  | cint16 | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [10/18]

v4cint32 shft_elem | ( | v4cint32 | vec,
|  | cint32 | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [11/18]

v4float shft_elem | ( | v4float | vec,
|  | float | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [12/18]

v4int32 shft_elem | ( | v4int32 | vec,
|  | int | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [13/18]

v8cfloat shft_elem | ( | v8cfloat | vec,
|  | cfloat | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [14/18]

v8cint16 shft_elem | ( | v8cint16 | vec,
|  | cint16 | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [15/18]

v8cint32 shft_elem | ( | v8cint32 | vec,
|  | cint32 | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [16/18]

v8float shft_elem | ( | v8float | vec,
|  | float | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [17/18]

v8int16 shft_elem | ( | v8int16 | vec,
|  | int | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ shft_elem() [18/18]

v8int32 shft_elem | ( | v8int32 | vec,
|  | int | n
| ) |  |

Insert a new element at the beginning of a vector by shifting the other elements.

These intrinsics shift all elements of a vector up by one element, therefore losing the highest element and insert a new element in the first position and then returns the vector. The following code demonstrates this operation:

for (i=<vector-size>-1; i>0; i--)
{
vec[i]=vec[i-1];
}
vec[0] = n;

Returns
  Shifted vector

Parameters

  vec | Vector to be shifted and into which the new value is inserted.
  n | New value that will be inserted into the vector.

### DPD considerations

Within the DPD, this intrinsic is used to feed the incoming streams into the corresponding vectors. For example, it might be used like this:

int frac0;
split(get_ss0(), mag_scale, lut_width, idx[0], frac0);
frac = shft_elem(frac, delay2(frac0));
data = shft_elem(data, get_ss1());

## ◆ upd_elem() [1/36]

v16cfloat upd_elem | ( | v16cfloat | a,
|  | unsigned | idx,
|  | cfloat | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [2/36]

v16cint16 upd_elem | ( | v16cint16 | a,
|  | unsigned | idx,
|  | cint16 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [3/36]

v16cint16 upd_elem | ( | v16cint16 | a,
|  | unsigned | idx,
|  | cint16 | b0,
|  | cint16 | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [4/36]

v16cint32 upd_elem | ( | v16cint32 | a,
|  | unsigned | idx,
|  | cint32 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [5/36]

v16float upd_elem | ( | v16float | a,
|  | unsigned | idx,
|  | float | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [6/36]

v16float upd_elem | ( | v16float | a,
|  | unsigned | idx,
|  | float | b0,
|  | float | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [7/36]

v16int16 upd_elem | ( | v16int16 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [8/36]

v16int32 upd_elem | ( | v16int32 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [9/36]

v16int32 upd_elem | ( | v16int32 | a,
|  | unsigned | idx,
|  | int | b0,
|  | int | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [10/36]

v2cfloat upd_elem | ( | v2cfloat | a,
|  | unsigned | idx,
|  | cfloat | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [11/36]

v2cint32 upd_elem | ( | v2cint32 | a,
|  | unsigned | idx,
|  | cint32 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [12/36]

v32cint16 upd_elem | ( | v32cint16 | a,
|  | unsigned | idx,
|  | cint16 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [13/36]

v32cint16 upd_elem | ( | v32cint16 | a,
|  | unsigned | idx,
|  | cint16 | b0,
|  | cint16 | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [14/36]

v32float upd_elem | ( | v32float | a,
|  | unsigned | idx,
|  | float | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [15/36]

v32float upd_elem | ( | v32float | a,
|  | unsigned | idx,
|  | float | b0,
|  | float | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [16/36]

v32int16 upd_elem | ( | v32int16 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [17/36]

v32int32 upd_elem | ( | v32int32 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [18/36]

v32int32 upd_elem | ( | v32int32 | a,
|  | unsigned | idx,
|  | int | b0,
|  | int | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [19/36]

v4cfloat upd_elem | ( | v4cfloat | a,
|  | unsigned | idx,
|  | cfloat | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [20/36]

v4cint16 upd_elem | ( | v4cint16 | a,
|  | unsigned | idx,
|  | cint16 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [21/36]

v4cint16 upd_elem | ( | v4cint16 | a,
|  | unsigned | idx,
|  | cint16 | b0,
|  | cint16 | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [22/36]

v4cint32 upd_elem | ( | v4cint32 | a,
|  | unsigned | idx,
|  | cint32 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [23/36]

v4float upd_elem | ( | v4float | a,
|  | unsigned | idx,
|  | float | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [24/36]

v4float upd_elem | ( | v4float | a,
|  | unsigned | idx,
|  | float | b0,
|  | float | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [25/36]

v4int32 upd_elem | ( | v4int32 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [26/36]

v4int32 upd_elem | ( | v4int32 | a,
|  | unsigned | idx,
|  | int | b0,
|  | int | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [27/36]

v64int16 upd_elem | ( | v64int16 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [28/36]

v8cfloat upd_elem | ( | v8cfloat | a,
|  | unsigned | idx,
|  | cfloat | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [29/36]

v8cint16 upd_elem | ( | v8cint16 | a,
|  | unsigned | idx,
|  | cint16 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [30/36]

v8cint16 upd_elem | ( | v8cint16 | a,
|  | unsigned | idx,
|  | cint16 | b0,
|  | cint16 | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [31/36]

v8cint32 upd_elem | ( | v8cint32 | a,
|  | unsigned | idx,
|  | cint32 | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [32/36]

v8float upd_elem | ( | v8float | a,
|  | unsigned | idx,
|  | float | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [33/36]

v8float upd_elem | ( | v8float | a,
|  | unsigned | idx,
|  | float | b0,
|  | float | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.

## ◆ upd_elem() [34/36]

v8int16 upd_elem | ( | v8int16 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [35/36]

v8int32 upd_elem | ( | v8int32 | a,
|  | unsigned | idx,
|  | int | b
| ) |  |

Update element determined by idx in vector a by value b.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b | value to update.

## ◆ upd_elem() [36/36]

v8int32 upd_elem | ( | v8int32 | a,
|  | unsigned | idx,
|  | int | b0,
|  | int | b1
| ) |  |

Update elements determined by idx in vector a by values b0 and b1.

Parameters

  a | The vector containing the element to be updated
  idx | Index used to choose where to update in vector a
  b0 | 32 bit value
  b1 | 32 bit value

32 bits from both b0 and b1 are used to update two consecutive 32 bit elements of vector a. The elements are grouped into pairs such as 0+1, 2+3, etc. and idx is used to select which pair is updated. b0 goes in the lower bits (idx*2) and b1 goes in the higher bits (idx*2 + 1). An idx of 5 would select the 5th pairing which would be elements 10 and 11.