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
Alex Crichton
070990f10a
Compile ffsdi2 with `rustbuild` feature
...
This is not used by LLVM/Rust, but is apparently used by gcc/C which jemalloc
can require at least.
2017-07-03 15:00:51 -07:00
Alex Crichton
681aaa914d
Use the Rust implementation of udivsi3 on ARM
...
Although compiler-rt presumably has a more optimized implementation written in
assembly, it appears buggy for whatever reason, causing #173 .
For now let's see if integration into rust-lang/rust will work with the
Rust-defined implementation!
2017-07-03 09:48:11 -07:00
Alex Crichton
4859aba5f4
Don't build gcc_personality_v0
2017-06-24 11:36:05 -07:00
Alex Crichton
b42d267065
Don't compile assembly on x86_64 Windows
...
They've all got the wrong ABI...
2017-06-23 21:09:24 -07:00
Alex Crichton
94bc9953a1
Don't build chkstk on x86_64
2017-06-23 20:43:51 -07:00
Alex Crichton
a839d53a02
Deal with floatdidf on x86_64
...
Apparently LLVM will lower this down to just an instruction
2017-06-23 13:28:24 -07:00
Alex Crichton
ac3715de0f
Remove defined intrinsics from build.rs
...
No need to load these from C!
2017-06-23 11:14:50 -07:00
est31
258feadae4
Build.rs: better debug output
2017-05-10 02:41:29 +02:00
est31
6047cdf1e8
floattidf, floatuntidf: ignore differences smaller than 2 in test
...
Its possible that the generated f64 is different from the expected one
by one bit. This is legal when both values are equally close to the i128/u128.
2017-05-08 01:26:30 +02:00
est31
191c0be298
Print generated files
2017-05-07 04:40:00 +02:00
est31
e24673b6c7
Fix test name gotten wrong
2017-05-06 15:47:38 +02:00