Skip to content

stabilize s390x vector registers#154184

Open
folkertdev wants to merge 1 commit intorust-lang:mainfrom
folkertdev:stabilize-s390x-vector-registers
Open

stabilize s390x vector registers#154184
folkertdev wants to merge 1 commit intorust-lang:mainfrom
folkertdev:stabilize-s390x-vector-registers

Conversation

@folkertdev
Copy link
Copy Markdown
Contributor

@folkertdev folkertdev commented Mar 21, 2026

tracking issue: #133416
reference PR: rust-lang/reference#2215

Stabilizes s390x vector registers, e.g.

unsafe fn vreg_128(x: i128) -> i128 {
    let y;
    asm!("vlr {}, {}", out(vreg) y, in(vreg) x);
    y
}

The types that are accepted for vreg registers are

  • all float types f16, f32, f64, f128
  • integer types i32, i64 and i128 and their unsigned counterparts
  • integer vector types i8x16, i16x8, i32x4, i64x2 and their unsigned counterparts
  • float vector types f16x8, f32x4 and f64x2

Support for all of these is tested in https://github.com/rust-lang/rust/blob/main/tests/assembly-llvm/asm/s390x-types.rs, and the types correspond with the LLVM definition in https://github.com/llvm/llvm-project/blob/df9eb79970c012990e829d174d181d575d414efe/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td#L312-L339

The f16, f16x8 and f128 types are unstable, and so can't be used on stable in practice. They do show up in some error messages though.

vreg was previously only accepted as a clobber.


Currently the vector types in core::arch::s390x are still unstable. Separately stabilizing vreg is still useful because scalar types can also be put into vregs.

Implementation history

cc @uweigand @taiki-e
r? @Amanieu

@folkertdev folkertdev added the I-lang-nominated Nominated for discussion during a lang team meeting. label Mar 21, 2026
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 21, 2026
@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the stabilize-s390x-vector-registers branch from 2986c81 to ba604f5 Compare March 21, 2026 18:30
@rust-log-analyzer

This comment has been minimized.

@folkertdev folkertdev force-pushed the stabilize-s390x-vector-registers branch from ba604f5 to e182fef Compare March 21, 2026 19:58
@traviscross traviscross added P-lang-drag-1 Lang team prioritization drag level 1. https://rust-lang.zulipchat.com/#narrow/channel/410516-t-lang T-lang Relevant to the language team labels Mar 25, 2026
@traviscross
Copy link
Copy Markdown
Contributor

Thanks @folkertdev; I'll be looking to see that @Amanieu confirms this is OK after the back and force.

@rfcbot fcp merge lang

@rust-rfcbot
Copy link
Copy Markdown
Collaborator

rust-rfcbot commented Mar 25, 2026

Team member @traviscross has proposed to merge this. The next step is review by the rest of the tagged team members:

No concerns currently listed.

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
See this document for info about what commands tagged team members can give me.

@rust-rfcbot rust-rfcbot added proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. labels Mar 25, 2026
@traviscross traviscross added I-lang-radar Items that are on lang's radar and will need eventual work or consideration. and removed I-lang-nominated Nominated for discussion during a lang team meeting. P-lang-drag-1 Lang team prioritization drag level 1. https://rust-lang.zulipchat.com/#narrow/channel/410516-t-lang labels Mar 25, 2026
@scottmcm
Copy link
Copy Markdown
Member

Happy to trust @Amanieu for this.

@rfcbot reviewed

@rust-rfcbot rust-rfcbot added final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. and removed proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. labels Mar 25, 2026
@rust-rfcbot
Copy link
Copy Markdown
Collaborator

🔔 This is now entering its final comment period, as per the review above. 🔔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. I-lang-radar Items that are on lang's radar and will need eventual work or consideration. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants