Commit Graph

246 Commits (711d17fb3cd8c5ad981fed8fe1710fa5c255cc43)

Author SHA1 Message Date
homunkulus c56a3f8a6e 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 b7fa7d3a59 put weak mem* symbols behind an opt-in Cargo feature
closes #64
cc #66
2016-09-22 18:02:25 -05:00
homunkulus d5e38beef9 Auto merge of #71 - japaric:aeabi-aliases, r=japaric
add missing aeabi aliases
2016-09-22 22:55:43 +00:00
Jorge Aparicio d34be6ab4e add missing aeabi aliases 2016-09-22 17:02:36 -05:00
Jorge Aparicio 384c48ce9b 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 337bd7e209 armhf: don't compare our impls against gcc_s 2016-09-21 21:14:38 -05:00
Jorge Aparicio 225d4c9d45 avoid division overflow in idivmod test 2016-09-17 21:10:41 -05:00
Jorge Aparicio 9493c37455 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 2e561b3869 use utility function to compare the repr of floats
follow up of #43
2016-08-21 11:24:58 -05:00
Jorge Aparicio c427112561 Merge pull request #49 from japaric/edge
qc: bias towards generation of edge cases
2016-08-21 11:03:44 -05:00
Matt Ickstadt da53b70d34 Use mem::swap to swap variables 2016-08-20 22:30:02 -05:00
Jorge Aparicio fc0cdeb7f1 qc: bias towards generation of edge cases 2016-08-20 22:17:50 -05:00
Matt Ickstadt ef16de3d37 Implement soft float add builtins 2016-08-20 16:06:02 -05:00
Matt Ickstadt 6f0d50ebea Move integer functions to separate module 2016-08-20 15:55:06 -05:00
Jorge Aparicio 8603e64554 Merge pull request #44 from Amanieu/sdiv
Add signed division functions
2016-08-19 09:16:53 -05:00
Amanieu d'Antras b9e916c769 Add tests for ARM division builtins 2016-08-19 12:13:02 +01:00
Amanieu d'Antras f919660be5 Add signed division functions 2016-08-19 12:13:02 +01:00
Jorge Aparicio 5e47ca2699 rename muldi4 to muldi3
closes #42
2016-08-18 21:27:16 -05:00
Matt Ickstadt aab3a10a9d 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 c9bff743cd Use `jmp` to implement __alloca fallthrough 2016-08-17 12:11:38 -05:00
Matt Ickstadt b6091ababa Add x86_64 builtins 2016-08-16 19:55:17 -05:00
Jorge Aparicio ac352a3512 add core_intrinsics feature gate 2016-08-15 21:08:04 -05:00
Jorge Aparicio 55eb1b71a0 remove unused feature gates 2016-08-14 22:08:36 -05:00
Jorge Aparicio 8965b061c2 use rlibc crate instead 2016-08-14 22:03:19 -05:00
Jorge Aparicio fdbb7883da exclude windows and macos 2016-08-14 22:01:15 -05:00
Jorge Aparicio 265939fc00 add weak `memcpy` et al symbols
closes #28
2016-08-14 22:00:31 -05:00
Jorge Aparicio 45aec943d3 use wrapping_add in muldi4 2016-08-13 18:47:39 -05:00
Jorge Aparicio f3eb08a96d fix a bug in udivmoddi4 2016-08-13 18:45:00 -05:00
Jorge Aparicio 69376af183 quickcheck: better generation of input arguments
closes #31
2016-08-13 16:58:44 -05:00
Amanieu d'Antras 97217e3ad9 Fix inline assembly to work on ARMv6-M 2016-08-13 17:29:38 +01:00
Amanieu d'Antras acceaa95f1 Various changes 2016-08-13 09:56:40 +01:00
Amanieu d'Antras 0a0a8f37c9 Remove the absv implementation, it isn't needed by Rust 2016-08-13 09:54:58 +01:00
Jorge Aparicio eb206842f2 address second row of review 2016-08-11 01:45:48 -05:00
Jorge Aparicio 1c22269948 don't transmute in test 2016-08-11 01:42:34 -05:00
Jorge Aparicio 3ff25d956a put div intrinsics in their own module + some docs 2016-08-11 01:26:27 -05:00
Jorge Aparicio a84579d3c1 refactor: use Int traits, words -> U64, fmt 2016-08-11 01:15:51 -05:00
Jorge Aparicio d6be95a3bb note about calling convention 2016-08-11 00:36:19 -05:00
Jorge Aparicio a2fc4da7a5 move return into if branches 2016-08-11 00:33:27 -05:00
Jorge Aparicio 0915e15c9a *mut T -> Option<&mut T> 2016-08-11 00:31:49 -05:00
Jorge Aparicio cc9d3e8e5f 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 950564607d port udivmoddi4 and __aeabi_uldivmod 2016-08-11 00:26:12 -05:00
Amanieu d'Antras 8a94b69d85 Add traits for integer operations 2016-08-11 05:38:11 +01:00
Amanieu d'Antras 065aaa9144 Remove the x86-specific floating-point builtins 2016-08-08 08:36:59 +01:00
Amanieu d'Antras a147763c19 Remove builtins that are not called by LLVM 2016-08-08 08:25:11 +01:00
Amanieu d'Antras 36fb191695 Rewrite the arm mem* builtins without asm and naked functions 2016-08-08 07:25:32 +01:00
Jorge Aparicio 1faf15fc64 initial commit 2016-08-07 15:58:21 -05:00