@@ -291,24 +291,26 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
291
291
this. binop_ignore_overflow ( op, a, b, dest) ?;
292
292
}
293
293
294
- "minnumf32" | "maxnumf32" => {
294
+ "minnumf32" | "maxnumf32" | "copysignf32" => {
295
295
let a = this. read_scalar ( args[ 0 ] ) ?. to_f32 ( ) ?;
296
296
let b = this. read_scalar ( args[ 1 ] ) ?. to_f32 ( ) ?;
297
- let res = if intrinsic_name. starts_with ( "min" ) {
298
- a. min ( b)
299
- } else {
300
- a. max ( b)
297
+ let res = match intrinsic_name {
298
+ "minnumf32" => a. min ( b) ,
299
+ "maxnumf32" => a. max ( b) ,
300
+ "copysignf32" => a. copy_sign ( b) ,
301
+ _ => bug ! ( ) ,
301
302
} ;
302
303
this. write_scalar ( Scalar :: from_f32 ( res) , dest) ?;
303
304
}
304
305
305
- "minnumf64" | "maxnumf64" => {
306
+ "minnumf64" | "maxnumf64" | "copysignf64" => {
306
307
let a = this. read_scalar ( args[ 0 ] ) ?. to_f64 ( ) ?;
307
308
let b = this. read_scalar ( args[ 1 ] ) ?. to_f64 ( ) ?;
308
- let res = if intrinsic_name. starts_with ( "min" ) {
309
- a. min ( b)
310
- } else {
311
- a. max ( b)
309
+ let res = match intrinsic_name {
310
+ "minnumf64" => a. min ( b) ,
311
+ "maxnumf64" => a. max ( b) ,
312
+ "copysignf64" => a. copy_sign ( b) ,
313
+ _ => bug ! ( ) ,
312
314
} ;
313
315
this. write_scalar ( Scalar :: from_f64 ( res) , dest) ?;
314
316
}
0 commit comments