Skip to content
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 and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add is_s390x_feature_detected #1699

Merged
merged 1 commit into from
Jan 16, 2025

Conversation

folkertdev
Copy link
Contributor

@folkertdev folkertdev commented Jan 12, 2025

tracking issue: rust-lang/rust#135413
relevant issue: rust-lang/rust#130869

this PR adds the is_s390x_feature_detected macro.

Is an ACP needed here?

Below is a bunch of context.

Feature detection

This PR uses only the getauxval function. That is sufficient for the current feature flags.

Based on the official documents, the stfl instruction can/should be used to test for "Facility Indications". Unfortunately, it appears that this instruction can only be executed by the kernel, and in any case stores its result at address 200, that users cannot read. Bummer.

There is also the stfle instruction, that provides more facility indications. We can actually use that from user space, e.g.

struct ExtendedFacilityList([u64; 4]);

impl ExtendedFacilityList {
    unsafe fn new() -> Self {
        let mut result: [u64; 4] = [0; 4];
        unsafe {
            core::arch::asm!(
                "lgr %r0, {0}",
                // equivalently ".insn s, 0xb2b00000, 0({1})",
                "stfle 0({1})",
                in(reg) result.len() as u64 - 1,
                in(reg_addr) result.as_mut_ptr() ,
                options(nostack, preserves_flags )
            );
        }
        Self(result)
    }

    const fn get(&self, n: usize) -> bool {
        // of course they number bits from the left...
        self.0[n / 64] & (1 << (63 - (n % 64))) != 0
    }
}

But, for now, this is not needed and getauxval is sufficient.

Feature names

On nightly, s390x currently has two target features, introduced in rust-lang/rust#127506:

  • vector for SIMD capabilities
  • backchain related to stack unwinding

The "vector" name appears to be an LLVM concept: in qemu, clang and the linux kernel the "vector" extension is called vx. There is nothing called "backchain" in the Facility Indications, so it looks like that is not a feature that can be queried for at runtime.

Anyway, for now, only "vector" is supported by the is_s390x_feature_detected macro, and it maps internally to the vx facility indication. For some of the vector instructions, the extensions like vector-enhancements-1 will likely also be needed, but this PR does not include them.

This LLVM file lists many more features that are not currently supported.

Testing

I could not find a qemu CPU that works with rust programs and also does not support vx. I did test the logic using the vxrs_ext2 field, and a custom CPU:

runner = "qemu-s390x -cpu qemu,vx=on,vxeh=on,vxeh2=off -L /usr/s390x-linux-gnu"

I verified that toggling the vxeh2 flag is observed by the implementation.

Obviously that is not an automated test, so for now the details of the implementation go untested.

cc @taiki-e, hope I'm not stepping on your toes here, but this nerdsniped me.

@rustbot
Copy link
Collaborator

rustbot commented Jan 12, 2025

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @Amanieu (or someone else) some time within the next two weeks.

@folkertdev folkertdev force-pushed the s390x-feature-detected branch from 70eb1da to 96136d6 Compare January 12, 2025 20:17
@Amanieu Amanieu added this pull request to the merge queue Jan 16, 2025
Merged via the queue into rust-lang:master with commit 225e1ec Jan 16, 2025
60 checks passed
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Feb 12, 2025
Update stdarch

Updates stdarch

41 commits in 684de0d6fef708cae08214fef9643dd9ec7296e1..818c71dae1c612bd7b4ffba69e02c8d7270a18f6
2024-12-21 12:02:28 +0000 to 2025-02-09 12:57:14 -0800

- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 12, 2025
Update stdarch

Updates stdarch

41 commits in 684de0d6fef708cae08214fef9643dd9ec7296e1..818c71dae1c612bd7b4ffba69e02c8d7270a18f6
2024-12-21 12:02:28 +0000 to 2025-02-09 12:57:14 -0800

- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: aarch64-gnu-nopt
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 12, 2025
Update stdarch

Updates stdarch

41 commits in 684de0d6fef708cae08214fef9643dd9ec7296e1..818c71dae1c612bd7b4ffba69e02c8d7270a18f6
2024-12-21 12:02:28 +0000 to 2025-02-09 12:57:14 -0800

- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Feb 20, 2025
…r=Amanieu

add more `s390x` target features

Closes rust-lang#88937

tracking issue: rust-lang#130869

The target feature names are, right now, just the llvm target feature names. These mostly line up well with the names of [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) names. The linux kernel (and `/proc/cpuinfo`) uses shorter, more cryptic names. (e.g. "vector" is `vx`). We can deviate from the llvm names, but the CPU vendor (IBM) does not appear to use e.g. `vx` for what they call `vector`.

There are a number of implied target features between the vector facilities (based on the [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) table):

- 129 The vector facility for z/Architecture is installed in the z/Architecture architectural mode.
- 134 The vector packed decimal facility is installed in the z/Architecture architectural mode. When bit 134 is one, bit 129 is also one.
- 135 The vector enhancements facility 1 is installed in the z/Architecture architectural mode. When bit 135 is one, bit 129 is also one.
- 148 The vector-enhancements facility 2 is installed in the z/Architecture architectural mode. When bit 148 is one, bits 129 and 135 are also one.
- 152 The vector-packed-decimal-enhancement facility 1 is installed in the z/Architecture architectural mode. When bit 152 is one, bits 129 and 134 are also one.
- 165 The neural-network-processing-assist facility is installed in the z/Architecture architectural mode. When bit 165 is one, bit 129 is also one.
- 192 The vector-packed-decimal-enhancement facility 2 is installed in the z/Architecture architectural mode. When bit 192 is one, bits 129, 134, and 152 are also one.

The remaining facilities do not have any implied target features (that we provide):

- 45 The distinct-operands, fast-BCR-serialization, high-word, and population-count facilities, the interlocked-access facility 1, and the load/store-oncondition facility 1 are installed in the z/Architecture architectural mode.
- 73 The transactional-execution facility is installed in the z/Architecture architectural mode. Bit 49 is one when bit 73 is one.
- 133 The guarded-storage facility is installed in the z/Architecture architectural mode.
- 150 The enhanced-sort facility is installed in the z/Architecture architectural mode.
- 151 The DEFLATE-conversion facility is installed in the z/Architecture architectural mode.

The added target features are those that have ISA implications, can be queried at runtime, and have LLVM support. LLVM [defines more target features](https://github.com/llvm/llvm-project/blob/d49a2d2bc9c65c787bfa04ac8ece614da48a8cd5/llvm/lib/Target/SystemZ/SystemZFeatures.td), but I'm not sure those are useful. They can always be added later, and can already be set globally using `-Ctarget-feature`.

I'll also update the `is_s390x_feature_supported` macro (added in rust-lang/stdarch#1699, not yet on nightly, that needs an stdarch sync) to include these target features.

`@Amanieu` you had some reservations about the `"vector"` target feature name. It does appear to be the most "official" name we have. On the one hand the name is very generic, and some of the other names are rather long. For the `neural-network-processing-assist` even LLVM thought that was a bit much and shortened it to `nnp-assist`. Also for `vector-packed-decimal-enhancement facility 1` the llvm naming is inconsistent. On the other hand, the cpuinfo names are very cryptic, and aren't found in the IBM documentation.

r? `@Amanieu`

cc `@uweigand` `@taiki-e`
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Feb 20, 2025
…r=Amanieu

add more `s390x` target features

Closes rust-lang#88937

tracking issue: rust-lang#130869

The target feature names are, right now, just the llvm target feature names. These mostly line up well with the names of [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) names. The linux kernel (and `/proc/cpuinfo`) uses shorter, more cryptic names. (e.g. "vector" is `vx`). We can deviate from the llvm names, but the CPU vendor (IBM) does not appear to use e.g. `vx` for what they call `vector`.

There are a number of implied target features between the vector facilities (based on the [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) table):

- 129 The vector facility for z/Architecture is installed in the z/Architecture architectural mode.
- 134 The vector packed decimal facility is installed in the z/Architecture architectural mode. When bit 134 is one, bit 129 is also one.
- 135 The vector enhancements facility 1 is installed in the z/Architecture architectural mode. When bit 135 is one, bit 129 is also one.
- 148 The vector-enhancements facility 2 is installed in the z/Architecture architectural mode. When bit 148 is one, bits 129 and 135 are also one.
- 152 The vector-packed-decimal-enhancement facility 1 is installed in the z/Architecture architectural mode. When bit 152 is one, bits 129 and 134 are also one.
- 165 The neural-network-processing-assist facility is installed in the z/Architecture architectural mode. When bit 165 is one, bit 129 is also one.
- 192 The vector-packed-decimal-enhancement facility 2 is installed in the z/Architecture architectural mode. When bit 192 is one, bits 129, 134, and 152 are also one.

The remaining facilities do not have any implied target features (that we provide):

- 45 The distinct-operands, fast-BCR-serialization, high-word, and population-count facilities, the interlocked-access facility 1, and the load/store-oncondition facility 1 are installed in the z/Architecture architectural mode.
- 73 The transactional-execution facility is installed in the z/Architecture architectural mode. Bit 49 is one when bit 73 is one.
- 133 The guarded-storage facility is installed in the z/Architecture architectural mode.
- 150 The enhanced-sort facility is installed in the z/Architecture architectural mode.
- 151 The DEFLATE-conversion facility is installed in the z/Architecture architectural mode.

The added target features are those that have ISA implications, can be queried at runtime, and have LLVM support. LLVM [defines more target features](https://github.com/llvm/llvm-project/blob/d49a2d2bc9c65c787bfa04ac8ece614da48a8cd5/llvm/lib/Target/SystemZ/SystemZFeatures.td), but I'm not sure those are useful. They can always be added later, and can already be set globally using `-Ctarget-feature`.

I'll also update the `is_s390x_feature_supported` macro (added in rust-lang/stdarch#1699, not yet on nightly, that needs an stdarch sync) to include these target features.

`@Amanieu` you had some reservations about the `"vector"` target feature name. It does appear to be the most "official" name we have. On the one hand the name is very generic, and some of the other names are rather long. For the `neural-network-processing-assist` even LLVM thought that was a bit much and shortened it to `nnp-assist`. Also for `vector-packed-decimal-enhancement facility 1` the llvm naming is inconsistent. On the other hand, the cpuinfo names are very cryptic, and aren't found in the IBM documentation.

r? `@Amanieu`

cc `@uweigand` `@taiki-e`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 21, 2025
…r=Amanieu

add more `s390x` target features

Closes rust-lang#88937

tracking issue: rust-lang#130869

The target feature names are, right now, just the llvm target feature names. These mostly line up well with the names of [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) names. The linux kernel (and `/proc/cpuinfo`) uses shorter, more cryptic names. (e.g. "vector" is `vx`). We can deviate from the llvm names, but the CPU vendor (IBM) does not appear to use e.g. `vx` for what they call `vector`.

There are a number of implied target features between the vector facilities (based on the [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) table):

- 129 The vector facility for z/Architecture is installed in the z/Architecture architectural mode.
- 134 The vector packed decimal facility is installed in the z/Architecture architectural mode. When bit 134 is one, bit 129 is also one.
- 135 The vector enhancements facility 1 is installed in the z/Architecture architectural mode. When bit 135 is one, bit 129 is also one.
- 148 The vector-enhancements facility 2 is installed in the z/Architecture architectural mode. When bit 148 is one, bits 129 and 135 are also one.
- 152 The vector-packed-decimal-enhancement facility 1 is installed in the z/Architecture architectural mode. When bit 152 is one, bits 129 and 134 are also one.
- 165 The neural-network-processing-assist facility is installed in the z/Architecture architectural mode. When bit 165 is one, bit 129 is also one.
- 192 The vector-packed-decimal-enhancement facility 2 is installed in the z/Architecture architectural mode. When bit 192 is one, bits 129, 134, and 152 are also one.

The remaining facilities do not have any implied target features (that we provide):

- 45 The distinct-operands, fast-BCR-serialization, high-word, and population-count facilities, the interlocked-access facility 1, and the load/store-oncondition facility 1 are installed in the z/Architecture architectural mode.
- 73 The transactional-execution facility is installed in the z/Architecture architectural mode. Bit 49 is one when bit 73 is one.
- 133 The guarded-storage facility is installed in the z/Architecture architectural mode.
- 150 The enhanced-sort facility is installed in the z/Architecture architectural mode.
- 151 The DEFLATE-conversion facility is installed in the z/Architecture architectural mode.

The added target features are those that have ISA implications, can be queried at runtime, and have LLVM support. LLVM [defines more target features](https://github.com/llvm/llvm-project/blob/d49a2d2bc9c65c787bfa04ac8ece614da48a8cd5/llvm/lib/Target/SystemZ/SystemZFeatures.td), but I'm not sure those are useful. They can always be added later, and can already be set globally using `-Ctarget-feature`.

I'll also update the `is_s390x_feature_supported` macro (added in rust-lang/stdarch#1699, not yet on nightly, that needs an stdarch sync) to include these target features.

``@Amanieu`` you had some reservations about the `"vector"` target feature name. It does appear to be the most "official" name we have. On the one hand the name is very generic, and some of the other names are rather long. For the `neural-network-processing-assist` even LLVM thought that was a bit much and shortened it to `nnp-assist`. Also for `vector-packed-decimal-enhancement facility 1` the llvm naming is inconsistent. On the other hand, the cpuinfo names are very cryptic, and aren't found in the IBM documentation.

r? ``@Amanieu``

cc ``@uweigand`` ``@taiki-e``
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 21, 2025
Rollup merge of rust-lang#135630 - folkertdev:s390x-target-features, r=Amanieu

add more `s390x` target features

Closes rust-lang#88937

tracking issue: rust-lang#130869

The target feature names are, right now, just the llvm target feature names. These mostly line up well with the names of [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) names. The linux kernel (and `/proc/cpuinfo`) uses shorter, more cryptic names. (e.g. "vector" is `vx`). We can deviate from the llvm names, but the CPU vendor (IBM) does not appear to use e.g. `vx` for what they call `vector`.

There are a number of implied target features between the vector facilities (based on the [Facility Indications](https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf#page=301) table):

- 129 The vector facility for z/Architecture is installed in the z/Architecture architectural mode.
- 134 The vector packed decimal facility is installed in the z/Architecture architectural mode. When bit 134 is one, bit 129 is also one.
- 135 The vector enhancements facility 1 is installed in the z/Architecture architectural mode. When bit 135 is one, bit 129 is also one.
- 148 The vector-enhancements facility 2 is installed in the z/Architecture architectural mode. When bit 148 is one, bits 129 and 135 are also one.
- 152 The vector-packed-decimal-enhancement facility 1 is installed in the z/Architecture architectural mode. When bit 152 is one, bits 129 and 134 are also one.
- 165 The neural-network-processing-assist facility is installed in the z/Architecture architectural mode. When bit 165 is one, bit 129 is also one.
- 192 The vector-packed-decimal-enhancement facility 2 is installed in the z/Architecture architectural mode. When bit 192 is one, bits 129, 134, and 152 are also one.

The remaining facilities do not have any implied target features (that we provide):

- 45 The distinct-operands, fast-BCR-serialization, high-word, and population-count facilities, the interlocked-access facility 1, and the load/store-oncondition facility 1 are installed in the z/Architecture architectural mode.
- 73 The transactional-execution facility is installed in the z/Architecture architectural mode. Bit 49 is one when bit 73 is one.
- 133 The guarded-storage facility is installed in the z/Architecture architectural mode.
- 150 The enhanced-sort facility is installed in the z/Architecture architectural mode.
- 151 The DEFLATE-conversion facility is installed in the z/Architecture architectural mode.

The added target features are those that have ISA implications, can be queried at runtime, and have LLVM support. LLVM [defines more target features](https://github.com/llvm/llvm-project/blob/d49a2d2bc9c65c787bfa04ac8ece614da48a8cd5/llvm/lib/Target/SystemZ/SystemZFeatures.td), but I'm not sure those are useful. They can always be added later, and can already be set globally using `-Ctarget-feature`.

I'll also update the `is_s390x_feature_supported` macro (added in rust-lang/stdarch#1699, not yet on nightly, that needs an stdarch sync) to include these target features.

``@Amanieu`` you had some reservations about the `"vector"` target feature name. It does appear to be the most "official" name we have. On the one hand the name is very generic, and some of the other names are rather long. For the `neural-network-processing-assist` even LLVM thought that was a bit much and shortened it to `nnp-assist`. Also for `vector-packed-decimal-enhancement facility 1` the llvm naming is inconsistent. On the other hand, the cpuinfo names are very cryptic, and aren't found in the IBM documentation.

r? ``@Amanieu``

cc ``@uweigand`` ``@taiki-e``
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 27, 2025
Update stdarch

Updates stdarch

- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- S390x float rounding: rust-lang/stdarch#1712
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
try-job: dist-powerpc-linux
try-job: i686-gnu-1
try-job: i686-gnu-2
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 28, 2025
Update stdarch

Updates stdarch

- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- S390x float rounding: rust-lang/stdarch#1712
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
try-job: dist-powerpc-linux
try-job: i686-gnu-1
try-job: i686-gnu-2
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 28, 2025
Update stdarch

Updates stdarch

- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- S390x float rounding: rust-lang/stdarch#1712
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688

try-job: aarch64-apple
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
try-job: dist-powerpc-linux
try-job: i686-gnu-1
try-job: i686-gnu-2
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 1, 2025
Update stdarch

Updates stdarch

- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- S390x float rounding: rust-lang/stdarch#1712
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- add vec_add for s390x: rust-lang/stdarch#1703
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- Fix typo and prettify comment: rust-lang/stdarch#1697
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- New ARM intrinsic generator: rust-lang/stdarch#1693
- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 3, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728

try: dist-s390x-linux
try: dist-aarch64-msvc
try: dist-powerpc-linux
try: dist-powerpc64-linux
try: dist-powerpc64le-linux
try: x86_64-msvc-ext3
try: x86_64-msvc-ext2
try: x86_64-msvc-1
try: x86_64-msvc-2
try: i686-msvc-1
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 3, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728

try-job: dist-s390x-linux
try-job: dist-aarch64-msvc
try-job: dist-powerpc-linux
try-job: dist-powerpc64-linux
try-job: dist-powerpc64le-linux
try-job: x86_64-msvc-ext3
try-job: x86_64-msvc-ext2
try-job: x86_64-msvc-1
try-job: x86_64-msvc-2
try-job: i686-msvc-1
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 4, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 6, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728
- make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736
- fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739
- Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732
- feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741

try-job: x86_64-gnu-tools
try-job: x86_64-msvc-1
try-job: x86_64-msvc-2
try-job: i686-msvc-1
try-job: i686-msvc-2
try-job: x86_64-msvc-ext1
try-job: x86_64-msvc-ext2
try-job: x86_64-msvc-ext3
try-job: i686-mingw-1
try-job: i686-mingw-2
try-job: i686-mingw-3
try-job: x86_64-mingw-1
try-job: x86_64-mingw-2
try-job: dist-i686-msvc
try-job: dist-aarch64-msvc
try-job: dist-i686-mingw
try-job: dist-x86_64-mingw
try-job: dist-x86_64-msvc-alt
try-job: dist-x86_64-apple
try-job: dist-apple-various
try-job: x86_64-apple-1
try-job: x86_64-apple-2
try-job: dist-aarch64-apple
try-job: aarch64-apple
try-job: dist-android
try-job: dist-ohos
try-job: dist-various-1
try-job: dist-various-2
try-job: test-various
try-job: armhf-gnu
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 6, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728
- make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736
- fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739
- Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732
- feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741

try-job: dist-x86_64-msvc
try-job: aarch64-gnu
try-job: aarch64-gnu-debug
try-job: dist-aarch64-linux
try-job: dist-arm-linux
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 6, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728
- make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736
- fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739
- Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732
- feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741
lnicola pushed a commit to lnicola/rust-analyzer that referenced this pull request Mar 10, 2025
Update stdarch

Updates stdarch

- core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
- New ARM intrinsic generator: rust-lang/stdarch#1693
- Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694
- Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695
- Tidying x86 `as_*` functions: rust-lang/stdarch#1696
- Fix typo and prettify comment: rust-lang/stdarch#1697
- add is_s390x_feature_detected: rust-lang/stdarch#1699
- add vec_add for s390x: rust-lang/stdarch#1703
- s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704
- Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705
- Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707
- Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710
- Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706
- S390x vector bitwise operations: rust-lang/stdarch#1709
- Update CI to FreeBSD 13.4: rust-lang/stdarch#1715
- Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719
- powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713
- S390x float rounding: rust-lang/stdarch#1712
- mark riscv intrinsics as safe: rust-lang/stdarch#1717
- change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711
- Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708
- mark x86 intrinsics as safe: rust-lang/stdarch#1714
- AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726
- wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724
- nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725
- powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723
- Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722
- Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727
- fix - neon type signed unsigned conversions: rust-lang/stdarch#1729
- s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720
- Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731
- fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733
- wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721
- powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734
- powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735
- s390x: add more intrinsics: rust-lang/stdarch#1728
- make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736
- fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739
- Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732
- feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741
jieyouxu added a commit to jieyouxu/rust that referenced this pull request Mar 16, 2025
…-detected, r=Mark-Simulacrum

expose `is_s390x_feature_detected!` from `std::arch`

tracking issue: rust-lang#135413
implementation: rust-lang/stdarch#1699 (more features added in rust-lang/stdarch#1720)

This macro was part of the recent `stdarch` synchronization, but not yet exposed via `std::arch`.

r? libs
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Mar 16, 2025
Rollup merge of rust-lang#138275 - folkertdev:expose-is-s390x-feature-detected, r=Mark-Simulacrum

expose `is_s390x_feature_detected!` from `std::arch`

tracking issue: rust-lang#135413
implementation: rust-lang/stdarch#1699 (more features added in rust-lang/stdarch#1720)

This macro was part of the recent `stdarch` synchronization, but not yet exposed via `std::arch`.

r? libs
github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request Mar 19, 2025
…-detected, r=Mark-Simulacrum

expose `is_s390x_feature_detected!` from `std::arch`

tracking issue: rust-lang#135413
implementation: rust-lang/stdarch#1699 (more features added in rust-lang/stdarch#1720)

This macro was part of the recent `stdarch` synchronization, but not yet exposed via `std::arch`.

r? libs
@taiki-e
Copy link
Member

taiki-e commented Apr 2, 2025

             core::arch::asm!(
                "lgr %r0, {0}",
                // equivalently ".insn s, 0xb2b00000, 0({1})",
                "stfle 0({1})",
                in(reg) result.len() as u64 - 1,
                in(reg_addr) result.as_mut_ptr() ,
                options(nostack, preserves_flags )
            );

Btw, this inline assembly has UBs. (I missed it because it was not included in the change by PR...)

  • r0 is clobbered (by both lgr .. and stfile), but not marked clobbered in assembly. (Need to add out("r0") _,, or use inout("r0") result.len() as u64 - 1 => _, and remove lgr ...)

    Section for stfile in PoP says:

    bits 56-63 of general register 0 are updated to contain one less than the number of doublewords needed to contain all of the facility bits assigned for the configuration

  • condition code is modified (by stfile), but preserves_flags is used. (Need to remove preserves_flags)

    Section for stfile in PoP says:

    Resulting Condition Code:
    0 Complete facility list stored
    1 --
    2 --
    3 Incomplete facility list stored

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants