MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / neon_or

Function neon_or

nodedb/src/engine/timeseries/bitmap_simd.rs:211–226  ·  view source on GitHub ↗
(a: &[u64], b: &[u64], out: &mut [u64])

Source from the content-addressed store, hash-verified

209
210#[cfg(target_arch = "aarch64")]
211fn neon_or(a: &[u64], b: &[u64], out: &mut [u64]) {
212 use std::arch::aarch64::*;
213 let len = a.len().min(b.len()).min(out.len());
214 let chunks = len / 2;
215 for i in 0..chunks {
216 let va = unsafe { vld1q_u64(a.as_ptr().add(i * 2)) };
217 let vb = unsafe { vld1q_u64(b.as_ptr().add(i * 2)) };
218 let result = unsafe { vorrq_u64(va, vb) };
219 unsafe { vst1q_u64(out.as_mut_ptr().add(i * 2), result) };
220 }
221 for i in (chunks * 2)..len {
222 let va = if i < a.len() { a[i] } else { 0 };
223 let vb = if i < b.len() { b[i] } else { 0 };
224 out[i] = va | vb;
225 }
226}
227
228#[cfg(test)]
229mod tests {

Callers

nothing calls this directly

Calls 4

lenMethod · 0.45
addMethod · 0.45
as_ptrMethod · 0.45
as_mut_ptrMethod · 0.45

Tested by

no test coverage detected