load
Reg <T> load (const T* mem)
Loads aligned data from mem
to a register. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
loadu
Reg <T> loadu (const T* mem)
Loads unaligned data from mem
to a register. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
store
void store (T* mem, const Reg<T> r)
Stores the r
register in the mem
aligned data. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
storeu
void storeu (T* mem, const Reg<T> r)
Stores the r
register in the mem
unaligned data. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
maskzld
Reg <T> maskzld (const Msk<N> m, const T* mem)
Loads elements according to the mask m
(puts zero when the mask value is false). double
, float
, int64_t
, int32_t
, int16_t
, int8_t
maskzlds
Reg <T> maskzlds (const Msk<N> m, const T* mem)
Loads elements according to the mask m
(puts zero when the mask value is false). Safe version, only reads masked elements in memory. double
, float
, int64_t
, int32_t
, int16_t
, int8_t
maskst
void maskst (const Msk<N> m, T* mem, const Reg<T> r)
Stores elements from the r
register according to the mask m
in the mem
memory. double
, float
, int64_t
, int32_t
, int16_t
, int8_t
masksts
void masksts (const Msk<N> m, T* mem, const Reg<T> r)
Stores elements from the r
register according to the mask m
in the mem
memory. Safe version, only writes masked elements in memory. double
, float
, int64_t
, int32_t
, int16_t
, int8_t
gather
Reg <TD,TI> gather (const TD* mem, const Reg<TI> idx)
Gathers elements from mem
to a register. Selects elements according to the indices in idx
. double
, float
, int64_t
, int32_t
, int16_t
, int8_t
scatter
void <TD,TI> scatter (TD* mem, const Reg<TI> idx, const Reg<TD> r)
Scatters elements into mem
from the r
register. Writes elements at the idx
indices in mem
. double
, float
, int64_t
, int32_t
, int16_t
, int8_t
maskzgat
Reg <TD,TI> gather (const Msk<N> m, const TD* mem, const Reg<TI> idx)
Gathers elements from mem
to a register (according to the mask m
). Selects elements according to the indices in idx
(puts zero when the mask value is false). double
, float
, int64_t
, int32_t
, int16_t
, int8_t
masksca
void <TD,TI> scatter (const Msk<N> m, TD* mem, const Reg<TI> idx, const Reg<TD> r)
Scatters elements into mem
from the r
register (according to the mask m
). Writes elements at the idx
indices in mem
. double
, float
, int64_t
, int32_t
, int16_t
, int8_t
set
Reg <T> set (const T[N] vals)
Sets a register from the values in vals
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
set
Msk <N> set (const bool[N] bits)
Sets a mask from the bits in bits
. set1
Reg <T> set1 (const T val)
Broadcasts val
in a register. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
set1
Msk <N> set1 (const bool bit)
Broadcasts bit
in a mask. set0
Reg <T> set0 ()
Initializes a register to zero. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
set0
Msk <N> set0 ()
Initializes a mask to false. get
T get (const Reg<T> r, const size_t index)
Gets a specific element from the register r
at the index
position. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
get
T get (const Reg_2<T> r, const size_t index)
Gets a specific element from the register r
at the index
position. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
get
bool get (const Msk<N> m, const size_t index)
Gets a specific element from the register m
at the index
position. getfirst
T getfirst (const Reg<T> r)
Gets the first element from the register r
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
getfirst
T getfirst (const Reg_2<T> r)
Gets the first element from the register r
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
getfirst
bool getfirst (const Msk<N> m)
Gets the first element from the register m
. low
Reg_2<T> low (const Reg<T> r)
Gets the low part of the r
register. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
high
Reg_2<T> high (const Reg<T> r)
Gets the high part of the r
register. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
combine
Reg <T> combine (const Reg_2<T> r1, const Reg_2<T> r2)
Combine two half registers in a full register, r1
will be the low part and r2
the high part. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
combine
Reg <S,T> combine (const Reg<T> r1, const Reg<T> r2)
S
elements of r1
are shifted to the left, (S - N) + N
elements of r2
are shifted to the right. Shifted r1
and r2
are combined to give the result. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
compress
Reg <T> compress (const Reg<T> r1, const Msk<N> m)
Pack the elements of r1
at the beginning of the register according to the bitmask m
(if the bit is 1 then element is picked, otherwise it is not). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
cmask
Reg <T> cmask (const uint32_t[N ] ids)
Creates a cmask from an indexes list (indexes have to be between 0 and N-1). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
cmask2
Reg <T> cmask2 (const uint32_t[N/2] ids)
Creates a cmask2 from an indexes list (indexes have to be between 0 and (N/2)-1). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
cmask4
Reg <T> cmask4 (const uint32_t[N/4] ids)
Creates a cmask4 from an indexes list (indexes have to be between 0 and (N/4)-1). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
shuff
Reg <T> shuff (const Reg<T> r, const Reg<T> cm)
Shuffles the elements of r
according to the cmask cm
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
shuff2
Reg <T> shuff2 (const Reg<T> r, const Reg<T> cm2)
Shuffles the elements of r
according to the cmask2 cm2
(same shuffle is applied in both lanes). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
shuff4
Reg <T> shuff4 (const Reg<T> r, const Reg<T> cm4)
Shuffles the elements of r
according to the cmask4 cm4
(same shuffle is applied in the four lanes). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleave
Regx2<T> interleave (const Reg<T> r1, const Reg<T> r2)
Interleaves r1
and r2
: [r1_1, r2_1, r1_2, r2_2, ..., r1_n, r2_n]
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
deinterleave
Regx2<T> deinterleave (const Reg<T> r1, const Reg<T> r2)
Reverts the previous defined interleave operation. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleave2
Regx2<T> interleave2 (const Reg<T> r1, const Reg<T> r2)
Interleaves r1
and r2
considering two lanes. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleave4
Regx2<T> interleave4 (const Reg<T> r1, const Reg<T> r2)
Interleaves r1
and r2
considering four lanes. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleavelo
Reg <T> interleavelo (const Reg<T> r1, const Reg<T> r2)
Interleaves the low part of r1
with the low part of r2
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleavelo2
Reg <T> interleavelo2 (const Reg<T> r1, const Reg<T> r2)
Interleaves the low part of r1
with the low part of r2
(considering two lanes). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleavelo4
Reg <T> interleavelo4 (const Reg<T> r1, const Reg<T> r2)
Interleaves the low part of r1
with the low part of r2
(considering four lanes). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleavehi
Reg <T> interleavehi (const Reg<T> r1, const Reg<T> r2)
Interleaves the high part of r1
with the high part of r2
. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleavehi2
Reg <T> interleavehi2 (const Reg<T> r1, const Reg<T> r2)
Interleaves the high part of r1
with the high part of r2
(considering two lanes). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
interleavehi4
Reg <T> interleavehi4 (const Reg<T> r1, const Reg<T> r2)
Interleaves the high part of r1
with the high part of r2
(considering four lanes). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
lrot
Reg <T> lrot (const Reg<T> r)
Rotates the r
register from the left (cyclic permutation). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
rrot
Reg <T> rrot (const Reg<T> r)
Rotates the r
register from the right (cyclic permutation). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
blend
Reg <T> blend (const Reg<T> r1, const Reg<T> r2, const Msk<N> m)
Combines r1
and r2
register following the m
mask values (m_i ? r1_i : r2_i
). double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
select
Reg <T> select (const Msk<N> m, const Reg<T> r1, const Reg<T> r2)
Alias for the previous blend
function. Parameters order is a little bit different. double
, float
, int64_t
, uint64_t
, int32_t
, uint32_t
, int16_t
, uint16_t
, int8_t
, uint8_t
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4