From e031b069fbc169324c8d514d9209558ff9474e8e Mon Sep 17 00:00:00 2001 From: dzaima Date: Sat, 2 Apr 2022 20:00:34 +0300 Subject: [PATCH] test special float values --- src/singeli/src/equal.singeli | 4 ++-- test/equal.bqn | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/singeli/src/equal.singeli b/src/singeli/src/equal.singeli index 893ae743..612c9fc8 100644 --- a/src/singeli/src/equal.singeli +++ b/src/singeli/src/equal.singeli @@ -57,7 +57,7 @@ equal{W, X}(w:*u8, x:*u8, l:u64, d:u64) : u1 = { def bulk = 4 f0:= broadcast{T, 0.0} f1:= broadcast{T, 1.0} - maskedLoop{4, l, {i, M} => { + maskedLoop{bulk, l, {i, M} => { cw:= load{cast_p{u8,w}, i>>1} >> cast_i{u8, 4*(i&1)} cx:= load{cast_p{T, x}, i} wu:= blend{f0, f1, broadcast{[4]u64, cw} << make{[4]u64,63,62,61,60}} @@ -93,7 +93,7 @@ equal{W, X}(w:*u8, x:*u8, l:u64, d:u64) : u1 = { 1 } -'avx2_equal_1_1' = equal{u1, u1} # todo maybe unify with 8_8 and make the non-bit diagonal shift by 3 +'avx2_equal_1_1' = equal{u1, u1} 'avx2_equal_1_8' = equal{u1, u8} 'avx2_equal_1_16' = equal{u1, u16} 'avx2_equal_1_32' = equal{u1, u32} diff --git a/test/equal.bqn b/test/equal.bqn index 13dfee66..4a93d5e7 100644 --- a/test/equal.bqn +++ b/test/equal.bqn @@ -23,7 +23,9 @@ TestVars ← { w𝕊a‿b: szs ← 2∾(2⋆8‿16‿32)∾0∾(2⋆8‿16)∾1114111 off ← 0∾(2⋆7‿15‿31)∾¯0.5∾0‿0‿0 chr ← 0‿0‿0‿0‿0‿1‿1‿1 +specF64 ← ∾⟜- ÷⟜0⊸∾ 1‿0 RandVal ← { + 𝕩≡4? {specF64⊏˜𝕩 r.Range ≠specF64}∘≠⌾((0=𝕨 r.Range 2⋆r.Range 10)⊸/) 𝕨 r.Range 0; Squeeze @+⍟(𝕩⊑chr) (𝕨 r.Range 𝕩⊑szs) - 𝕩⊑off } @@ -31,13 +33,13 @@ Do ← { 𝕊: at ← r.Range 8 l ← 1 + r.Range (at=0)⊑100‿700 a ← l RandVal at - 1 TestVars a‿a + (⊢◶1‿{𝕊:∧´a=a} at=4) TestVars a‿a { 𝕊: p ← r.Range l - v ← RandVal ⊢◶⟨r.Range∘5 ⋄ 5+r.Range∘3⟩ at≥5 + v ← ⊑1 RandVal ⊢◶⟨r.Range∘5 ⋄ 5+r.Range∘3⟩ at≥5 exp ← v = p⊑a b ← Squeeze v⌾(p⊸⊑) a - exp TestVars a‿b + (⊢◶exp‿{𝕊:∧´a=b} at=4) TestVars a‿b }⍟100 @ }