From 95455241a488cfe679439f9a4aa1def463a51477 Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 25 Apr 2022 16:08:03 +0300 Subject: [PATCH] don't do useless tail case --- src/singeli/src/base.singeli | 8 ++++++++ src/singeli/src/copy.singeli | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index fcc4d400..0a44f9be 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -93,6 +93,14 @@ def for{vars,begin,end,block} = { i = i+1 } } +def forNZ{vars,begin,end,block} = { + i:u64 = begin + assert{i!=end} + while (i < end) { + exec{i, vars, block} + i = i+1 + } +} def maxvalue{T & T==u8 } = 0xff def maxvalue{T & T==u16} = 0xffff diff --git a/src/singeli/src/copy.singeli b/src/singeli/src/copy.singeli index e3f89818..b437aa94 100644 --- a/src/singeli/src/copy.singeli +++ b/src/singeli/src/copy.singeli @@ -63,11 +63,11 @@ copy{vw, X, R}(x: *u8, r: *u8, l:u64, xRaw: *u8) : void = { } else if (R==u1) { # show{'R==u1', X, R} def XU = ty_u{XV} - maskedLoop{bulk, l, {i, M} => { + @forNZ (i to cdiv{l,vcount{XV}}) { v:= loadBatch{xp, i, XV} r:= getmask{(XU~~v) == XU~~broadcast{XV,1}} b_setBatch{vcount{XV}, rp, i, r} # TODO something more special for f64 - }} + } } else if (width{X}<=width{R}) { # show{'w{X}<=w{R}', X, R} maskedLoop{bulk, l, {i, M} => {