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() {
658
658
assert_eq ! ( buf, [ 2 , 3 , 4 ] ) ;
659
659
}
660
660
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
+
661
681
fn main ( ) {
662
682
simd_mask ( ) ;
663
683
simd_ops_f32 ( ) ;
664
684
simd_ops_f64 ( ) ;
665
685
simd_ops_i32 ( ) ;
686
+ simd_ops_non_pow2 ( ) ;
666
687
simd_cast ( ) ;
667
688
simd_swizzle ( ) ;
668
689
simd_gather_scatter ( ) ;
You can’t perform that action at this time.
0 commit comments