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

Function avx512_or_inner

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

Source from the content-addressed store, hash-verified

105#[cfg(target_arch = "x86_64")]
106#[target_feature(enable = "avx512f")]
107unsafe fn avx512_or_inner(a: &[u64], b: &[u64], out: &mut [u64]) {
108 use std::arch::x86_64::*;
109 unsafe {
110 let len = a.len().min(b.len()).min(out.len());
111 let chunks = len / 8;
112 for i in 0..chunks {
113 let va = _mm512_loadu_si512(a.as_ptr().add(i * 8).cast());
114 let vb = _mm512_loadu_si512(b.as_ptr().add(i * 8).cast());
115 let result = _mm512_or_si512(va, vb);
116 _mm512_storeu_si512(out.as_mut_ptr().add(i * 8).cast(), result);
117 }
118 for i in (chunks * 8)..len {
119 let va = if i < a.len() { a[i] } else { 0 };
120 let vb = if i < b.len() { b[i] } else { 0 };
121 out[i] = va | vb;
122 }
123 }
124}
125
126#[cfg(target_arch = "x86_64")]
127fn avx512_or(a: &[u64], b: &[u64], out: &mut [u64]) {

Callers 1

avx512_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