Paolo Teti
baab4fd89c
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
7e1a1e9042
Merge pull request #259 from paoloteti/cc-rs
...
Remove superfluous cc flags
2018-09-09 10:44:02 -07:00
Paolo Teti
8128d996b1
Remove unused variable target_arch_arm
...
Previous commit makes this variable unused
2018-09-08 19:04:09 +02:00
Paolo Teti
59353afa10
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
4bbfb7e266
Merge pull request #256 from jordanrh1/windows-arm
...
Support windows/arm target
2018-09-07 10:08:01 -07:00
Jordan Rhee
0a87c71839
Remove unnecessary check
2018-09-07 08:27:38 -07:00
Jordan Rhee
f3bd252ffc
Try undoing unnecessary change
2018-09-06 09:27:24 -07:00
Jordan Rhee
78f544f57d
Support windows/arm target
2018-09-06 09:27:24 -07:00
Alex Crichton
0703bfa725
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
5e26a092a4
Follow up on PR #252
2018-08-06 23:03:37 -07:00
Yu Ding
bf370326cf
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
5d370bb352
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
ffffe2ed64
openbsd: doesn't use `static` as it could result duplicated symbols
2018-07-16 06:17:38 +02:00
Sébastien Marie
d8bbc81016
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
cb04a0718b
Merge pull request #234 from ketsuban/master
...
Add __floatdisf and __floatundisf intrinsics
2018-04-05 10:06:16 -05:00
Thomas Winwood
e3dda36162
Remove reference to C impl of float[un]disf
2018-04-05 15:03:44 +01:00
Paolo Teti
463a127ea9
Remove ledf2vfp.S and lesf2vfp.S from build list
2018-02-25 19:49:31 +01:00
Paolo Teti
280012b1df
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
e7bf03019c
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
e15ab79173
Set -mfloat-abi=hard not only for thumb targets
2018-02-11 21:23:59 +01:00
Paolo Teti
45f924ece5
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
13db8bf436
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
2a13475197
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
1269ad1438
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
9e04723812
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
8f018562ca
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
7d5fb94560
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
083f107c5e
Fix build issue and comments
...
Fix an unclosed if block
2018-01-19 19:27:25 +01:00
Paolo Teti
a75a49990c
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
205322baf0
comparesf2: do not build the assembly versions of intrinsics on ARM.
2018-01-12 21:33:24 +00:00
whitequark
07b446a9ab
comparesf2/comparedf2: fix a signedness bug and add tests.
2017-12-29 07:58:34 +00:00
whitequark
3d1600b654
comparesf2/comparedf2: do not build the C versions of intrinsics.
2017-12-29 06:16:35 +00:00
Marco A L Barbosa
f4edcf7b24
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
200c94eebf
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
55e57a3762
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
047406083a
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
ba750103a3
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
bcc41a9b8d
Autogenerate the add/sub tests
2017-11-25 06:25:19 -08:00
Alex Crichton
02b3734a5b
Remove divsf3.c from compiler-rt
...
We implement this now!
2017-11-19 09:08:27 -08:00
Oliver Geller
8bb30026c7
Implement divsf3 and divdf3
2017-11-13 20:22:27 -05:00
Oliver Geller
897048543f
Implement mulsf3 and muldf3
2017-11-08 17:36:34 -05:00
Alex Crichton
45cd956acc
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
73e38dcf2f
Add atomic support for pre-ARMv6 on Linux
2017-10-05 12:44:12 +01:00
Alex Crichton
6cf8fe7932
Update to the `cc` dependency
2017-09-22 21:30:12 -07:00
Alex Crichton
1be538be1e
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
b3679bcfba
Implement x86 chkstk in "rust"
2017-09-15 18:04:59 -05:00
Tamir Duberstein
a32e76eaea
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
est31
02ea9e5f54
Update the gcc crate to 0.3.53 and disable compilation warnings
...
They are inside the compiler-rt submodule, about which we don't have
direct control over.
2017-09-07 07:49:34 +02:00
Alex Crichton
91eaa85902
Don't mangle probes all the time
2017-07-07 20:35:14 -07:00
Alex Crichton
a1700f9da9
Fix a typo in the build script
2017-07-03 15:28:03 -07:00