macro_rules! safe_target_feature {
($(
$(#[$meta:meta])*
fn $f:ident($($param:ident: $Param:ty),* $(,)?) $(-> $Ret:ty)? $body:block
)*) => {$(
$(#[$meta])*
fn $f($($param: $Param),*) $(-> $Ret)? {
#[cfg_attr(target_feature = "sse2", target_feature(enable = "sse2"))]
#[cfg_attr(target_feature = "ssse3", target_feature(enable = "ssse3"))]
#[cfg_attr(target_feature = "sse4.1", target_feature(enable = "sse4.1"))]
#[cfg_attr(target_feature = "neon", target_feature(enable = "neon"))]
#[inline]
fn $f($($param: $Param),*) $(-> $Ret)? $body
unsafe { $f($($param),*) }
}
)*};
}
pub(crate) use safe_target_feature;