@@ -829,41 +829,44 @@ unsafe fn test_avx() {
829829
830830 #[ target_feature( enable = "avx" ) ]
831831 unsafe fn test_mm256_permute2f128_ps ( ) {
832- let a = _mm256_setr_ps ( 1 ., 2 ., 3 ., 4 ., 1 ., 2 ., 3 ., 4 .) ;
833- let b = _mm256_setr_ps ( 5 ., 6 ., 7 ., 8 ., 5 ., 6 ., 7 ., 8 .) ;
834- let r = _mm256_permute2f128_ps :: < 0x13 > ( a, b) ;
835- let e = _mm256_setr_ps ( 5 ., 6 ., 7 ., 8 ., 1 ., 2 ., 3 ., 4 .) ;
832+ let a = _mm256_setr_ps ( 11 ., 12 ., 13 ., 14 ., 15 ., 16 ., 17 ., 18 .) ;
833+ let b = _mm256_setr_ps ( 21 ., 22 ., 23 ., 24 ., 25 ., 26 ., 27 ., 28 .) ;
834+ let r = _mm256_permute2f128_ps :: < 0b0001_0011 > ( a, b) ;
835+ let e = _mm256_setr_ps ( 25 ., 26 ., 27 ., 28 ., 15 ., 16 ., 17 ., 18 .) ;
836836 assert_eq_m256 ( r, e) ;
837837
838- let r = _mm256_permute2f128_ps :: < 0x44 > ( a, b) ;
839- let e = _mm256_setr_ps ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ;
840- assert_eq_m256 ( r, e) ;
838+ // Setting bits 3 or 7 (zero-indexed) zeroes the corresponding field.
839+ let r = _mm256_permute2f128_ps :: < 0b1001_1011 > ( a, b) ;
840+ let z = _mm256_setr_ps ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ;
841+ assert_eq_m256 ( r, z) ;
841842 }
842843 test_mm256_permute2f128_ps ( ) ;
843844
844845 #[ target_feature( enable = "avx" ) ]
845846 unsafe fn test_mm256_permute2f128_pd ( ) {
846847 let a = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
847848 let b = _mm256_setr_pd ( 5. , 6. , 7. , 8. ) ;
848- let r = _mm256_permute2f128_pd :: < 0x31 > ( a, b) ;
849+ let r = _mm256_permute2f128_pd :: < 0b0011_0001 > ( a, b) ;
849850 let e = _mm256_setr_pd ( 3. , 4. , 7. , 8. ) ;
850851 assert_eq_m256d ( r, e) ;
851852
852- let r = _mm256_permute2f128_pd :: < 0x44 > ( a, b) ;
853+ // Setting bits 3 or 7 (zero-indexed) zeroes the corresponding field.
854+ let r = _mm256_permute2f128_pd :: < 0b1011_1001 > ( a, b) ;
853855 let e = _mm256_setr_pd ( 0.0 , 0.0 , 0.0 , 0.0 ) ;
854856 assert_eq_m256d ( r, e) ;
855857 }
856858 test_mm256_permute2f128_pd ( ) ;
857859
858860 #[ target_feature( enable = "avx" ) ]
859861 unsafe fn test_mm256_permute2f128_si256 ( ) {
860- let a = _mm256_setr_epi32 ( 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 ) ;
861- let b = _mm256_setr_epi32 ( 5 , 6 , 7 , 8 , 5 , 6 , 7 , 8 ) ;
862- let r = _mm256_permute2f128_si256 :: < 0x20 > ( a, b) ;
863- let e = _mm256_setr_epi32 ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ) ;
862+ let a = _mm256_setr_epi32 ( 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 ) ;
863+ let b = _mm256_setr_epi32 ( 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 ) ;
864+ let r = _mm256_permute2f128_si256 :: < 0b0010_0000 > ( a, b) ;
865+ let e = _mm256_setr_epi32 ( 11 , 12 , 13 , 14 , 21 , 22 , 23 , 24 ) ;
864866 assert_eq_m256i ( r, e) ;
865867
866- let r = _mm256_permute2f128_si256 :: < 0x44 > ( a, b) ;
868+ // Setting bits 3 or 7 (zero-indexed) zeroes the corresponding field.
869+ let r = _mm256_permute2f128_si256 :: < 0b1010_1000 > ( a, b) ;
867870 let e = _mm256_setr_epi32 ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ;
868871 assert_eq_m256i ( r, e) ;
869872 }
0 commit comments