diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
commit | 698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch) | |
tree | 173a775858bd501c378080a10dca74132f05bc50 /src/test/ui/simd/size-align.rs | |
parent | Initial commit. (diff) | |
download | rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip |
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/simd/size-align.rs')
-rw-r--r-- | src/test/ui/simd/size-align.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/test/ui/simd/size-align.rs b/src/test/ui/simd/size-align.rs new file mode 100644 index 000000000..0afa49472 --- /dev/null +++ b/src/test/ui/simd/size-align.rs @@ -0,0 +1,53 @@ +// run-pass +#![allow(deprecated)] + + +#![feature(repr_simd)] +#![allow(non_camel_case_types)] + +use std::mem; + +/// `T` should satisfy `size_of T (mod min_align_of T) === 0` to be stored at `Vec<T>` properly +/// Please consult the issue #20460 +fn check<T>() { + assert_eq!(mem::size_of::<T>() % mem::min_align_of::<T>(), 0); + assert_eq!(mem::size_of::<T>() % mem::min_align_of::<T>(), 0); + assert_eq!(mem::size_of::<T>() % mem::min_align_of::<T>(), 0); +} + +#[repr(simd)] +struct U8<const N: usize>([u8; N]); + +#[repr(simd)] +struct I16<const N: usize>([i16; N]); + +#[repr(simd)] +struct F32<const N: usize>([f32; N]); + +#[repr(simd)] +struct Usize<const N: usize>([usize; N]); + +#[repr(simd)] +struct Isize<const N: usize>([isize; N]); + +fn main() { + check::<U8<2>>(); + check::<U8<4>>(); + check::<U8<8>>(); + + check::<I16<2>>(); + check::<I16<4>>(); + check::<I16<8>>(); + + check::<F32<2>>(); + check::<F32<4>>(); + check::<F32<8>>(); + + check::<Usize<2>>(); + check::<Usize<4>>(); + check::<Usize<8>>(); + + check::<Isize<2>>(); + check::<Isize<4>>(); + check::<Isize<8>>(); +} |