@@ -2929,9 +2929,11 @@ pub unsafe fn _mm256_sll_epi64(a: __m256i, count: __m128i) -> __m256i {
29292929/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_slli_epi16)
29302930#[ inline]
29312931#[ target_feature( enable = "avx2" ) ]
2932- #[ cfg_attr( test, assert_instr( vpsllw) ) ]
2932+ #[ cfg_attr( test, assert_instr( vpsllw, imm8 = 7 ) ) ]
2933+ #[ rustc_legacy_const_generics( 1 ) ]
29332934#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
2934- pub unsafe fn _mm256_slli_epi16 ( a : __m256i , imm8 : i32 ) -> __m256i {
2935+ pub unsafe fn _mm256_slli_epi16 < const imm8: i32 > ( a : __m256i ) -> __m256i {
2936+ static_assert_imm8 ! ( imm8) ;
29352937 transmute ( pslliw ( a. as_i16x16 ( ) , imm8) )
29362938}
29372939
@@ -2941,9 +2943,11 @@ pub unsafe fn _mm256_slli_epi16(a: __m256i, imm8: i32) -> __m256i {
29412943/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_slli_epi32)
29422944#[ inline]
29432945#[ target_feature( enable = "avx2" ) ]
2944- #[ cfg_attr( test, assert_instr( vpslld) ) ]
2946+ #[ cfg_attr( test, assert_instr( vpslld, imm8 = 7 ) ) ]
2947+ #[ rustc_legacy_const_generics( 1 ) ]
29452948#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
2946- pub unsafe fn _mm256_slli_epi32 ( a : __m256i , imm8 : i32 ) -> __m256i {
2949+ pub unsafe fn _mm256_slli_epi32 < const imm8: i32 > ( a : __m256i ) -> __m256i {
2950+ static_assert_imm8 ! ( imm8) ;
29472951 transmute ( psllid ( a. as_i32x8 ( ) , imm8) )
29482952}
29492953
@@ -2953,9 +2957,11 @@ pub unsafe fn _mm256_slli_epi32(a: __m256i, imm8: i32) -> __m256i {
29532957/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_slli_epi64)
29542958#[ inline]
29552959#[ target_feature( enable = "avx2" ) ]
2956- #[ cfg_attr( test, assert_instr( vpsllq) ) ]
2960+ #[ cfg_attr( test, assert_instr( vpsllq, imm8 = 7 ) ) ]
2961+ #[ rustc_legacy_const_generics( 1 ) ]
29572962#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
2958- pub unsafe fn _mm256_slli_epi64 ( a : __m256i , imm8 : i32 ) -> __m256i {
2963+ pub unsafe fn _mm256_slli_epi64 < const imm8: i32 > ( a : __m256i ) -> __m256i {
2964+ static_assert_imm8 ! ( imm8) ;
29592965 transmute ( pslliq ( a. as_i64x4 ( ) , imm8) )
29602966}
29612967
@@ -3077,9 +3083,11 @@ pub unsafe fn _mm256_sra_epi32(a: __m256i, count: __m128i) -> __m256i {
30773083/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_srai_epi16)
30783084#[ inline]
30793085#[ target_feature( enable = "avx2" ) ]
3080- #[ cfg_attr( test, assert_instr( vpsraw) ) ]
3086+ #[ cfg_attr( test, assert_instr( vpsraw, imm8 = 7 ) ) ]
3087+ #[ rustc_legacy_const_generics( 1 ) ]
30813088#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
3082- pub unsafe fn _mm256_srai_epi16 ( a : __m256i , imm8 : i32 ) -> __m256i {
3089+ pub unsafe fn _mm256_srai_epi16 < const imm8: i32 > ( a : __m256i ) -> __m256i {
3090+ static_assert_imm8 ! ( imm8) ;
30833091 transmute ( psraiw ( a. as_i16x16 ( ) , imm8) )
30843092}
30853093
@@ -3089,9 +3097,11 @@ pub unsafe fn _mm256_srai_epi16(a: __m256i, imm8: i32) -> __m256i {
30893097/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_srai_epi32)
30903098#[ inline]
30913099#[ target_feature( enable = "avx2" ) ]
3092- #[ cfg_attr( test, assert_instr( vpsrad) ) ]
3100+ #[ cfg_attr( test, assert_instr( vpsrad, imm8 = 7 ) ) ]
3101+ #[ rustc_legacy_const_generics( 1 ) ]
30933102#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
3094- pub unsafe fn _mm256_srai_epi32 ( a : __m256i , imm8 : i32 ) -> __m256i {
3103+ pub unsafe fn _mm256_srai_epi32 < const imm8: i32 > ( a : __m256i ) -> __m256i {
3104+ static_assert_imm8 ! ( imm8) ;
30953105 transmute ( psraid ( a. as_i32x8 ( ) , imm8) )
30963106}
30973107
@@ -3197,9 +3207,11 @@ pub unsafe fn _mm256_srl_epi64(a: __m256i, count: __m128i) -> __m256i {
31973207/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_srli_epi16)
31983208#[ inline]
31993209#[ target_feature( enable = "avx2" ) ]
3200- #[ cfg_attr( test, assert_instr( vpsrlw) ) ]
3210+ #[ cfg_attr( test, assert_instr( vpsrlw, imm8 = 7 ) ) ]
3211+ #[ rustc_legacy_const_generics( 1 ) ]
32013212#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
3202- pub unsafe fn _mm256_srli_epi16 ( a : __m256i , imm8 : i32 ) -> __m256i {
3213+ pub unsafe fn _mm256_srli_epi16 < const imm8: i32 > ( a : __m256i ) -> __m256i {
3214+ static_assert_imm8 ! ( imm8) ;
32033215 transmute ( psrliw ( a. as_i16x16 ( ) , imm8) )
32043216}
32053217
@@ -3209,9 +3221,11 @@ pub unsafe fn _mm256_srli_epi16(a: __m256i, imm8: i32) -> __m256i {
32093221/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_srli_epi32)
32103222#[ inline]
32113223#[ target_feature( enable = "avx2" ) ]
3212- #[ cfg_attr( test, assert_instr( vpsrld) ) ]
3224+ #[ cfg_attr( test, assert_instr( vpsrld, imm8 = 7 ) ) ]
3225+ #[ rustc_legacy_const_generics( 1 ) ]
32133226#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
3214- pub unsafe fn _mm256_srli_epi32 ( a : __m256i , imm8 : i32 ) -> __m256i {
3227+ pub unsafe fn _mm256_srli_epi32 < const imm8: i32 > ( a : __m256i ) -> __m256i {
3228+ static_assert_imm8 ! ( imm8) ;
32153229 transmute ( psrlid ( a. as_i32x8 ( ) , imm8) )
32163230}
32173231
@@ -3221,9 +3235,11 @@ pub unsafe fn _mm256_srli_epi32(a: __m256i, imm8: i32) -> __m256i {
32213235/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_srli_epi64)
32223236#[ inline]
32233237#[ target_feature( enable = "avx2" ) ]
3224- #[ cfg_attr( test, assert_instr( vpsrlq) ) ]
3238+ #[ cfg_attr( test, assert_instr( vpsrlq, imm8 = 7 ) ) ]
3239+ #[ rustc_legacy_const_generics( 1 ) ]
32253240#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
3226- pub unsafe fn _mm256_srli_epi64 ( a : __m256i , imm8 : i32 ) -> __m256i {
3241+ pub unsafe fn _mm256_srli_epi64 < const imm8: i32 > ( a : __m256i ) -> __m256i {
3242+ static_assert_imm8 ! ( imm8) ;
32273243 transmute ( psrliq ( a. as_i64x4 ( ) , imm8) )
32283244}
32293245
@@ -5204,23 +5220,23 @@ mod tests {
52045220 #[ simd_test( enable = "avx2" ) ]
52055221 unsafe fn test_mm256_slli_epi16 ( ) {
52065222 assert_eq_m256i (
5207- _mm256_slli_epi16 ( _mm256_set1_epi16 ( 0xFF ) , 4 ) ,
5223+ _mm256_slli_epi16 :: < 4 > ( _mm256_set1_epi16 ( 0xFF ) ) ,
52085224 _mm256_set1_epi16 ( 0xFF0 ) ,
52095225 ) ;
52105226 }
52115227
52125228 #[ simd_test( enable = "avx2" ) ]
52135229 unsafe fn test_mm256_slli_epi32 ( ) {
52145230 assert_eq_m256i (
5215- _mm256_slli_epi32 ( _mm256_set1_epi32 ( 0xFFFF ) , 4 ) ,
5231+ _mm256_slli_epi32 :: < 4 > ( _mm256_set1_epi32 ( 0xFFFF ) ) ,
52165232 _mm256_set1_epi32 ( 0xFFFF0 ) ,
52175233 ) ;
52185234 }
52195235
52205236 #[ simd_test( enable = "avx2" ) ]
52215237 unsafe fn test_mm256_slli_epi64 ( ) {
52225238 assert_eq_m256i (
5223- _mm256_slli_epi64 ( _mm256_set1_epi64x ( 0xFFFFFFFF ) , 4 ) ,
5239+ _mm256_slli_epi64 :: < 4 > ( _mm256_set1_epi64x ( 0xFFFFFFFF ) ) ,
52245240 _mm256_set1_epi64x ( 0xFFFFFFFF0 ) ,
52255241 ) ;
52265242 }
@@ -5287,15 +5303,15 @@ mod tests {
52875303 #[ simd_test( enable = "avx2" ) ]
52885304 unsafe fn test_mm256_srai_epi16 ( ) {
52895305 assert_eq_m256i (
5290- _mm256_srai_epi16 ( _mm256_set1_epi16 ( -1 ) , 1 ) ,
5306+ _mm256_srai_epi16 :: < 1 > ( _mm256_set1_epi16 ( -1 ) ) ,
52915307 _mm256_set1_epi16 ( -1 ) ,
52925308 ) ;
52935309 }
52945310
52955311 #[ simd_test( enable = "avx2" ) ]
52965312 unsafe fn test_mm256_srai_epi32 ( ) {
52975313 assert_eq_m256i (
5298- _mm256_srai_epi32 ( _mm256_set1_epi32 ( -1 ) , 1 ) ,
5314+ _mm256_srai_epi32 :: < 1 > ( _mm256_set1_epi32 ( -1 ) ) ,
52995315 _mm256_set1_epi32 ( -1 ) ,
53005316 ) ;
53015317 }
@@ -5365,23 +5381,23 @@ mod tests {
53655381 #[ simd_test( enable = "avx2" ) ]
53665382 unsafe fn test_mm256_srli_epi16 ( ) {
53675383 assert_eq_m256i (
5368- _mm256_srli_epi16 ( _mm256_set1_epi16 ( 0xFF ) , 4 ) ,
5384+ _mm256_srli_epi16 :: < 4 > ( _mm256_set1_epi16 ( 0xFF ) ) ,
53695385 _mm256_set1_epi16 ( 0xF ) ,
53705386 ) ;
53715387 }
53725388
53735389 #[ simd_test( enable = "avx2" ) ]
53745390 unsafe fn test_mm256_srli_epi32 ( ) {
53755391 assert_eq_m256i (
5376- _mm256_srli_epi32 ( _mm256_set1_epi32 ( 0xFFFF ) , 4 ) ,
5392+ _mm256_srli_epi32 :: < 4 > ( _mm256_set1_epi32 ( 0xFFFF ) ) ,
53775393 _mm256_set1_epi32 ( 0xFFF ) ,
53785394 ) ;
53795395 }
53805396
53815397 #[ simd_test( enable = "avx2" ) ]
53825398 unsafe fn test_mm256_srli_epi64 ( ) {
53835399 assert_eq_m256i (
5384- _mm256_srli_epi64 ( _mm256_set1_epi64x ( 0xFFFFFFFF ) , 4 ) ,
5400+ _mm256_srli_epi64 :: < 4 > ( _mm256_set1_epi64x ( 0xFFFFFFFF ) ) ,
53855401 _mm256_set1_epi64x ( 0xFFFFFFF ) ,
53865402 ) ;
53875403 }
0 commit comments