-
Notifications
You must be signed in to change notification settings - Fork 228
avr: Skip No More! #791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
avr: Skip No More! #791
Conversation
Also did you mean for this PR to have draft in the title, but not actually be marked as a draft? :) |
Hah, #justgitlabthings |
Also,
This shouldn't be necessary if there are only a couple of intrinsics. Instead, |
458dfab
to
6f25a22
Compare
Ok, it's ready! I've tested the code on ATmega328P and ATtiny167 (just simavr, since I've recently relocated and my electrical stuff is still in boxes in some warehouse, waiting for final delivery 😭). |
6f25a22
to
83938ba
Compare
Sorry about the conflicts, this will need a rebase since I moved some things around (git should be able to figure it out). Just that and #791 (comment), then I think this will be ready to go. |
83938ba
to
60d4e8a
Compare
Okie, ready; I also added a comment to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814
Update `compiler-builtins` to 0.1.153 Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814
Update `compiler-builtins` to 0.1.153 Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814
Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] * Re-enable `f16` on aarch64 without Neon [4] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814 [4]: rust-lang/compiler-builtins#809
Update `compiler-builtins` to 0.1.153 Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] * Re-enable `f16` on aarch64 without Neon [4] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814 [4]: rust-lang/compiler-builtins#809
Rollup merge of rust-lang#139600 - tgross35:update-builtins, r=tgross35 Update `compiler-builtins` to 0.1.153 Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] * Re-enable `f16` on aarch64 without Neon [4] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814 [4]: rust-lang/compiler-builtins#809
Update `compiler-builtins` to 0.1.153 Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] * Re-enable `f16` on aarch64 without Neon [4] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814 [4]: rust-lang/compiler-builtins#809
Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] * Re-enable `f16` on aarch64 without Neon [4] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814 [4]: rust-lang/compiler-builtins#809
Update `compiler-builtins` to 0.1.153 Includes the following changes: * Avoid OOB access in `memcpy` and `memmove` [1] * Enable intrinsics on AVR [2] * `libm` updates to avoid using `core::arch` vector intrinsics [3] * Re-enable `f16` on aarch64 without Neon [4] [1]: rust-lang/compiler-builtins#799 [2]: rust-lang/compiler-builtins#791 [3]: rust-lang/compiler-builtins#814 [4]: rust-lang/compiler-builtins#809
This pull request gets rid of all of the
#[avr_skip]
s introduced in the past.... Olly Murs, frustrated about having to pull someone's intrinsics when working on AVR firmwares (colorized).
Changes here are related to #711, but note that we continue not to provide
__u?divmod[hq]i4
- it shouldn't be terribly difficult to implement those (I even have a work-in-progress branch in rustc that exposes the proper calling convention), it's just a different kind of change that will be done in another pull request.In general, the changes boil down to:
#[avr_skip]
on intrinsics that don't actually have special convention (such as__addsf3
),__unordsf2
or__divmodsi4
).I've tested new code via avr-tester - in particular, there's a test that uses randomized math operations and another one that checks floating point math, and both pass using the implementations provided by compiler-builtins.
Related discussions: