From 91800ddd1ee3594a3094dfcbc31614fc86133e75 Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 3 Feb 2025 03:05:33 +0200 Subject: [PATCH] more direct mask_none all-bits-zeroes check --- src/singeli/src/base.singeli | 1 + src/singeli/src/mask.singeli | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index 1395f572..595b783c 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -206,6 +206,7 @@ if_inline (hasarch{'X86_64'}) { include './avx' include './avx2' include './avx512' + def any_bit{x:[_]_} = ~and_bit_none{x, x} } else if_inline (hasarch{'AARCH64'}) { include 'arch/neon_intrin/basic' include 'arch/neon_intrin/select' diff --git a/src/singeli/src/mask.singeli b/src/singeli/src/mask.singeli index 9bac4b28..35b7a219 100644 --- a/src/singeli/src/mask.singeli +++ b/src/singeli/src/mask.singeli @@ -28,7 +28,7 @@ def anyne_positive{x:V=[_]_, y:V, M if M{0}==1} = { } def mask_none{x} = x -def mask_none{x, 'all bits zeroes'} = and_bit_none{x, x} +def mask_none{x, 'all bits zeroes'} = ~any_bit{x} def mask_first{n} = { def mask{x:X, 'all bits zeroes'} = and_bit_none{x, X~~mask_of_first_bits{X,n}}