Alex Crichton
83d63eaa9b
Convert float intrinsics to the `intrinsics!` macro
2017-06-23 11:05:25 -07:00
Alex Crichton
93fed264c1
Remove executable bit from conv.rs
2017-06-23 10:44:59 -07:00
Alex Crichton
4c41b5649f
Fix use_c_shim_if
2017-06-23 07:54:31 -07:00
Alex Crichton
47ff81325c
Use more intrinsics on msvc
2017-06-23 07:53:34 -07:00
Alex Crichton
12a0038250
Fix the abi hack on windows
2017-06-22 23:36:50 -07:00
Alex Crichton
d17042106f
Port udiv to the `intrinsics!` macro
2017-06-22 23:23:36 -07:00
Alex Crichton
7886ae275b
Port sdiv to traits + `intrinsics!`
...
Enhance `intrinsics!` along the way!
2017-06-22 23:09:28 -07:00
Alex Crichton
275d1032b5
Port mul intrinsics to traits
...
Also add a few features to the `intrinsics!` macro
2017-06-22 22:36:37 -07:00
Alex Crichton
eeb44abacf
Remove executable bit from mod.rs
2017-06-22 22:04:40 -07:00
Alex Crichton
2f2bb32e40
Use traits instead of macros for shift intrinsics
...
This is an attempt to tidy up the definition of intrinsics by making them more
rust-like at the definition site and using traits instead of macros for the
definition. Additionally the helper macro, `intrinsics!`, now fills in a
definition for #[cfg]'d off intrinsics when compiling with C code
2017-06-22 22:03:07 -07:00
Jorge Aparicio
b2f72e1eb1
remove unused macros
...
to fix warnings
2017-06-01 07:40:50 -05:00
est31
673a6f9948
Fix overflow bug when creating the absolute value
...
Previously, the tests failed on some platforms due to it.
2017-05-08 04:30:48 +02:00
est31
f90792e1bc
Add i128 <-> float conversion functions
2017-05-06 02:22:54 +02:00
est31
144e54d7b0
Rename float conversion macros to something nicer
2017-05-05 23:31:41 +02:00
Jorge Aparicio
19b2efdf36
move intrinsics test from src/bin to examples
...
with this change the libc crate is not required when calling `cargo build -p
compiler-builtins`
2017-04-11 17:09:05 -05:00
Jorge Aparicio
d34c51f74a
remove arm tests from the old test suite
2017-04-10 16:35:08 -05:00
Jorge Aparicio
b8e8c7f693
no_std compatible tester
2017-04-10 14:38:17 -05:00
Jorge Aparicio
cc0d8ba2d1
remove the current test suite
2017-04-10 11:14:05 -05:00
bors
28ac4908f8
Auto merge of #147 - rust-lang-nursery:conv, r=japaric
...
Conversion from&to float<->integer
this is a rebased version of #139
cc @ithinuel
2017-04-08 15:20:35 +00:00
Jorge Aparicio
109c33ed0a
test out of range condition using f64
...
to avoid imprecision due to rounding to f32
2017-04-08 10:18:19 -05:00
Jorge Aparicio
2faec6a4fb
fix debug assertion in modsi3 / moddi3
...
fixes #151
this fix is very similar to #149
2017-03-13 20:40:44 -05:00
bors
9681358dc5
Auto merge of #149 - rust-lang-nursery:gh148, r=alexcrichton
...
fix debug assertion in divdi3
fixes #148
r? @alexcrichton
2017-03-07 00:38:33 +00:00
Jorge Aparicio
c93b32b3e5
fix debug assertion in divdi3
...
fixes #148
2017-03-06 17:46:11 -05:00
Jorge Aparicio
4c556dc9e7
fix quickcheck tests
...
the check! macro syntax has changed
2017-03-06 12:17:41 -05:00
Jorge Aparicio
c6e06f4157
refactor 'impl Int'
2017-03-06 12:17:10 -05:00
Wilfried Chauveau
09d2f2f1f5
exclude from tests values out of integer range (and NaN).
2017-03-06 11:56:52 -05:00
Wilfried Chauveau
d96102d270
implement float/double to (u)int conversion.
2017-03-06 11:56:52 -05:00
Wilfried Chauveau
293fef5ebe
impl (unsigned/signed) int to single/double precision float conversion based on llvm algorithms.
2017-03-06 11:55:57 -05:00
Jorge Aparicio
644a1c9ac9
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
5bb969d8f5
implement float subtraction
...
as a + (-b)
2017-02-08 10:10:40 -05:00
Jorge Aparicio
47b45d1d62
adjust the check! macro to accept AAPCS intrinsics
2017-02-07 23:07:51 -05:00
Jorge Aparicio
57085be2ea
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
dfa7b161aa
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
37d349015e
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
f8a4e3fd70
Panic when invalid overflow value is returned
2017-02-04 01:39:19 +01:00
est31
b78e956f08
Add quickcheck tests
2017-02-03 23:46:15 +01:00
est31
417b07b821
Add newly implemented intrinsics to test file
2017-02-03 01:51:46 +01:00
est31
9013dbef02
u128 sdiv intrinsics
2017-02-02 22:13:28 +01:00
est31
2f3c534cfe
u128 udiv intrinsics
2017-02-02 22:11:14 +01:00
est31
8fe50d813c
Macro-ify udivmod
2017-02-02 22:03:42 +01:00
est31
1e27c3f937
i128 shift intrinsics
2017-02-02 22:02:51 +01:00
est31
3055aa21b6
i128 mul intrinsics
2017-02-02 21:36:56 +01:00
est31
b356429374
int module: macro-ify trait impls and add {u,i}128 support
2017-02-02 21:36:02 +01:00
est31
a2e2ec1a18
Add i128 to lib.rs as feature
2017-02-02 21:27:11 +01:00
Jorge Aparicio
b6f059d627
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
ee0aacf4be
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
53da94d74f
more #[no_mangle]
2016-12-31 10:04:40 -05:00
Jorge Aparicio
3992ed1e7a
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
9897bfb8a9
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
a1caa7ccac
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