File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -658,11 +658,32 @@ fn simd_masked_loadstore() {
658658 assert_eq ! ( buf, [ 2 , 3 , 4 ] ) ;
659659}
660660
661+ fn simd_ops_non_pow2 ( ) {
662+ // Just a little smoke test for operations on non-power-of-two vectors.
663+ #[ repr( simd, packed) ]
664+ #[ derive( Copy , Clone ) ]
665+ pub struct SimdPacked < T , const N : usize > ( [ T ; N ] ) ;
666+ #[ repr( simd) ]
667+ #[ derive( Copy , Clone ) ]
668+ pub struct SimdPadded < T , const N : usize > ( [ T ; N ] ) ;
669+
670+ let x = SimdPacked ( [ 1u32 ; 3 ] ) ;
671+ let y = SimdPacked ( [ 2u32 ; 3 ] ) ;
672+ let z = unsafe { intrinsics:: simd_add ( x, y) } ;
673+ assert_eq ! ( { z. 0 } , [ 3u32 ; 3 ] ) ;
674+
675+ let x = SimdPadded ( [ 1u32 ; 3 ] ) ;
676+ let y = SimdPadded ( [ 2u32 ; 3 ] ) ;
677+ let z = unsafe { intrinsics:: simd_add ( x, y) } ;
678+ assert_eq ! ( z. 0 , [ 3u32 ; 3 ] ) ;
679+ }
680+
661681fn main ( ) {
662682 simd_mask ( ) ;
663683 simd_ops_f32 ( ) ;
664684 simd_ops_f64 ( ) ;
665685 simd_ops_i32 ( ) ;
686+ simd_ops_non_pow2 ( ) ;
666687 simd_cast ( ) ;
667688 simd_swizzle ( ) ;
668689 simd_gather_scatter ( ) ;
You can’t perform that action at this time.
0 commit comments