From 6ed3c183896d42e1ed953b2e98d79a6c5eb0cf78 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 20 Sep 2022 20:24:13 -0400 Subject: [PATCH] Implement SIMD wrapping plus-scan for Replicate --- src/builtins/slash.c | 20 ++++++++--- src/singeli/src/scan.singeli | 69 +++++++++++++++++++++++++----------- 2 files changed, 64 insertions(+), 25 deletions(-) diff --git a/src/builtins/slash.c b/src/builtins/slash.c index 44a5cd8b..dccc80c6 100644 --- a/src/builtins/slash.c +++ b/src/builtins/slash.c @@ -104,6 +104,16 @@ #endif #endif +#if SINGELI +extern void (*const avx2_scan_pluswrap_u8)(uint8_t* v0,uint8_t* v1,uint64_t v2,uint8_t v3); +extern void (*const avx2_scan_pluswrap_u16)(uint16_t* v0,uint16_t* v1,uint64_t v2,uint16_t v3); +extern void (*const avx2_scan_pluswrap_u32)(uint32_t* v0,uint32_t* v1,uint64_t v2,uint32_t v3); +#define avx2_scan_pluswrap_u64(V0,V1,V2,V3) for (usz i=k; i