@@ -82,16 +82,16 @@ pub fn simd_test(
82
82
} ;
83
83
let macro_test = Ident :: new ( macro_test, Span :: call_site ( ) ) ;
84
84
85
- let mut cfg_target_features = TokenStream :: new ( ) ;
85
+ let mut detect_missing_features = TokenStream :: new ( ) ;
86
86
for feature in target_features {
87
87
let q = quote_spanned ! {
88
88
proc_macro2:: Span :: call_site( ) =>
89
- #macro_test!( #feature) &&
89
+ if !#macro_test!( #feature) {
90
+ missing_features. push( #feature) ;
91
+ }
90
92
} ;
91
- q. to_tokens ( & mut cfg_target_features ) ;
93
+ q. to_tokens ( & mut detect_missing_features ) ;
92
94
}
93
- let q = quote ! { true } ;
94
- q. to_tokens ( & mut cfg_target_features) ;
95
95
96
96
let test_norun = std:: env:: var ( "STDSIMD_TEST_NORUN" ) . is_ok ( ) ;
97
97
let maybe_ignore = if test_norun {
@@ -107,11 +107,13 @@ pub fn simd_test(
107
107
#maybe_ignore
108
108
#( #item_attrs) *
109
109
fn #name( ) {
110
- if #force_test | ( #cfg_target_features) {
110
+ let mut missing_features = :: std:: vec:: Vec :: new( ) ;
111
+ #detect_missing_features
112
+ if #force_test || missing_features. is_empty( ) {
111
113
let v = unsafe { #name( ) } ;
112
114
return v;
113
115
} else {
114
- :: stdarch_test:: assert_skip_test_ok( stringify!( #name) ) ;
116
+ :: stdarch_test:: assert_skip_test_ok( stringify!( #name) , & missing_features ) ;
115
117
}
116
118
117
119
#[ target_feature( enable = #enable_feature) ]
0 commit comments