mod test;
use core::cell::{Cell, UnsafeCell};
use core::cmp::Reverse;
use core::marker::{PhantomData, PhantomPinned};
use core::mem::{ManuallyDrop, MaybeUninit};
use core::num::{NonZero, Saturating, Wrapping};
use core::ptr::NonNull;
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
use core::arch::aarch64::{
float64x1_t,
float64x1x2_t,
float64x1x3_t,
float64x1x4_t,
float64x2_t,
float64x2x2_t,
float64x2x3_t,
float64x2x4_t,
};
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
use core::arch::aarch64::{
float32x2_t,
float32x2x2_t,
float32x2x3_t,
float32x2x4_t,
float32x4_t,
float32x4x2_t,
float32x4x3_t,
float32x4x4_t,
int16x4_t,
int16x4x2_t,
int16x4x3_t,
int16x4x4_t,
int16x8_t,
int16x8x2_t,
int16x8x3_t,
int16x8x4_t,
int32x2_t,
int32x2x2_t,
int32x2x3_t,
int32x2x4_t,
int32x4_t,
int32x4x2_t,
int32x4x3_t,
int32x4x4_t,
int64x1_t,
int64x1x2_t,
int64x1x3_t,
int64x1x4_t,
int64x2_t,
int64x2x2_t,
int64x2x3_t,
int64x2x4_t,
int8x16_t,
int8x16x2_t,
int8x16x3_t,
int8x16x4_t,
int8x8_t,
int8x8x2_t,
int8x8x3_t,
int8x8x4_t,
poly16x4_t,
poly16x4x2_t,
poly16x4x3_t,
poly16x4x4_t,
poly16x8_t,
poly16x8x2_t,
poly16x8x3_t,
poly16x8x4_t,
poly32x2_t,
poly32x2x2_t,
poly32x2x3_t,
poly32x2x4_t,
poly32x4_t,
poly32x4x2_t,
poly32x4x3_t,
poly32x4x4_t,
poly64x1_t,
poly64x1x2_t,
poly64x1x3_t,
poly64x1x4_t,
poly64x2_t,
poly64x2x2_t,
poly64x2x3_t,
poly64x2x4_t,
poly8x16_t,
poly8x16x2_t,
poly8x16x3_t,
poly8x16x4_t,
poly8x8_t,
poly8x8x2_t,
poly8x8x3_t,
poly8x8x4_t,
uint16x4_t,
uint16x4x2_t,
uint16x4x3_t,
uint16x4x4_t,
uint16x8_t,
uint16x8x2_t,
uint16x8x3_t,
uint16x8x4_t,
uint32x2_t,
uint32x2x2_t,
uint32x2x3_t,
uint32x2x4_t,
uint32x4_t,
uint32x4x2_t,
uint32x4x3_t,
uint32x4x4_t,
uint64x1_t,
uint64x1x2_t,
uint64x1x3_t,
uint64x1x4_t,
uint64x2_t,
uint64x2x2_t,
uint64x2x3_t,
uint64x2x4_t,
uint8x16_t,
uint8x16x2_t,
uint8x16x3_t,
uint8x16x4_t,
uint8x8_t,
uint8x8x2_t,
uint8x8x3_t,
uint8x8x4_t,
};
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
use core::arch::aarch64::{
float16x4_t,
float16x4x2_t,
float16x4x3_t,
float16x4x4_t,
float16x8_t,
float16x8x2_t,
float16x8x3_t,
float16x8x4_t,
};
#[cfg(target_arch = "x86")]
use core::arch::x86::{
__m128,
__m128bh,
__m128d,
__m128i,
__m256,
__m256bh,
__m256d,
__m256i,
__m512,
__m512bh,
__m512d,
__m512i,
};
#[cfg(all(target_arch = "x86", feature = "f16"))]
use core::arch::x86::{__m128h, __m256h, __m512h};
#[cfg(target_arch = "x86_64")]
use core::arch::x86_64::{
__m128,
__m128bh,
__m128d,
__m128i,
__m256,
__m256bh,
__m256d,
__m256i,
__m512,
__m512bh,
__m512d,
__m512i,
};
#[cfg(all(target_arch = "x86_64", feature = "f16"))]
use core::arch::x86_64::{__m128h, __m256h, __m512h};
#[cfg(target_has_atomic = "8")]
use core::sync::atomic::{AtomicBool, AtomicI8, AtomicU8};
#[cfg(target_has_atomic = "16")]
use core::sync::atomic::{AtomicI16, AtomicU16};
#[cfg(target_has_atomic = "32")]
use core::sync::atomic::{AtomicI32, AtomicU32};
#[cfg(target_has_atomic = "64")]
use core::sync::atomic::{AtomicI64, AtomicU64};
#[cfg(target_has_atomic = "128")]
use core::sync::atomic::{AtomicI128, AtomicU128};
#[cfg(target_has_atomic = "ptr")]
use core::sync::atomic::{AtomicIsize, AtomicPtr, AtomicUsize};
pub unsafe trait Zeroable {
#[inline]
#[must_use]
fn zeroed() -> Self
where
Self: Sized,
{
let mut this = MaybeUninit::<Self>::uninit();
this.make_zeroed();
unsafe { this.assume_init() }
}
#[inline]
fn make_zeroed(&mut self) {
let len = size_of_val(self);
let ptr = &raw mut *self as *mut u8;
unsafe { ptr.write_bytes(0b00000000, len) };
}
}
unsafe impl<T: Zeroable, const N: usize> Zeroable for [T; N] {}
#[cfg(target_has_atomic = "8")]
unsafe impl Zeroable for AtomicBool {}
#[cfg(target_has_atomic = "128")]
unsafe impl Zeroable for AtomicI128 {}
#[cfg(target_has_atomic = "16")]
unsafe impl Zeroable for AtomicI16 {}
#[cfg(target_has_atomic = "32")]
unsafe impl Zeroable for AtomicI32 {}
#[cfg(target_has_atomic = "64")]
unsafe impl Zeroable for AtomicI64 {}
#[cfg(target_has_atomic = "8")]
unsafe impl Zeroable for AtomicI8 {}
#[cfg(target_has_atomic = "ptr")]
unsafe impl Zeroable for AtomicIsize {}
#[cfg(target_has_atomic = "ptr")]
unsafe impl<T> Zeroable for AtomicPtr<T> {}
#[cfg(target_has_atomic = "128")]
unsafe impl Zeroable for AtomicU128 {}
#[cfg(target_has_atomic = "16")]
unsafe impl Zeroable for AtomicU16 {}
#[cfg(target_has_atomic = "32")]
unsafe impl Zeroable for AtomicU32 {}
#[cfg(target_has_atomic = "64")]
unsafe impl Zeroable for AtomicU64 {}
#[cfg(target_has_atomic = "8")]
unsafe impl Zeroable for AtomicU8 {}
#[cfg(target_has_atomic = "ptr")]
unsafe impl Zeroable for AtomicUsize {}
unsafe impl Zeroable for bool {}
unsafe impl<T: Zeroable> Zeroable for Cell<T> {}
unsafe impl Zeroable for char {}
#[cfg(feature = "f128")]
unsafe impl Zeroable for f128 {}
#[cfg(feature = "f16")]
unsafe impl Zeroable for f16 {}
unsafe impl Zeroable for f32 {}
unsafe impl Zeroable for f64 {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x4_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x4x2_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x4x3_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x4x4_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x8_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x8x2_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x8x3_t {}
#[cfg(
all(
any(
target_arch = "aarch64",
target_arch = "arm64ec",
target_feature = "v7",
),
feature = "f16",
),
)]
unsafe impl Zeroable for float16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for float32x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl Zeroable for float64x2x4_t {}
unsafe impl Zeroable for i128 {}
unsafe impl Zeroable for i16 {}
unsafe impl Zeroable for i32 {}
unsafe impl Zeroable for i64 {}
unsafe impl Zeroable for i8 {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int32x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int64x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x16_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x16x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x16x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for int8x8x4_t {}
unsafe impl Zeroable for isize {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m128 {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m128 {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m128bh {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m128bh {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m128d {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m128d {}
#[cfg(all(target_arch = "x86", feature = "f16"))]
unsafe impl Zeroable for __m128h {}
#[cfg(all(target_arch = "x86_64", feature = "f16"))]
unsafe impl Zeroable for __m128h {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m128i {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m128i {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m256 {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m256 {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m256bh {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m256bh {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m256d {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m256d {}
#[cfg(all(target_arch = "x86", feature = "f16"))]
unsafe impl Zeroable for __m256h {}
#[cfg(all(target_arch = "x86_64", feature = "f16"))]
unsafe impl Zeroable for __m256h {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m256i {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m256i {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m512 {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m512 {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m512bh {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m512bh {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m512d {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m512d {}
#[cfg(all(target_arch = "x86", feature = "f16"))]
unsafe impl Zeroable for __m512h {}
#[cfg(all(target_arch = "x86_64", feature = "f16"))]
unsafe impl Zeroable for __m512h {}
#[cfg(target_arch = "x86")]
unsafe impl Zeroable for __m512i {}
#[cfg(target_arch = "x86_64")]
unsafe impl Zeroable for __m512i {}
unsafe impl<T: Zeroable> Zeroable for ManuallyDrop<T> {}
unsafe impl<T> Zeroable for MaybeUninit<T> {}
unsafe impl<T> Zeroable for Option<NonNull<T>> {}
unsafe impl Zeroable for Option<NonZero<i128>> {}
unsafe impl Zeroable for Option<NonZero<i16>> {}
unsafe impl Zeroable for Option<NonZero<i32>> {}
unsafe impl Zeroable for Option<NonZero<i64>> {}
unsafe impl Zeroable for Option<NonZero<i8>> {}
unsafe impl Zeroable for Option<NonZero<isize>> {}
unsafe impl Zeroable for Option<NonZero<u128>> {}
unsafe impl Zeroable for Option<NonZero<u16>> {}
unsafe impl Zeroable for Option<NonZero<u32>> {}
unsafe impl Zeroable for Option<NonZero<u64>> {}
unsafe impl Zeroable for Option<NonZero<u8>> {}
unsafe impl Zeroable for Option<NonZero<usize>> {}
unsafe impl<T: ?Sized> Zeroable for PhantomData<T> {}
unsafe impl Zeroable for PhantomPinned {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly32x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly64x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x16_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x16x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x16x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for poly8x8x4_t {}
unsafe impl<T: Zeroable> Zeroable for Reverse<T> {}
unsafe impl<T> Zeroable for *const T {}
unsafe impl<T> Zeroable for *mut T {}
unsafe impl<T: Zeroable> Zeroable for Saturating<T> {}
#[cfg_attr(feature = "unstable_docs", doc(fake_variadic))]
unsafe impl<T: Zeroable> Zeroable for (T,) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: Zeroable> Zeroable for (T, T, T, T, T, T, T, T, T, T, T, T) {}
unsafe impl Zeroable for u128 {}
unsafe impl Zeroable for u16 {}
unsafe impl Zeroable for u32 {}
unsafe impl Zeroable for u64 {}
unsafe impl Zeroable for u8 {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x4x4t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint16x8x4t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x2x4t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint32x4x4t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x1x4t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint64x2x4t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x16_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x16x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x16x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x16x_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl Zeroable for uint8x8x4_t {}
unsafe impl Zeroable for () {}
unsafe impl<T: Zeroable> Zeroable for UnsafeCell<T> {}
unsafe impl Zeroable for usize {}
unsafe impl<T: Zeroable> Zeroable for Wrapping<T> {}
unsafe impl<T: Zeroable> Zeroable for [T] {}
unsafe impl Zeroable for str {}