move multi-vector homMask to allow NEON to override it
This commit is contained in:
parent
4cf0634b80
commit
fe985722c2
@ -174,6 +174,12 @@ def {
|
|||||||
|
|
||||||
def homMaskX{a:T} = tup{1, homMask{a}} # tup{n,mask}; mask with each bit repeated n times
|
def homMaskX{a:T} = tup{1, homMask{a}} # tup{n,mask}; mask with each bit repeated n times
|
||||||
def ctzX{{n,v}} = ctz{v}/n # ctz for a result of homMaskX
|
def ctzX{{n,v}} = ctz{v}/n # ctz for a result of homMaskX
|
||||||
|
def homMask{...vs & tuplen{vs}>1} = {
|
||||||
|
def n = tuplen{vs}
|
||||||
|
def T = oneType{vs}
|
||||||
|
def RT = ty_u{max{8,vcount{T}*n}}
|
||||||
|
tree_fold{|, each{{v,i}=>promote{RT,homMask{v}}<<(i*vcount{T}), vs, iota{n}}}
|
||||||
|
}
|
||||||
|
|
||||||
if (hasarch{'X86_64'}) {
|
if (hasarch{'X86_64'}) {
|
||||||
include 'arch/iintrinsic/basic'
|
include 'arch/iintrinsic/basic'
|
||||||
@ -188,12 +194,6 @@ if (hasarch{'X86_64'}) {
|
|||||||
def {__adds,__subs,__sqrt,vec_broadcast,vec_make}
|
def {__adds,__subs,__sqrt,vec_broadcast,vec_make}
|
||||||
}
|
}
|
||||||
|
|
||||||
def homMask{...vs & tuplen{vs}>1} = {
|
|
||||||
def n = tuplen{vs}
|
|
||||||
def T = oneType{vs}
|
|
||||||
def RT = ty_u{max{8,vcount{T}*n}}
|
|
||||||
tree_fold{|, each{{v,i}=>promote{RT,homMask{v}}<<(i*vcount{T}), vs, iota{n}}}
|
|
||||||
}
|
|
||||||
def mzip {a:T, b:T} = each{{v}=>el_m{T}~~v, zip{a, b}}
|
def mzip {a:T, b:T} = each{{v}=>el_m{T}~~v, zip{a, b}}
|
||||||
def mzipLo{a:T, b:T} = el_m{T} ~~ zipLo{a, b}
|
def mzipLo{a:T, b:T} = el_m{T} ~~ zipLo{a, b}
|
||||||
def mzipHi{a:T, b:T} = el_m{T} ~~ zipHi{a, b}
|
def mzipHi{a:T, b:T} = el_m{T} ~~ zipHi{a, b}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user