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
est31
b870667509
Adjust for changed cast function
2017-05-06 15:47:38 +02:00
est31
b91c39da73
Implement tests for floatuntidf and floatuntisf
2017-05-06 05:37:24 +02:00
est31
2d2bf21f73
Implement tests for fixunsdfti and fixunssfti
2017-05-06 05:37:24 +02:00
est31
d188d3dc12
Implement tests for fixdfti and fixsfti
2017-05-06 05:37:24 +02:00
est31
f9b5297ccc
Implement tests for floattidf and floattisf
2017-05-06 05:37:24 +02:00
Jorge Aparicio
63f91a0c31
Revert "i128 test: transmute intrinsic output before comparing"
...
This reverts commit 46085a2313
.
2017-04-11 15:03:21 -05:00
Jorge Aparicio
46085a2313
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
55294baf7a
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
3fa223505a
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
9e2c2b6447
test float/conv.rs
2017-04-10 16:12:49 -05:00
Jorge Aparicio
b8e8c7f693
no_std compatible tester
2017-04-10 14:38:17 -05:00
Jorge Aparicio
a88ea4011b
rustfmt
2017-04-10 11:29:31 -05:00
Jorge Aparicio
bce5fb5a6e
move the compiler-rt submodule to the root
2017-04-10 11:23:03 -05:00
Jorge Aparicio
dbcec72ca1
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
a2e6591be9
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
5bb969d8f5
implement float subtraction
...
as a + (-b)
2017-02-08 10:10:40 -05:00
Jorge Aparicio
f7bd48ee94
target.contains -> target_os ==
2017-02-06 15:16:16 -05:00
Jorge Aparicio
7cac9625b5
std: Remove unused objects from compiler-builtins
...
rust-lang/rust#38623
2017-02-06 15:13:40 -05:00
Jorge Aparicio
03aa2ef390
travis: Expand the `cross` linux image
...
rust-lang/rust#39111
2017-02-06 15:12:34 -05:00
Jorge Aparicio
6d3cab2ba0
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
c30dcb0d30
Don't build any native compiler-builtin components for emscripten
...
rust-lang/rust#36339
2017-02-06 15:11:09 -05:00
Jorge Aparicio
b9149051f7
Don't build gcc_personality_v0.c on NetBSD either
...
rust-lang/rust#39425
2017-02-06 15:10:02 -05:00
est31
9013dbef02
u128 sdiv intrinsics
2017-02-02 22:13:28 +01:00
est31
2f3c534cfe
u128 udiv intrinsics
2017-02-02 22:11:14 +01:00
est31
1e27c3f937
i128 shift intrinsics
2017-02-02 22:02:51 +01:00
est31
3055aa21b6
i128 mul intrinsics
2017-02-02 21:36:56 +01:00
Alex Crichton
24d49071e5
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
f68475e080
Use better cfg name for arm-linux tests
2016-11-12 15:52:59 -06:00
Matt Ickstadt
655f642d3f
Add float quickcheck
2016-11-12 14:55:28 -06:00
Jorge Aparicio
4bf128a84c
add a rustbuild cargo feature for integration with rust-lang/rust
2016-10-10 16:18:18 -05:00
homunkulus
8652c66bdc
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
ff7e3ba2c0
stop compiling compiler-rt implementations
...
to avoid duplicate symbols
2016-10-03 20:52:14 -05:00
Jorge Aparicio
77bca82434
bump rustc-cfg version and show a better error message when it fails
2016-10-03 19:25:32 -05:00
Jorge Aparicio
72802069a2
build.rs: print rerun-if-change for all the C/asm sources
2016-09-29 19:45:59 -05:00
Jorge Aparicio
b5797dc2a2
adapt to new testing infrastructure
2016-09-29 18:50:04 -05:00
Jorge Aparicio
f77ca915c4
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
8e161a791a
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
dafe47bc2b
fix build.rs
...
we don't want to match musleabihf targets
2016-09-22 11:56:34 -05:00
Jorge Aparicio
337bd7e209
armhf: don't compare our impls against gcc_s
2016-09-21 21:14:38 -05:00