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

Function avx2_or_inner

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

Source from the content-addressed store, hash-verified

163#[cfg(target_arch = "x86_64")]
164#[target_feature(enable = "avx2")]
165unsafe fn avx2_or_inner(a: &[u64], b: &[u64], out: &mut [u64]) {
166 use std::arch::x86_64::*;
167 unsafe {
168 let len = a.len().min(b.len()).min(out.len());
169 let chunks = len / 4;
170 for i in 0..chunks {
171 let va = _mm256_loadu_si256(a.as_ptr().add(i * 4).cast());
172 let vb = _mm256_loadu_si256(b.as_ptr().add(i * 4).cast());
173 let result = _mm256_or_si256(va, vb);
174 _mm256_storeu_si256(out.as_mut_ptr().add(i * 4).cast(), result);
175 }
176 for i in (chunks * 4)..len {
177 let va = if i < a.len() { a[i] } else { 0 };
178 let vb = if i < b.len() { b[i] } else { 0 };
179 out[i] = va | vb;
180 }
181 }
182}
183
184#[cfg(target_arch = "x86_64")]
185fn avx2_or(a: &[u64], b: &[u64], out: &mut [u64]) {

Callers 1

avx2_orFunction · 0.85

Calls 4

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

Tested by

no test coverage detected