1use std::ops::{Deref, DerefMut};
2
3#[cfg(target_arch = "s390x")]
9#[repr(align(256))]
10#[derive(Copy, Clone, Default, Debug)]
11pub struct CacheAligned<T> {
12 pub data: T,
13}
14
15#[cfg(target_arch = "aarch64")]
18#[repr(align(128))]
19#[derive(Copy, Clone, Default, Debug)]
20pub struct CacheAligned<T> {
21 pub data: T,
22}
23
24#[cfg(not(any(target_arch = "s390x", target_arch = "aarch64")))]
26#[repr(align(64))]
27#[derive(Copy, Clone, Default, Debug)]
28pub struct CacheAligned<T> {
29 pub data: T,
30}
31
32impl<T> Deref for CacheAligned<T> {
33 type Target = T;
34
35 fn deref(&self) -> &T {
36 &self.data
37 }
38}
39
40impl<T> DerefMut for CacheAligned<T> {
41 fn deref_mut(&mut self) -> &mut T {
42 &mut self.data
43 }
44}
45
46impl<T> CacheAligned<T> {
47 pub fn new(t: T) -> Self {
48 Self { data: t }
49 }
50}