-
Notifications
You must be signed in to change notification settings - Fork 280
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
Fix - AArch64 Big Endian Intrinsics #1708
Fix - AArch64 Big Endian Intrinsics #1708
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, however there still seems to be some CI failures.
027b28b
to
a6958f0
Compare
The pipeline should now be fixed, though it currently fails due to: The PR is also significantly smaller, as we've isolated the intrinsics that require Additionally, I've cleaned up the currently non-functional CI code in |
Looks like the pipeline is fixed by; #1719 I'm not sure how to re-run this pipeline? |
a6958f0
to
e4f37d6
Compare
e4f37d6
to
fbe5fce
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM apart from one minor nit.
test_vsli!(test_vsli_n_p64, i64 => vsli_n_p64([333333], [1028], 45)); | ||
test_vsli!(test_vsliq_n_p64, i64 => vsliq_n_p64([333333, 52023], [1028, 99814], 33)); | ||
//test_vsli!(test_vsli_n_p64, i64 => vsli_n_p64([333333], [1028], 45)); | ||
//test_vsli!(test_vsliq_n_p64, i64 => vsliq_n_p64([333333, 52023], [1028, 99814], 33)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are these tests commented out?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tests for vsri_<...>_p64
and vsli_<...>_p64
have been commented out because LLVM does not implement these intrinsics for ARMv7. Attempting to run them results in an error, which coincidentally resolves the pipeline issue. These intrinsics are already listed in missing_arm.txt
; https://github.com/rust-lang/stdarch/blob/master/crates/intrinsic-test/missing_arm.txt#L105. While I could uncomment them, I have instead added a note in the YAML file to revisit them when LLVM provides support.
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
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
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
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
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
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
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
AArch64 Big Endian Intrinsics
Automatic generation of AArch64 big endian intrinsics with the new generator. The generated intrinsics are conceptually similar to those in
arm_neon.h
, utilizingsimd_shuffle!(...)
to reorder bits as required.Testing was performed using the
intrinsic-test
program, confirming that the generated big-endian intrinsics produce the same results as theirclang
counterparts.This PR includes updates to
run.sh
and a newDockerfile
. However, I have not integrated these changes into the CI pipeline because buildingrustc
currently requires modifications to memchr - see here.With the changes in this PR, it should be possible to build
memchr
again, thereby enablingaarch64_be-unknown-linux-gnu
as a Rust target without requiring pre-modifications to memchr during the rustc build process.Closes: #1484