std float tests: special-case Miri in feature detection · patricklam/verify-rust-std@4281185 (original) (raw)

`@@ -11,6 +11,7 @@ fn main() {

`

11

11

`.expect("CARGO_CFG_TARGET_POINTER_WIDTH was not set")

`

12

12

`.parse()

`

13

13

`.unwrap();

`

``

14

`+

let is_miri = env::var_os("CARGO_CFG_MIRI").is_some();

`

14

15

``

15

16

`println!("cargo:rustc-check-cfg=cfg(netbsd10)");

`

16

17

`if target_os == "netbsd" && env::var("RUSTC_STD_NETBSD10").is_ok() {

`

`@@ -91,6 +92,8 @@ fn main() {

`

91

92

`println!("cargo:rustc-check-cfg=cfg(reliable_f128_math)");

`

92

93

``

93

94

`let has_reliable_f16 = match (target_arch.as_str(), target_os.as_str()) {

`

``

95

`+

// We can always enable these in Miri as that is not affected by codegen bugs.

`

``

96

`+

_ if is_miri => true,

`

94

97

`// Selection failure until recent LLVM https://github.com/llvm/llvm-project/issues/93894

`

95

98

`// FIXME(llvm19): can probably be removed at the version bump

`

96

99

`("loongarch64", _) => false,

`

`@@ -118,6 +121,8 @@ fn main() {

`

118

121

`};

`

119

122

``

120

123

`let has_reliable_f128 = match (target_arch.as_str(), target_os.as_str()) {

`

``

124

`+

// We can always enable these in Miri as that is not affected by codegen bugs.

`

``

125

`+

_ if is_miri => true,

`

121

126

`// Unsupported https://github.com/llvm/llvm-project/issues/94434

`

122

127

`("arm64ec", _) => false,

`

123

128

`// ABI and precision bugs https://github.com/rust-lang/rust/issues/125109

`

`@@ -141,6 +146,8 @@ fn main() {

`

141

146

`// LLVM is currenlty adding missing routines, https://github.com/llvm/llvm-project/issues/93566

`

142

147

`let has_reliable_f16_math = has_reliable_f16

`

143

148

` && match (target_arch.as_str(), target_os.as_str()) {

`

``

149

`+

// FIXME: Disabled on Miri as the intrinsics are not implemented yet.

`

``

150

`+

_ if is_miri => false,

`

144

151

`// Currently nothing special. Hooray!

`

145

152

`// This will change as platforms gain better better support for standard ops but math

`

146

153

`// lags behind.

`

`@@ -149,6 +156,8 @@ fn main() {

`

149

156

``

150

157

`let has_reliable_f128_math = has_reliable_f128

`

151

158

` && match (target_arch.as_str(), target_os.as_str()) {

`

``

159

`+

// FIXME: Disabled on Miri as the intrinsics are not implemented yet.

`

``

160

`+

_ if is_miri => false,

`

152

161

`` // LLVM lowers fp128 math to long double symbols even on platforms where

``

153

162

`` // long double is not IEEE binary128. See

``

154

163

`// https://github.com/llvm/llvm-project/issues/44744.

`