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
Jorge Aparicio
199c7a8dcb
refactor build.rs to not depend on rustc-cfg
...
it now uses the CARGO_CFG_TARGET variables provided by Cargo
2017-04-10 11:19:16 -05:00
Jorge Aparicio
f96c8b8250
make the gcc crate optional
...
it's only required when the "c" feature is enabled
2017-02-19 15:49:59 -05:00
Jorge Aparicio
9916fa670c
implement float subtraction
...
as a + (-b)
2017-02-08 10:10:40 -05:00
Jorge Aparicio
c261f82cab
target.contains -> target_os ==
2017-02-06 15:16:16 -05:00
Jorge Aparicio
ee172768d2
std: Remove unused objects from compiler-builtins
...
rust-lang/rust#38623
2017-02-06 15:13:40 -05:00
Jorge Aparicio
263f16a81b
travis: Expand the cross
linux image
...
rust-lang/rust#39111
2017-02-06 15:12:34 -05:00
Jorge Aparicio
bdb136a50e
libcompiler_builtins: Don't build emutls.c
...
Rather than improving the check, let's ditch emutls.c entirely.
rust-lang/rust#38877
2017-02-06 15:11:51 -05:00
Jorge Aparicio
2c7368702b
Don't build any native compiler-builtin components for emscripten
...
rust-lang/rust#36339
2017-02-06 15:11:09 -05:00
Jorge Aparicio
a13d0e2b13
Don't build gcc_personality_v0.c on NetBSD either
...
rust-lang/rust#39425
2017-02-06 15:10:02 -05:00
est31
b1561fc195
u128 sdiv intrinsics
2017-02-02 22:13:28 +01:00
est31
37a62269dc
u128 udiv intrinsics
2017-02-02 22:11:14 +01:00
est31
a38eee9ea1
i128 shift intrinsics
2017-02-02 22:02:51 +01:00
est31
19700fb03d
i128 mul intrinsics
2017-02-02 21:36:56 +01:00
Alex Crichton
865ed6f133
Define VISIBILITY_HIDDEN when compiling objects
...
Apparently compiler-rt passed this and we just forgot to. Fixes visibility of
some symbols on 32-bit Linux.
2016-11-18 09:40:20 -08:00
Matt Ickstadt
430c92cc9a
Use better cfg name for arm-linux tests
2016-11-12 15:52:59 -06:00
Matt Ickstadt
9b4553de1c
Add float quickcheck
2016-11-12 14:55:28 -06:00
Jorge Aparicio
8692e64db9
add a rustbuild cargo feature for integration with rust-lang/rust
2016-10-10 16:18:18 -05:00
homunkulus
ba8c6a4b1d
Auto merge of #82 - mattico:add_pow, r=japaric
...
Add pow functions
I still want to clean up the commit history, but otherwise I think this is complete. ~~Can you run the tests on it?~~
2016-10-04 01:52:27 +00:00
Jorge Aparicio
d0c93bef1b
stop compiling compiler-rt implementations
...
to avoid duplicate symbols
2016-10-03 20:52:14 -05:00
Jorge Aparicio
4e7d7c7cd8
bump rustc-cfg version and show a better error message when it fails
2016-10-03 19:25:32 -05:00
Jorge Aparicio
9a9f025347
build.rs: print rerun-if-change for all the C/asm sources
2016-09-29 19:45:59 -05:00
Jorge Aparicio
a57a63fe08
adapt to new testing infrastructure
2016-09-29 18:50:04 -05:00
Jorge Aparicio
cb9b1f82e3
add an opt-in cargo feature to build intrinsics from compiler-rt source
...
closes #63
cc #66
2016-09-29 16:06:24 -05:00
Alex Crichton
e7c804a9b0
Expand and refactor teting infrastructure
...
This commit moves over most of the testing infrastructure to in-tree docker
images that are all dispatched to from Travis (no other test configuration).
This allows versioning modifications to the test infrastructure as well as the
code itself. Additionally separate docker images allows for easy modification of
one without worrying about tampering of others as well as easy addition of new
targets by simply adding a new `Dockerfile`.
Additionally this commit bundles the master version of the `compiler-rt` source
repository from `llvm-mirror/compiler-rt` to test against. The compiler-rt
library itself is compiled as a `cdylib` which is then dynamically located at
runtime and we look for symbols in. There's a few hoops here, but they currently
get the job done.
All tests now execute against both gcc_s and compiler-rt, and this
testing strategy is now all hidden behind a macro as well (refactoring
all existing tests along the way).
2016-09-28 22:09:55 -07:00
Jorge Aparicio
a5b15eef71
fix build.rs
...
we don't want to match musleabihf targets
2016-09-22 11:56:34 -05:00
Jorge Aparicio
7a56ac6bb4
armhf: don't compare our impls against gcc_s
2016-09-21 21:14:38 -05:00