use PassMode::Direct for vector types on s390x by folkertdev · Pull Request #135785 · rust-lang/rust (original) (raw)

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation8 Commits1 Checks6 Files changed

Conversation

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

[ Show hidden characters]({{ revealButtonHref }})

@folkertdev

closes #135744
tracking issue: #130869

Previously, all vector types were type erased to Ni8, now we pass non-wrapped vector types directly. That skips emitting a bunch of casting logic in rustc, that LLVM then has to clean up. The initial LLVM IR is also a bit more readable.

This calling convention is tested extensively in tests/assembly/s390x-vector-abi.rs, showing that this change has no impact on the ABI in practice.

r? @taiki-e

@rustbot

Failed to set assignee to taiki-e: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@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

Jan 20, 2025

@taiki-e

Thanks! The change looks good to me. Could you add a test that checks generated LLVM IR is expected (i.e., test case for #135744) to tests/codegen/?

@tgross35

@folkertdev

@folkertdev

I added a codegen test, using compile-flags: --target s390x-unknown-linux-gnu -O so hopefully the LLVM IR is stable

@folkertdev

@jieyouxu

Maybe r? @bjorn3 since you discussed this on the linked issue

@bjorn3

@bors

📌 Commit 893d81f has been approved by bjorn3

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

and removed S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

labels

Jan 23, 2025

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request

Jan 25, 2025

@matthiaskrgr

…irect, r=bjorn3

use PassMode::Direct for vector types on s390x

closes rust-lang#135744 tracking issue: rust-lang#130869

Previously, all vector types were type erased to Ni8, now we pass non-wrapped vector types directly. That skips emitting a bunch of casting logic in rustc, that LLVM then has to clean up. The initial LLVM IR is also a bit more readable.

This calling convention is tested extensively in tests/assembly/s390x-vector-abi.rs, showing that this change has no impact on the ABI in practice.

r? @taiki-e

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 25, 2025

@bors

Rollup of 7 pull requests

Successful merges:

Failed merges:

r? @ghost @rustbot modify labels: rollup

try-job: aarch64-apple try-job: i686-mingw try-job: x86_64-gnu-llvm-19-3

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request

Jan 25, 2025

@matthiaskrgr

…irect, r=bjorn3

use PassMode::Direct for vector types on s390x

closes rust-lang#135744 tracking issue: rust-lang#130869

Previously, all vector types were type erased to Ni8, now we pass non-wrapped vector types directly. That skips emitting a bunch of casting logic in rustc, that LLVM then has to clean up. The initial LLVM IR is also a bit more readable.

This calling convention is tested extensively in tests/assembly/s390x-vector-abi.rs, showing that this change has no impact on the ABI in practice.

r? @taiki-e

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 25, 2025

@bors

Rollup of 6 pull requests

Successful merges:

r? @ghost @rustbot modify labels: rollup

try-job: aarch64-apple try-job: i686-mingw try-job: x86_64-gnu-llvm-19-3

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request

Jan 25, 2025

@matthiaskrgr

…irect, r=bjorn3

use PassMode::Direct for vector types on s390x

closes rust-lang#135744 tracking issue: rust-lang#130869

Previously, all vector types were type erased to Ni8, now we pass non-wrapped vector types directly. That skips emitting a bunch of casting logic in rustc, that LLVM then has to clean up. The initial LLVM IR is also a bit more readable.

This calling convention is tested extensively in tests/assembly/s390x-vector-abi.rs, showing that this change has no impact on the ABI in practice.

r? @taiki-e

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 25, 2025

@bors

Rollup of 4 pull requests

Successful merges:

r? @ghost @rustbot modify labels: rollup

try-job: aarch64-apple try-job: i686-mingw try-job: x86_64-gnu-llvm-19-3

bors added a commit to rust-lang-ci/rust that referenced this pull request

Jan 26, 2025

@bors

rust-timer added a commit to rust-lang-ci/rust that referenced this pull request

Jan 26, 2025

@rust-timer

Rollup merge of rust-lang#135785 - folkertdev:s390x-vector-passmode-direct, r=bjorn3

use PassMode::Direct for vector types on s390x

closes rust-lang#135744 tracking issue: rust-lang#130869

Previously, all vector types were type erased to Ni8, now we pass non-wrapped vector types directly. That skips emitting a bunch of casting logic in rustc, that LLVM then has to clean up. The initial LLVM IR is also a bit more readable.

This calling convention is tested extensively in tests/assembly/s390x-vector-abi.rs, showing that this change has no impact on the ABI in practice.

r? @taiki-e

Labels

O-SystemZ

Target: SystemZ processors (s390x)

S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

T-compiler

Relevant to the compiler team, which will review and decide on the PR/issue.