File tree 2 files changed +17
-4
lines changed
crates/std_detect/src/detect
2 files changed +17
-4
lines changed Original file line number Diff line number Diff line change @@ -72,7 +72,8 @@ features! {
72
72
@FEATURE : #[ stable( feature = "simd_aarch64" , since = "1.60.0" ) ] pmull: "pmull" ;
73
73
/// FEAT_PMULL (Polynomial Multiply)
74
74
@FEATURE : #[ stable( feature = "simd_aarch64" , since = "1.60.0" ) ] fp: "fp" ;
75
- /// FEAT_FP (Floating point support)
75
+ implied by target_features: [ "neon" ] ;
76
+ /// FEAT_FP (Floating point support) - Implied by `neon` target_feature
76
77
@FEATURE : #[ stable( feature = "simd_aarch64" , since = "1.60.0" ) ] fp16: "fp16" ;
77
78
/// FEAT_FP16 (Half-float support)
78
79
@FEATURE : #[ stable( feature = "simd_aarch64" , since = "1.60.0" ) ] sve: "sve" ;
Original file line number Diff line number Diff line change
1
+ #[ macro_export]
2
+ macro_rules! detect_feature {
3
+ ( $feature: tt, $feature_lit: tt) => {
4
+ $crate:: detect_feature!( $feature, $feature_lit : $feature_lit)
5
+ } ;
6
+ ( $feature: tt, $feature_lit: tt : $( $target_feature_lit: tt) ,* ) => {
7
+ $( cfg!( target_feature = $target_feature_lit) ||) *
8
+ $crate:: detect:: __is_feature_detected:: $feature( )
9
+ } ;
10
+ }
11
+
1
12
#[ allow( unused) ]
2
13
macro_rules! features {
3
14
(
@@ -7,7 +18,9 @@ macro_rules! features {
7
18
@MACRO_ATTRS : $( #[ $macro_attrs: meta] ) *
8
19
$( @BIND_FEATURE_NAME : $bind_feature: tt; $feature_impl: tt; ) *
9
20
$( @NO_RUNTIME_DETECTION : $nort_feature: tt; ) *
10
- $( @FEATURE : #[ $stability_attr: meta] $feature: ident: $feature_lit: tt; $( #[ $feature_comment: meta] ) * ) *
21
+ $( @FEATURE : #[ $stability_attr: meta] $feature: ident: $feature_lit: tt;
22
+ $( implied by target_features: [ $( $target_feature_lit: tt) ,* ] ; ) ?
23
+ $( #[ $feature_comment: meta] ) * ) *
11
24
) => {
12
25
#[ macro_export]
13
26
$( #[ $macro_attrs] ) *
@@ -17,8 +30,7 @@ macro_rules! features {
17
30
macro_rules! $macro_name {
18
31
$(
19
32
( $feature_lit) => {
20
- cfg!( target_feature = $feature_lit) ||
21
- $crate:: detect:: __is_feature_detected:: $feature( )
33
+ $crate:: detect_feature!( $feature, $feature_lit $( : $( $target_feature_lit) ,* ) ?)
22
34
} ;
23
35
) *
24
36
$(
You can’t perform that action at this time.
0 commit comments