Jorge Aparicio
1f26fea5d4
refactor 'impl Int'
2017-03-06 12:17:10 -05:00
Wilfried Chauveau
77889226f7
exclude from tests values out of integer range (and NaN).
2017-03-06 11:56:52 -05:00
Wilfried Chauveau
ef3de28eaf
implement float/double to (u)int conversion.
2017-03-06 11:56:52 -05:00
Wilfried Chauveau
b3e33508a0
impl (unsigned/signed) int to single/double precision float conversion based on llvm algorithms.
2017-03-06 11:55:57 -05:00
Jorge Aparicio
cd96f53050
fix infinite recursion in divmoddi4 / mulodi4
...
on ARMv7-M processors, divmoddi4 was calling mulodi4 and mulodi4 was calling
divmoddi4 leading to infinite recursion. This commit breaks the cycle by using
wrapping multiplication in divmoddi4.
fixes #145
2017-03-06 10:38:19 -05:00
Jorge Aparicio
9916fa670c
implement float subtraction
...
as a + (-b)
2017-02-08 10:10:40 -05:00
Jorge Aparicio
0dfe91f7cf
adjust the check! macro to accept AAPCS intrinsics
2017-02-07 23:07:51 -05:00
Jorge Aparicio
57deccf6de
ARM: keep some non-aeabi symbols around
...
- multi3: there's no aeabi equivalent
- divmod{s,d}i4: these are directly called by __aeabi_{l,i}divmod
- add{s,d}f3: required by the C sub{s,d}f3 implementation
but make sure they also use the AAPCS calling convention
2017-02-07 14:28:02 -05:00
Jorge Aparicio
3a4e6ce2f4
use AAPCS calling convention on all aeabi intrinsics
...
also, on ARM, inline(always) the actual implementation of the intrinsics so we
end with code like this:
```
00000000 <__aeabi_dadd>:
(implementation here)
```
instead of "trampolines" like this:
```
00000000 <__aeabi_dadd>:
(shuffle registers)
(call __adddf3)
00000000 <__adddf3>:
(implementation here)
```
closes #116
2017-02-07 09:41:26 -05:00
est31
70bda6dd1c
Disable quickcheck tests on mips
...
Two reasons:
* the C versions __divti3 and __modti3 are apparently broken,
at least when used in quickcheck. They change their own arguments.
* compiler_rt's support for mips is disabled already on clang [1].
Its desireable to support working "cargo test" on that compiler
as well, and not greet the tester with linker errors.
[1]: http://llvm.org/viewvc/llvm-project?view=revision&revision=224488
2017-02-04 12:23:45 +01:00
est31
a01ee168c4
Panic when invalid overflow value is returned
2017-02-04 01:39:19 +01:00
est31
f15bf972bd
Add quickcheck tests
2017-02-03 23:46:15 +01:00
est31
aeda7382d7
Add newly implemented intrinsics to test file
2017-02-03 01:51:46 +01:00
est31
b1561fc195
u128 sdiv intrinsics
2017-02-02 22:13:28 +01:00
est31
37a62269dc
u128 udiv intrinsics
2017-02-02 22:11:14 +01:00
est31
9fd610d859
Macro-ify udivmod
2017-02-02 22:03:42 +01:00
est31
a38eee9ea1
i128 shift intrinsics
2017-02-02 22:02:51 +01:00
est31
19700fb03d
i128 mul intrinsics
2017-02-02 21:36:56 +01:00
est31
8bb1010d51
int module: macro-ify trait impls and add {u,i}128 support
2017-02-02 21:36:02 +01:00
est31
b6e0dd2bf2
Add i128 to lib.rs as feature
2017-02-02 21:27:11 +01:00
Jorge Aparicio
e6bb6db8eb
fix the build
...
the unused macro_use crate lint has tightened; fix the new warnings
2017-01-26 16:17:23 -05:00
James Duley
da48de4601
mul.rs: use wrapping_mul not plain
...
rustc in debug mode with a plain multiplication will call @llvm.umul.with.overflow.* which may call the builtin resulting in infinite recursion.
2017-01-02 22:57:38 +13:00
Jorge Aparicio
acbca64291
more #[no_mangle]
2016-12-31 10:04:40 -05:00
Jorge Aparicio
3ed64e2b50
CI: use a recent nightly
...
- add #[no_mangle] to the panic_fmt lang item to adjust to changes in
the visibility algorithm
- adjust to changes in the layout of Cargo's target directory
- use a newer Xargo to reduce the build time of the sysroot (only core
is compiled as part of the sysroot now)
2016-12-31 10:04:40 -05:00
Vadzim Dambrouski
a2671118ae
Fix memset arguments for MSP430 target.
...
On MSP430 second argument to memset has i16 type instead of i32.
2016-12-19 05:31:20 +03:00
Jorge Aparicio
b8d6652035
add implementations of memcpy et al
...
behind the "mem" Cargo feature, which used to be named "weak"
fixes #126
2016-12-17 23:06:37 -05:00
Jorge Aparicio
6da988a43a
by default, mark this crate as the #![compiler_builtins] crate
...
as this is how most users will want to use this crate
2016-12-11 16:18:43 -05:00
Matt Ickstadt
430c92cc9a
Use better cfg name for arm-linux tests
2016-11-12 15:52:59 -06:00
Matt Ickstadt
94c0d475bc
Use correct lib name in qc test failure
2016-11-12 15:30:57 -06:00
Matt Ickstadt
9b4553de1c
Add float quickcheck
2016-11-12 14:55:28 -06:00
Christopher Serr
53c19053e4
Fix a few clippy warnings
2016-10-16 13:53:31 +02:00
Jorge Aparicio
ab4d5e62fb
fix the powerpc64le target
...
by selecting a CPU that's compatible with the instructions that `rustc`
generates
2016-10-14 09:59:21 -05:00
Jorge Aparicio
77b5865b04
fix more warnings
2016-10-10 20:21:11 -05:00
Jorge Aparicio
3fe4f1c687
fix warnings
2016-10-10 19:45:34 -05:00
Jorge Aparicio
14c32a0369
rename to compiler_builtins, add rust-lang/rust-ish crate attributes
2016-10-10 19:05:21 -05:00
Jorge Aparicio
622a760d91
add the compiler_builtins feature to src/lib.rs
2016-10-10 16:45:24 -05:00
Jorge Aparicio
5f5c973cbe
set crate_name and crate_type in src/lib.rs
2016-10-10 16:43:38 -05:00
Jorge Aparicio
2056d001cf
use test::black_box instead of ptr::*_volatile
...
both prevent LLVM from optimizing away the intrinsics but the former
doesn't produce an `intrinsics` binary that segfaults
2016-10-07 18:26:21 -05:00
Jorge Aparicio
d05514cb20
fix unsafe warnings
2016-10-07 18:19:40 -05:00
Jorge Aparicio
a02ecc8eef
get profile.dev (-debug-assertions) + LTO working
2016-10-07 18:19:40 -05:00
Jorge Aparicio
c9e3feb5e3
insert more abort() calls where division by zero may occur
2016-10-07 18:19:40 -05:00
Jorge Aparicio
fbf1cc0b75
check that we don't have any call to panic in our implementations
2016-10-07 18:19:40 -05:00
Jorge Aparicio
9f4632c829
panic! -> abort
...
closes #79
2016-10-07 18:19:40 -05:00
Matt Ickstadt
e6bc8007dd
Implement powi_f2
2016-10-03 11:20:42 -05:00
Matt Ickstadt
ab4e4bfd71
Initial implementation of multitester
2016-10-02 14:38:40 -05:00
Jorge Aparicio
7009fd238d
Revert "Merge pull request #48 from mattico/add_float_quickcheck"
...
This reverts commit e34a6058df470e5b3d187c947ac41a294994c414, reversing
changes made to cab88e6133b0db9c6663ffd8b2f65cb35e8a9dda.
2016-09-30 19:12:17 -05:00
Matt Ickstadt
43d85fa5cb
Add Quickcheck types for float tests
2016-09-30 14:29:52 -05:00
Matt Ickstadt
ca01aa45ff
Cleanup add builtin assignments
2016-09-30 14:29:52 -05:00
Matt Ickstadt
fde45da332
Add floating point deconstruction helpers
2016-09-30 14:29:52 -05:00
Jorge Aparicio
cb9b1f82e3
add an opt-in cargo feature to build intrinsics from compiler-rt source
...
closes #63
cc #66
2016-09-29 16:06:24 -05:00