Singeli-generated table for bits.singeli
This commit is contained in:
parent
2c73199ed4
commit
40f36fa366
@ -24,7 +24,6 @@ bitsel_i{VL,T}(r:*void, bits:*u64, e0:u64, e1:u64, len:u64) : void = {
|
||||
bitsel{VL, T, *T~~r, bits, trunc{T,e0}, trunc{T,e1}, len}
|
||||
}
|
||||
|
||||
'avx2_bitsel_8' =bitsel_i{256, u8}
|
||||
'avx2_bitsel_16'=bitsel_i{256, u16}
|
||||
'avx2_bitsel_32'=bitsel_i{256, u32}
|
||||
'avx2_bitsel_64'=bitsel_i{256, u64}
|
||||
def table{w} = each{{T} => bitsel_i{w, T}, tup{u8, u16, u32, u64}}
|
||||
|
||||
def tup_bitsel = table{256}; v_bitsel:*type{tupsel{0,tup_bitsel}} = tup_bitsel; 'avx2_bitsel'=v_bitsel
|
||||
@ -6,13 +6,7 @@
|
||||
#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||
#include "../singeli/gen/bits.c"
|
||||
#pragma GCC diagnostic pop
|
||||
typedef void (*BitselFn)(void*, u64*, u64, u64, u64);
|
||||
static BitselFn bitselFns[] = {
|
||||
[0]=avx2_bitsel_8,
|
||||
[1]=avx2_bitsel_16,
|
||||
[2]=avx2_bitsel_32,
|
||||
[3]=avx2_bitsel_64,
|
||||
};
|
||||
#define bitselFns avx2_bitsel
|
||||
#endif
|
||||
|
||||
NOINLINE Arr* allZeroes(usz ia) { u64* rp; Arr* r = m_bitarrp(&rp, ia); for (usz i = 0; i < BIT_N(ia); i++) rp[i] = 0; return r; }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user