AI Engine Intrinsics User Guide (AIE) v2024.2
Loading...
Searching...
No Matches
Moves between Scalar and Vector Unit

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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex used to choose element in vector
b020 bit value
b120 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex used to choose element in vector
b020 bit value
b120 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex used to choose element in vector
b020 bit value
b120 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex used to choose element in vector
b020 bit value
b120 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
aThe vector from which the element will be extracted from
idxIndex 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
vecVector to be shifted and into which the new value is inserted.
nNew 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());
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
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
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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
vecVector to be shifted and into which the new value is inserted.
nNew 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
bvalue 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
aThe vector containing the element to be updated
idxIndex used to choose where to update in vector a
b032 bit value
b132 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.