| Age | Commit message (Collapse) | Author | Lines |
|
Fixes: https://github.com/rust-lang/compiler-builtins/issues/837
The assembly is based on
- https://github.com/NetBSD/src/blob/20433927938987dd64c8f6aa46904b7aca3fa39e/lib/libm/arch/i387/s_floor.S
- https://github.com/NetBSD/src/blob/20433927938987dd64c8f6aa46904b7aca3fa39e/lib/libm/arch/i387/s_ceil.S
Which both state
/*
* Written by J.T. Conklin <jtc@NetBSD.org>.
* Public domain.
*/
Which I believe means we're good in terms of licensing.
|
|
Pick up the latest version of iai-callgrind, which includes some output
improvements.
Changelog: https://github.com/iai-callgrind/iai-callgrind/releases
|
|
This picks up a fix in `rustc_apfloat` [1] that resolves a problem with
`fma`.
[1]: https://github.com/rust-lang/rustc_apfloat/releases/tag/rustc_apfloat-v0.2.3%2Bllvm-462a31f5a5ab
|
|
and u256
`i256` and `u256`
- operators now use the same overflow convention as primitives
- implement `<<` and `-` (previously just `>>` and `+`)
- implement `Ord` correctly (the previous `PartialOrd` was broken)
- correct `i256::SIGNED` to `true`
The `Int`-trait is extended with `trailing_zeros`, `carrying_add`, and
`borrowing_sub`.
|
|
|
|
The submodule was causing issues in rust-lang/rust, so eliminiate it
here. `build-musl` is also removed from `libm-test`'s default features
so the crate doesn't need to be built by default.
|
|
`binop_common` emits a `SKIP` that is intended to apply only to
`copysign`, but is instead applying to all binary operators. Correct the
general case but leave the currently-failing `maximum_num` tests as a
FIXME, to be resolved separately in [1].
Also simplify skip logic and NaN checking, and add a few more `copysign`
checks.
[1]: https://github.com/rust-lang/compiler-builtins/pull/939
|
|
|
|
In particular, this includes a fix to `iai-callgrind` that will allow us
to simplify our benchmark runner.
|
|
Currently we run logspace tests for extensive tests, but there isn't any
reason we couldn't also run more kinds of tests more extensively (e.g.
more edge cases, combine edge cases with logspace for multi-input
functions, etc). As a first step toward making this possible, make
`extensive` a new field in `CheckCtx`, and rename `QuickSpaced` to
`Spaced`.
|
|
As part of this, the u256 benchmarks are reorganized to a group.
|
|
This is a known problem in the MinGW fmaf implementation, identified at
[1]. Make sure our implementation passes this edge case.
[1]: https://github.com/rust-lang/rust/issues/140515
|
|
These are never available in musl, so introduce easier ways to skip them
rather than needing to exclude f16/f128 functions in three different
places.
|
|
It would be nice to reuse some of the macro structure for internal
functions, like `rem_pio2`. To facilitate this, add a `public` field and
make it available in the macro's API.
|
|
In order to disambiguate things now that libm is part of the
compiler-builtins repository, do the following:
* Mention libm in LICENSE.txt
* Clarify the default license for crates other than libm and
compiler-builtins
* Add an explicit license field to Cargo.toml for all other crates
|
|
Update `run.sh` to start testing `libm`. Currently this is somewhat
inefficient because `builtins-test` gets run more than once on some
targets; this can be cleaned up later.
|
|
This was broken since the crate's location relative to the target
directory had changed.
|
|
These are still not yet covered in CI since we always name explicit
packages there, but all crates are now part of the workspace.
|
|
Apply the same formatting rules to both `libm` and `compiler-builtins`.
|
|
Update paths and submodules to fix `libm-test` and `util` building so we
will be able to add them to the workspace.
|
|
Distribute everything from `libm/` to better locations in the repo.
`libm/libm/*` has not moved yet to avoid Git seeing the move as an edit
to `Cargo.toml`.
Files that remain to be merged somehow are in `etc/libm`.
|