@@ -1857,7 +1857,9 @@ pub unsafe fn _mm256_maskstore_epi64(mem_addr: *mut i64, mask: __m256i, a: __m25
1857
1857
#[ cfg_attr( test, assert_instr( vpmaxsw) ) ]
1858
1858
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1859
1859
pub unsafe fn _mm256_max_epi16 ( a : __m256i , b : __m256i ) -> __m256i {
1860
- transmute ( pmaxsw ( a. as_i16x16 ( ) , b. as_i16x16 ( ) ) )
1860
+ let a = a. as_i16x16 ( ) ;
1861
+ let b = b. as_i16x16 ( ) ;
1862
+ transmute ( simd_select :: < i16x16 , _ > ( simd_gt ( a, b) , a, b) )
1861
1863
}
1862
1864
1863
1865
/// Compares packed 32-bit integers in `a` and `b`, and returns the packed
@@ -1869,7 +1871,9 @@ pub unsafe fn _mm256_max_epi16(a: __m256i, b: __m256i) -> __m256i {
1869
1871
#[ cfg_attr( test, assert_instr( vpmaxsd) ) ]
1870
1872
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1871
1873
pub unsafe fn _mm256_max_epi32 ( a : __m256i , b : __m256i ) -> __m256i {
1872
- transmute ( pmaxsd ( a. as_i32x8 ( ) , b. as_i32x8 ( ) ) )
1874
+ let a = a. as_i32x8 ( ) ;
1875
+ let b = b. as_i32x8 ( ) ;
1876
+ transmute ( simd_select :: < i32x8 , _ > ( simd_gt ( a, b) , a, b) )
1873
1877
}
1874
1878
1875
1879
/// Compares packed 8-bit integers in `a` and `b`, and returns the packed
@@ -1881,7 +1885,9 @@ pub unsafe fn _mm256_max_epi32(a: __m256i, b: __m256i) -> __m256i {
1881
1885
#[ cfg_attr( test, assert_instr( vpmaxsb) ) ]
1882
1886
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1883
1887
pub unsafe fn _mm256_max_epi8 ( a : __m256i , b : __m256i ) -> __m256i {
1884
- transmute ( pmaxsb ( a. as_i8x32 ( ) , b. as_i8x32 ( ) ) )
1888
+ let a = a. as_i8x32 ( ) ;
1889
+ let b = b. as_i8x32 ( ) ;
1890
+ transmute ( simd_select :: < i8x32 , _ > ( simd_gt ( a, b) , a, b) )
1885
1891
}
1886
1892
1887
1893
/// Compares packed unsigned 16-bit integers in `a` and `b`, and returns
@@ -1893,7 +1899,9 @@ pub unsafe fn _mm256_max_epi8(a: __m256i, b: __m256i) -> __m256i {
1893
1899
#[ cfg_attr( test, assert_instr( vpmaxuw) ) ]
1894
1900
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1895
1901
pub unsafe fn _mm256_max_epu16 ( a : __m256i , b : __m256i ) -> __m256i {
1896
- transmute ( pmaxuw ( a. as_u16x16 ( ) , b. as_u16x16 ( ) ) )
1902
+ let a = a. as_u16x16 ( ) ;
1903
+ let b = b. as_u16x16 ( ) ;
1904
+ transmute ( simd_select :: < i16x16 , _ > ( simd_gt ( a, b) , a, b) )
1897
1905
}
1898
1906
1899
1907
/// Compares packed unsigned 32-bit integers in `a` and `b`, and returns
@@ -1905,7 +1913,9 @@ pub unsafe fn _mm256_max_epu16(a: __m256i, b: __m256i) -> __m256i {
1905
1913
#[ cfg_attr( test, assert_instr( vpmaxud) ) ]
1906
1914
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1907
1915
pub unsafe fn _mm256_max_epu32 ( a : __m256i , b : __m256i ) -> __m256i {
1908
- transmute ( pmaxud ( a. as_u32x8 ( ) , b. as_u32x8 ( ) ) )
1916
+ let a = a. as_u32x8 ( ) ;
1917
+ let b = b. as_u32x8 ( ) ;
1918
+ transmute ( simd_select :: < i32x8 , _ > ( simd_gt ( a, b) , a, b) )
1909
1919
}
1910
1920
1911
1921
/// Compares packed unsigned 8-bit integers in `a` and `b`, and returns
@@ -1917,7 +1927,9 @@ pub unsafe fn _mm256_max_epu32(a: __m256i, b: __m256i) -> __m256i {
1917
1927
#[ cfg_attr( test, assert_instr( vpmaxub) ) ]
1918
1928
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1919
1929
pub unsafe fn _mm256_max_epu8 ( a : __m256i , b : __m256i ) -> __m256i {
1920
- transmute ( pmaxub ( a. as_u8x32 ( ) , b. as_u8x32 ( ) ) )
1930
+ let a = a. as_u8x32 ( ) ;
1931
+ let b = b. as_u8x32 ( ) ;
1932
+ transmute ( simd_select :: < i8x32 , _ > ( simd_gt ( a, b) , a, b) )
1921
1933
}
1922
1934
1923
1935
/// Compares packed 16-bit integers in `a` and `b`, and returns the packed
@@ -1929,7 +1941,9 @@ pub unsafe fn _mm256_max_epu8(a: __m256i, b: __m256i) -> __m256i {
1929
1941
#[ cfg_attr( test, assert_instr( vpminsw) ) ]
1930
1942
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1931
1943
pub unsafe fn _mm256_min_epi16 ( a : __m256i , b : __m256i ) -> __m256i {
1932
- transmute ( pminsw ( a. as_i16x16 ( ) , b. as_i16x16 ( ) ) )
1944
+ let a = a. as_i16x16 ( ) ;
1945
+ let b = b. as_i16x16 ( ) ;
1946
+ transmute ( simd_select :: < i16x16 , _ > ( simd_lt ( a, b) , a, b) )
1933
1947
}
1934
1948
1935
1949
/// Compares packed 32-bit integers in `a` and `b`, and returns the packed
@@ -1941,7 +1955,9 @@ pub unsafe fn _mm256_min_epi16(a: __m256i, b: __m256i) -> __m256i {
1941
1955
#[ cfg_attr( test, assert_instr( vpminsd) ) ]
1942
1956
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1943
1957
pub unsafe fn _mm256_min_epi32 ( a : __m256i , b : __m256i ) -> __m256i {
1944
- transmute ( pminsd ( a. as_i32x8 ( ) , b. as_i32x8 ( ) ) )
1958
+ let a = a. as_i32x8 ( ) ;
1959
+ let b = b. as_i32x8 ( ) ;
1960
+ transmute ( simd_select :: < i32x8 , _ > ( simd_lt ( a, b) , a, b) )
1945
1961
}
1946
1962
1947
1963
/// Compares packed 8-bit integers in `a` and `b`, and returns the packed
@@ -1953,7 +1969,9 @@ pub unsafe fn _mm256_min_epi32(a: __m256i, b: __m256i) -> __m256i {
1953
1969
#[ cfg_attr( test, assert_instr( vpminsb) ) ]
1954
1970
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1955
1971
pub unsafe fn _mm256_min_epi8 ( a : __m256i , b : __m256i ) -> __m256i {
1956
- transmute ( pminsb ( a. as_i8x32 ( ) , b. as_i8x32 ( ) ) )
1972
+ let a = a. as_i8x32 ( ) ;
1973
+ let b = b. as_i8x32 ( ) ;
1974
+ transmute ( simd_select :: < i8x32 , _ > ( simd_lt ( a, b) , a, b) )
1957
1975
}
1958
1976
1959
1977
/// Compares packed unsigned 16-bit integers in `a` and `b`, and returns
@@ -1965,7 +1983,9 @@ pub unsafe fn _mm256_min_epi8(a: __m256i, b: __m256i) -> __m256i {
1965
1983
#[ cfg_attr( test, assert_instr( vpminuw) ) ]
1966
1984
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1967
1985
pub unsafe fn _mm256_min_epu16 ( a : __m256i , b : __m256i ) -> __m256i {
1968
- transmute ( pminuw ( a. as_u16x16 ( ) , b. as_u16x16 ( ) ) )
1986
+ let a = a. as_u16x16 ( ) ;
1987
+ let b = b. as_u16x16 ( ) ;
1988
+ transmute ( simd_select :: < i16x16 , _ > ( simd_lt ( a, b) , a, b) )
1969
1989
}
1970
1990
1971
1991
/// Compares packed unsigned 32-bit integers in `a` and `b`, and returns
@@ -1977,7 +1997,9 @@ pub unsafe fn _mm256_min_epu16(a: __m256i, b: __m256i) -> __m256i {
1977
1997
#[ cfg_attr( test, assert_instr( vpminud) ) ]
1978
1998
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1979
1999
pub unsafe fn _mm256_min_epu32 ( a : __m256i , b : __m256i ) -> __m256i {
1980
- transmute ( pminud ( a. as_u32x8 ( ) , b. as_u32x8 ( ) ) )
2000
+ let a = a. as_u32x8 ( ) ;
2001
+ let b = b. as_u32x8 ( ) ;
2002
+ transmute ( simd_select :: < i32x8 , _ > ( simd_lt ( a, b) , a, b) )
1981
2003
}
1982
2004
1983
2005
/// Compares packed unsigned 8-bit integers in `a` and `b`, and returns
@@ -1989,7 +2011,9 @@ pub unsafe fn _mm256_min_epu32(a: __m256i, b: __m256i) -> __m256i {
1989
2011
#[ cfg_attr( test, assert_instr( vpminub) ) ]
1990
2012
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1991
2013
pub unsafe fn _mm256_min_epu8 ( a : __m256i , b : __m256i ) -> __m256i {
1992
- transmute ( pminub ( a. as_u8x32 ( ) , b. as_u8x32 ( ) ) )
2014
+ let a = a. as_u8x32 ( ) ;
2015
+ let b = b. as_u8x32 ( ) ;
2016
+ transmute ( simd_select :: < i8x32 , _ > ( simd_lt ( a, b) , a, b) )
1993
2017
}
1994
2018
1995
2019
/// Creates mask from the most significant bit of each 8-bit element in `a`,
@@ -3620,30 +3644,6 @@ extern "C" {
3620
3644
fn maskstoreq ( mem_addr : * mut i8 , mask : i64x2 , a : i64x2 ) ;
3621
3645
#[ link_name = "llvm.x86.avx2.maskstore.q.256" ]
3622
3646
fn maskstoreq256 ( mem_addr : * mut i8 , mask : i64x4 , a : i64x4 ) ;
3623
- #[ link_name = "llvm.x86.avx2.pmaxs.w" ]
3624
- fn pmaxsw ( a : i16x16 , b : i16x16 ) -> i16x16 ;
3625
- #[ link_name = "llvm.x86.avx2.pmaxs.d" ]
3626
- fn pmaxsd ( a : i32x8 , b : i32x8 ) -> i32x8 ;
3627
- #[ link_name = "llvm.x86.avx2.pmaxs.b" ]
3628
- fn pmaxsb ( a : i8x32 , b : i8x32 ) -> i8x32 ;
3629
- #[ link_name = "llvm.x86.avx2.pmaxu.w" ]
3630
- fn pmaxuw ( a : u16x16 , b : u16x16 ) -> u16x16 ;
3631
- #[ link_name = "llvm.x86.avx2.pmaxu.d" ]
3632
- fn pmaxud ( a : u32x8 , b : u32x8 ) -> u32x8 ;
3633
- #[ link_name = "llvm.x86.avx2.pmaxu.b" ]
3634
- fn pmaxub ( a : u8x32 , b : u8x32 ) -> u8x32 ;
3635
- #[ link_name = "llvm.x86.avx2.pmins.w" ]
3636
- fn pminsw ( a : i16x16 , b : i16x16 ) -> i16x16 ;
3637
- #[ link_name = "llvm.x86.avx2.pmins.d" ]
3638
- fn pminsd ( a : i32x8 , b : i32x8 ) -> i32x8 ;
3639
- #[ link_name = "llvm.x86.avx2.pmins.b" ]
3640
- fn pminsb ( a : i8x32 , b : i8x32 ) -> i8x32 ;
3641
- #[ link_name = "llvm.x86.avx2.pminu.w" ]
3642
- fn pminuw ( a : u16x16 , b : u16x16 ) -> u16x16 ;
3643
- #[ link_name = "llvm.x86.avx2.pminu.d" ]
3644
- fn pminud ( a : u32x8 , b : u32x8 ) -> u32x8 ;
3645
- #[ link_name = "llvm.x86.avx2.pminu.b" ]
3646
- fn pminub ( a : u8x32 , b : u8x32 ) -> u8x32 ;
3647
3647
#[ link_name = "llvm.x86.avx2.mpsadbw" ]
3648
3648
fn mpsadbw ( a : u8x32 , b : u8x32 , imm8 : i32 ) -> u16x16 ;
3649
3649
#[ link_name = "llvm.x86.avx2.pmulhu.w" ]
0 commit comments