rp: Disable intrinsics by default.
This commit is contained in:
parent
49070c75b6
commit
1e95c4fcff
1
ci.sh
1
ci.sh
@ -58,6 +58,7 @@ cargo batch \
|
|||||||
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly,unstable-traits,log \
|
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly,unstable-traits,log \
|
||||||
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly,unstable-traits \
|
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly,unstable-traits \
|
||||||
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly \
|
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly \
|
||||||
|
--- build --release --manifest-path embassy-rp/Cargo.toml --target thumbv6m-none-eabi --features nightly,intrinsics \
|
||||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features nightly,stm32f410tb,defmt,exti,time-driver-any,unstable-traits \
|
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features nightly,stm32f410tb,defmt,exti,time-driver-any,unstable-traits \
|
||||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features nightly,stm32f411ce,defmt,exti,time-driver-any,unstable-traits \
|
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features nightly,stm32f411ce,defmt,exti,time-driver-any,unstable-traits \
|
||||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features nightly,stm32f429zi,log,exti,time-driver-any,unstable-traits \
|
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features nightly,stm32f429zi,log,exti,time-driver-any,unstable-traits \
|
||||||
|
@ -23,7 +23,7 @@ unstable-pac = []
|
|||||||
time-driver = []
|
time-driver = []
|
||||||
|
|
||||||
rom-func-cache = []
|
rom-func-cache = []
|
||||||
disable-intrinsics = []
|
intrinsics = []
|
||||||
rom-v2-intrinsics = []
|
rom-v2-intrinsics = []
|
||||||
|
|
||||||
# Enable nightly-only features
|
# Enable nightly-only features
|
||||||
|
@ -17,7 +17,7 @@ macro_rules! intrinsics_aliases {
|
|||||||
$alias:ident
|
$alias:ident
|
||||||
$($rest:ident)*
|
$($rest:ident)*
|
||||||
) => {
|
) => {
|
||||||
#[cfg(all(target_arch = "arm", not(feature = "disable-intrinsics")))]
|
#[cfg(all(target_arch = "arm", feature = "intrinsics"))]
|
||||||
intrinsics! {
|
intrinsics! {
|
||||||
extern $abi fn $alias( $($argname: $ty),* ) -> $ret {
|
extern $abi fn $alias( $($argname: $ty),* ) -> $ret {
|
||||||
$name($($argname),*)
|
$name($($argname),*)
|
||||||
@ -35,7 +35,7 @@ macro_rules! intrinsics_aliases {
|
|||||||
$alias:ident
|
$alias:ident
|
||||||
$($rest:ident)*
|
$($rest:ident)*
|
||||||
) => {
|
) => {
|
||||||
#[cfg(all(target_arch = "arm", not(feature = "disable-intrinsics")))]
|
#[cfg(all(target_arch = "arm", feature = "intrinsics"))]
|
||||||
intrinsics! {
|
intrinsics! {
|
||||||
unsafe extern $abi fn $alias( $($argname: $ty),* ) -> $ret {
|
unsafe extern $abi fn $alias( $($argname: $ty),* ) -> $ret {
|
||||||
$name($($argname),*)
|
$name($($argname),*)
|
||||||
@ -55,7 +55,7 @@ macro_rules! intrinsics_aliases {
|
|||||||
/// is to abstract anything special that needs to be done to override an
|
/// is to abstract anything special that needs to be done to override an
|
||||||
/// intrinsic function. Intrinsic generation is disabled for non-ARM targets
|
/// intrinsic function. Intrinsic generation is disabled for non-ARM targets
|
||||||
/// so things like CI and docs generation do not have problems. Additionally
|
/// so things like CI and docs generation do not have problems. Additionally
|
||||||
/// they can be disabled with the crate feature `disable-intrinsics` for
|
/// they can be disabled by disabling the crate feature `intrinsics` for
|
||||||
/// testing or comparing performance.
|
/// testing or comparing performance.
|
||||||
///
|
///
|
||||||
/// Like the compiler-builtins macro, it accepts a series of functions that
|
/// Like the compiler-builtins macro, it accepts a series of functions that
|
||||||
@ -214,13 +214,13 @@ macro_rules! intrinsics {
|
|||||||
|
|
||||||
$($rest:tt)*
|
$($rest:tt)*
|
||||||
) => {
|
) => {
|
||||||
#[cfg(all(target_arch = "arm", not(feature = "disable-intrinsics")))]
|
#[cfg(all(target_arch = "arm", feature = "intrinsics"))]
|
||||||
$(#[$($attr)*])*
|
$(#[$($attr)*])*
|
||||||
extern $abi fn $name( $($argname: $ty),* ) -> $ret {
|
extern $abi fn $name( $($argname: $ty),* ) -> $ret {
|
||||||
$($body)*
|
$($body)*
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_arch = "arm", not(feature = "disable-intrinsics")))]
|
#[cfg(all(target_arch = "arm", feature = "intrinsics"))]
|
||||||
mod $name {
|
mod $name {
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
$(#[$($attr)*])*
|
$(#[$($attr)*])*
|
||||||
@ -231,7 +231,7 @@ macro_rules! intrinsics {
|
|||||||
|
|
||||||
// Not exported, but defined so the actual implementation is
|
// Not exported, but defined so the actual implementation is
|
||||||
// considered used
|
// considered used
|
||||||
#[cfg(not(all(target_arch = "arm", not(feature = "disable-intrinsics"))))]
|
#[cfg(not(all(target_arch = "arm", feature = "intrinsics")))]
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn $name( $($argname: $ty),* ) -> $ret {
|
fn $name( $($argname: $ty),* ) -> $ret {
|
||||||
$($body)*
|
$($body)*
|
||||||
@ -248,13 +248,13 @@ macro_rules! intrinsics {
|
|||||||
|
|
||||||
$($rest:tt)*
|
$($rest:tt)*
|
||||||
) => {
|
) => {
|
||||||
#[cfg(all(target_arch = "arm", not(feature = "disable-intrinsics")))]
|
#[cfg(all(target_arch = "arm", feature = "intrinsics"))]
|
||||||
$(#[$($attr)*])*
|
$(#[$($attr)*])*
|
||||||
unsafe extern $abi fn $name( $($argname: $ty),* ) -> $ret {
|
unsafe extern $abi fn $name( $($argname: $ty),* ) -> $ret {
|
||||||
$($body)*
|
$($body)*
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_arch = "arm", not(feature = "disable-intrinsics")))]
|
#[cfg(all(target_arch = "arm", feature = "intrinsics"))]
|
||||||
mod $name {
|
mod $name {
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
$(#[$($attr)*])*
|
$(#[$($attr)*])*
|
||||||
@ -265,7 +265,7 @@ macro_rules! intrinsics {
|
|||||||
|
|
||||||
// Not exported, but defined so the actual implementation is
|
// Not exported, but defined so the actual implementation is
|
||||||
// considered used
|
// considered used
|
||||||
#[cfg(not(all(target_arch = "arm", not(feature = "disable-intrinsics"))))]
|
#[cfg(not(all(target_arch = "arm", feature = "intrinsics")))]
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
unsafe fn $name( $($argname: $ty),* ) -> $ret {
|
unsafe fn $name( $($argname: $ty),* ) -> $ret {
|
||||||
$($body)*
|
$($body)*
|
||||||
|
Loading…
Reference in New Issue
Block a user