@@ -2,12 +2,11 @@ use super::consts::BOUNDARY_MARKER;
22use crate :: RLNCError ;
33use rand:: Rng ;
44
5- #[ cfg( not( feature = "parallel" ) ) ]
6- use crate :: common:: simd:: gf256_mul_vec_by_scalar_then_add_into_vec;
7-
85#[ cfg( all( feature = "parallel" , not( any( target_arch = "x86" , target_arch = "x86_64" ) ) ) ) ]
96use crate :: common:: gf256:: Gf256 ;
10- #[ cfg( feature = "parallel" ) ]
7+ #[ cfg( not( feature = "parallel" ) ) ]
8+ use crate :: common:: simd:: gf256_mul_vec_by_scalar_then_add_into_vec;
9+ #[ cfg( all( feature = "parallel" , any( target_arch = "x86" , target_arch = "x86_64" ) ) ) ]
1110use crate :: common:: simd:: { gf256_inplace_add_vectors, gf256_inplace_mul_vec_by_scalar} ;
1211#[ cfg( feature = "parallel" ) ]
1312use rayon:: prelude:: * ;
@@ -165,14 +164,28 @@ impl Encoder {
165164 . fold (
166165 || vec ! [ 0u8 ; self . piece_byte_len] ,
167166 |mut acc, cur| {
167+ #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
168168 gf256_inplace_add_vectors ( & mut acc, & cur) ;
169+
170+ #[ cfg( not( any( target_arch = "x86" , target_arch = "x86_64" ) ) ) ]
171+ acc. iter_mut ( ) . zip ( cur) . for_each ( |( a, b) | {
172+ * a ^= b;
173+ } ) ;
174+
169175 acc
170176 } ,
171177 )
172178 . reduce (
173179 || vec ! [ 0u8 ; self . piece_byte_len] ,
174180 |mut acc, cur| {
181+ #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
175182 gf256_inplace_add_vectors ( & mut acc, & cur) ;
183+
184+ #[ cfg( not( any( target_arch = "x86" , target_arch = "x86_64" ) ) ) ]
185+ acc. iter_mut ( ) . zip ( cur) . for_each ( |( a, b) | {
186+ * a ^= b;
187+ } ) ;
188+
176189 acc
177190 } ,
178191 ) ;
0 commit comments