@@ -23,13 +23,13 @@ const N: usize = 1024;
2323type BitView < ' a > = vortex_buffer:: BitView < ' a , 128 > ;
2424
2525trait FilterImpl {
26- fn filter < T : Copy > ( bitview : & BitView , slice : & mut [ T ] ) ;
26+ fn filter < ' a , T : Copy > ( bitview : & BitView , slice : & ' a mut [ T ] ) -> & ' a mut [ T ] ;
2727}
2828
2929/// The main entry point for the filter function that performs all the dispatch.
3030struct ActualFilter ;
3131impl FilterImpl for ActualFilter {
32- fn filter < T : Copy > ( bitview : & BitView , slice : & mut [ T ] ) {
32+ fn filter < ' a , T : Copy > ( bitview : & BitView , slice : & ' a mut [ T ] ) -> & ' a mut [ T ] {
3333 slice. filter ( bitview)
3434 }
3535}
@@ -44,8 +44,11 @@ impl FilterImpl for ScalarFilter {
4444struct NeonFilter ;
4545impl FilterImpl for NeonFilter {
4646 fn filter < T : Copy > ( bitview : & BitView , slice : & mut [ T ] ) {
47- if arch:: is_aarch64_feature_detected!( "neon" ) {
48- bench:: bench_filter_neon :: < _ , T > ( bitview, slice)
47+ #[ cfg( target_arch = "aarch64" ) ]
48+ {
49+ if arch:: is_aarch64_feature_detected!( "neon" ) {
50+ bench:: bench_filter_neon :: < _ , T > ( bitview, slice)
51+ }
4952 }
5053 }
5154}
@@ -94,7 +97,6 @@ fn bench_filter_fn<F: FilterImpl, T: Default + Copy>(bencher: Bencher, mask_dens
9497
9598 bencher. bench_local ( || {
9699 let view = BitView :: new ( mask. inner ( ) . as_ref ( ) . try_into ( ) . unwrap ( ) ) ;
97- F :: filter ( & view, & mut buffer) ;
98- black_box ( & mut buffer) ;
100+ black_box ( F :: filter ( & view, & mut buffer) ) ;
99101 } ) ;
100102}
0 commit comments