1use std::arch::x86_64;
2
3use crate::limb::Limb;
4
5type SimdLimb = x86_64::__m256i;
6
7#[target_feature(enable = "avx2")]
8fn load(limb: *const Limb) -> SimdLimb {
9 unsafe { x86_64::_mm256_loadu_si256(limb as *const SimdLimb) }
10}
11
12#[target_feature(enable = "avx2")]
13fn store(limb: *mut Limb, val: SimdLimb) {
14 unsafe { x86_64::_mm256_storeu_si256(limb as *mut SimdLimb, val) }
15}
16
17#[target_feature(enable = "avx2")]
18fn xor(left: SimdLimb, right: SimdLimb) -> SimdLimb {
19 x86_64::_mm256_xor_si256(left, right)
20}
21
22super::add_simd_arch!("avx2");