Skip to content
New issue

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

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

s390x_is_feature_detected!: detect more features #1720

Merged

Conversation

folkertdev
Copy link
Contributor

@folkertdev folkertdev commented Feb 22, 2025

tracking issue: rust-lang/rust#130869
follow-up to #1699

with rust-lang/rust#135630 merged, we can now also check for these facilities at runtime.

I am now using the stfle instruction to get the facilities. From what I can tell AT_HWCAP does not include a bit for the vector-packed-decimal facility. Also the stfle version is just shorter, and I like that the factility bit index is now actually used.

@uweigand previously said that using the stfle instruction is safe because LLVM only supports CPUs with this instruction. This is also the official specification of the target

Code generated by the target uses the z/Architecture ISA assuming a minimum architecture level of z10 (Eighth Edition of the z/Architecture Principles of Operation), and is compliant with the s390x ELF ABI.

In theory that might change if e.g. the GCC backend wants to support something older (gcc appears to still support z900). We can deal with that if it ever becomes relevant.

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.

@rustbot
Copy link
Collaborator

rustbot commented Feb 22, 2025

r? @Amanieu

rustbot has assigned @Amanieu.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@folkertdev folkertdev changed the title s390x_is_feature_dectected!: detect more features s390x_is_feature_detected!: detect more features Feb 22, 2025
@uweigand
Copy link

I am now using the stfle instruction to get the facilities. From what I can tell AT_HWCAP does not include a bit for the vector-packed-decimal facility. Also the stfle version is just shorter, and I like that the factility bit index is now actually used.

The AT_HWCAP bit HWCAP_VXRS_BCD indicates the vector-packed-decimal facility. However, in general it is true that stfle provides a somewhat finer-grained list, if only in theory: in practice, it is possible to recover the facilities "missing" from AT_HWCAP for all s390x machines that have ever existed.

I'd agree that in general, it may be preferable to use stfle over AT_HWCAP. There is one exception, however: there are certain facilities that must be explicitly supported and enabled by the kernel in order to be useful. The main example here is the vector facility: even if the HW provides this facility, all vector instructions will still trap by default, unless they are enabled by the kernel. That is because the vector facility provides a new set of registers, and those are only safe to be used from user-space applications if the kernel is aware of their use (so they can be swapped in/out on context switch). In those cases, stfle will report that the facility is present in HW, while AT_HWCAP will report that the facility is present and enabled.

While at this point in time, most kernels in actual use will support and enable the vector facility if present, it would still be safer to check the AT_HWCAP bit at least for this case.

In theory that might change if e.g. the GCC backend wants to support something older (gcc appears to still support z900). We can deal with that if it ever becomes relevant.

At some point we're likely to drop support from GCC for very old architectures. In any case, having Rust enforce some minimum architecture level even with the GCC backend would certainly be fine.

@folkertdev folkertdev force-pushed the s390x-feature-detected-more-features branch from 67a8bdd to aa32463 Compare February 23, 2025 11:44
@folkertdev
Copy link
Contributor Author

Then it's better to just use AT_HWCAP, so I've removed the commit that uses stfle. This code only gets executed once per program execution, retrieving info for all of the features and caching it. So if AT_HWCAP is needed for the vector feature, we can just use it for all of the others too.

If it ever does become relevant, #1699 has some example code that uses stfle.

@folkertdev folkertdev force-pushed the s390x-feature-detected-more-features branch from aa32463 to 08ed897 Compare February 23, 2025 12:47
@folkertdev folkertdev force-pushed the s390x-feature-detected-more-features branch from 08ed897 to 9575466 Compare February 23, 2025 14:06
@Amanieu Amanieu added this pull request to the merge queue Feb 23, 2025
Merged via the queue into rust-lang:master with commit 2ca25b4 Feb 24, 2025
60 checks passed
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
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants