Commit graph

1055 commits

Author SHA1 Message Date
Trevor Gross
f82e1f14fc Rework the test crate to separate individual tests
Currently, tests of the same kind are grouped together across all types
into a single function. This makes it difficult to understand exactly
what failed in CI.

Change test macros to create separate functions for separate types so
failures are more fine grained.
2024-05-18 04:37:55 -04:00
Trevor Gross
a82491ed54 Correct f128 extend and truncate symbol names on powerpc
PowerPC uses `kf` instead of `tf`:
<https://gcc.gnu.org/wiki/Ieee128PowerPC>
2024-05-15 07:19:17 -05:00
Trevor Gross
aaa5260748 Implement f128 comparison 2024-05-15 07:19:17 -05:00
Trevor Gross
191c1b88cd Implement f128 multiplication 2024-05-15 07:19:17 -05:00
Trevor Gross
2755f457f8 Implement f128 addition and subtraction 2024-05-15 07:19:17 -05:00
Trevor Gross
4509315d2f Enable no-fail-fast for more usable test output 2024-05-15 07:19:17 -05:00
Trevor Gross
1be6626307 Refactor float test macros to have a fallback
Change float test macros to fall back to testing against `rustc_apfloat`
when system implementations are not available, rather than just skipping
tests.

This allows for easier debugging where operations may not be supported.
2024-05-15 07:19:17 -05:00
Trevor Gross
23b91f2b58 Add i256 and u256 bigint types 2024-05-15 07:19:17 -05:00
Trevor Gross
10689247bc Split Int into Int and MinInt
`MinInt` contains the basic methods that are only needed by integers
involved in widening operations, i.e. big integers. `Int` retains all
other operations and convenience methods.
2024-05-15 07:19:17 -05:00
theKidOfArcrania
0ccdd076ae Merge branch 'master' of https://github.com/rust-lang/compiler-builtins 2024-05-14 15:50:50 -07:00
theKidOfArcrania
4c35dc3b1e Remove aarch64 CI 2024-05-14 15:47:07 -07:00
theKidOfArcrania
8c27bcb11a Maybe try arm64 2024-05-13 11:38:43 -07:00
theKidOfArcrania
6ef61fd85a Update target 2024-05-13 11:31:23 -07:00
theKidOfArcrania
4edceece66 Add aarch64 target 2024-05-13 11:29:55 -07:00
theKidOfArcrania
a5779e5d37 Fix paths for Windows arm64 build 2024-05-13 11:17:07 -07:00
Amanieu d'Antras
f16e62159b Release 0.1.112 2024-05-11 10:05:33 +02:00
Trevor Gross
f52b4a268f Remove the undocumented and unused rustbuild feature
See
<https://github.com/rust-lang/compiler-builtins/pull/603#discussion_r1590747361>
2024-05-11 09:56:55 +02:00
Trevor Gross
54d96150b5 Update cfg to fix warnings 2024-05-11 09:56:55 +02:00
Trevor Gross
286944e479 Emit directives for cargo-check-cfg 2024-05-11 09:56:55 +02:00
Trevor Gross
ccfe0e3808 Deny warnings in CI
There are currently a lot of warnings printed in CI, mostly dead code.
Update CI to deny warnings.
2024-05-11 09:56:55 +02:00
Nicholas Bishop
e4e03883ed Enable chkstk/alloca intrinsics on i686-unknown-uefi 2024-05-08 21:47:12 -04:00
Amanieu d'Antras
2faef31e96 Release version 0.1.111 2024-05-04 19:57:27 +01:00
Patryk Wychowaniec
461682bd91 fix: Add #[avr_skip] for __addsf3 & __adddf3
It looks like I've forgotten about them [back in 2023](https://github.com/rust-lang/compiler-builtins/pull/527).
2024-05-04 19:50:22 +02:00
Amanieu d'Antras
060391b020 Release version 0.1.110 2024-05-04 15:31:14 +01:00
Martin Nordholts
8c0c504d4f Update reference to rustc-std-workspace-core 2024-05-04 14:56:01 +02:00
Amjad Alsharafi
ce8a0c346d Cleanup manged-names macro
Don't generate the whole function if we are not going to use `no_mangle`, there is no point
2024-05-03 13:27:03 +02:00
Amjad Alsharafi
e232a79146 Remove unneeded weak for optimized-c function
`weak` is only used with `no_mangle`
2024-05-03 13:27:03 +02:00
Amjad Alsharafi
2e096145c3 Apply weak attributes to all intrinsics
Removed the `weak-intrinsics` feature, so that all functions
will have the `weak` linkage attribute.

Also this fixed the bug in
https://github.com/rust-lang/rust/issues/124042.

Before this commit, generated code will be
```rust
pub extern "C" fn <name>(...) -> ... {
        // code...
}
pub mod <name> {
    #[linkage = "weak"]
    #[no_mangle]
    pub extern "C" fn <name>(...) -> ... {
        super::<name>(...)
    }
}
```

The issue is that there is 2 `weak` linkage, the first one is not required.
Along refactoring `weak` attributes, this was fixed.
2024-05-03 13:27:03 +02:00
beetrees
229babb1d0 Add builtins for f16/f128 float conversions 2024-05-02 13:49:24 +02:00
Amjad Alsharafi
656106f050 Updated libm to fix clippy warning 2024-04-30 23:28:43 +02:00
Amjad Alsharafi
f761f03822 Fix clippy warnings in math
The solution is not pretty, but not sure why we still get clippy
warning from one of the files in `libm` even though we use
`allow(clippy::all)`
2024-04-30 23:28:43 +02:00
Amjad Alsharafi
2ce9bc0cc1 Fix math libraries not being linked on some platforms
This is a continuation/fix of 018616e. In that commit, we made it add
the math functions to all platforms (except apple-targets and windows),
and use `weak` linking, so that it can be used if the system doesn't
have those functions.

Didn't notice `mod math` was behind another set of `cfg`, so removed it
as well here.
2024-04-30 23:28:43 +02:00
beetrees
a2587f7b02
Update status of 128-bit integers in README.md 2024-04-28 17:41:35 +01:00
Trevor Gross
1b679e5cee Apply some more fixes suggested by Shellcheck 2024-04-19 11:49:23 -04:00
Trevor Gross
a55604fd8c Add a way to run tests on non-linux machines
Allow using the `rust-lang/rust:nightly` docker image to run tests in
cases where the host rust and cargo cannot be used, such as non-linux
hosts.
2024-04-19 11:49:23 -04:00
Trevor Gross
d5bc2de9ec Add CI testing for AArch64 Darwin
The Apple ARM silicon has been around for a while now and hopefully will
become Rust Tier 1 at some point. Add it to CI since it is distinct
enough from aarch64-linux and x86_86-darwin that there may be
differences.
2024-04-16 14:04:47 -04:00
Trevor Gross
47f2241db9 Change aarch64_linux module and lse tests to have the same gating
Trying to run testcrate on non-linux aarch64 currently hits a
compilation error. Make this test linux-only, to be consistent with the
`aarch64_linux` module that it depends on.

Additionally, enable the `aarch64_linux` module for `target_arch =
"arm64ec"` to be the same as these tests.
2024-04-16 14:04:47 -04:00
Amanieu d'Antras
bd48df66bd Release 0.1.109 2024-04-10 13:16:43 +01:00
Amjad Alsharafi
6cf5c13e87 Do not include math intrinsics for windows and apple targets 2024-04-10 13:40:59 +02:00
Amjad Alsharafi
5416c204a9 Always have math functions but with weak linking attribute if we can
This is a replacement for https://github.com/rust-lang/libm/pull/290

This fixes crashes during compilations for targets that don't have math
symbols by default.

So, we will provide them libm symbols, but mark it as `weak` (if its
supported), so that the linker will choose the system builtin functions,
since those are sometimes more optimized.
If the linker couldn't find those, it will go with `libm`
implementation.
2024-04-10 13:40:59 +02:00
Ralf Jung
bf0ce314e9 add lib.miri.rs file for miri-test-libstd 2024-04-10 12:59:14 +02:00
Jeremy Drake
f23a83c53c Add __chkstk on i686-pc-windows-gnu.
libLLVMSupport.a(DynamicLibrary.cpp.obj) references ___chkstk, which is
an alias of __alloca in libgcc.  This crate provided __alloca, but
libgcc's implementation was also pulled in by the linker due to the
reference to ___chkstk, causing a multiple definition linker error.
Providing that symbol here prevents that.

Fixes #585
2024-04-07 13:08:27 -07:00
Kleis Auke Wolthuizen
f04f8a6a9d Sync x86 chkstk intrinsics with LLVM
Incorporates the following commits:
885d7b759b
1f9eff100c
7a5cba8bea
2024-03-29 19:51:56 +01:00
Daniel Paoliello
30182128c9 Add support for arm64ec 2024-03-28 09:20:13 -07:00
trevyn
dc1321a5ca Remove duplicate symbol workaround 2024-03-28 14:19:13 +00:00
WANG Rui
75624cc8ae Add compiler-rt fallbacks on loongarch64-musl 2024-03-28 14:12:16 +00:00
Ralf Jung
ce85d06f3b add c_unwind feature 2024-03-28 11:33:03 +01:00
Amanieu d'Antras
68b5a7a0ad Clean up and rework CI script 2024-03-28 10:17:42 +00:00
Amanieu d'Antras
079d7d857c Release 0.1.108 2024-02-04 06:40:51 +00:00
Nikita Popov
168bc9ecd7 Also don't build floatdixf and floatundixf 2024-02-02 10:04:55 +01:00