Commit graph

1336 commits

Author SHA1 Message Date
Trevor Gross
e35091a2d0 Disable libm on x86 without sse2
In <https://github.com/rust-lang/compiler-builtins/pull/594>, symbols
for the Rust port of libm were made always weakly available. This seems
to be causing problems on platforms with ABI issues, as explained at
<https://github.com/rust-lang/rust/pull/125016#issuecomment-2174572661>.

Disable Rust libm on x86 without sse2 to mitigate this.
2024-06-17 19:38:55 -05:00
Amanieu d'Antras
72d172ca48
Merge pull request #621 from tgross35/ci-caching
Add CI caching
2024-05-24 23:24:15 +02:00
Trevor Gross
84e87eb15b Add caching for downloading compiler-rt 2024-05-24 23:18:59 +02:00
Trevor Gross
98ddf3c66d Enable cache for Docker images 2024-05-24 23:18:59 +02:00
Trevor Gross
d0fdc0044a Enable cache for Cargo components of the build 2024-05-24 23:18:59 +02:00
Amanieu d'Antras
46e377ae5f
Merge pull request #618 from tgross35/benchmarking
Add benchmarks for floating point math
2024-05-24 23:18:00 +02:00
Trevor Gross
6cd17ff4d2 Add benchmarks for floating point math
This adds comparisons among the compiler-builtins function, system
functions if available, and optionally handwritten assembly.

These also help us identify inconsistencies between this crate and
system functions, which may otherwise go unnoticed if intrinsics get
lowered to inline operations rather than library calls.
2024-05-24 02:49:41 -04:00
Amanieu d'Antras
c9517347b5
Merge pull request #590 from QuentinPerez/master
Add Apple visionOS support
2024-05-23 01:45:10 +02:00
Quentin Perez
2fa55c4ef5 Add Apple visionOS support 2024-05-22 09:49:08 +02:00
Amanieu d'Antras
24d4826719
Merge pull request #619 from tgross35/update-intrinsics
Update examples/intrinsics.rs
2024-05-21 20:17:13 +02:00
Trevor Gross
81fbfedd92 Add some missing functions to examples/intrinsics 2024-05-21 20:13:40 +02:00
Trevor Gross
ec12399470 Update outdated contribution guidelines 2024-05-21 20:13:40 +02:00
Trevor Gross
324544fb6a Add f16 and f128 intrinsics to the example test 2024-05-21 20:13:40 +02:00
Trevor Gross
d696144b87 Organize functions in intrinsics example 2024-05-21 20:13:40 +02:00
Amanieu d'Antras
839245c1db
Merge pull request #620 from tgross35/ppc-alias
Add `ppc_alias` to the `intrinsics!` macro
2024-05-21 20:12:00 +02:00
Trevor Gross
c7bd2a5655 Add ppc_alias to the intrinsics! macro
PowerPC platforms use `kf` rather than `tf` for `f128`. Add a way to
alias this in the macro to make the code cleaner.

This also fixes the names of `fixunstf*` and `fixtf*` on Power PC
(`fixunskf*` and `fixkf*` are correct).
2024-05-21 03:55:37 -04:00
Amanieu d'Antras
6ab5934b81
Merge pull request #613 from tgross35/f16-f128-convert
Add `f128` float to integer conversion functions
2024-05-21 02:06:19 +02:00
Trevor Gross
ccd179b231 Add f128 float to integer conversion functions
Add the following:

- `__fixtfsi`
- `__fixtfdi`
- `__fixtfti`
- `__fixunstfsi`
- `__fixunstfdi`
- `__fixunstfti`
2024-05-20 20:01:33 -04:00
Trevor Gross
aaaf62bd6b Add an apfloat fallback for float to integer tests 2024-05-20 20:01:19 -04:00
Trevor Gross
a3b1dfb8d5 Allow a specific fallback function in apfloat_fallback
`as` casts are only allowed for primitives, doing the same operations
with `rustc_apfloat` requires using functions. Add a way to specify
these separately.
2024-05-20 20:00:46 -04:00
Trevor Gross
fc53fb64fc Make float to integer conversions generic
Deduplicate code used for float to integer conversions in order to make
adding `f128` conversion functions easier.
2024-05-20 19:46:53 -04:00
Trevor Gross
bac7b1e777 Add CastFrom as a convenience form of CastInto 2024-05-20 19:46:53 -04:00
Amanieu d'Antras
ba01751407
Merge pull request #612 from theKidOfArcrania/master
Add tests for verbatim paths on windows builds
2024-05-21 01:13:55 +02:00
Henry Wang
0722bc4275 Don't run verbatim test on windows-gnu 2024-05-21 01:09:47 +02:00
Henry Wang
7d60c93165 Only run --features c for verbatim test 2024-05-21 01:09:47 +02:00
theKidOfArcrania
416be726df verbatim tests only need to build 2024-05-21 01:09:47 +02:00
theKidOfArcrania
fd290b1339 Properly escape /C and fix naming 2024-05-21 01:09:47 +02:00
theKidOfArcrania
e3d86a8350 Instead have cmd.exe dump out path 2024-05-21 01:09:47 +02:00
theKidOfArcrania
0000f98d73 Fix backslash 2024-05-21 01:09:47 +02:00
theKidOfArcrania
e246ba5a46 Use cmd.exe 2024-05-21 01:09:47 +02:00
theKidOfArcrania
24cb0c2bcc Fix CI 2024-05-21 01:09:47 +02:00
theKidOfArcrania
3fdef93258 Add tests for UNC paths on windows builds 2024-05-21 01:09:47 +02:00
Amanieu d'Antras
b07accb2c5
Merge pull request #615 from tgross35/test-refactoring
Rework the test crate to separate individual tests
2024-05-21 01:08:47 +02:00
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
Amanieu d'Antras
f8b72ede7e
Merge pull request #606 from tgross35/f16-f128-intrinsics-min
Add addition, subtraction, multiplication, and compare operations for `f128`
2024-05-16 16:08:10 +02: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
Amanieu d'Antras
0da9e16bef
Merge pull request #609 from theKidOfArcrania/master
Fix paths for Windows arm64 build
2024-05-15 10:33:39 +02: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