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
homunkulus
10146b3334
Auto merge of #73 - japaric:weak, r=japaric
...
put weak mem* symbols behind an opt-in Cargo feature
closes #64
cc #66
2016-09-22 23:59:48 +00:00
Jorge Aparicio
2dc91bd96c
put weak mem* symbols behind an opt-in Cargo feature
...
closes #64
cc #66
2016-09-22 18:02:25 -05:00
homunkulus
bc07830e09
Auto merge of #71 - japaric:aeabi-aliases, r=japaric
...
add missing aeabi aliases
2016-09-22 22:55:43 +00:00
Jorge Aparicio
2d630eedfd
add missing aeabi aliases
2016-09-22 17:02:36 -05:00
Jorge Aparicio
bc61db2e36
don't test always against gcc_s
...
instead test half of the time against gcc_s and the other half test
against the native operation (\*).
(\*) Not all the targets have available a native version of the
intrinsics under test. On those targets we'll end up testing our
implementation against itself half of the time. This is not much of a
problem because we do several quickcheck runs per intrinsic.
2016-09-21 21:38:06 -05:00
Jorge Aparicio
7a56ac6bb4
armhf: don't compare our impls against gcc_s
2016-09-21 21:14:38 -05:00
Jorge Aparicio
294c6a93d8
avoid division overflow in idivmod test
2016-09-17 21:10:41 -05:00
Jorge Aparicio
656cd2b308
test our implementations against gcc_s
...
if it exposes the same intrinsics that we implement -- gcc_s doesn't
implement all the intrinsics for all the architectures.
closes #65
2016-09-16 15:53:14 -05:00
Jorge Aparicio
ae9d294297
use utility function to compare the repr of floats
...
follow up of #43
2016-08-21 11:24:58 -05:00
Jorge Aparicio
e5455d7f12
Merge pull request #49 from japaric/edge
...
qc: bias towards generation of edge cases
2016-08-21 11:03:44 -05:00
Matt Ickstadt
30428ec88f
Use mem::swap to swap variables
2016-08-20 22:30:02 -05:00
Jorge Aparicio
e4dabb8c32
qc: bias towards generation of edge cases
2016-08-20 22:17:50 -05:00
Matt Ickstadt
fe3c35131f
Implement soft float add builtins
2016-08-20 16:06:02 -05:00
Matt Ickstadt
35d68d8ab2
Move integer functions to separate module
2016-08-20 15:55:06 -05:00
Jorge Aparicio
f96d56dc37
Merge pull request #44 from Amanieu/sdiv
...
Add signed division functions
2016-08-19 09:16:53 -05:00
Amanieu d'Antras
59fe09c493
Add tests for ARM division builtins
2016-08-19 12:13:02 +01:00
Amanieu d'Antras
161234b8b3
Add signed division functions
2016-08-19 12:13:02 +01:00
Jorge Aparicio
3fddb6b427
rename muldi4 to muldi3
...
closes #42
2016-08-18 21:27:16 -05:00
Matt Ickstadt
22331947ea
Disable mangling for msvc stack builtins
...
This prevents linker errors in test builds due to the `jmp` instruction in __alloca
2016-08-17 12:55:15 -05:00
Matt Ickstadt
7e238f9973
Use jmp to implement __alloca fallthrough
2016-08-17 12:11:38 -05:00
Matt Ickstadt
f0dbe4c07c
Add x86_64 builtins
2016-08-16 19:55:17 -05:00
Jorge Aparicio
63a87352d8
add core_intrinsics feature gate
2016-08-15 21:08:04 -05:00
Jorge Aparicio
b193bf698d
remove unused feature gates
2016-08-14 22:08:36 -05:00
Jorge Aparicio
ae75d02bdd
use rlibc crate instead
2016-08-14 22:03:19 -05:00
Jorge Aparicio
a8c6135b38
exclude windows and macos
2016-08-14 22:01:15 -05:00
Jorge Aparicio
657a0cd18a
add weak memcpy et al symbols
...
closes #28
2016-08-14 22:00:31 -05:00
Jorge Aparicio
ebb3175dc0
use wrapping_add in muldi4
2016-08-13 18:47:39 -05:00
Jorge Aparicio
f7864eb3cd
fix a bug in udivmoddi4
2016-08-13 18:45:00 -05:00
Jorge Aparicio
5581cc40af
quickcheck: better generation of input arguments
...
closes #31
2016-08-13 16:58:44 -05:00
Amanieu d'Antras
d668c385ac
Fix inline assembly to work on ARMv6-M
2016-08-13 17:29:38 +01:00
Amanieu d'Antras
1a60c3d52f
Various changes
2016-08-13 09:56:40 +01:00
Amanieu d'Antras
07afa89f10
Remove the absv implementation, it isn't needed by Rust
2016-08-13 09:54:58 +01:00
Jorge Aparicio
57a3f411dd
address second row of review
2016-08-11 01:45:48 -05:00
Jorge Aparicio
01a8a996b5
don't transmute in test
2016-08-11 01:42:34 -05:00
Jorge Aparicio
bcd525fe61
put div intrinsics in their own module + some docs
2016-08-11 01:26:27 -05:00
Jorge Aparicio
24344f1dca
refactor: use Int traits, words -> U64, fmt
2016-08-11 01:15:51 -05:00
Jorge Aparicio
d66ff75198
note about calling convention
2016-08-11 00:36:19 -05:00
Jorge Aparicio
6be47a3524
move return into if branches
2016-08-11 00:33:27 -05:00
Jorge Aparicio
6d663ebb9c
*mut T -> Option<&mut T>
2016-08-11 00:31:49 -05:00
Jorge Aparicio
4c93f05195
port __udivmodsi4, aeabi_uidivmod and udivsi3
...
also rewrite these last two new aeabi intrinsics as naked functions
2016-08-11 00:26:16 -05:00
Jorge Aparicio
2eb2ac115d
port udivmoddi4 and __aeabi_uldivmod
2016-08-11 00:26:12 -05:00
Amanieu d'Antras
2880fd70ad
Add traits for integer operations
2016-08-11 05:38:11 +01:00
Amanieu d'Antras
68e0b7657c
Remove the x86-specific floating-point builtins
2016-08-08 08:36:59 +01:00
Amanieu d'Antras
6f22c85b25
Remove builtins that are not called by LLVM
2016-08-08 08:25:11 +01:00
Amanieu d'Antras
9fbd25b4cd
Rewrite the arm mem* builtins without asm and naked functions
2016-08-08 07:25:32 +01:00
Jorge Aparicio
773fd1a707
initial commit
2016-08-07 15:58:21 -05:00