From fe985722c2b8b973c259b0fbf48cc7ed55a3af77 Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 20 Nov 2023 23:57:55 +0200 Subject: [PATCH] move multi-vector homMask to allow NEON to override it --- src/singeli/src/base.singeli | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index 5bca04f2..5eb4aec8 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -174,6 +174,12 @@ def { 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 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'}) { include 'arch/iintrinsic/basic' @@ -188,12 +194,6 @@ if (hasarch{'X86_64'}) { 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 mzipLo{a:T, b:T} = el_m{T} ~~ zipLo{a, b} def mzipHi{a:T, b:T} = el_m{T} ~~ zipHi{a, b}