Add s390x to inline-assembly documentation#1643
Merged
ehuss merged 1 commit intorust-lang:masterfrom Nov 10, 2024
Merged
Conversation
Amanieu
approved these changes
Oct 4, 2024
Member
Amanieu
left a comment
There was a problem hiding this comment.
LGTM, but blocked on T-lang FCP in rust-lang/rust#131258.
matthiaskrgr
added a commit
to matthiaskrgr/rust
that referenced
this pull request
Nov 9, 2024
…nieu Stabilize s390x inline assembly This stabilizes inline assembly for s390x (SystemZ). Corresponding reference PR: rust-lang/reference#1643 --- 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#130630. > - It must be possible to clobber every register that is normally clobbered by a function call. Done in the PR that added support for clobber_abi. > - Generally review that the exposed register classes make sense. The followings can be used as input/output: - `reg` (`r[0-10]`, `r[12-14]`): General-purpose register - `reg_addr` (`r[1-10]`, `r[12-14]`): General-purpose register except `r0` which is evaluated as zero in an address context This class is needed because `r0`, which may be allocated when using the `reg` class, cannot be used as a register in certain contexts. This is identical to the `a` constraint in LLVM and GCC. See rust-lang#119431 for details. - `freg` (`f[0-15]`): Floating-point register The followings are clobber-only: - `vreg` (`v[0-31]`): Vector register Technically `vreg` should be able to accept `#[repr(simd)]` types as input/output if the unstable `vector` target feature added is enabled, but `core::arch` has no s390x vector type and both `#[repr(simd)]` and `core::simd` are unstable. Everything related is unstable, so the fact that this is currently a clobber-only should not be considered a stabilization blocker. (rust-lang#130869 tracks unstable stuff here) - `areg` (`a[2-15]`): Access register All of the above register classes except `reg_addr` are needed for `clobber_abi`. The followings cannot be used as operands for inline asm (see also [getReservedRegs](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp#L258-L282) and [SystemZELFRegisters](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h#L107-L128) in LLVM): - `r11`: frame pointer - `r15`: stack pointer - `a0`, `a1`: Reserved for system use - `c[0-15]` (control register) Reserved by the kernel Although not listed in the above requirements, `preserves_flags` is implemented in rust-lang#111331. --- cc `@uweigand` r? `@Amanieu` `@rustbot` label +O-SystemZ +A-inline-assembly
workingjubilee
added a commit
to workingjubilee/rustc
that referenced
this pull request
Nov 10, 2024
…nieu Stabilize s390x inline assembly This stabilizes inline assembly for s390x (SystemZ). Corresponding reference PR: rust-lang/reference#1643 --- 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#130630. > - It must be possible to clobber every register that is normally clobbered by a function call. Done in the PR that added support for clobber_abi. > - Generally review that the exposed register classes make sense. The followings can be used as input/output: - `reg` (`r[0-10]`, `r[12-14]`): General-purpose register - `reg_addr` (`r[1-10]`, `r[12-14]`): General-purpose register except `r0` which is evaluated as zero in an address context This class is needed because `r0`, which may be allocated when using the `reg` class, cannot be used as a register in certain contexts. This is identical to the `a` constraint in LLVM and GCC. See rust-lang#119431 for details. - `freg` (`f[0-15]`): Floating-point register The followings are clobber-only: - `vreg` (`v[0-31]`): Vector register Technically `vreg` should be able to accept `#[repr(simd)]` types as input/output if the unstable `vector` target feature added is enabled, but `core::arch` has no s390x vector type and both `#[repr(simd)]` and `core::simd` are unstable. Everything related is unstable, so the fact that this is currently a clobber-only should not be considered a stabilization blocker. (rust-lang#130869 tracks unstable stuff here) - `areg` (`a[2-15]`): Access register All of the above register classes except `reg_addr` are needed for `clobber_abi`. The followings cannot be used as operands for inline asm (see also [getReservedRegs](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp#L258-L282) and [SystemZELFRegisters](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h#L107-L128) in LLVM): - `r11`: frame pointer - `r15`: stack pointer - `a0`, `a1`: Reserved for system use - `c[0-15]` (control register) Reserved by the kernel Although not listed in the above requirements, `preserves_flags` is implemented in rust-lang#111331. --- cc ``@uweigand`` r? ``@Amanieu`` ``@rustbot`` label +O-SystemZ +A-inline-assembly
rust-timer
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Nov 10, 2024
Rollup merge of rust-lang#131258 - taiki-e:s390x-stabilize-asm, r=Amanieu Stabilize s390x inline assembly This stabilizes inline assembly for s390x (SystemZ). Corresponding reference PR: rust-lang/reference#1643 --- 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#130630. > - It must be possible to clobber every register that is normally clobbered by a function call. Done in the PR that added support for clobber_abi. > - Generally review that the exposed register classes make sense. The followings can be used as input/output: - `reg` (`r[0-10]`, `r[12-14]`): General-purpose register - `reg_addr` (`r[1-10]`, `r[12-14]`): General-purpose register except `r0` which is evaluated as zero in an address context This class is needed because `r0`, which may be allocated when using the `reg` class, cannot be used as a register in certain contexts. This is identical to the `a` constraint in LLVM and GCC. See rust-lang#119431 for details. - `freg` (`f[0-15]`): Floating-point register The followings are clobber-only: - `vreg` (`v[0-31]`): Vector register Technically `vreg` should be able to accept `#[repr(simd)]` types as input/output if the unstable `vector` target feature added is enabled, but `core::arch` has no s390x vector type and both `#[repr(simd)]` and `core::simd` are unstable. Everything related is unstable, so the fact that this is currently a clobber-only should not be considered a stabilization blocker. (rust-lang#130869 tracks unstable stuff here) - `areg` (`a[2-15]`): Access register All of the above register classes except `reg_addr` are needed for `clobber_abi`. The followings cannot be used as operands for inline asm (see also [getReservedRegs](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp#L258-L282) and [SystemZELFRegisters](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h#L107-L128) in LLVM): - `r11`: frame pointer - `r15`: stack pointer - `a0`, `a1`: Reserved for system use - `c[0-15]` (control register) Reserved by the kernel Although not listed in the above requirements, `preserves_flags` is implemented in rust-lang#111331. --- cc ``@uweigand`` r? ``@Amanieu`` ``@rustbot`` label +O-SystemZ +A-inline-assembly
Member
Author
|
rust-lang/rust#131258 has been merged and rebased to resolve merge conflict with #1644. @rustbot label -S-waiting-on-stabilization |
RalfJung
pushed a commit
to RalfJung/miri
that referenced
this pull request
Nov 10, 2024
Stabilize s390x inline assembly This stabilizes inline assembly for s390x (SystemZ). Corresponding reference PR: rust-lang/reference#1643 --- From the requirements of stabilization mentioned in rust-lang/rust#93335 > Each architecture needs to be reviewed before stabilization: > - It must have clobber_abi. Done in rust-lang/rust#130630. > - It must be possible to clobber every register that is normally clobbered by a function call. Done in the PR that added support for clobber_abi. > - Generally review that the exposed register classes make sense. The followings can be used as input/output: - `reg` (`r[0-10]`, `r[12-14]`): General-purpose register - `reg_addr` (`r[1-10]`, `r[12-14]`): General-purpose register except `r0` which is evaluated as zero in an address context This class is needed because `r0`, which may be allocated when using the `reg` class, cannot be used as a register in certain contexts. This is identical to the `a` constraint in LLVM and GCC. See rust-lang/rust#119431 for details. - `freg` (`f[0-15]`): Floating-point register The followings are clobber-only: - `vreg` (`v[0-31]`): Vector register Technically `vreg` should be able to accept `#[repr(simd)]` types as input/output if the unstable `vector` target feature added is enabled, but `core::arch` has no s390x vector type and both `#[repr(simd)]` and `core::simd` are unstable. Everything related is unstable, so the fact that this is currently a clobber-only should not be considered a stabilization blocker. (rust-lang/rust#130869 tracks unstable stuff here) - `areg` (`a[2-15]`): Access register All of the above register classes except `reg_addr` are needed for `clobber_abi`. The followings cannot be used as operands for inline asm (see also [getReservedRegs](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp#L258-L282) and [SystemZELFRegisters](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h#L107-L128) in LLVM): - `r11`: frame pointer - `r15`: stack pointer - `a0`, `a1`: Reserved for system use - `c[0-15]` (control register) Reserved by the kernel Although not listed in the above requirements, `preserves_flags` is implemented in rust-lang/rust#111331. --- cc ``@uweigand`` r? ``@Amanieu`` ``@rustbot`` label +O-SystemZ +A-inline-assembly
mati865
pushed a commit
to mati865/rust
that referenced
this pull request
Nov 12, 2024
…nieu Stabilize s390x inline assembly This stabilizes inline assembly for s390x (SystemZ). Corresponding reference PR: rust-lang/reference#1643 --- 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#130630. > - It must be possible to clobber every register that is normally clobbered by a function call. Done in the PR that added support for clobber_abi. > - Generally review that the exposed register classes make sense. The followings can be used as input/output: - `reg` (`r[0-10]`, `r[12-14]`): General-purpose register - `reg_addr` (`r[1-10]`, `r[12-14]`): General-purpose register except `r0` which is evaluated as zero in an address context This class is needed because `r0`, which may be allocated when using the `reg` class, cannot be used as a register in certain contexts. This is identical to the `a` constraint in LLVM and GCC. See rust-lang#119431 for details. - `freg` (`f[0-15]`): Floating-point register The followings are clobber-only: - `vreg` (`v[0-31]`): Vector register Technically `vreg` should be able to accept `#[repr(simd)]` types as input/output if the unstable `vector` target feature added is enabled, but `core::arch` has no s390x vector type and both `#[repr(simd)]` and `core::simd` are unstable. Everything related is unstable, so the fact that this is currently a clobber-only should not be considered a stabilization blocker. (rust-lang#130869 tracks unstable stuff here) - `areg` (`a[2-15]`): Access register All of the above register classes except `reg_addr` are needed for `clobber_abi`. The followings cannot be used as operands for inline asm (see also [getReservedRegs](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp#L258-L282) and [SystemZELFRegisters](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h#L107-L128) in LLVM): - `r11`: frame pointer - `r15`: stack pointer - `a0`, `a1`: Reserved for system use - `c[0-15]` (control register) Reserved by the kernel Although not listed in the above requirements, `preserves_flags` is implemented in rust-lang#111331. --- cc ``@uweigand`` r? ``@Amanieu`` ``@rustbot`` label +O-SystemZ +A-inline-assembly
GuillaumeGomez
added a commit
to GuillaumeGomez/rust
that referenced
this pull request
Nov 18, 2024
Update books ## rust-lang/edition-guide 2 commits in 2d482e203eb6d6e353814cf1415c5f94e590b9e0..915f9b319c2823f310430ecdecd86264a7870d7e 2024-11-06 07:23:07 UTC to 2024-11-05 09:03:41 UTC - 2021: Update for raw lifetimes (rust-lang/edition-guide#330) - CI: Switch to merge queue (rust-lang/edition-guide#333) ## rust-lang/nomicon 1 commits in 456b904f791751892b01282fd2757904993c4c26..eac89a3cbe6c4714e5029ae8b5a1c556fd4e8c42 2024-11-16 14:05:28 UTC to 2024-11-16 14:05:28 UTC - Fix typo in what-unsafe-does (rust-lang/nomicon#469) ## rust-lang/reference 10 commits in da0f6dad767670da0e8cd5af8a7090db3272f626..41ccb0e6478305401dad92e8fd3d04a4304edb4c 2024-11-15 21:45:16 UTC to 2024-11-05 21:46:30 UTC - Add identifiers to attributes.md and its subchapters (rust-lang/reference#1560) - Fix 2 typos (rust-lang/reference#1674) - Add examples to clarify the casting rules (rust-lang/reference#686) - Explaining how to link mixed C/Rust binaries. (rust-lang/reference#838) - Add Arm64EC to inline-assembly documentation (rust-lang/reference#1653) - Add three more WebAssembly features to the list of accepted ones (rust-lang/reference#1638) - Add s390x to inline-assembly documentation (rust-lang/reference#1643) - trait object constraint correction (rust-lang/reference#1670) - Update some "default" representation references (rust-lang/reference#1667) - Update lifetimes for pre-expansion validation (rust-lang/reference#1668) ## rust-lang/rustc-dev-guide 12 commits in 6a5accd..b679e71 2024-11-18 08:18:15 UTC to 2024-11-05 07:22:17 UTC - Mention `RUSTC_BOOTSTRAP` for misc testing (rust-lang/rustc-dev-guide#2136) - Document how to acquire `cdb.exe` (rust-lang/rustc-dev-guide#2137) - Document `max-llvm-major-version` directive (rust-lang/rustc-dev-guide#2129) - Document `exact-llvm-major-version` directive (rust-lang/rustc-dev-guide#2135) - Note Rustfmt for separate rust-analyzer directory (rust-lang/rustc-dev-guide#2134) - still accurate (rust-lang/rustc-dev-guide#2133) - typo (rust-lang/rustc-dev-guide#2132) - add valid date-check marker (rust-lang/rustc-dev-guide#2131) - Update parallel-rustc.md (rust-lang/rustc-dev-guide#1926) - Rename `{ignore,only}-debug` -> `{ignore,needs}-{rustc,std}-debug-assertions` (rust-lang/rustc-dev-guide#2101) - update const stability docs (rust-lang/rustc-dev-guide#2111) - Ask folks to use the Oxford comma in diagnostics (rust-lang/rustc-dev-guide#2093)
fmease
added a commit
to fmease/rust
that referenced
this pull request
Nov 19, 2024
Update books ## rust-lang/edition-guide 2 commits in 2d482e203eb6d6e353814cf1415c5f94e590b9e0..915f9b319c2823f310430ecdecd86264a7870d7e 2024-11-06 07:23:07 UTC to 2024-11-05 09:03:41 UTC - 2021: Update for raw lifetimes (rust-lang/edition-guide#330) - CI: Switch to merge queue (rust-lang/edition-guide#333) ## rust-lang/nomicon 1 commits in 456b904f791751892b01282fd2757904993c4c26..eac89a3cbe6c4714e5029ae8b5a1c556fd4e8c42 2024-11-16 14:05:28 UTC to 2024-11-16 14:05:28 UTC - Fix typo in what-unsafe-does (rust-lang/nomicon#469) ## rust-lang/reference 10 commits in da0f6dad767670da0e8cd5af8a7090db3272f626..41ccb0e6478305401dad92e8fd3d04a4304edb4c 2024-11-15 21:45:16 UTC to 2024-11-05 21:46:30 UTC - Add identifiers to attributes.md and its subchapters (rust-lang/reference#1560) - Fix 2 typos (rust-lang/reference#1674) - Add examples to clarify the casting rules (rust-lang/reference#686) - Explaining how to link mixed C/Rust binaries. (rust-lang/reference#838) - Add Arm64EC to inline-assembly documentation (rust-lang/reference#1653) - Add three more WebAssembly features to the list of accepted ones (rust-lang/reference#1638) - Add s390x to inline-assembly documentation (rust-lang/reference#1643) - trait object constraint correction (rust-lang/reference#1670) - Update some "default" representation references (rust-lang/reference#1667) - Update lifetimes for pre-expansion validation (rust-lang/reference#1668) ## rust-lang/rustc-dev-guide 12 commits in 6a5accd..b679e71 2024-11-18 08:18:15 UTC to 2024-11-05 07:22:17 UTC - Mention `RUSTC_BOOTSTRAP` for misc testing (rust-lang/rustc-dev-guide#2136) - Document how to acquire `cdb.exe` (rust-lang/rustc-dev-guide#2137) - Document `max-llvm-major-version` directive (rust-lang/rustc-dev-guide#2129) - Document `exact-llvm-major-version` directive (rust-lang/rustc-dev-guide#2135) - Note Rustfmt for separate rust-analyzer directory (rust-lang/rustc-dev-guide#2134) - still accurate (rust-lang/rustc-dev-guide#2133) - typo (rust-lang/rustc-dev-guide#2132) - add valid date-check marker (rust-lang/rustc-dev-guide#2131) - Update parallel-rustc.md (rust-lang/rustc-dev-guide#1926) - Rename `{ignore,only}-debug` -> `{ignore,needs}-{rustc,std}-debug-assertions` (rust-lang/rustc-dev-guide#2101) - update const stability docs (rust-lang/rustc-dev-guide#2111) - Ask folks to use the Oxford comma in diagnostics (rust-lang/rustc-dev-guide#2093)
rust-timer
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Nov 19, 2024
Rollup merge of rust-lang#133181 - rustbot:docs-update, r=ehuss Update books ## rust-lang/edition-guide 2 commits in 2d482e203eb6d6e353814cf1415c5f94e590b9e0..915f9b319c2823f310430ecdecd86264a7870d7e 2024-11-06 07:23:07 UTC to 2024-11-05 09:03:41 UTC - 2021: Update for raw lifetimes (rust-lang/edition-guide#330) - CI: Switch to merge queue (rust-lang/edition-guide#333) ## rust-lang/nomicon 1 commits in 456b904f791751892b01282fd2757904993c4c26..eac89a3cbe6c4714e5029ae8b5a1c556fd4e8c42 2024-11-16 14:05:28 UTC to 2024-11-16 14:05:28 UTC - Fix typo in what-unsafe-does (rust-lang/nomicon#469) ## rust-lang/reference 10 commits in da0f6dad767670da0e8cd5af8a7090db3272f626..41ccb0e6478305401dad92e8fd3d04a4304edb4c 2024-11-15 21:45:16 UTC to 2024-11-05 21:46:30 UTC - Add identifiers to attributes.md and its subchapters (rust-lang/reference#1560) - Fix 2 typos (rust-lang/reference#1674) - Add examples to clarify the casting rules (rust-lang/reference#686) - Explaining how to link mixed C/Rust binaries. (rust-lang/reference#838) - Add Arm64EC to inline-assembly documentation (rust-lang/reference#1653) - Add three more WebAssembly features to the list of accepted ones (rust-lang/reference#1638) - Add s390x to inline-assembly documentation (rust-lang/reference#1643) - trait object constraint correction (rust-lang/reference#1670) - Update some "default" representation references (rust-lang/reference#1667) - Update lifetimes for pre-expansion validation (rust-lang/reference#1668) ## rust-lang/rustc-dev-guide 12 commits in 6a5accd..b679e71 2024-11-18 08:18:15 UTC to 2024-11-05 07:22:17 UTC - Mention `RUSTC_BOOTSTRAP` for misc testing (rust-lang/rustc-dev-guide#2136) - Document how to acquire `cdb.exe` (rust-lang/rustc-dev-guide#2137) - Document `max-llvm-major-version` directive (rust-lang/rustc-dev-guide#2129) - Document `exact-llvm-major-version` directive (rust-lang/rustc-dev-guide#2135) - Note Rustfmt for separate rust-analyzer directory (rust-lang/rustc-dev-guide#2134) - still accurate (rust-lang/rustc-dev-guide#2133) - typo (rust-lang/rustc-dev-guide#2132) - add valid date-check marker (rust-lang/rustc-dev-guide#2131) - Update parallel-rustc.md (rust-lang/rustc-dev-guide#1926) - Rename `{ignore,only}-debug` -> `{ignore,needs}-{rustc,std}-debug-assertions` (rust-lang/rustc-dev-guide#2101) - update const stability docs (rust-lang/rustc-dev-guide#2111) - Ask folks to use the Oxford comma in diagnostics (rust-lang/rustc-dev-guide#2093)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is a sub-part of rust-lang/rust#131258.
r? @Amanieu