Commit Graph

31 Commits

Author SHA1 Message Date
Tim Neumann
f83c8529e7 Fix incorrect names used / generated on ARM 2018-03-27 14:32:01 +02:00
Dan Gohman
3bd28c8b6d Add "volatile" and "memory" clobber to asm! that doesn't fall through.
Use the "volatile" option and the "memory" clobber on inline asm that does
things like return directly, to reduce the chances of compilers rearranging
the code.
2017-11-15 12:49:10 -08:00
Alex Crichton
79b55c48ca Fix unused imports on iOS 2017-07-03 19:11:34 -07:00
Jorge Aparicio
b9d6291682 no aeabi_mem* symbols on iOS, weak symbols on thumb, normal symbols elsewhere 2017-06-30 18:06:25 -05:00
Jorge Aparicio
f096e02f63 optimize 32-bit aligned mem{cpy,clr,set} intrinsics for ARM
this reduces the execution time of all these routines by 40-70%
2017-06-29 22:40:58 -05:00
Alex Crichton
6792390e3e Enable the intrinsics program on thumb 2017-06-25 10:09:50 -07:00
Alex Crichton
f9db3c5b32 Don't test mangled names on thumb
We are both the "real compiler-rt" and the "to be tested one".
2017-06-24 12:54:35 -07:00
Alex Crichton
e7008c8609 Don't check for references to panics with debug assertions 2017-06-24 11:44:50 -07:00
Alex Crichton
3eff54a4ee Don't generate unmangled aeabi with gen-tests
The symbols they delgate to also don't exist...
2017-06-24 11:34:10 -07:00
Alex Crichton
6db18f6536 Handle aeabi aliasing
Objects in compiler-rt may have two symbols, so this makes sure that we don't
bring in those objects by accident by defining the aliases ourselves.
2017-06-23 15:55:11 -07:00
Alex Crichton
0e5562c38d Remove executable bit on arm.rs 2017-06-23 11:21:15 -07:00
Jorge Aparicio
0869e5b93a remove arm tests from the old test suite 2017-04-10 16:35:08 -05:00
Wilfried Chauveau
b3e33508a0 impl (unsigned/signed) int to single/double precision float conversion based on llvm algorithms. 2017-03-06 11:55:57 -05:00
Jorge Aparicio
9916fa670c implement float subtraction
as a + (-b)
2017-02-08 10:10:40 -05:00
Jorge Aparicio
3a4e6ce2f4 use AAPCS calling convention on all aeabi intrinsics
also, on ARM, inline(always) the actual implementation of the intrinsics so we
end with code like this:

```
00000000 <__aeabi_dadd>:
    (implementation here)
```

instead of "trampolines" like this:

```
00000000 <__aeabi_dadd>:
    (shuffle registers)
    (call __adddf3)

00000000 <__adddf3>:
    (implementation here)
```

closes #116
2017-02-07 09:41:26 -05:00
Jorge Aparicio
b8d6652035 add implementations of memcpy et al
behind the "mem" Cargo feature, which used to be named "weak"

fixes #126
2016-12-17 23:06:37 -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
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
a83c11232e avoid division overflow in idivmod test 2016-09-22 10:32:15 -05:00
Matt Ickstadt
35d68d8ab2 Move integer functions to separate module 2016-08-20 15:55:06 -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
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
Jorge Aparicio
d66ff75198 note about calling convention 2016-08-11 00:36:19 -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
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