@@ -20,9 +20,7 @@ pub(crate) fn logaddexp(a: f64, b: f64) -> f64 {
2020}
2121
2222#[ cfg( feature = "simd_support" ) ]
23- #[ multiversion]
24- #[ clone( target = "[x64|x86_64]+avx+avx2+fma" ) ]
25- #[ clone( target = "x86+sse" ) ]
23+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
2624pub fn multiply ( x : & [ f64 ] , y : & [ f64 ] , out : & mut [ f64 ] ) {
2725 let n = x. len ( ) ;
2826 assert ! ( y. len( ) == n) ;
@@ -44,9 +42,7 @@ pub fn multiply(x: &[f64], y: &[f64], out: &mut [f64]) {
4442}
4543
4644#[ cfg( not( feature = "simd_support" ) ) ]
47- #[ multiversion]
48- #[ clone( target = "[x64|x86_64]+avx+avx2+fma" ) ]
49- #[ clone( target = "x86+sse" ) ]
45+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
5046pub fn multiply ( x : & [ f64 ] , y : & [ f64 ] , out : & mut [ f64 ] ) {
5147 let n = x. len ( ) ;
5248 assert ! ( y. len( ) == n) ;
@@ -58,9 +54,7 @@ pub fn multiply(x: &[f64], y: &[f64], out: &mut [f64]) {
5854}
5955
6056#[ cfg( feature = "simd_support" ) ]
61- #[ multiversion]
62- #[ clone( target = "[x84|x86_64]+avx+avx2+fma" ) ]
63- #[ clone( target = "x86+sse" ) ]
57+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
6458pub fn scalar_prods2 ( positive1 : & [ f64 ] , positive2 : & [ f64 ] , x : & [ f64 ] , y : & [ f64 ] ) -> ( f64 , f64 ) {
6559 let n = positive1. len ( ) ;
6660
@@ -99,9 +93,7 @@ pub fn scalar_prods2(positive1: &[f64], positive2: &[f64], x: &[f64], y: &[f64])
9993}
10094
10195#[ cfg( not( feature = "simd_support" ) ) ]
102- #[ multiversion]
103- #[ clone( target = "[x84|x86_64]+avx+avx2+fma" ) ]
104- #[ clone( target = "x86+sse" ) ]
96+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
10597pub fn scalar_prods2 ( positive1 : & [ f64 ] , positive2 : & [ f64 ] , x : & [ f64 ] , y : & [ f64 ] ) -> ( f64 , f64 ) {
10698 let n = positive1. len ( ) ;
10799
@@ -116,9 +108,7 @@ pub fn scalar_prods2(positive1: &[f64], positive2: &[f64], x: &[f64], y: &[f64])
116108}
117109
118110#[ cfg( feature = "simd_support" ) ]
119- #[ multiversion]
120- #[ clone( target = "[x84|x86_64]+avx+avx2+fma" ) ]
121- #[ clone( target = "x86+sse" ) ]
111+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
122112pub fn scalar_prods3 (
123113 positive1 : & [ f64 ] ,
124114 negative1 : & [ f64 ] ,
@@ -167,9 +157,7 @@ pub fn scalar_prods3(
167157}
168158
169159#[ cfg( not( feature = "simd_support" ) ) ]
170- #[ multiversion]
171- #[ clone( target = "[x84|x86_64]+avx+avx2+fma" ) ]
172- #[ clone( target = "x86+sse" ) ]
160+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
173161pub fn scalar_prods3 (
174162 positive1 : & [ f64 ] ,
175163 negative1 : & [ f64 ] ,
@@ -191,9 +179,7 @@ pub fn scalar_prods3(
191179}
192180
193181#[ cfg( feature = "simd_support" ) ]
194- #[ multiversion]
195- #[ clone( target = "[x86|x86_64]+avx+avx2+fma" ) ]
196- #[ clone( target = "x86+sse" ) ]
182+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
197183pub fn vector_dot ( a : & [ f64 ] , b : & [ f64 ] ) -> f64 {
198184 assert ! ( a. len( ) == b. len( ) ) ;
199185
@@ -216,9 +202,7 @@ pub fn vector_dot(a: &[f64], b: &[f64]) -> f64 {
216202}
217203
218204#[ cfg( not( feature = "simd_support" ) ) ]
219- #[ multiversion]
220- #[ clone( target = "[x86|x86_64]+avx+avx2+fma" ) ]
221- #[ clone( target = "x86+sse" ) ]
205+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
222206pub fn vector_dot ( a : & [ f64 ] , b : & [ f64 ] ) -> f64 {
223207 assert ! ( a. len( ) == b. len( ) ) ;
224208
@@ -230,9 +214,7 @@ pub fn vector_dot(a: &[f64], b: &[f64]) -> f64 {
230214}
231215
232216#[ cfg( feature = "simd_support" ) ]
233- #[ multiversion]
234- #[ clone( target = "[x86|x86_64]+avx+avx2+fma" ) ]
235- #[ clone( target = "x86+sse" ) ]
217+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
236218pub fn axpy ( x : & [ f64 ] , y : & mut [ f64 ] , a : f64 ) {
237219 let n = x. len ( ) ;
238220 assert ! ( y. len( ) == n) ;
@@ -255,9 +237,7 @@ pub fn axpy(x: &[f64], y: &mut [f64], a: f64) {
255237}
256238
257239#[ cfg( not( feature = "simd_support" ) ) ]
258- #[ multiversion]
259- #[ clone( target = "[x86|x86_64]+avx+avx2+fma" ) ]
260- #[ clone( target = "x86+sse" ) ]
240+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
261241pub fn axpy ( x : & [ f64 ] , y : & mut [ f64 ] , a : f64 ) {
262242 let n = x. len ( ) ;
263243 assert ! ( y. len( ) == n) ;
@@ -268,9 +248,7 @@ pub fn axpy(x: &[f64], y: &mut [f64], a: f64) {
268248}
269249
270250#[ cfg( feature = "simd_support" ) ]
271- #[ multiversion]
272- #[ clone( target = "[x86|x86_64]+avx+avx2+fma" ) ]
273- #[ clone( target = "x86+sse+fma" ) ]
251+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
274252pub fn axpy_out ( x : & [ f64 ] , y : & [ f64 ] , a : f64 , out : & mut [ f64 ] ) {
275253 let n = x. len ( ) ;
276254 assert ! ( y. len( ) == n) ;
@@ -297,9 +275,7 @@ pub fn axpy_out(x: &[f64], y: &[f64], a: f64, out: &mut [f64]) {
297275}
298276
299277#[ cfg( not( feature = "simd_support" ) ) ]
300- #[ multiversion]
301- #[ clone( target = "[x86|x86_64]+avx+avx2+fma" ) ]
302- #[ clone( target = "x86+sse+fma" ) ]
278+ #[ multiversion( targets( "x86_64+avx+avx2+fma" , "arm+neon" ) ) ]
303279pub fn axpy_out ( x : & [ f64 ] , y : & [ f64 ] , a : f64 , out : & mut [ f64 ] ) {
304280 let n = x. len ( ) ;
305281 assert ! ( y. len( ) == n) ;
0 commit comments