@@ -1950,102 +1950,6 @@ pub unsafe fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
1950
1950
vqaddq_s32_ ( a, b)
1951
1951
}
1952
1952
1953
- /// Signed saturating accumulate of unsigned value
1954
- #[ inline]
1955
- #[ target_feature( enable = "neon" ) ]
1956
- #[ cfg_attr( target_arch = "arm" , target_feature( enable = "v7" ) ) ]
1957
- #[ cfg_attr( all( test, target_arch = "arm" ) , assert_instr( suqadd) ) ]
1958
- #[ cfg_attr( all( test, target_arch = "aarch64" ) , assert_instr( suqadd) ) ]
1959
- pub unsafe fn vuqadd_s8 ( a : int8x8_t , b : int8x8_t ) -> int8x8_t {
1960
- #[ allow( improper_ctypes) ]
1961
- extern "C" {
1962
- #[ cfg_attr( target_arch = "arm" , link_name = "llvm.arm.neon.vuqadds.v8i8" ) ]
1963
- #[ cfg_attr( target_arch = "aarch64" , link_name = "llvm.aarch64.neon.suqadd.v8i8" ) ]
1964
- fn vuqadd_s8_ ( a : int8x8_t , b : int8x8_t ) -> int8x8_t ;
1965
- }
1966
- vuqadd_s8_ ( a, b)
1967
- }
1968
-
1969
- /// Signed saturating accumulate of unsigned value
1970
- #[ inline]
1971
- #[ target_feature( enable = "neon" ) ]
1972
- #[ cfg_attr( target_arch = "arm" , target_feature( enable = "v7" ) ) ]
1973
- #[ cfg_attr( all( test, target_arch = "arm" ) , assert_instr( suqadd) ) ]
1974
- #[ cfg_attr( all( test, target_arch = "aarch64" ) , assert_instr( suqadd) ) ]
1975
- pub unsafe fn vuqaddq_s8 ( a : int8x16_t , b : int8x16_t ) -> int8x16_t {
1976
- #[ allow( improper_ctypes) ]
1977
- extern "C" {
1978
- #[ cfg_attr( target_arch = "arm" , link_name = "llvm.arm.neon.vuqadds.v16i8" ) ]
1979
- #[ cfg_attr( target_arch = "aarch64" , link_name = "llvm.aarch64.neon.suqadd.v16i8" ) ]
1980
- fn vuqaddq_s8_ ( a : int8x16_t , b : int8x16_t ) -> int8x16_t ;
1981
- }
1982
- vuqaddq_s8_ ( a, b)
1983
- }
1984
-
1985
- /// Signed saturating accumulate of unsigned value
1986
- #[ inline]
1987
- #[ target_feature( enable = "neon" ) ]
1988
- #[ cfg_attr( target_arch = "arm" , target_feature( enable = "v7" ) ) ]
1989
- #[ cfg_attr( all( test, target_arch = "arm" ) , assert_instr( suqadd) ) ]
1990
- #[ cfg_attr( all( test, target_arch = "aarch64" ) , assert_instr( suqadd) ) ]
1991
- pub unsafe fn vuqadd_s16 ( a : int16x4_t , b : int16x4_t ) -> int16x4_t {
1992
- #[ allow( improper_ctypes) ]
1993
- extern "C" {
1994
- #[ cfg_attr( target_arch = "arm" , link_name = "llvm.arm.neon.vuqadds.v4i16" ) ]
1995
- #[ cfg_attr( target_arch = "aarch64" , link_name = "llvm.aarch64.neon.suqadd.v4i16" ) ]
1996
- fn vuqadd_s16_ ( a : int16x4_t , b : int16x4_t ) -> int16x4_t ;
1997
- }
1998
- vuqadd_s16_ ( a, b)
1999
- }
2000
-
2001
- /// Signed saturating accumulate of unsigned value
2002
- #[ inline]
2003
- #[ target_feature( enable = "neon" ) ]
2004
- #[ cfg_attr( target_arch = "arm" , target_feature( enable = "v7" ) ) ]
2005
- #[ cfg_attr( all( test, target_arch = "arm" ) , assert_instr( suqadd) ) ]
2006
- #[ cfg_attr( all( test, target_arch = "aarch64" ) , assert_instr( suqadd) ) ]
2007
- pub unsafe fn vuqaddq_s16 ( a : int16x8_t , b : int16x8_t ) -> int16x8_t {
2008
- #[ allow( improper_ctypes) ]
2009
- extern "C" {
2010
- #[ cfg_attr( target_arch = "arm" , link_name = "llvm.arm.neon.vuqadds.v8i16" ) ]
2011
- #[ cfg_attr( target_arch = "aarch64" , link_name = "llvm.aarch64.neon.suqadd.v8i16" ) ]
2012
- fn vuqaddq_s16_ ( a : int16x8_t , b : int16x8_t ) -> int16x8_t ;
2013
- }
2014
- vuqaddq_s16_ ( a, b)
2015
- }
2016
-
2017
- /// Signed saturating accumulate of unsigned value
2018
- #[ inline]
2019
- #[ target_feature( enable = "neon" ) ]
2020
- #[ cfg_attr( target_arch = "arm" , target_feature( enable = "v7" ) ) ]
2021
- #[ cfg_attr( all( test, target_arch = "arm" ) , assert_instr( suqadd) ) ]
2022
- #[ cfg_attr( all( test, target_arch = "aarch64" ) , assert_instr( suqadd) ) ]
2023
- pub unsafe fn vuqadd_s32 ( a : int32x2_t , b : int32x2_t ) -> int32x2_t {
2024
- #[ allow( improper_ctypes) ]
2025
- extern "C" {
2026
- #[ cfg_attr( target_arch = "arm" , link_name = "llvm.arm.neon.vuqadds.v2i32" ) ]
2027
- #[ cfg_attr( target_arch = "aarch64" , link_name = "llvm.aarch64.neon.suqadd.v2i32" ) ]
2028
- fn vuqadd_s32_ ( a : int32x2_t , b : int32x2_t ) -> int32x2_t ;
2029
- }
2030
- vuqadd_s32_ ( a, b)
2031
- }
2032
-
2033
- /// Signed saturating accumulate of unsigned value
2034
- #[ inline]
2035
- #[ target_feature( enable = "neon" ) ]
2036
- #[ cfg_attr( target_arch = "arm" , target_feature( enable = "v7" ) ) ]
2037
- #[ cfg_attr( all( test, target_arch = "arm" ) , assert_instr( suqadd) ) ]
2038
- #[ cfg_attr( all( test, target_arch = "aarch64" ) , assert_instr( suqadd) ) ]
2039
- pub unsafe fn vuqaddq_s32 ( a : int32x4_t , b : int32x4_t ) -> int32x4_t {
2040
- #[ allow( improper_ctypes) ]
2041
- extern "C" {
2042
- #[ cfg_attr( target_arch = "arm" , link_name = "llvm.arm.neon.vuqadds.v4i32" ) ]
2043
- #[ cfg_attr( target_arch = "aarch64" , link_name = "llvm.aarch64.neon.suqadd.v4i32" ) ]
2044
- fn vuqaddq_s32_ ( a : int32x4_t , b : int32x4_t ) -> int32x4_t ;
2045
- }
2046
- vuqaddq_s32_ ( a, b)
2047
- }
2048
-
2049
1953
/// Multiply
2050
1954
#[ inline]
2051
1955
#[ target_feature( enable = "neon" ) ]
@@ -4207,64 +4111,6 @@ mod test {
4207
4111
assert_eq ! ( r, e) ;
4208
4112
}
4209
4113
4210
- #[ simd_test( enable = "neon" ) ]
4211
- unsafe fn test_vuqadd_s8 ( ) {
4212
- let a: i8x8 = i8x8:: new ( 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 ) ;
4213
- let b: i8x8 = i8x8:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ) ;
4214
- let e: i8x8 = i8x8:: new ( 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 ) ;
4215
- let r: i8x8 = transmute ( vuqadd_s8 ( transmute ( a) , transmute ( b) ) ) ;
4216
- assert_eq ! ( r, e) ;
4217
- }
4218
-
4219
- #[ simd_test( enable = "neon" ) ]
4220
- unsafe fn test_vuqaddq_s8 ( ) {
4221
- let a: i8x16 = i8x16:: new (
4222
- 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 ,
4223
- ) ;
4224
- let b: i8x16 = i8x16:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ) ;
4225
- let e: i8x16 = i8x16:: new (
4226
- 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 ,
4227
- ) ;
4228
- let r: i8x16 = transmute ( vuqaddq_s8 ( transmute ( a) , transmute ( b) ) ) ;
4229
- assert_eq ! ( r, e) ;
4230
- }
4231
-
4232
- #[ simd_test( enable = "neon" ) ]
4233
- unsafe fn test_vuqadd_s16 ( ) {
4234
- let a: i16x4 = i16x4:: new ( 42 , 42 , 42 , 42 ) ;
4235
- let b: i16x4 = i16x4:: new ( 1 , 2 , 3 , 4 ) ;
4236
- let e: i16x4 = i16x4:: new ( 43 , 44 , 45 , 46 ) ;
4237
- let r: i16x4 = transmute ( vuqadd_s16 ( transmute ( a) , transmute ( b) ) ) ;
4238
- assert_eq ! ( r, e) ;
4239
- }
4240
-
4241
- #[ simd_test( enable = "neon" ) ]
4242
- unsafe fn test_vuqaddq_s16 ( ) {
4243
- let a: i16x8 = i16x8:: new ( 42 , 42 , 42 , 42 , 42 , 42 , 42 , 42 ) ;
4244
- let b: i16x8 = i16x8:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ) ;
4245
- let e: i16x8 = i16x8:: new ( 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 ) ;
4246
- let r: i16x8 = transmute ( vuqaddq_s16 ( transmute ( a) , transmute ( b) ) ) ;
4247
- assert_eq ! ( r, e) ;
4248
- }
4249
-
4250
- #[ simd_test( enable = "neon" ) ]
4251
- unsafe fn test_vuqadd_s32 ( ) {
4252
- let a: i32x2 = i32x2:: new ( 42 , 42 ) ;
4253
- let b: i32x2 = i32x2:: new ( 1 , 2 ) ;
4254
- let e: i32x2 = i32x2:: new ( 43 , 44 ) ;
4255
- let r: i32x2 = transmute ( vuqadd_s32 ( transmute ( a) , transmute ( b) ) ) ;
4256
- assert_eq ! ( r, e) ;
4257
- }
4258
-
4259
- #[ simd_test( enable = "neon" ) ]
4260
- unsafe fn test_vuqaddq_s32 ( ) {
4261
- let a: i32x4 = i32x4:: new ( 42 , 42 , 42 , 42 ) ;
4262
- let b: i32x4 = i32x4:: new ( 1 , 2 , 3 , 4 ) ;
4263
- let e: i32x4 = i32x4:: new ( 43 , 44 , 45 , 46 ) ;
4264
- let r: i32x4 = transmute ( vuqaddq_s32 ( transmute ( a) , transmute ( b) ) ) ;
4265
- assert_eq ! ( r, e) ;
4266
- }
4267
-
4268
4114
#[ simd_test( enable = "neon" ) ]
4269
4115
unsafe fn test_vmul_s8 ( ) {
4270
4116
let a: i8x8 = i8x8:: new ( 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 ) ;
0 commit comments