<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/tests/assembly, branch 1.84.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.84.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.84.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2024-11-21T10:58:38+00:00</updated>
<entry>
<title>Rollup merge of #131586 - taiki-e:s390x-vector-abi, r=compiler-errors,uweigand</title>
<updated>2024-11-21T10:58:38+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2024-11-21T10:58:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=379b22123c1643eb4b48b852240d1dbf96ec6a46'/>
<id>urn:sha1:379b22123c1643eb4b48b852240d1dbf96ec6a46</id>
<content type='text'>
Support s390x z13 vector ABI

cc #130869

This resolves the following fixmes:
- https://github.com/rust-lang/rust/blob/58420a065b68ecb3eec03b942740c761cdadd5c4/compiler/rustc_target/src/abi/call/s390x.rs#L1-L2
- https://github.com/rust-lang/rust/blob/58420a065b68ecb3eec03b942740c761cdadd5c4/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs#L9-L11

Refs: Section 1.2.3 "Parameter Passing" and section 1.2.5 "Return Values" in ELF Application Binary Interface s390x Supplement, Version 1.6.1 (lzsabi_s390x.pdf in https://github.com/IBM/s390x-abi/releases/tag/v1.6.1)

This PR extends ~~https://github.com/rust-lang/rust/pull/127731~~ https://github.com/rust-lang/rust/pull/132173 (merged) 's ABI check to handle cases where `vector` target feature is disabled.
If we do not do ABI check, we run into the ABI problems as described in https://github.com/rust-lang/rust/issues/116558 and https://github.com/rust-lang/rust/issues/130869#issuecomment-2408268044, and the problem of the compiler generating strange code (https://github.com/rust-lang/rust/pull/131586#discussion_r1799003554).

cc `@uweigand`

`@rustbot` label +O-SystemZ +A-ABI
</content>
</entry>
<entry>
<title>Support s390x z13 vector ABI</title>
<updated>2024-11-14T13:14:11+00:00</updated>
<author>
<name>Taiki Endo</name>
<email>te316e89@gmail.com</email>
</author>
<published>2024-11-14T13:14:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7652e349b091531ceb91eae8de23fb86ac7c0b09'/>
<id>urn:sha1:7652e349b091531ceb91eae8de23fb86ac7c0b09</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tests: use `max-llvm-major-version` instead of `ignore-llvm-version` range like `N - 99`</title>
<updated>2024-11-14T09:44:54+00:00</updated>
<author>
<name>许杰友 Jieyou Xu (Joe)</name>
<email>39484203+jieyouxu@users.noreply.github.com</email>
</author>
<published>2024-10-30T05:14:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=91fa16b211957f6d56bd2ec697c36b2301f2690a'/>
<id>urn:sha1:91fa16b211957f6d56bd2ec697c36b2301f2690a</id>
<content type='text'>
For tests that use `ignore-llvm-version: N - M`, replace that with
`max-llvm-major-version: N-1`.
</content>
</entry>
<entry>
<title>Stabilize Arm64EC inline assembly</title>
<updated>2024-11-10T08:43:46+00:00</updated>
<author>
<name>Taiki Endo</name>
<email>te316e89@gmail.com</email>
</author>
<published>2024-10-15T14:41:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=965a2801a09667ba87ae8d419aa04086dc3a5113'/>
<id>urn:sha1:965a2801a09667ba87ae8d419aa04086dc3a5113</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #131258 - taiki-e:s390x-stabilize-asm, r=Amanieu</title>
<updated>2024-11-10T04:28:43+00:00</updated>
<author>
<name>Jubilee</name>
<email>workingjubilee@gmail.com</email>
</author>
<published>2024-11-10T04:28:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2f98dcf9babb810df279b0d22f385ac943b18e5e'/>
<id>urn:sha1:2f98dcf9babb810df279b0d22f385ac943b18e5e</id>
<content type='text'>
Stabilize s390x inline assembly

This stabilizes inline assembly for s390x (SystemZ).

Corresponding reference PR: https://github.com/rust-lang/reference/pull/1643

---

From the requirements of stabilization mentioned in https://github.com/rust-lang/rust/issues/93335

&gt; Each architecture needs to be reviewed before stabilization:

&gt; - It must have clobber_abi.

Done in https://github.com/rust-lang/rust/pull/130630.

&gt; - 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.

&gt; - 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 https://github.com/rust-lang/rust/pull/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. (https://github.com/rust-lang/rust/issues/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 https://github.com/rust-lang/rust/pull/111331.

---

cc ``@uweigand``

r? ``@Amanieu``

``@rustbot`` label +O-SystemZ +A-inline-assembly
</content>
</entry>
<entry>
<title>remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead</title>
<updated>2024-11-08T08:16:00+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-11-07T07:59:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e3010e84dbf2e06424c91c5a3d4206c1911813bd'/>
<id>urn:sha1:e3010e84dbf2e06424c91c5a3d4206c1911813bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Stabilize s390x inline assembly</title>
<updated>2024-11-08T01:46:00+00:00</updated>
<author>
<name>Taiki Endo</name>
<email>te316e89@gmail.com</email>
</author>
<published>2024-10-01T20:26:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ab62a352ba5eeae79ff3dab0788a2134eac3f674'/>
<id>urn:sha1:ab62a352ba5eeae79ff3dab0788a2134eac3f674</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Basic inline assembly support for SPARC and SPARC64</title>
<updated>2024-11-07T12:19:03+00:00</updated>
<author>
<name>Taiki Endo</name>
<email>te316e89@gmail.com</email>
</author>
<published>2024-11-07T12:19:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=241f82ad915b167992ec9d3bb729f095a7829424'/>
<id>urn:sha1:241f82ad915b167992ec9d3bb729f095a7829424</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #132664 - matthiaskrgr:rollup-i27nr7i, r=matthiaskrgr</title>
<updated>2024-11-06T01:21:42+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2024-11-06T01:21:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a69df72bdc58742281d17cc3bed2947de70c1482'/>
<id>urn:sha1:a69df72bdc58742281d17cc3bed2947de70c1482</id>
<content type='text'>
Rollup of 5 pull requests

Successful merges:

 - #131261 (Stabilize `UnsafeCell::from_mut`)
 - #131405 (bootstrap/codegen_ssa: ship llvm-strip and use it for -Cstrip)
 - #132077 (Add a new `wide-arithmetic` feature for WebAssembly)
 - #132562 (Remove the `wasm32-wasi` target from rustc)
 - #132660 (Remove unused errs.rs file)

Failed merges:

 - #131721 (Add new unstable feature `const_eq_ignore_ascii_case`)

r? `@ghost`
`@rustbot` modify labels: rollup
</content>
</entry>
<entry>
<title>Rollup merge of #132259 - mrkajetanp:branch-protection-pauth-lr, r=davidtwco</title>
<updated>2024-11-05T19:10:49+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2024-11-05T19:10:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c8247c0a198048a35d0fee1fe35e3809ba88022d'/>
<id>urn:sha1:c8247c0a198048a35d0fee1fe35e3809ba88022d</id>
<content type='text'>
rustc_codegen_llvm: Add a new 'pc' option to branch-protection

Add a new 'pc' option to -Z branch-protection for aarch64 that enables the use of PC as a diversifier in PAC branch protection code.

When the pauth-lr target feature is enabled in combination with -Z branch-protection=pac-ret,pc, the new 9.5-a instructions (pacibsppc, retaasppc, etc) will be generated.
</content>
</entry>
</feed>
