From: Ralf Jung Date: Wed, 16 Mar 2022 22:33:59 +0000 (-0400) Subject: implement fabs using soft floats X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=202964127b0874ac9aa0e10e7baa7ae4ef576908;p=rust.git implement fabs using soft floats --- diff --git a/src/shims/intrinsics.rs b/src/shims/intrinsics.rs index b4416bfa985..24aeb448912 100644 --- a/src/shims/intrinsics.rs +++ b/src/shims/intrinsics.rs @@ -90,9 +90,20 @@ fn call_intrinsic( } // Floating-point operations + "fabsf32" => { + let &[ref f] = check_arg_count(args)?; + let f = this.read_scalar(f)?.to_f32()?; + // Can be implemented in soft-floats. + this.write_scalar(Scalar::from_f32(f.abs()), dest)?; + } + "fabsf64" => { + let &[ref f] = check_arg_count(args)?; + let f = this.read_scalar(f)?.to_f64()?; + // Can be implemented in soft-floats. + this.write_scalar(Scalar::from_f64(f.abs()), dest)?; + } #[rustfmt::skip] | "sinf32" - | "fabsf32" | "cosf32" | "sqrtf32" | "expf32" @@ -110,7 +121,6 @@ fn call_intrinsic( let f = f32::from_bits(this.read_scalar(f)?.to_u32()?); let f = match intrinsic_name { "sinf32" => f.sin(), - "fabsf32" => f.abs(), "cosf32" => f.cos(), "sqrtf32" => f.sqrt(), "expf32" => f.exp(), @@ -129,7 +139,6 @@ fn call_intrinsic( #[rustfmt::skip] | "sinf64" - | "fabsf64" | "cosf64" | "sqrtf64" | "expf64" @@ -147,7 +156,6 @@ fn call_intrinsic( let f = f64::from_bits(this.read_scalar(f)?.to_u64()?); let f = match intrinsic_name { "sinf64" => f.sin(), - "fabsf64" => f.abs(), "cosf64" => f.cos(), "sqrtf64" => f.sqrt(), "expf64" => f.exp(),