Alex Crichton
08db8f31d3
Add metadata for where compiler-rt is located
...
Compiler crates will need to use this!
2018-11-21 12:57:39 -08:00
Jethro Beekman
3880e404a8
Add SGX target
2018-11-21 14:07:57 +05:30
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
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
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
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
33086672fa
Don't build multc3 on AArch64 MSVC
...
Apparently it doesn't compile due to an odd compiler error! This intrinsic has
to do with complex arithmetic anyway and we shouldn't need it.
2018-07-16 16:37:57 -07:00
Sébastien Marie
b1b06f583a
openbsd: doesn't use static
as it could result duplicated symbols
2018-07-16 06:17:38 +02:00
Sébastien Marie
c207fd3869
use system library on openbsd
...
compiler_rt is provided by default on OpenBSD, so use it instead of
rebuilding it from source.
2018-05-12 09:40:51 +02:00
Alex Crichton
6249080093
Merge pull request #234 from ketsuban/master
...
Add __floatdisf and __floatundisf intrinsics
2018-04-05 10:06:16 -05:00
Thomas Winwood
ed6d12ecea
Remove reference to C impl of float[un]disf
2018-04-05 15:03:44 +01:00
Paolo Teti
ad3a5b6826
Remove ledf2vfp.S and lesf2vfp.S from build list
2018-02-25 19:49:31 +01:00
Paolo Teti
63b78c86d9
Fix thumbv6m build (feature=c)
...
1. Avoid undefined references as:
undefined reference to `__modsi3'
undefined reference to `__umodsi3'
2. We can't remove assembly implementations that are not in the list
2018-02-16 17:34:01 +01:00
Paolo Teti
b2aea631fe
Collection of VFP intrinsics
...
Nothing really exciting here. LLVM on hard-float target use native instructions
for all listed VFP intrinsics and so resulting implementation is really trivial.
Implemented intrinsics:
__gesf2vfp
__gedf2vfp
__gtsf2vfp
__gtdf2vfp
__ltsf2vfp
__ltdf2vfp
__nesf2vfp
__nedf2vfp
__eqsf2vfp
__eqdf2vfp
__extendsfdf2vfp
2018-02-11 23:46:56 +01:00
Paolo Teti
4e1ff92946
Set -mfloat-abi=hard not only for thumb targets
2018-02-11 21:23:59 +01:00
Paolo Teti
0af69177f9
Add generic conversion from a narrower to a wider FP type
...
Add `extend` module to implement conversion from a narrower to a wider
floating-point type.
This implementation is only intended to support *widening* operations.
Module to convert a *narrower* floating-point will be added in the future.
2018-02-08 18:20:45 +01:00
Paolo Teti
97e6b3712a
Add support for sub*f3vfp and add*f3vfp
...
As done before for mul and div let's use extern "C" to generate `"aapcs"`
or `"aapcs-vfp"` depending on target configuration.
2018-02-04 18:34:31 +01:00
Alex Crichton
41290fe728
Simplify how testing is done
...
All tests are moved to a separate crate in this repository to enable features by
default. Additionally the test generation is moved to a seprate build script and
simplified to reduce the amount of boilerplate needed per test.
Overall this should still be testing everything, just in a different location!
2018-01-31 11:32:20 -08:00
Paolo Teti
4c7de1e315
Fix build errors on arm*-linux-gnueabi
...
I removed std::mem, but We need it.
2018-01-30 23:10:56 +01:00
Paolo Teti
cc3ea0ab93
Add test cases for Mul[s/d]f3vfp and Div[s/d]f3vfp
...
for ARM targets only
2018-01-30 20:15:37 +01:00
Paolo Teti
9a4e458b48
Add support for mul[s/d]f3vfp and div[s/d]f3vfp
...
Here using `"C"` the compiler will use `"aapcs"` or `"aapcs-vfp"`
depending on target configuration.
Of course this translates in a call to `__aeabi_fdiv` / `__aeabi_fmul`
on non-HF targets.
On `eabi` targets with +vfpv2/vfpv3 LLVM generate:
vmov s0, r1
vmov s2, r0
vdiv.f32 s0, s2, s0
vmov r0, s0
bx lr
On `eabihf` targets with +vfpv3-d16/d32/f32 +fp-only-sp LLVM generate:
vdiv.f32 s0, s0, s1
bx lr
That's exactly what We need for [div/mul][s/d]f3vfp.S
2018-01-29 20:49:55 +01:00
Alex Crichton
b751493472
Fix some typos/bugs with float comparison intrinsics
...
* I believe `__gtdf2` erroneously used `f32` instead of `f64`
* Most of these needed `#[arm_aeabi_alias]` to ensure they're correctly called
through the alias
* Some existing aliases were corrected with the right names
2018-01-24 17:01:04 -08:00
Paolo Teti
c68621f444
Fix build issue and comments
...
Fix an unclosed if block
2018-01-19 19:27:25 +01:00
Paolo Teti
2754f64c18
Skip aeabi_cdcmp and aeabi_cfcmp on big-endian targets
...
First of all aeabi_cdcmp and aeabi_cfcmp are never called LLVM.
Second are little-endian only, so build fail on big-endian targets.
Temporally workaround: exclude these files for big-endian targets.
2018-01-19 09:19:05 +01: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
a0777758df
comparesf2/comparedf2: do not build the C versions of intrinsics.
2017-12-29 06:16:35 +00: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
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
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
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
Alex Crichton
7115a910c8
Remove divsf3.c from compiler-rt
...
We implement this now!
2017-11-19 09:08:27 -08:00
Oliver Geller
99ea83e095
Implement divsf3 and divdf3
2017-11-13 20:22:27 -05:00
Oliver Geller
5923e278c3
Implement mulsf3 and muldf3
2017-11-08 17:36:34 -05: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
Amanieu d'Antras
c95fefa9f6
Add atomic support for pre-ARMv6 on Linux
2017-10-05 12:44:12 +01:00
Alex Crichton
46dab7688f
Update to the cc
dependency
2017-09-22 21:30:12 -07:00
Alex Crichton
0a260ce265
Disable empty intrinsics on i686-apple-darwin
...
These all currently just produce empty object files
2017-09-17 15:25:34 -07:00
Matt Ickstadt
1f98921e44
Implement x86 chkstk in "rust"
2017-09-15 18:04:59 -05:00
Tamir Duberstein
0b2a017b94
Update rustbuild commentary
...
Also use `cfg!(feature = "rustbuild")` instead of the environment
variable to ease grep-ability.
2017-09-12 20:54:32 -04:00