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
est31
465ba28996
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
2fa53c4b67
Don't mangle probes all the time
2017-07-07 20:35:14 -07:00
Alex Crichton
a32ae6d6b6
Fix a typo in the build script
2017-07-03 15:28:03 -07:00
Alex Crichton
ebcf7fac6a
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
e48cd1180b
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
e8964fc7dd
Don't build gcc_personality_v0
2017-06-24 11:36:05 -07:00
Alex Crichton
d3e78c5f6f
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
bbaf9fd85a
Don't build chkstk on x86_64
2017-06-23 20:43:51 -07:00
Alex Crichton
78b290b61c
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
d20a774a4a
Remove defined intrinsics from build.rs
...
No need to load these from C!
2017-06-23 11:14:50 -07:00
est31
4c69bfaff4
Build.rs: better debug output
2017-05-10 02:41:29 +02:00
est31
6eeab2e62f
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
197b7e6d97
Print generated files
2017-05-07 04:40:00 +02:00
est31
31048e53b5
Fix test name gotten wrong
2017-05-06 15:47:38 +02:00
est31
313d3bb49f
Adjust for changed cast function
2017-05-06 15:47:38 +02:00
est31
ee6be10895
Implement tests for floatuntidf and floatuntisf
2017-05-06 05:37:24 +02:00
est31
273211c01b
Implement tests for fixunsdfti and fixunssfti
2017-05-06 05:37:24 +02:00
est31
390e1e99c9
Implement tests for fixdfti and fixsfti
2017-05-06 05:37:24 +02:00
est31
7e07245411
Implement tests for floattidf and floattisf
2017-05-06 05:37:24 +02:00
Jorge Aparicio
1e48efeaef
Revert "i128 test: transmute intrinsic output before comparing"
...
This reverts commit 46085a2313ba196e3aab85a3380a07c6bd838fda.
2017-04-11 15:03:21 -05:00
Jorge Aparicio
5b8965c9de
i128 test: transmute intrinsic output before comparing
...
on Windows, these intrinsics return a U64x2 type because of ABI requirements
2017-04-11 14:47:23 -05:00
Jorge Aparicio
9c0fe5be3d
put test generation behind a Cargo feature
...
to reduce build time for the most common case of not running tests
2017-04-10 17:27:25 -05:00
Jorge Aparicio
74eedd0f17
make float* intrinsics testable on thumb
...
there are no intrinsics for float equality atm, so transmute to an integer
before comparing
2017-04-10 17:13:07 -05:00
Jorge Aparicio
62091bb124
test float/conv.rs
2017-04-10 16:12:49 -05:00
Jorge Aparicio
af0d6847d7
no_std compatible tester
2017-04-10 14:38:17 -05:00
Jorge Aparicio
447ebe4f91
rustfmt
2017-04-10 11:29:31 -05:00
Jorge Aparicio
dfc1a7d814
move the compiler-rt submodule to the root
2017-04-10 11:23:03 -05:00