@@ -12,16 +12,23 @@ enum Feature {
1212 NoSysF16 ,
1313 NoSysF16F64Convert ,
1414 NoSysF16F128Convert ,
15+ NoSysF16GnuConvert ,
1516}
1617
1718impl Feature {
1819 fn implies ( self ) -> & ' static [ Self ] {
1920 match self {
2021 Self :: NoSysF128 => [ Self :: NoSysF128IntConvert , Self :: NoSysF16F128Convert ] . as_slice ( ) ,
2122 Self :: NoSysF128IntConvert => [ ] . as_slice ( ) ,
22- Self :: NoSysF16 => [ Self :: NoSysF16F64Convert , Self :: NoSysF16F128Convert ] . as_slice ( ) ,
23+ Self :: NoSysF16 => [
24+ Self :: NoSysF16F64Convert ,
25+ Self :: NoSysF16F128Convert ,
26+ Feature :: NoSysF16GnuConvert ,
27+ ]
28+ . as_slice ( ) ,
2329 Self :: NoSysF16F64Convert => [ ] . as_slice ( ) ,
2430 Self :: NoSysF16F128Convert => [ ] . as_slice ( ) ,
31+ Self :: NoSysF16GnuConvert => [ ] . as_slice ( ) ,
2532 }
2633 }
2734}
@@ -84,6 +91,11 @@ fn main() {
8491 features. insert ( Feature :: NoSysF16F64Convert ) ;
8592 }
8693
94+ // These platforms do not have `__gnu_f2h_ieee` or `__gnu_h2f_ieee`.
95+ if false {
96+ features. insert ( Feature :: NoSysF16GnuConvert ) ;
97+ }
98+
8799 // Add implied features. Collection is required for borrows.
88100 features. extend (
89101 features
@@ -108,6 +120,10 @@ fn main() {
108120 "no-sys-f16-f128-convert" ,
109121 "using apfloat fallback for f16 <-> f128 conversions" ,
110122 ) ,
123+ Feature :: NoSysF16GnuConvert => (
124+ "no-sys-f16-gnu-convert" ,
125+ "using apfloat fallback for __gnu f16" ,
126+ ) ,
111127 Feature :: NoSysF16 => ( "no-sys-f16" , "using apfloat fallback for f16" ) ,
112128 } ;
113129 println ! ( "cargo:warning={warning}" ) ;
0 commit comments