diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-03-26 10:18:44 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-03-26 10:18:44 +0000 |
| commit | dc6595ddbc94173289092d653215e4add8c666e2 (patch) | |
| tree | 3884df8396d1fbc84d795021b920afe0328c8d7c | |
| parent | 60921608f794a217be1bc923b525e4d4c5b8109b (diff) | |
| download | rust-dc6595ddbc94173289092d653215e4add8c666e2.tar.gz rust-dc6595ddbc94173289092d653215e4add8c666e2.zip | |
Implement nearbyintf32 and nearbyintf64 and remove two test ignores
| -rwxr-xr-x | scripts/test_rustc_tests.sh | 3 | ||||
| -rw-r--r-- | src/intrinsics/mod.rs | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/scripts/test_rustc_tests.sh b/scripts/test_rustc_tests.sh index 3a28e1d53b7..63f4ef9464a 100755 --- a/scripts/test_rustc_tests.sh +++ b/scripts/test_rustc_tests.sh @@ -50,7 +50,6 @@ rm -r tests/run-make/c-link-to-rust-va-list-fn # requires callee side vararg sup rm -r tests/run-pass-valgrind/unsized-locals # misc unimplemented things -rm tests/ui/intrinsics/intrinsic-nearby.rs # unimplemented nearbyintf32 and nearbyintf64 intrinsics rm tests/ui/target-feature/missing-plusminus.rs # error not implemented rm -r tests/run-make/emit-named-files # requires full --emit support rm -r tests/run-make/repr128-dwarf # debuginfo test @@ -125,8 +124,6 @@ rm -r tests/run-make/compressed-debuginfo rm -r tests/run-make/extern-fn-explicit-align # argument alignment not yet supported -rm tests/ui/codegen/subtyping-enforces-type-equality.rs # assert_assignable bug with Coroutine's - # bugs in the test suite # ====================== rm tests/ui/backtrace.rs # TODO warning diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs index 25694af78f1..0b213ff8269 100644 --- a/src/intrinsics/mod.rs +++ b/src/intrinsics/mod.rs @@ -341,6 +341,8 @@ fn codegen_float_intrinsic_call<'tcx>( sym::roundf64 => ("round", 1, fx.tcx.types.f64, types::F64), sym::roundevenf32 => ("roundevenf", 1, fx.tcx.types.f32, types::F32), sym::roundevenf64 => ("roundeven", 1, fx.tcx.types.f64, types::F64), + sym::nearbyintf32 => ("nearbyintf", 1, fx.tcx.types.f32, types::F32), + sym::nearbyintf64 => ("nearbyint", 1, fx.tcx.types.f64, types::F64), sym::sinf32 => ("sinf", 1, fx.tcx.types.f32, types::F32), sym::sinf64 => ("sin", 1, fx.tcx.types.f64, types::F64), sym::cosf32 => ("cosf", 1, fx.tcx.types.f32, types::F32), @@ -392,6 +394,8 @@ fn codegen_float_intrinsic_call<'tcx>( | sym::ceilf64 | sym::truncf32 | sym::truncf64 + | sym::nearbyintf32 + | sym::nearbyintf64 | sym::sqrtf32 | sym::sqrtf64 => { let val = match intrinsic { @@ -399,6 +403,7 @@ fn codegen_float_intrinsic_call<'tcx>( sym::floorf32 | sym::floorf64 => fx.bcx.ins().floor(args[0]), sym::ceilf32 | sym::ceilf64 => fx.bcx.ins().ceil(args[0]), sym::truncf32 | sym::truncf64 => fx.bcx.ins().trunc(args[0]), + sym::nearbyintf32 | sym::nearbyintf64 => fx.bcx.ins().nearest(args[0]), sym::sqrtf32 | sym::sqrtf64 => fx.bcx.ins().sqrt(args[0]), _ => unreachable!(), }; |
