400 Commits

Author SHA1 Message Date
Andrey Zgarbul
62e2506745 fix jn, ilogb 2019-05-09 18:40:19 +03:00
Alex Crichton
68c49a2362 Test jn and jnf 2019-05-09 07:58:57 -07:00
Alex Crichton
f0122d38f7 Generate NaN and Infinity more often
Make sure they come up in RNG generation of floats
2019-05-09 07:53:21 -07:00
Alex Crichton
b22395e001 Test sincos and sincosf 2019-05-09 07:52:52 -07:00
Alex Crichton
8755986beb Move non-public functions to pub(crate)
Remove exceptions from the test list after doing so
2019-05-09 07:27:10 -07:00
Andrey Zgarbul
2c1ec98266 test several outputs 2019-05-09 12:10:11 +03:00
Andrey Zgarbul
9f0bc49652 fix traits 2019-05-09 07:36:52 +03:00
Andrey Zgarbul
61e38098d9 Merge branch 'm1elports' of https://github.com/burrbull/libm into m1elports 2019-05-09 07:00:32 +03:00
Andrey Zgarbul
3b17edb395 rm asine, mv lgamma 2019-05-09 06:58:58 +03:00
Andrey Zgarbul
b291f0509a sh +x 2019-05-07 09:07:26 +03:00
Andrey Zgarbul
2c9fd146d3 tests, fixes, format 2019-05-07 07:16:24 +03:00
Andrey Zgarbul
b034304632 Merge branch 'lots-of-untested-ports' of https://github.com/m1el/libm 2019-05-06 09:11:10 +03:00
Alex Crichton
0ae442888c
Merge pull request #161 from alexcrichton/ldexp
Add bindings for ldexp/ldexpf
2019-05-02 14:38:55 -05:00
Alex Crichton
b93ba68740
Merge pull request #151 from 4tm4j33tk4ur/clippy
fixed some clippy warnings
2019-05-02 14:38:27 -05:00
Alex Crichton
ee6c046804 Run cargo fmt 2019-05-02 12:36:37 -07:00
Alex Crichton
1e551a6115
Merge pull request #153 from m1el/floorf-uint-underflow
Fixed uint overflow in floorf for negative exponents
2019-05-02 14:35:15 -05:00
Alex Crichton
ce7dd93907 Add a test that overflow does not happen 2019-05-02 12:34:05 -07:00
Alex Crichton
850f14b4a2
Merge pull request #143 from mb64/wrapping-atan2
Fix the atan family of functions behavior with bounds checks
2019-05-02 14:32:22 -05:00
Alex Crichton
4038f6cd18 Update some URLs 2019-05-02 12:31:48 -07:00
Alex Crichton
77a4032353
Merge pull request #142 from mb64/wrapping-sqrt
Change `sqrt` to use wrapping newtypes
2019-05-02 14:30:49 -05:00
Alex Crichton
45417e5e4d
Merge pull request #128 from rrbutani/pow
Add some tests for pow
2019-05-02 14:23:47 -05:00
Alex Crichton
7e49f83241 Add bindings for ldexp/ldexpf
Should help in fixing wasmerio/wasmer#407
2019-05-02 12:21:55 -07:00
Anna Bogus
3f16dadc27 fixed some clippy warnings 2019-05-02 12:16:48 -07:00
Igor null
9c4332e286 fixed uint underflow in floorf for negative exponents 2019-05-02 12:14:30 -07:00
Mark Barbone
e949ab9c6c Modify atan2 to use wrapping_ ops 2019-05-02 12:13:26 -07:00
Alex Crichton
5db850b441 Update contributing docs 2019-05-02 12:12:47 -07:00
Mark Barbone
339502c69e Change sqrt to use wrapping operations 2019-05-02 12:09:22 -07:00
Rahul Butani
a185952f56 Use core for constants instead of std
(thanks @vks)
2019-05-02 12:08:30 -07:00
Rahul Butani
1372b522e1 rustfmt'ed 2019-05-02 12:08:30 -07:00
Rahul Butani
2f163d57a9 Some additional tests 2019-05-02 12:08:30 -07:00
Rahul Butani
b814861c6d Cleaned up + rustfmt'ed 2019-05-02 12:08:30 -07:00
Rahul Butani
5dddb9b523 Add some tests for pow
These probably aren't comprehensive but they cover all the edge cases identified in the original musl source.
2019-05-02 12:08:30 -07:00
Alex Crichton
69ded67c91
Merge pull request #160 from rust-lang-nursery/azure-pipelines
Set up CI with Azure Pipelines
2019-05-02 14:05:13 -05:00
Alex Crichton
a831678065 More azure config fixes 2019-05-02 12:05:02 -07:00
Alex Crichton
344e352e55 Run rustfmt 2019-05-02 11:44:58 -07:00
Alex Crichton
525a5b95cb Fix azure config 2019-05-02 11:41:20 -07:00
Alex Crichton
3763755aa2 Delete stray test 2019-05-02 11:38:26 -07:00
Alex Crichton
d166a30c11 Overhaul tests
* Move everything to azure pipelines
* Inline docker configuration in this repo (no `cross`)
* Delete `no-panic` example, use `#[no_panic]` instead.
2019-05-02 11:37:21 -07:00
Alex Crichton
28c69b4197 Rework how testing is done
Use a build script to generate musl reference outputs and then ensure
that everything gets hooked up to actually run reference tests.
2019-05-02 10:48:55 -07:00
Alex Crichton
575e81ca56 Remove newlib generator
It's broken and we can try to add it back later if necessary
2019-05-02 08:12:23 -07:00
Alex Crichton
35fc5ed551 Move crates to crates folder 2019-05-02 08:12:00 -07:00
Alex Crichton
aa8e7832be Set up CI with Azure Pipelines
[skip ci]
2019-05-02 09:15:01 -05:00
Alex Crichton
3559e70379
Merge pull request #152 from alexcrichton/wasm-sqrt
Optimize intrinsics on wasm32
2018-10-24 09:59:46 +02:00
Jorge Aparicio
ad5641b23f
merge [features] tables 2018-10-24 00:18:30 +02:00
Alex Crichton
284f2d007c 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
Igor null
a4e0202602 Ported several remaining math functions from musl
Please note that these aren't tested yet.
2018-08-26 16:36:59 +03:00
bors[bot]
8e857c72cf Merge #132
132: add newlib support to the test generator r=japaric a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2018-07-27 05:39:21 +00:00
Jorge Aparicio
9b26c6a408 tweak the order of the tests 2018-07-27 00:38:56 -05:00
Jorge Aparicio
68329712b3 uncomment the other build jobs 2018-07-27 00:27:25 -05:00
Jorge Aparicio
42c1e72574 make qemu-arm executable 2018-07-27 00:21:54 -05:00