Commit graph

540 commits

Author SHA1 Message Date
Alex Crichton
e99326744e
Merge pull request #222 from whitequark/master
Implement comparesf2/comparedf2 intrinsics
2018-01-13 17:27:55 -06:00
whitequark
746c4717e1 comparesf2: do not build the assembly versions of intrinsics on ARM. 2018-01-12 21:33:24 +00:00
whitequark
566e7ede90 comparesf2/comparedf2: fix a signedness bug and add tests. 2017-12-29 07:58:34 +00:00
whitequark
45112fc65f README: update to explain how to run quickcheck-style tests. 2017-12-29 06:36:09 +00:00
whitequark
a0777758df comparesf2/comparedf2: do not build the C versions of intrinsics. 2017-12-29 06:16:35 +00:00
whitequark
fee371a365 comparesf2/comparedf2: use i32 instead of bool for return type.
Note that this changes semantics:
    pub extern "C" fn __eqsf2(a: f32, b: f32) -> bool {
        cmp(a, b).to_le_abi() != 0
    }

is not the same as

    pub extern "C" fn __eqsf2(a: f32, b: f32) -> i32 {
        cmp(a, b).to_le_abi()
    }

However, compiler-rt does the latter, so this is actually
an improvement.
2017-12-29 06:14:51 +00:00
whitequark
24175dd6ca Implement comparesf2/comparedf2 intrinsics. 2017-12-28 03:45:32 +00:00
whitequark
c329f6ef75 comparesf2/comparedf2 are called on soft-float targets.
E.g. take a look at the assembly output for:

  pub fn comparesf2(a: f32, b: f32) -> bool { a > b }
  pub fn comparedf2(a: f64, b: f64) -> bool { a > b }

which will include calls to __gtsf2 and __gtdf2.
2017-12-28 02:57:42 +00:00
bors
5634754f1e Auto merge of #220 - malbarbo:armv4t, r=alexcrichton
Use kernel user helpers for armv4t

Rename armv5te cfg to kernel_user_helpers and enable it for armv4t.
2017-12-26 20:21:11 +00:00
Alex Crichton
dbaa47027e Work around japaric/xargo#186 temporarily 2017-12-26 12:20:17 -08:00
Alex Crichton
4481a6c4ab Disable incremental + LTO
This causes errors in more recent versions of rustc
2017-12-26 10:14:11 -08:00
Marco A L Barbosa
90bd768b20 Use kernel user helpers for armv4t
Rename armv5te cfg to kernel_user_helpers and enable it for armv4t
2017-12-26 13:02:05 -02:00
bors
e60a233da0 Auto merge of #219 - Amanieu:sync_val_compare_and_swap, r=alexcrichton
Fix argument order for __sync_val_compare_and_swap

Fixes https://github.com/rust-lang/rust/issues/46822#issuecomment-353698138
2017-12-23 15:36:04 +00:00
Amanieu d'Antras
af91189aa7 Fix argument order for __sync_val_compare_and_swap 2017-12-23 08:45:25 +01:00
bors
4882b3d75c Auto merge of #218 - Amanieu:blx_fix, r=alexcrichton
Fix __kuser_cmpxchg inline asm

The wrong register was passed to BLX. However I just changed them to normal function calls to simplify things.
2017-12-20 06:04:26 +00:00
Amanieu d'Antras
dd2e94ae5b Replace inline asm with function calls in __kuser_cmpxchg and __kuser_memory_barrier 2017-12-20 01:57:05 +00:00
bors
9116e1aa43 Auto merge of #215 - alexcrichton:fix-ci, r=alexcrichton
Fix nightly CI

Currently we're getting lots of errors about duplicate lang items so deal with
this by `#[cfg_attr]`'ing off the lang item attribute in tests.
2017-12-08 16:20:20 +00:00
Alex Crichton
19a725d772 Fix nightly CI
Currently we're getting lots of errors about duplicate lang items so deal with
this by `#[cfg_attr]`'ing off the lang item attribute in tests.
2017-12-08 08:19:28 -08:00
bors
be3b817149 Auto merge of #212 - tamird:fomit-frame-pointer-not-supported-arm, r=alexcrichton
Avoid warning spew

...when the compiler doesn't support '-fomit-frame-pointer' on the
target architecture.
2017-11-28 17:31:37 +00:00
Tamir Duberstein
fe9bd52cc1
Avoid warning spew
...when the compiler doesn't support '-fomit-frame-pointer' on the
target architecture.
2017-11-27 17:41:54 -05:00
bors
72a49a37af Auto merge of #211 - haellowyyn:fix-multi-definition-of-mulsf3, r=alexcrichton
Remove mulsf3.c and muldf3.c from compiler-rt.

mulsf3 and muldf3 have Rust implementations since 8970485. This PR removes the C implementations to avoid conflicts.

Without this I wasn't able to compile the crate with the "c" feature enabled, the errors being
`multiple definition of '__muldf3'` and `multiple definition of '__mulsf3'`.
2017-11-26 21:10:30 +00:00
Jan Teske
dd0be67665 Remove mulsf3.c and muldf3.c from compiler-rt.
mulsf3 and muldf3 have Rust implementations since 8970485. Remove the
C implementations to avoid conflicts.
2017-11-26 21:53:57 +01:00
Alex Crichton
94d06666a6
Merge pull request #210 from scottmcm/add-128bit-lang-items
Implement all the 128-bit operator lang items (Rust 45676 part 2)
2017-11-26 09:37:52 -06:00
Scott McMurray
f468c28f74 Another attempt at making MIPS happy
(I really don't understand how arithmetic makes it segfault...)
2017-11-25 07:00:26 -08:00
Scott McMurray
ba376a3912 Autogenerate the add/sub tests 2017-11-25 06:25:19 -08:00
Scott McMurray
51a0396d2a Make them all pub 2017-11-25 05:53:53 -08:00
Scott McMurray
a35d63583f Tweak addo & subo to try and fix MIPS 2017-11-25 05:26:24 -08:00
Scott McMurray
ff97668431 Implement all the 128-bit operator lang items from rust PR 46093 2017-11-25 04:21:05 -08:00
Alex Crichton
7115a910c8 Remove divsf3.c from compiler-rt
We implement this now!
2017-11-19 09:08:27 -08:00
Alex Crichton
85b9abce8c
Merge pull request #207 from sunfishcode/master
Add "volatile" and "memory" clobber to asm! that doesn't fall through.
2017-11-15 23:44:02 +01:00
Dan Gohman
3bd28c8b6d Add "volatile" and "memory" clobber to asm! that doesn't fall through.
Use the "volatile" option and the "memory" clobber on inline asm that does
things like return directly, to reduce the chances of compilers rearranging
the code.
2017-11-15 12:49:10 -08:00
Alex Crichton
3f355c7571
Merge pull request #206 from aeleos/div
Implement divsf3 and divdf3
2017-11-14 13:58:07 +01:00
Oliver Geller
99ea83e095 Implement divsf3 and divdf3 2017-11-13 20:22:27 -05:00
Alex Crichton
2939cb6327
Merge pull request #205 from aeleos/master
Implement mulsf3 and muldf3
2017-11-14 00:41:18 +01:00
Oliver Geller
5923e278c3 Implement mulsf3 and muldf3 2017-11-08 17:36:34 -05:00
Alex Crichton
e63342c5f1
Merge pull request #203 from alexcrichton/wasm
Prepare this crate for more wasm32 compatibility
2017-11-03 00:45:26 -04:00
Alex Crichton
a46f33ce48 Work around OSX on Travis 2017-11-02 11:14:05 -07:00
Alex Crichton
4fc3de624a Prepare this crate for more wasm32 compatibility
This commit prepares the build script for a wasm32 target that doesn't use
Emcripten, notably forcing the `mem` feature to get activated and forcibly
ignoring the `c` feature, even if activated, for the wasm32 target.
2017-11-01 19:29:41 -07:00
bors
b55bb6c9e9 Auto merge of #200 - japaric:no-binfmt-misc, r=alexcrichton
drop binfmt_misc dependency

Instead use the Cargo runner feature. The binfmt_misc approach requires running a privileged
container for setup. Not all docker setups support privileged containers so the test suite should be
more accessible with this change as no privileged container is needed.

r? @alexcrichton
2017-10-08 02:02:35 +00:00
Jorge Aparicio
0601024adf drop binfmt_misc dependency
Instead use the Cargo runner feature. The binfmt_misc approach requires running a privileged
container for setup. Not all docker setups support privileged containers so the test suite should be
more accessible with this change as no privileged container is needed.
2017-10-07 22:19:37 +02:00
bors
ccd009142b Auto merge of #115 - Amanieu:linux-arm-atomic, r=alexcrichton
Add atomic support for pre-ARMv6 on Linux

This uses the [kernel user helpers](https://www.kernel.org/doc/Documentation/arm/kernel_user_helpers.txt) which are available starting from kernel 2.6.15. Since Rust currently requires 2.6.18 at a minimum, this should be fine in practice. I did not include support for 64-bit atomics since that functionality is only available in kernel 3.1.

This PR allows Rust to work on older ARM versions such as ARMv4 and ARMv5 with the full libstd.
2017-10-06 23:08:42 +00:00
Amanieu d'Antras
c95fefa9f6 Add atomic support for pre-ARMv6 on Linux 2017-10-05 12:44:12 +01:00
Alex Crichton
d43287ac57 Update target specs 2017-10-03 02:28:49 -07:00
Alex Crichton
94319e2776 Merge pull request #198 from est31/master
Partial revert of the float conversion refactor in #192
2017-09-29 01:54:05 -05:00
est31
c582a5c118 Partially revert a272d753f5c75ab9acb7b282765a3c7517caac25
This partially reverts commit "Convert float_to_int! into a function"
2017-09-29 02:20:27 +02:00
est31
aef124cc75 Partially revert 482d98318fc1bfd003942c9de4ee1c7e8a0c45f0
This partially reverts "Convert int_to_float! to a function".
2017-09-29 02:19:40 +02:00
Alex Crichton
9b3422d962 Merge pull request #196 from alexcrichton/cc
Update to the `cc` dependency
2017-09-27 17:38:06 -05:00
Alex Crichton
832c7758f9 Ignore failing test on mips 2017-09-22 21:31:27 -07:00
Alex Crichton
46dab7688f Update to the cc dependency 2017-09-22 21:30:12 -07:00
bors
eadef9d2a8 Auto merge of #195 - alexcrichton:32-darwin-empty, r=alexcrichton
Disable empty intrinsics on i686-apple-darwin

These all currently just produce empty object files
2017-09-17 22:25:49 +00:00