diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-09-19 20:37:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-19 20:37:09 +0200 |
| commit | f715815bfbae2541b0178e567716ed812690f4bd (patch) | |
| tree | 2ede3a1d9428ea22383418f198f68dd24f8e7959 | |
| parent | 9f0d32c638f654dfe312162002c9e72ba0be3486 (diff) | |
| parent | 078b067c0d9dbe1dd42569554b7d9bb967d59f46 (diff) | |
| download | rust-f715815bfbae2541b0178e567716ed812690f4bd.tar.gz rust-f715815bfbae2541b0178e567716ed812690f4bd.zip | |
Rollup merge of #130558 - taiki-e:s390x-atomic-128, r=cuviper
Support 128-bit atomics on s390x Since LLVM 18 (https://github.com/llvm/llvm-project/commit/c568927f3e2e7d9804ea74ecbf11c16c014ddcbc), 128-bit atomics are fully supported on s390x. And the current minimum external LLVM version is now 18 (https://github.com/rust-lang/rust/pull/130487). s390x 128-bit atomic instructions (lpq,stpq,cdsg) has been present since [the First Edition of the Principles of Operation](https://publibfp.dhe.ibm.com/epubs/pdf/dz9zr000.pdf). (LLVM's minimal supported architecture level [is z10 (the Eighth Edition of the PoP)](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/SystemZ/SystemZProcessors.td#L16-L17).) cc https://github.com/rust-lang/rust/issues/99069 r? `@cuviper`
| -rw-r--r-- | compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs index e0a6c230fd6..71086daaf2c 100644 --- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs @@ -10,7 +10,7 @@ pub(crate) fn target() -> Target { // ABI. Pass the -vector feature string to LLVM to respect this assumption. On LLVM < 16, we // also strip v128 from the data_layout below to match the older LLVM's expectation. base.features = "-vector".into(); - base.max_atomic_width = Some(64); + base.max_atomic_width = Some(128); base.min_global_align = Some(16); base.stack_probes = StackProbeType::Inline; base.supported_sanitizers = diff --git a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs index 6aabe9ca519..016ff5abe4c 100644 --- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs +++ b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs @@ -10,7 +10,7 @@ pub(crate) fn target() -> Target { // ABI. Pass the -vector feature string to LLVM to respect this assumption. On LLVM < 16, we // also strip v128 from the data_layout below to match the older LLVM's expectation. base.features = "-vector".into(); - base.max_atomic_width = Some(64); + base.max_atomic_width = Some(128); base.min_global_align = Some(16); base.static_position_independent_executables = true; base.stack_probes = StackProbeType::Inline; |
