From 9768526ddcf50e38014e0a7e961a6f1dab969213 Mon Sep 17 00:00:00 2001 From: dzaima Date: Sun, 18 Dec 2022 01:28:27 +0200 Subject: [PATCH] move last bit of equal.singeli to loadBatch --- src/singeli/src/equal.singeli | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/singeli/src/equal.singeli b/src/singeli/src/equal.singeli index f0ba23ac..06e8a9d0 100644 --- a/src/singeli/src/equal.singeli +++ b/src/singeli/src/equal.singeli @@ -12,13 +12,15 @@ def swap{w,x} = { x = t } +# width{W} ≤ width{X} equal{W, X}(w:*void, x:*void, l:u64, d:u64) : u1 = { - def bulk = 256 / width{X} + def vw = 256 + def bulk = vw / width{X} if (W!=X) if (d!=0) swap{w,x} if (W==u1) { if (X==u1) { # bitarr ≡ bitarr - maskedLoop{256, l, {i, M} => { + maskedLoop{vw, l, {i, M} => { cw:= load{*[32]u8 ~~ w, i} cx:= load{*[32]u8 ~~ x, i} if (anyneBit{cw,cx,M}) return{0} @@ -35,7 +37,7 @@ equal{W, X}(w:*void, x:*void, l:u64, d:u64) : u1 = { if (anynePositive{wu, cx, M}) return{0} }} } else { # bitarr ≡ i8/i16/i32arr - def T = [256/width{X}]X + def T = [vw/width{X}]X def sh{c} = c << (width{X}-1) def sh{c & X==u8} = T ~~ (to_el{u16,c}<<7) @@ -49,17 +51,15 @@ equal{W, X}(w:*void, x:*void, l:u64, d:u64) : u1 = { }} 1 } - } else { # everything not involving bitarrs + } else { # everything not involving bitarrs (i.e. floats/ints, and chars) if (W==i8 and X==i8) l<<= d - def ww{gw, E} = [gw/width{E}]E - def fac = width{X}/width{W} + + def R = [bulk]X maskedLoopPositive{bulk, l, {i, M} => { - # TODO update this to modern mask stuff - cw:= load{*ww{tern{fac==1, 256, 128}, W} ~~ (w + i*32/fac)} - cx:= load{*ww{256, X} ~~ x, i} - cwc:= widen{ww{256, X}, to_el{W, cw}} - if (anynePositive{cwc,cx,M}) return{0} + cw:= loadBatch{*W~~w, i, R} + cx:= loadBatch{*X~~x, i, R} + if (anynePositive{cw,cx,M}) return{0} }} } 1