Scott McMurray
665f268872
Tweak addo & subo to try and fix MIPS
2017-11-25 05:26:24 -08:00
Scott McMurray
5e71218390
Implement all the 128-bit operator lang items from rust PR 46093
2017-11-25 04:21:05 -08:00
Dan Gohman
a6ecd1a73f
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
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
est31
c781759498
Partially revert a272d753f5
...
This partially reverts commit "Convert float_to_int! into a function"
2017-09-29 02:20:27 +02:00
est31
a20840262e
Partially revert 482d98318f
...
This partially reverts "Convert int_to_float! to a function".
2017-09-29 02:19:40 +02:00
Matt Ickstadt
a40cc6a12d
Don't compile probestack functions during testing
2017-09-15 18:13:06 -05:00
Matt Ickstadt
b3679bcfba
Implement x86 chkstk in "rust"
2017-09-15 18:04:59 -05:00
est31
0cd476220b
Remove duplication by adding a macro
2017-09-14 17:39:25 +02:00
est31
3efae7f7d9
Convert add! to a function
2017-09-14 17:33:44 +02:00
est31
482d98318f
Convert int_to_float! to a function
2017-09-14 16:32:50 +02:00
est31
ff63f7b80f
Convert float_to_int! into a function
2017-09-14 14:59:32 +02:00
est31
a272d753f5
Don't use the Wrapping wrapper in float addition
...
Inspired by a patch by mattico.
2017-09-14 02:08:28 +02:00
est31
72ed4c8bce
Don't use a macro for pow calculation
2017-09-14 01:59:02 +02:00
est31
8313cec597
Extend the Float trait by some constants and supertraits
2017-09-14 01:57:52 +02:00
est31
2c1d7dccc1
Use the newly added ONE constant in float addition
2017-09-14 00:10:16 +02:00
est31
46cfa05650
Introduce a float_impl! macro to avoid duplication
2017-09-13 22:44:56 +02:00
est31
9bdedec38e
Refactor float builtins to use associated consts
2017-09-13 22:09:52 +02:00
est31
c9a261895e
Refactor int builtins to use associated consts
2017-09-13 22:09:31 +02:00
Tim Neumann
c138713df1
Avoid memcpy references in unoptimized code
2017-07-22 23:10:30 +02:00
Oliver Middleton
064452423a
Don't include custom chkstk on MSVC
...
MSVC includes its own __chkstk so these aren't used.
2017-07-12 22:40:49 +01:00
Alex Crichton
91eaa85902
Don't mangle probes all the time
2017-07-07 20:35:14 -07:00
Alex Crichton
f9f6bd0589
Tweak definition of probestack functions
...
It looks like the old `__rust_probestack` routine is incompatible with newer
linux kernels. My best guess for this is that the kernel's auto-growth logic is
failing to trigger, causing what looks like a legitimate segfault to get
delivered. My best guess for why *that's* happening is that the faulting address
is below `%rsp`, whereas previously all faulting stack addresses were above
`%rsp`. The probestack routine does not modify `%rsp` as it's probing the stack,
and presumably newer kernels are interpreting this as a legitimate violation.
This commit tweaks the probestack routine to instead update `%rsp` incrementally
as probing happens. The ABI of the function, however, requires that `%rsp`
isn't changed as part of the function so it's restored at the end to the
previous value.
2017-07-07 10:16:03 -07:00
Alex Crichton
7ccf8408d0
Add `__rust_probestack` intrinsic
...
Will be required for rust-lang/rust#42816
2017-07-06 06:58:32 -07:00
Alex Crichton
238647af80
Fix unused imports on iOS
2017-07-03 19:11:34 -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
Jorge Aparicio
b8a662040e
no aeabi_mem* symbols on iOS, weak symbols on thumb, normal symbols elsewhere
2017-06-30 18:06:25 -05:00
Jorge Aparicio
75c6ccca71
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
0ebbcaede4
Enable the `intrinsics` program on thumb
2017-06-25 10:09:50 -07:00
Alex Crichton
afe5c717a9
Address review comments
2017-06-24 21:51:34 -07:00
Alex Crichton
c193113721
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
acaa2f071a
Don't check for references to panics with debug assertions
2017-06-24 11:44:50 -07:00
Alex Crichton
d051480eff
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
91b1291dc5
Don't try to work with `cargo test`
2017-06-24 10:22:49 -07:00
Alex Crichton
734ec3d31c
Tweak testing and such:
...
* Don't run `intrinsics` tests on thumb
* Disable `compiler_builtins` attribute on `feature = "gen-tests"`
* Disable mangling on `feature = "gen-tests"` instead of `cfg(test)`
2017-06-24 10:10:04 -07:00
Alex Crichton
2147753559
Remove usage of unwrap_or_else
2017-06-23 21:31:54 -07:00
Alex Crichton
4dac0be751
Don't derive Debug for Sign
2017-06-23 21:11:31 -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
eabb6fab4a
Shore up docs in the macros module
2017-06-23 16:28:50 -07:00
Alex Crichton
7de57cd4f9
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
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
5172f8c218
Tweak usage of C shims on MSVC
2017-06-23 12:03:33 -07:00
Alex Crichton
a16ebb0dcb
Use `nm` to weed out panics
2017-06-23 11:52:22 -07:00
Alex Crichton
5a444d58f2
Remove unused rust file
2017-06-23 11:21:36 -07:00
Alex Crichton
7c4745061a
Remove executable bit on arm.rs
2017-06-23 11:21:15 -07:00
Alex Crichton
83d63eaa9b
Convert float intrinsics to the `intrinsics!` macro
2017-06-23 11:05:25 -07:00
Alex Crichton
93fed264c1
Remove executable bit from conv.rs
2017-06-23 10:44:59 -07:00