Commit Graph

125 Commits

Author SHA1 Message Date
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