diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-11-10 22:20:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-10 22:20:34 +0100 |
| commit | cdb76c77acfcf53564416319333b13fbf6bd1a37 (patch) | |
| tree | e2c128880a1cca1e031cc23325ba3a0bff414c66 /compiler/rustc_errors/src | |
| parent | 2128d8df0e858edcbe6a0861bac948b88b7fabc3 (diff) | |
| parent | 965a2801a09667ba87ae8d419aa04086dc3a5113 (diff) | |
| download | rust-cdb76c77acfcf53564416319333b13fbf6bd1a37.tar.gz rust-cdb76c77acfcf53564416319333b13fbf6bd1a37.zip | |
Rollup merge of #131781 - taiki-e:arm64ec-stabilize-asm, r=Amanieu,traviscross
Stabilize Arm64EC inline assembly
This stabilizes inline assembly for Arm64EC ("Emulation Compatible").
Corresponding reference PR: https://github.com/rust-lang/reference/pull/1653
---
From the requirements of stabilization mentioned in https://github.com/rust-lang/rust/issues/93335
> Each architecture needs to be reviewed before stabilization:
> - It must have clobber_abi.
Done in https://github.com/rust-lang/rust/pull/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 class `preg`)
These are disallowed by the ABI (see also [abi docs](https://learn.microsoft.com/en-us/cpp/build/arm64ec-windows-abi-conventions?view=msvc-170#register-mapping) for `reg`/`vreg` and https://github.com/rust-lang/rust/pull/131332#issuecomment-2401189142 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
Diffstat (limited to 'compiler/rustc_errors/src')
0 files changed, 0 insertions, 0 deletions
