@@ -291,24 +291,26 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
291291 this. binop_ignore_overflow ( op, a, b, dest) ?;
292292 }
293293
294- "minnumf32" | "maxnumf32" => {
294+ "minnumf32" | "maxnumf32" | "copysignf32" => {
295295 let a = this. read_scalar ( args[ 0 ] ) ?. to_f32 ( ) ?;
296296 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 ! ( ) ,
301302 } ;
302303 this. write_scalar ( Scalar :: from_f32 ( res) , dest) ?;
303304 }
304305
305- "minnumf64" | "maxnumf64" => {
306+ "minnumf64" | "maxnumf64" | "copysignf64" => {
306307 let a = this. read_scalar ( args[ 0 ] ) ?. to_f64 ( ) ?;
307308 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 ! ( ) ,
312314 } ;
313315 this. write_scalar ( Scalar :: from_f64 ( res) , dest) ?;
314316 }
0 commit comments