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 }})
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
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 added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the compiler team, which will review and decide on the PR/issue.
labels
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/?
I added a codegen test, using compile-flags: --target s390x-unknown-linux-gnu -O so hopefully the LLVM IR is stable
Maybe r? @bjorn3 since you discussed this on the linked issue
📌 Commit 893d81f has been approved by bjorn3
It is now in the queue for this repository.
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
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
…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
Rollup of 7 pull requests
Successful merges:
- rust-lang#130808 (Fix linking for symbols starting with ? on i686-pc-windows-msvc)
- rust-lang#133138 (Target modifiers (special marked options) are recorded in metainfo)
- rust-lang#133154 (Reword resolve errors caused by likely missing crate in dep tree)
- rust-lang#135707 (Shorten linker output even more when
--verboseis not present) - rust-lang#135764 (Fix tests on LLVM 20)
- rust-lang#135785 (use
PassMode::Directfor vector types ons390x) - rust-lang#135818 (tests: Port
translationto rmake.rs)
Failed merges:
- rust-lang#133951 (Make the wasm_c_abi future compat warning a hard error)
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
…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
Rollup of 6 pull requests
Successful merges:
- rust-lang#130808 (Fix linking for symbols starting with ? on i686-pc-windows-msvc)
- rust-lang#133154 (Reword resolve errors caused by likely missing crate in dep tree)
- rust-lang#135707 (Shorten linker output even more when
--verboseis not present) - rust-lang#135764 (Fix tests on LLVM 20)
- rust-lang#135785 (use
PassMode::Directfor vector types ons390x) - rust-lang#135818 (tests: Port
translationto rmake.rs)
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
…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
Rollup of 4 pull requests
Successful merges:
- rust-lang#135707 (Shorten linker output even more when
--verboseis not present) - rust-lang#135764 (Fix tests on LLVM 20)
- rust-lang#135785 (use
PassMode::Directfor vector types ons390x) - rust-lang#135818 (tests: Port
translationto rmake.rs)
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
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
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
Target: SystemZ processors (s390x)
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Relevant to the compiler team, which will review and decide on the PR/issue.