Skip to content

Commit f5d24e9

Browse files
committed
miri: we can use apfloat's mul_add now
1 parent 30f3725 commit f5d24e9

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

src/tools/miri/src/intrinsics/mod.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
272272
let a = this.read_scalar(a)?.to_f32()?;
273273
let b = this.read_scalar(b)?.to_f32()?;
274274
let c = this.read_scalar(c)?.to_f32()?;
275-
// FIXME: Using host floats, to work around https://github.com/rust-lang/rustc_apfloat/issues/11
276-
let res = a.to_host().mul_add(b.to_host(), c.to_host()).to_soft();
275+
let res = a.mul_add(b, c).value;
277276
let res = this.adjust_nan(res, &[a, b, c]);
278277
this.write_scalar(res, dest)?;
279278
}
@@ -282,8 +281,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
282281
let a = this.read_scalar(a)?.to_f64()?;
283282
let b = this.read_scalar(b)?.to_f64()?;
284283
let c = this.read_scalar(c)?.to_f64()?;
285-
// FIXME: Using host floats, to work around https://github.com/rust-lang/rustc_apfloat/issues/11
286-
let res = a.to_host().mul_add(b.to_host(), c.to_host()).to_soft();
284+
let res = a.mul_add(b, c).value;
287285
let res = this.adjust_nan(res, &[a, b, c]);
288286
this.write_scalar(res, dest)?;
289287
}
@@ -295,8 +293,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
295293
let c = this.read_scalar(c)?.to_f32()?;
296294
let fuse: bool = this.machine.rng.get_mut().random();
297295
let res = if fuse {
298-
// FIXME: Using host floats, to work around https://github.com/rust-lang/rustc_apfloat/issues/11
299-
a.to_host().mul_add(b.to_host(), c.to_host()).to_soft()
296+
a.mul_add(b, c).value
300297
} else {
301298
((a * b).value + c).value
302299
};
@@ -310,8 +307,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
310307
let c = this.read_scalar(c)?.to_f64()?;
311308
let fuse: bool = this.machine.rng.get_mut().random();
312309
let res = if fuse {
313-
// FIXME: Using host floats, to work around https://github.com/rust-lang/rustc_apfloat/issues/11
314-
a.to_host().mul_add(b.to_host(), c.to_host()).to_soft()
310+
a.mul_add(b, c).value
315311
} else {
316312
((a * b).value + c).value
317313
};

src/tools/miri/src/intrinsics/simd.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
320320
let b = b.to_f32()?;
321321
let c = c.to_f32()?;
322322
let res = if fuse {
323-
a.to_host().mul_add(b.to_host(), c.to_host()).to_soft()
323+
a.mul_add(b, c).value
324324
} else {
325325
((a * b).value + c).value
326326
};
@@ -332,7 +332,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
332332
let b = b.to_f64()?;
333333
let c = c.to_f64()?;
334334
let res = if fuse {
335-
a.to_host().mul_add(b.to_host(), c.to_host()).to_soft()
335+
a.mul_add(b, c).value
336336
} else {
337337
((a * b).value + c).value
338338
};

0 commit comments

Comments
 (0)