|
1 | 1 | #![allow(unused_macros)]
|
2 | 2 | #![allow(unreachable_code)]
|
| 3 | +#![feature(f128)] |
| 4 | +#![feature(f16)] |
3 | 5 |
|
4 | 6 | #[cfg(not(target_arch = "powerpc64"))]
|
5 | 7 | use testcrate::*;
|
@@ -79,6 +81,44 @@ fn float_comparisons() {
|
79 | 81 | 1, __nedf2;
|
80 | 82 | );
|
81 | 83 | });
|
| 84 | + |
| 85 | + #[cfg(not(feature = "no-f16-f128"))] |
| 86 | + { |
| 87 | + #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] |
| 88 | + use compiler_builtins::float::cmp::{ |
| 89 | + __eqkf2 as __eqtf2, __gekf2 as __getf2, __gtkf2 as __gttf2, __lekf2 as __letf2, |
| 90 | + __ltkf2 as __lttf2, __nekf2 as __netf2, __unordkf2 as __unordtf2, |
| 91 | + }; |
| 92 | + |
| 93 | + #[cfg(not(any(target_arch = "powerpc", target_arch = "powerpc64")))] |
| 94 | + use compiler_builtins::float::cmp::{ |
| 95 | + __eqtf2, __getf2, __gttf2, __letf2, __lttf2, __netf2, __unordtf2, |
| 96 | + }; |
| 97 | + |
| 98 | + fuzz_float_2(N, |x: f128, y: f128| { |
| 99 | + let x_is_nan = apfloat_fallback!( |
| 100 | + f128, Quad, not(feature = "no-sys-f128"), |
| 101 | + |x: FloatTy| x.is_nan() => no_convert, |
| 102 | + x |
| 103 | + ); |
| 104 | + let y_is_nan = apfloat_fallback!( |
| 105 | + f128, Quad, not(feature = "no-sys-f128"), |
| 106 | + |x: FloatTy| x.is_nan() => no_convert, |
| 107 | + y |
| 108 | + ); |
| 109 | + |
| 110 | + assert_eq!(__unordtf2(x, y) != 0, x_is_nan || y_is_nan); |
| 111 | + |
| 112 | + cmp!(f128, x, y, Quad, not(feature = "no-sys-f128"), |
| 113 | + 1, __lttf2; |
| 114 | + 1, __letf2; |
| 115 | + 1, __eqtf2; |
| 116 | + -1, __getf2; |
| 117 | + -1, __gttf2; |
| 118 | + 1, __netf2; |
| 119 | + ); |
| 120 | + }); |
| 121 | + } |
82 | 122 | }
|
83 | 123 |
|
84 | 124 | macro_rules! cmp2 {
|
|
0 commit comments