Commit Graph

2119 Commits

Author SHA1 Message Date
Alex Crichton
d90aa8c244 Add some crate metadata 2018-11-21 11:09:24 -08:00
Alex Crichton
9a451dbcda Merge pull request #264 from alexcrichton/dep-of-std
Prepare for publication to crates.io
2018-11-21 13:07:20 -06:00
Alex Crichton
e367858b0e Remove unknown feature 2018-11-21 11:07:07 -08:00
Alex Crichton
1af471e00b Use nm on OSX
Looks like it may be fixed now?
2018-11-21 10:48:58 -08:00
Alex Crichton
9fdc957019 Use panic=abort for tests
Try to fix issues with undefined `rust_eh_personality` symbols
2018-11-21 10:19:31 -08:00
Alex Crichton
59fb3fd69c Prepare for publication to crates.io
This commit prepares to publish the compiler-builtins crate to crates.io
in order for the standard library to directly depend on it from
crates.io in rust-lang/rust#56092
2018-11-21 10:01:20 -08:00
Jethro Beekman
3880e404a8 Add SGX target 2018-11-21 14:07:57 +05:30
Jethro Beekman
6582b145b8 Add f32 versions of WebAssembly math functions 2018-11-21 14:07:03 +05:30
Alex Crichton
330bb3a744 Update for next LLVM 8 version 2018-11-09 12:52:21 -08:00
Alex Crichton
dbdcd66e35 Revert "Conversion from a wider to a narrower IEEE-754 floating-point type"
This reverts commit baab4fd89cdd945e46fed31166e5dcad7224ed87.
2018-10-30 10:51:11 -07:00
Alex Crichton
b387ac07b1 Update libm submodule 2018-10-24 01:01:14 -07:00
Jorge Aparicio
5c6fd41b3d merge [features] tables 2018-10-24 00:18:30 +02:00
Alex Crichton
9b03920fe1 Optimize intrinsics on wasm32
Profiling a recent demo I was playing with on `wasm32-unknown-unknown`
pointed me to the surprising result that 15% of the execution time was
in the `sqrt` intrinsic (there's a lot of math here). Upon investigation
I remembered that wasm (unconditionally) has a native `f32.sqrt`
instruction!

I was then subsequently confused that a simple `f.sqrt()` actually
codegens to use `f32.sqrt` in Rust, but I later realized that the
implementations of intrinsics in this library often use other intrinsics
to implement them. That means that the real intrinsic here, `acos`,
internally called `sqrt` at some point but wasn't using the optimized
implementation!

To help fix this situation this PR is intended on providing the
infrastructure for optimized implementations (via code generation) to be
used for each intrinsic. I've gone thorugh the various math instructions
that wasm has available and updated each of the intrinsic
implementations in this crate to optionally use the LLVM intrinsic
versions, which are known to unconditionally compile down to a single
instruction (unlike the arbitrary platform, where we don't know what it
will compile down to!).

To do this I created a new macro to wrap the invocation of LLVM
intrinsics. Invoking LLVM intrinsics is turned off by default (through a
new and on-by-default feature, `stable`). When the `stable` feature is
disabled, however, then the wasm-target specifically will enable usage
of the LLVM intrinsics. I've additionally added a CI builder which
should verify that these continue to build on Travis.

After this I intended to update the submodule in the `compiler-builtins`
repository so we can pull in the optimized implementation there, and
`compiler-builtins` naturally won't set `feature = "stable"` when
compiling so all the intrinsics should get compiled in by default. After
a further update of `the libcompiler_builtins` submodule in
rust-lang/rust we should be good to go!
2018-10-11 14:52:09 -07:00
Paolo Teti
45a42b5b89 Conversion from a wider to a narrower IEEE-754 floating-point type
Adds generic conversion from a wider to a narrower IEEE-754
floating-point type.

Implement `__truncdfsf2` and `__truncdfsf2vfp` and associated test-cases.
2018-09-17 19:53:04 +02:00
Alex Crichton
e2a5e16b9e Merge pull request #261 from paoloteti/fix-travis-ci
Attempt to fix TravisCI
2018-09-14 09:17:36 -07:00
Paolo Teti
620a8d4272 Apple-darwin: set DEBUG_LTO_BUILD_DOESNT_WORK
Temporary workaround for the well known
"undefined references problem for debug-assertions+lto" (#79)
2018-09-14 09:40:34 +02:00
Paolo Teti
c03769a47e panic_handler is now stable
Fixes the following warning:

"warning: the feature `panic_handler` has been stable since
1.30.0 and no longer requires an attribute to enable"
2018-09-13 10:25:59 +02:00
Alex Crichton
84523d81a1 Merge pull request #259 from paoloteti/cc-rs
Remove superfluous cc flags
2018-09-09 10:44:02 -07:00
Paolo Teti
296f04fe63 Remove unused variable target_arch_arm
Previous commit makes this variable unused
2018-09-08 19:04:09 +02:00
Paolo Teti
66d52cf01d Remove superfluous cc flags
Latest `cc-rs` already manage all arm/thumb flags, so We can
safely remove this piece of code.
2018-09-08 17:41:26 +02:00
Alex Crichton
447bb5391f Merge pull request #256 from jordanrh1/windows-arm
Support windows/arm target
2018-09-07 10:08:01 -07:00
Jordan Rhee
71c5701c58 Remove unnecessary check 2018-09-07 08:27:38 -07:00
Jordan Rhee
19a7eedbf3 Try undoing unnecessary change 2018-09-06 09:27:24 -07:00
Jordan Rhee
6310b74d85 Support windows/arm target 2018-09-06 09:27:24 -07:00
Alex Crichton
38d5777d98 Fix some use_c_shim_if directives
This was an accidental regression introduced in #252 by removing compilation of
C files without adjusting the `#[use_c_shim_if]` directives. This restores the
compilation of the assembly files and updates the `#[use_c_shim_if]` directives.
2018-09-04 10:21:06 -07:00
Paolo Teti
8a4148f60b Rename panic_implementation -> panic_handler
panic_implementation has been deprecated/renamed.
New name is panic_handler
2018-09-01 21:17:07 +02:00
Alex Crichton
7bb11cdb98 Merge remote-tracking branch 'origin/master' into HEAD 2018-08-31 16:00:25 -07:00
Alex Crichton
091b21da57 Fix compile on riscv again 2018-08-31 16:00:12 -07:00
Alex Crichton
a7286980a0 Merge remote-tracking branch 'origin/master' into HEAD 2018-08-30 14:13:52 -07:00
Alex Crichton
1b4201f90d Fix compilation on riscv32 2018-08-30 14:13:15 -07:00
Charles Samborski
cbff830235 Fix link in README.md (Rust operator precedence) 2018-08-28 15:48:58 +02:00
Igor null
4f1f71a8d6 Ported several remaining math functions from musl
Please note that these aren't tested yet.
2018-08-26 16:36:59 +03:00
Alex Crichton
ff82848c8e Update LLVM's compiler-rt submodule 2018-08-22 11:19:18 -07:00
Adrian Bunk
c9b4a8423c Fix __sync_fetch_and_nand_* for pre-v6 ARM
gcc changed semantics for __sync_fetch_and_nand_* in gcc 4.4,
and this was implementing the old semantics:
https://gcc.gnu.org/onlinedocs/gcc-8.2.0/gcc/_005f_005fsync-Builtins.html
2018-08-18 12:29:01 +03:00
Alex Crichton
2fe6c43d13 Merge remote-tracking branch 'origin/rust-llvm-release-7-0-0-v2' 2018-08-17 11:22:36 -07:00
Alex Crichton
2095fdab37 Remove unused features 2018-08-17 11:21:28 -07:00
Yu Ding
0e67871a43 Follow up on PR #252 2018-08-06 23:03:37 -07:00
Yu Ding
e3ac57b234 Fix symbol collision caused by floatdisf
[PR #234](https://github.com/rust-lang-nursery/compiler-builtins/pull/234) added floatdisf implementation in rust and removed floatdisf.c from build.rs. However the removal is in-complete. In x86_64+!msvc environment, the symbol floatdisf would be generated twice. Bugs found in Redox OS issue [#1195](https://gitlab.redox-os.org/redox-os/redox/issues/1195) and Mesalink travis [log](https://travis-ci.org/mesalock-linux/mesalink/jobs/412928048) at line 738. This patch fixes it by removing floatdisf.c from this environment.

Signed-off-by: Yu Ding <dingelish@gmail.com>
2018-08-06 20:54:48 -07:00
Alex Crichton
b0b04fc043 Upgrade to LLVM 7 branch point 2018-08-04 17:29:48 -07:00
David Craven
831af41ae4 Implement __mulsi3. 2018-07-27 23:03:24 +02:00
Jorge Aparicio
527eefef9c tweak the order of the tests 2018-07-27 00:38:56 -05:00
Jorge Aparicio
28b3fff3c5 uncomment the other build jobs 2018-07-27 00:27:25 -05:00
Jorge Aparicio
99da9ff292 make qemu-arm executable 2018-07-27 00:21:54 -05:00
Jorge Aparicio
c626608e41 add newlib support to the test generator 2018-07-27 00:11:06 -05:00
Alex Crichton
be2f980cf6 Update libm to elide bounds checks 2018-07-25 18:11:47 -07:00
Jorge Aparicio
47e65384f2 ci: fix if condition 2018-07-25 15:02:10 -05:00
Jorge Aparicio
a4197d1cde cargo fmt 2018-07-25 14:49:14 -05:00
Jorge Aparicio
657906b30c ci: add nightly build job to rnu the no-panic test 2018-07-25 14:48:49 -05:00
Jorge Aparicio
6454687134 omit bounds check in release mode
this eliminates panicking branches in the optimized version of the functions. We keep the bounds
checks when running the test suite to check that we never do an out of bounds access.

This commit also adds a "must link" test that ensures that future changes in our implementation
won't add panicking branches.

closes rust-lang/libm#129
2018-07-25 13:16:10 -05:00
Jorge Aparicio
cfa1690e69 fix warnings 2018-07-24 16:57:22 -05:00