
The x86 code contains several macros that following this pattern: ```rust macro_rules! expr { () => { true; } } fn bar(_val: bool) {} fn main() { bar(expr!()); } ``` Here, we have a macro `expr!` that expands to tokens sequence with a trailing semicolon. Currently, the trailing semicolon is ignored when the macro is invoked in expression position, due to https://github.com/rust-lang/rust/issues/33953 If this behavior is changed, then a large number of macro invocations in `stdarch` will stop compiling. Regardless of whether nor not this change is made, removing the semicolon more clearly expresses the intent of the code - these macros are designed to expand to the result of a function call, not ignore its results (as the `;` would suggest).
core::arch
- Rust's core library architecture-specific intrinsics
The core::arch
module implements architecture-dependent intrinsics (e.g. SIMD).
Usage
core::arch
is available as part of libcore
and it is re-exported by
libstd
. Prefer using it via core::arch
or std::arch
than via this crate.
Unstable features are often available in nightly Rust via the
feature(stdsimd)
.
Using core::arch
via this crate requires nightly Rust, and it can (and does)
break often. The only cases in which you should consider using it via this crate
are:
-
if you need to re-compile
core::arch
yourself, e.g., with particular target-features enabled that are not enabled forlibcore
/libstd
. Note: if you need to re-compile it for a non-standard target, please prefer usingxargo
and re-compilinglibcore
/libstd
as appropriate instead of using this crate. -
using some features that might not be available even behind unstable Rust features. We try to keep these to a minimum. If you need to use some of these features, please open an issue so that we can expose them in nightly Rust and you can use them from there.
Documentation
- Documentation - i686
- Documentation - x86_64
- Documentation - arm
- Documentation - aarch64
- Documentation - powerpc
- Documentation - powerpc64
- How to get started
- How to help implement intrinsics
License
core_arch
is primarily distributed under the terms of both the MIT license and
the Apache License (Version 2.0), with portions covered by various BSD-like
licenses.
See LICENSE-APACHE, and LICENSE-MIT for details.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in core_arch
by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.