From d85f628d72c3ed635801766eff59bcbad6f33a04 Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 14 Jun 2024 04:26:16 +0300 Subject: [PATCH] accept tuple argument in homMask --- src/singeli/src/base.singeli | 1 + src/singeli/src/cmp.singeli | 4 ++-- src/singeli/src/copy.singeli | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index 69727d8f..820dc66f 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -171,6 +171,7 @@ def homMask{...vs if length{vs}>1} = { def h = n/2 (sl{h} << (h * k)) | sl{0,h} } +def homMask{x if ktup{x}} = homMask{...x} if_inline (hasarch{'X86_64'}) { include 'arch/iintrinsic/basic' diff --git a/src/singeli/src/cmp.singeli b/src/singeli/src/cmp.singeli index 2626c6c4..987d9374 100644 --- a/src/singeli/src/cmp.singeli +++ b/src/singeli/src/cmp.singeli @@ -73,10 +73,10 @@ def any2bit{VT=[k]T, unr, op0, wS, wV, xS, xV, dst:(*u64), len:(ux)} = { {(__ne) if isint{T}} => __eq {_} => op0 } - def mask = if (same{op0, op}) homMask else ({...x} => ~homMask{...x}) + def mask = if (same{op0, op}) homMask else ({x} => ~homMask{x}) @forNZ (ri to cdiv{len,bulk}) { - b_setBatch{bulk, dst, ri, mask{...each{{j}=>op{wV{xi+j}, xV{xi+j}}, iota{unr}}}} + b_setBatch{bulk, dst, ri, mask{each{{j}=>op{wV{xi+j}, xV{xi+j}}, iota{unr}}}} xi+= unr } } diff --git a/src/singeli/src/copy.singeli b/src/singeli/src/copy.singeli index 2ea55932..9534acec 100644 --- a/src/singeli/src/copy.singeli +++ b/src/singeli/src/copy.singeli @@ -49,7 +49,7 @@ fn copy{X, R}(x: *void, r: *void, l:u64, xRaw: *void) : void = { def bulk2 = bulk*unr xi:ux = 0 @forNZ (i to cdiv{l,bulk2}) { - b_setBatch{bulk2, rp, i, homMask{...each{{i} => op{loadBatch{xp, xi+i, XV}}, iota{unr}}}} + b_setBatch{bulk2, rp, i, homMask{each{{i} => op{loadBatch{xp, xi+i, XV}}, iota{unr}}}} xi+= unr } } else if (width{X}<=width{R}) {