Commit Graph

2078 Commits

Author SHA1 Message Date
github-actions[bot]
4f3418a4d7 chore: release v0.2.9 2024-10-26 18:10:21 -05:00
Trevor Gross
0433caa0ba Fix release-plz workflow configuration 2024-10-26 18:01:56 -05:00
Trevor Gross
47961340db Add release-plz for automated releases 2024-10-26 17:58:38 -05:00
Trevor Gross
6399bed36c Update licensing to MIT AND Apache-2.0 WITH LLVM-exception
Currently, Cargo.toml specifies Apache-2.0 OR MIT, but LICENSE.txt
describes MIT OR NCSA. compiler-builtins is derived from LLVM's
compiler-rt. LICENSE.txt correctly reflects the state of compiler-rt
prior to relicensing on 2019-01-19, during which time software was
available for use under either MIT or the University of Illinois NCSA
license. After relicensing, however, compiler-rt is available for use
only under Apache-2.0 with the LLVM exception; this is not reflected
anywhere in the repository.

Update the SPDX license identifier to `MIT AND Apache-2.0 WITH
LLVM-exception AND (MIT OR Apache-2.0)`. Each AND portion covers
something specific:

* Apache-2.0 WITH LLVM-exception: this covers work that is derived from
  the LLVM repository since after the LLVM relicensing.
* MIT: This covers work that is derived from LLVM before the LLVM
  relicensing (under MIT OR NCSA), as well as the vendored `libm`
  components.
* MIT AND Apache-2.0: This ensures that any contributions to this
  repository, in addition to meeting the above required licenses, is
  also released for use under the Rust-standard Apache-2.0 with no LLVM
  exception.

See also the parallel license update in rust-lang/libm [1].

Fixes: https://github.com/rust-lang/compiler-builtins/issues/307
Closes: https://github.com/rust-lang/compiler-builtins/pull/511
Link: https://rust-lang.zulipchat.com/#narrow/channel/335408-foundation/topic/Request.20for.20legal.20team.20input.20on.20crate.20licensing
Link: https://github.com/rust-lang/libm/pull/317 [1]
2024-10-26 17:35:26 -05:00
Trevor Gross
bd82e67afc Update licensing to MIT AND (MIT OR Apache-2.0)
Currently both Cargo.toml and the license files indicate that this
library may be used under either MIT or Apache-2.0. However, this is not
accurate; since portions of this library were derived from musl libc,
which is available under the MIT license, this terms of use for this
library must also include use under the MIT license. That is, it is not
correct that this library may be used under only the Apache-2.0 license.

Update the SPDX license identifier to `MIT OR (MIT AND Apache-2.0)` to
indicate that use must include the MIT license, but to clarify that
contributions are made under `MIT OR Apache-2.0`. This is compatible
with the current state of this repository since it has always contained
both license files, and the `Cargo.toml` license field has indicated
`MIT OR Apache-2.0` since it was added.

In accordance with the above, replace the two license files with a
combined LICENSE.txt that makes these terms clear and gives attribution
to works from which this library is derived.

Fixes: https://github.com/rust-lang/libm/issues/215
Link: https://rust-lang.zulipchat.com/#narrow/channel/335408-foundation/topic/Request.20for.20legal.20team.20input.20on.20crate.20licensing
Link: https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT
2024-10-26 17:09:57 -05:00
Trevor Gross
79bf4fe1f2 Don't deny warnings in lib.rs
Having `#![deny(warnings)]` for the entire crate is a bit of a
development annoyance. We already run CI with `RUSTFLAGS=-Dwarnings` so
there isn't much of a reason to check this locally. Thus, remove the
attribute.

Additionally, sort the clippy allows.
2024-10-26 00:54:26 -05:00
Trevor Gross
a68516ed6a Rename the musl-bitwise-tests feature to test-musl-serialized
We will have more test features in the near future, and it would be nice
for them all to have a common `test-` prefix. Reverse the existing
feature so this is the case.
2024-10-25 20:57:19 -04:00
Trevor Gross
394fb9f2bc Add an abs function to the Float trait
There is no in-crate use for this yet, but we will make use of it in
`libm`.
2024-10-25 14:30:03 -05:00
Trevor Gross
2f7fafd182 Rename Float::repr and Float::from_repr
`to_bits` and `from_bits` are builtin methods on float types. Rename
`repr` to `to_bits` and `from_repr` to `from_bits` so this is consistent
with usage that doesn't go through the trait.
2024-10-25 14:18:53 -05:00
github-actions[bot]
ce89a70ae4 chore: release v0.1.135 2024-10-23 09:57:03 +00:00
Niklas Sombert
68b820187b Re-enable math module on i686-unknown-uefi
In 9ba77d1583e6de5ab9cf7c9b82827ba8fcb9062f, this was disabled for x86
without sse2. It should be fine to re-enable it for UEFI, as explained at
<https://github.com/rust-lang/rust/issues/128533#issuecomment-2408699671>.
2024-10-23 11:39:33 +02:00
github-actions[bot]
3e922da156 chore: release v0.1.134 2024-10-17 23:55:25 +00:00
Ben Kimock
2a738c50ab Use wrapping pointer arithmetic in mem/impls.rs
Add a comment (and fix a typo)
2024-10-16 22:37:42 -04:00
Trevor Gross
d3943b1863 Set edition to 2021 for all crates 2024-10-07 00:22:14 -05:00
Trevor Gross
d82eb88722 Fix shellcheck warnings in scripts 2024-10-06 13:44:25 -05:00
Trevor Gross
d0f1dd6010 Set target-specific AR and CC arguments
The Rust `cc` crate reads these, so make sure they are set for when we
start making use of `cc`.
2024-10-06 00:18:00 -05:00
Trevor Gross
0be441d5ad Update Ubuntu images to 24.04
We don't have any specific reason to stay on 18.04, so upgrade to the
latest LTS version.
2024-10-06 00:10:12 -05:00
Trevor Gross
d8c234b959 Do library updates necessary with dependency upgrades 2024-10-05 22:28:38 -05:00
Trevor Gross
cb305df194 Upgrade all dependencies
None of these affect the distributed library.
2024-10-05 22:24:14 -05:00
Trevor Gross
c236051681 Rename the musl-reference-tests feature to musl-bitwise-tests
The plan is to add more test related features that could be considered
"reference tests". Rename the feature here to avoid future confusion.
2024-10-05 21:42:28 -05:00
github-actions[bot]
fedfc6aaab chore: release 2024-10-06 02:08:00 +00:00
Trevor Gross
996799a896 Add a note about avoiding default implemenations in some places
Link: https://github.com/rust-lang/compiler-builtins/pull/707
2024-10-05 20:55:47 -05:00
Enzo "raskyld" Nocera
8153729f91 fix(int): avoid infinite recursion on left shift
Please, see this discussion for the full
context: https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/.5Bwasm32.5D.20Infinite.20recursion.20.60compiler-builtins.60.20.60__multi3.60

Signed-off-by: Enzo "raskyld" Nocera <enzo@nocera.eu>

We determined that some recursion problems on SPARC and WASM were due to
infinite recusion. This was introduced at 9c6fcb56e8 ("Split Int into
Int and MinInt") when moving the implementation of `widen_hi` from
something on each `impl` block to a default on the trait. The reasoning
is not fully understood, but undoing this portion of the change seems to
resolve the issue.

[ add the above context - Trevor ]

Signed-off-by: Trevor Gross <tmgross@umich.edu>
2024-10-05 20:49:45 -05:00
Trevor Gross
f59dd82cca Move musl-reference-tests to a new libm-test crate
There isn't any reason for this feature to be exposed or part of the
build script. Move it to a separate crate.

We will also want more tests that require some support functions; this
will create a place for them.
2024-10-05 15:54:39 -05:00
github-actions[bot]
3edc27ef56 chore: release 2024-10-04 17:17:03 +00:00
Alan Wu
3f70601e3c Allow implicit function decl on A64
Testing in <https://github.com/rust-lang/rust/pull/131221>, we found
that <https://github.com/rust-lang/compiler-builtins/pull/627> is
unusable with the current LLVM version.
2024-10-04 12:33:16 -04:00
Trevor Gross
76580a96a7 Upgrade CI LLVM version to 19.1
19.1 is the latest stable release from 2024-09-17. This will match what
is currently being used in rust-lang/rust.
2024-10-03 11:49:45 -04:00
github-actions[bot]
859e22b4ae chore: release 2024-10-03 15:37:33 +00:00
Alan Wu
edc6f80dcc Build with -Werror=implicit-function-declaration
To prevent fail-fast in situations like
https://github.com/rust-lang/rust/issues/125619, where an upstream
source compiles but creates a link error way downstream.
2024-10-03 11:24:49 -04:00
Trevor Gross
0c97b10dc0 Add riscv64gc to CI
There is a proposal to promote `riscv64gc-unknown-linux-gnu` to tier 1
[1]. We do not currently test RISC-V in CI; add it here.

[1]: https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Imminent.20RFC.20PR.3A.20riscv64gc-unknown-linux-gnu.20to.20Tier-1
2024-10-02 16:35:28 -04:00
Trevor Gross
85cd4c0660 Fix some warnings from shellcheck 2024-09-28 21:24:44 -04:00
Trevor Gross
c6b434e5a3 Revert "Temporarily use define_rust_probestack;"
<https://github.com/rust-lang/rust/issues/126984> has been resolved.
Remove the workaround that was introduced to suppress it.

This reverts commit 254edbcad4cfd6a8af32e3297c1037d7984c3c49.
2024-09-28 18:22:22 -04:00
Trevor Gross
e226c0dce5 Ungate tests that were skipped due to a broken implementation
The upstream issue [1] has been resolved so we can enable these tests
again.

[1]: https://github.com/rust-lang/compiler-builtins/issues/616
2024-09-28 18:13:34 -04:00
Trevor Gross
4ae984cbce Resolve FIXMEs related to f16 assembly
We have a couple FIXMEs from before aarch64 `f16` assembly support
existed. We have this available now, so resolve the notes here.
2024-09-28 17:57:06 -04:00
github-actions[bot]
8a13ab7dfc chore: release 2024-09-28 15:13:17 +00:00
Trevor Gross
b2db9e8e89 Add a benchmark for __powitf2 2024-09-28 11:06:33 -04:00
Trevor Gross
606d971958 Add support for f128 integer exponentiation
Create the symbol `__powitf2`.
2024-09-28 11:06:33 -04:00
Trevor Gross
2a32f80cdc Move float_pow tests to their own file 2024-09-28 11:06:33 -04:00
Trevor Gross
18b42ebb78 Remove unneeded features
A few of the features that we enable have been stabilized, others may
have been needed at some point but are no longer required. Clean this
up.
2024-09-28 10:56:30 -04:00
github-actions[bot]
c48926906a chore: release 2024-09-27 11:08:02 +00:00
Trevor Gross
1649f72ea6 Revert "Bump cc dependency" 2024-09-27 07:00:19 -04:00
Davide Mor
8c31ec9e7d Fixed __divtf3 having wrong cfg for f128 2024-09-26 15:25:48 +02:00
github-actions[bot]
1e5bf9e166 chore: release 2024-09-25 14:37:03 +00:00
Artyom Tetyukhin
70d74bb7a4 Bump cc dependency 2024-09-25 18:21:36 +04:00
github-actions[bot]
d6d29197e4 chore: release 2024-09-24 16:40:44 +00:00
Trevor Gross
4842bd6ab1 Add benchmarks for f128 division 2024-09-24 18:32:58 +02:00
Trevor Gross
764a177497 Add f128 division
Use the new generic division algorithm to expose `__divtf3` and
`__divkf3`.
2024-09-24 18:32:58 +02:00
Trevor Gross
4f8afbabdc Make float division generic
Float division currently has a separate `div32` and `div64` for `f32`
and `f64`, respectively. Combine these to make use of generics. This
will make it easier to support `f128` division, and reduces a lot of
redundant code.

This includes a simplification of division tests.
2024-09-24 18:32:56 +02:00
Trevor Gross
23af8ca763 Update bounds and docs for the Float trait
Add some bounds to integer types that allow our function trait bounds to
be slightly less verbose. Also clarify documentation and remove a
redundant operation.
2024-09-24 18:21:57 +02:00
Trevor Gross
44840a12bc Add Shr to u256
Float division requires some shift operations on big integers; implement
right shift here.
2024-09-24 18:21:57 +02:00