Add Arm64EC to inline-assembly documentation by taiki-e · Pull Request #1653 · rust-lang/reference (original) (raw)
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#131781 - taiki-e:arm64ec-stabilize-asm, r=Amanieu,traviscross
Stabilize Arm64EC inline assembly
This stabilizes inline assembly for Arm64EC ("Emulation Compatible").
Corresponding reference PR: rust-lang/reference#1653
From the requirements of stabilization mentioned in rust-lang#93335
Each architecture needs to be reviewed before stabilization:
- It must have clobber_abi.
Done in rust-lang#131332.
- It must be possible to clobber every register that is normally clobbered by a function call.
This is possible from the time of the initial implementation.
- Generally review that the exposed register classes make sense.
The registers available in this target are a subset of those available in the AArch64 inline assembly which is already stable.
The following registers cannot be used in Arm64EC compared to AArch64:
x13
,x14
,x23
,x24
,x28
(register class:reg
)v[16-31]
(register class:vreg
)p[0-15]
,ffr
(clobber-only register classpreg
)
These are disallowed by the ABI (see also abi docs for reg
/vreg
and rust-lang#131332 (comment) for preg
).
Although not listed in the above requirements, preserves_flags is also implemented and the same as AArch64.
cc @dpaoliello
r? @Amanieu
@rustbot
label O-windows O-AArch64 +A-inline-assembly +T-lang -T-compiler +needs-fcp