authorbors <bors@rust-lang.org> 2025-07-22 15:25:31 UTC
committerbors <bors@rust-lang.org> 2025-07-22 15:25:31 UTC
log2e5367566819ca7878baa9600ae7a93eb0e37bbf
tree6b65029625eb4b6e726b826197e617728788430e
parent35487a2e7c80012129c38f55c970109a1538c91f
parent9b7d31c851cabc2e6e541d3cf146787d597a9166

Auto merge of #144222 - Kobzol:stdarch-push, r=folkertdev

stdarch subtree update Subtree update of `stdarch` to https://github.com/rust-lang/stdarch/commit/5531955678494ee28ec02130a6d94082ad4532da. Created using https://github.com/rust-lang/josh-sync. I saw that there were non-trivial changes made to `std_detect` in `stdarch` recently. So I want to get them merged here before we move forward with https://github.com/rust-lang/rust/pull/143412. r? `@folkertdev`

72 files changed, 4642 insertions(+), 5042 deletions(-)

library/stdarch/.github/workflows/main.yml+23
...@@ -255,6 +255,28 @@ jobs:...@@ -255,6 +255,28 @@ jobs:
255 env:255 env:
256 TARGET: ${{ matrix.target.tuple }}256 TARGET: ${{ matrix.target.tuple }}
257257
258 # Check that the generated files agree with the checked-in versions.
259 check-stdarch-gen:
260 needs: [style]
261 name: Check stdarch-gen-{arm, loongarch} output
262 runs-on: ubuntu-latest
263 steps:
264 - uses: actions/checkout@v4
265 - name: Install Rust
266 run: rustup update nightly && rustup default nightly && rustup component add rustfmt
267 - name: Check arm spec
268 run: |
269 cargo run --bin=stdarch-gen-arm --release -- crates/stdarch-gen-arm/spec
270 git diff --exit-code
271 - name: Check lsx.spec
272 run: |
273 cargo run --bin=stdarch-gen-loongarch --release -- crates/stdarch-gen-loongarch/lsx.spec
274 git diff --exit-code
275 - name: Check lasx.spec
276 run: |
277 cargo run --bin=stdarch-gen-loongarch --release -- crates/stdarch-gen-loongarch/lasx.spec
278 git diff --exit-code
279
258 build-std-detect:280 build-std-detect:
259 needs: [style]281 needs: [style]
260 name: Build std_detect282 name: Build std_detect
...@@ -271,6 +293,7 @@ jobs:...@@ -271,6 +293,7 @@ jobs:
271 - verify293 - verify
272 - test294 - test
273 - build-std-detect295 - build-std-detect
296 - check-stdarch-gen
274 runs-on: ubuntu-latest297 runs-on: ubuntu-latest
275 # We need to ensure this job does *not* get skipped if its dependencies fail,298 # We need to ensure this job does *not* get skipped if its dependencies fail,
276 # because a skipped job is considered a success by GitHub. So we have to299 # because a skipped job is considered a success by GitHub. So we have to
library/stdarch/.github/workflows/rustc-pull.yml created+22
...@@ -0,0 +1,22 @@
1# Perform a subtree sync (pull) using the josh-sync tool once every few days (or on demand).
2name: rustc-pull
3
4on:
5 workflow_dispatch:
6 schedule:
7 # Run at 04:00 UTC every Monday and Thursday
8 - cron: '0 4 * * 1,4'
9
10jobs:
11 pull:
12 if: github.repository == 'rust-lang/stdarch'
13 uses: rust-lang/josh-sync/.github/workflows/rustc-pull.yml@main
14 with:
15 # https://rust-lang.zulipchat.com/#narrow/channel/208962-t-libs.2Fstdarch/topic/Subtree.20sync.20automation/with/528461782
16 zulip-stream-id: 208962
17 zulip-bot-email: "stdarch-ci-bot@rust-lang.zulipchat.com"
18 pr-base-branch: master
19 branch-name: rustc-pull
20 secrets:
21 zulip-api-token: ${{ secrets.ZULIP_API_TOKEN }}
22 token: ${{ secrets.GITHUB_TOKEN }}
library/stdarch/Cargo.lock+39-33
...@@ -73,20 +73,26 @@ version = "0.1.0"...@@ -73,20 +73,26 @@ version = "0.1.0"
73dependencies = [73dependencies = [
74 "proc-macro2",74 "proc-macro2",
75 "quote",75 "quote",
76 "syn 2.0.102",76 "syn 2.0.104",
77]77]
7878
79[[package]]79[[package]]
80name = "autocfg"80name = "autocfg"
81version = "1.4.0"81version = "1.5.0"
82source = "registry+https://github.com/rust-lang/crates.io-index"82source = "registry+https://github.com/rust-lang/crates.io-index"
83checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"83checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
84
85[[package]]
86name = "bitflags"
87version = "2.9.1"
88source = "registry+https://github.com/rust-lang/crates.io-index"
89checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
8490
85[[package]]91[[package]]
86name = "cc"92name = "cc"
87version = "1.2.26"93version = "1.2.30"
88source = "registry+https://github.com/rust-lang/crates.io-index"94source = "registry+https://github.com/rust-lang/crates.io-index"
89checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac"95checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
90dependencies = [96dependencies = [
91 "shlex",97 "shlex",
92]98]
...@@ -99,9 +105,9 @@ checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"...@@ -99,9 +105,9 @@ checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
99105
100[[package]]106[[package]]
101name = "clap"107name = "clap"
102version = "4.5.40"108version = "4.5.41"
103source = "registry+https://github.com/rust-lang/crates.io-index"109source = "registry+https://github.com/rust-lang/crates.io-index"
104checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f"110checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
105dependencies = [111dependencies = [
106 "clap_builder",112 "clap_builder",
107 "clap_derive",113 "clap_derive",
...@@ -109,9 +115,9 @@ dependencies = [...@@ -109,9 +115,9 @@ dependencies = [
109115
110[[package]]116[[package]]
111name = "clap_builder"117name = "clap_builder"
112version = "4.5.40"118version = "4.5.41"
113source = "registry+https://github.com/rust-lang/crates.io-index"119source = "registry+https://github.com/rust-lang/crates.io-index"
114checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e"120checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
115dependencies = [121dependencies = [
116 "anstream",122 "anstream",
117 "anstyle",123 "anstyle",
...@@ -121,14 +127,14 @@ dependencies = [...@@ -121,14 +127,14 @@ dependencies = [
121127
122[[package]]128[[package]]
123name = "clap_derive"129name = "clap_derive"
124version = "4.5.40"130version = "4.5.41"
125source = "registry+https://github.com/rust-lang/crates.io-index"131source = "registry+https://github.com/rust-lang/crates.io-index"
126checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce"132checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
127dependencies = [133dependencies = [
128 "heck",134 "heck",
129 "proc-macro2",135 "proc-macro2",
130 "quote",136 "quote",
131 "syn 2.0.102",137 "syn 2.0.104",
132]138]
133139
134[[package]]140[[package]]
...@@ -338,9 +344,9 @@ dependencies = [...@@ -338,9 +344,9 @@ dependencies = [
338344
339[[package]]345[[package]]
340name = "indexmap"346name = "indexmap"
341version = "2.9.0"347version = "2.10.0"
342source = "registry+https://github.com/rust-lang/crates.io-index"348source = "registry+https://github.com/rust-lang/crates.io-index"
343checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"349checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
344dependencies = [350dependencies = [
345 "equivalent",351 "equivalent",
346 "hashbrown 0.15.4",352 "hashbrown 0.15.4",
...@@ -403,9 +409,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"...@@ -403,9 +409,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
403409
404[[package]]410[[package]]
405name = "libc"411name = "libc"
406version = "0.2.172"412version = "0.2.174"
407source = "registry+https://github.com/rust-lang/crates.io-index"413source = "registry+https://github.com/rust-lang/crates.io-index"
408checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"414checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
409415
410[[package]]416[[package]]
411name = "linked-hash-map"417name = "linked-hash-map"
...@@ -624,7 +630,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"...@@ -624,7 +630,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
624dependencies = [630dependencies = [
625 "proc-macro2",631 "proc-macro2",
626 "quote",632 "quote",
627 "syn 2.0.102",633 "syn 2.0.104",
628]634]
629635
630[[package]]636[[package]]
...@@ -685,7 +691,7 @@ version = "0.1.0"...@@ -685,7 +691,7 @@ version = "0.1.0"
685dependencies = [691dependencies = [
686 "proc-macro2",692 "proc-macro2",
687 "quote",693 "quote",
688 "syn 2.0.102",694 "syn 2.0.104",
689]695]
690696
691[[package]]697[[package]]
...@@ -703,7 +709,6 @@ name = "stdarch-gen-arm"...@@ -703,7 +709,6 @@ name = "stdarch-gen-arm"
703version = "0.1.0"709version = "0.1.0"
704dependencies = [710dependencies = [
705 "itertools",711 "itertools",
706 "lazy_static",
707 "proc-macro2",712 "proc-macro2",
708 "quote",713 "quote",
709 "regex",714 "regex",
...@@ -727,7 +732,6 @@ dependencies = [...@@ -727,7 +732,6 @@ dependencies = [
727 "assert-instr-macro",732 "assert-instr-macro",
728 "cc",733 "cc",
729 "cfg-if",734 "cfg-if",
730 "lazy_static",
731 "rustc-demangle",735 "rustc-demangle",
732 "simd-test-macro",736 "simd-test-macro",
733 "wasmprinter",737 "wasmprinter",
...@@ -742,7 +746,7 @@ dependencies = [...@@ -742,7 +746,7 @@ dependencies = [
742 "quote",746 "quote",
743 "serde",747 "serde",
744 "serde_json",748 "serde_json",
745 "syn 2.0.102",749 "syn 2.0.104",
746]750]
747751
748[[package]]752[[package]]
...@@ -780,9 +784,9 @@ dependencies = [...@@ -780,9 +784,9 @@ dependencies = [
780784
781[[package]]785[[package]]
782name = "syn"786name = "syn"
783version = "2.0.102"787version = "2.0.104"
784source = "registry+https://github.com/rust-lang/crates.io-index"788source = "registry+https://github.com/rust-lang/crates.io-index"
785checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462"789checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
786dependencies = [790dependencies = [
787 "proc-macro2",791 "proc-macro2",
788 "quote",792 "quote",
...@@ -834,21 +838,23 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"...@@ -834,21 +838,23 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
834838
835[[package]]839[[package]]
836name = "wasmparser"840name = "wasmparser"
837version = "0.113.3"841version = "0.235.0"
838source = "registry+https://github.com/rust-lang/crates.io-index"842source = "registry+https://github.com/rust-lang/crates.io-index"
839checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae"843checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917"
840dependencies = [844dependencies = [
841 "indexmap 2.9.0",845 "bitflags",
846 "indexmap 2.10.0",
842 "semver",847 "semver",
843]848]
844849
845[[package]]850[[package]]
846name = "wasmprinter"851name = "wasmprinter"
847version = "0.2.67"852version = "0.235.0"
848source = "registry+https://github.com/rust-lang/crates.io-index"853source = "registry+https://github.com/rust-lang/crates.io-index"
849checksum = "f6615a5587149e753bf4b93f90fa3c3f41c88597a7a2da72879afcabeda9648f"854checksum = "75aa8e9076de6b9544e6dab4badada518cca0bf4966d35b131bbd057aed8fa0a"
850dependencies = [855dependencies = [
851 "anyhow",856 "anyhow",
857 "termcolor",
852 "wasmparser",858 "wasmparser",
853]859]
854860
...@@ -945,20 +951,20 @@ dependencies = [...@@ -945,20 +951,20 @@ dependencies = [
945951
946[[package]]952[[package]]
947name = "zerocopy"953name = "zerocopy"
948version = "0.8.25"954version = "0.8.26"
949source = "registry+https://github.com/rust-lang/crates.io-index"955source = "registry+https://github.com/rust-lang/crates.io-index"
950checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"956checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
951dependencies = [957dependencies = [
952 "zerocopy-derive",958 "zerocopy-derive",
953]959]
954960
955[[package]]961[[package]]
956name = "zerocopy-derive"962name = "zerocopy-derive"
957version = "0.8.25"963version = "0.8.26"
958source = "registry+https://github.com/rust-lang/crates.io-index"964source = "registry+https://github.com/rust-lang/crates.io-index"
959checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"965checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
960dependencies = [966dependencies = [
961 "proc-macro2",967 "proc-macro2",
962 "quote",968 "quote",
963 "syn 2.0.102",969 "syn 2.0.104",
964]970]
library/stdarch/Cargo.toml+2-1
...@@ -5,7 +5,8 @@ members = [...@@ -5,7 +5,8 @@ members = [
5 "examples",5 "examples",
6]6]
7exclude = [7exclude = [
8 "crates/wasm-assert-instr-tests"8 "crates/wasm-assert-instr-tests",
9 "rust_programs",
9]10]
1011
11[profile.release]12[profile.release]
library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile+2-2
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
2RUN apt-get update && apt-get install -y --no-install-recommends \2RUN apt-get update && apt-get install -y --no-install-recommends \
3 gcc \3 gcc \
4 g++ \4 g++ \
...@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \...@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
10 qemu-user \10 qemu-user \
11 make \11 make \
12 file \12 file \
13 clang-19 \13 clang \
14 lld14 lld
1515
16ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \16ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile+4-4
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc \4 gcc \
...@@ -9,15 +9,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \...@@ -9,15 +9,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
9 qemu-user \9 qemu-user \
10 make \10 make \
11 file \11 file \
12 clang-19 \12 clang \
13 curl \13 curl \
14 xz-utils \14 xz-utils \
15 lld15 lld
1616
17ENV TOOLCHAIN="arm-gnu-toolchain-14.2.rel1-x86_64-aarch64_be-none-linux-gnu"17ENV TOOLCHAIN="arm-gnu-toolchain-14.3.rel1-x86_64-aarch64_be-none-linux-gnu"
1818
19# Download the aarch64_be gcc toolchain19# Download the aarch64_be gcc toolchain
20RUN curl -L "https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/${TOOLCHAIN}.tar.xz" -o "${TOOLCHAIN}.tar.xz"20RUN curl -L "https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/${TOOLCHAIN}.tar.xz" -o "${TOOLCHAIN}.tar.xz"
21RUN tar -xvf "${TOOLCHAIN}.tar.xz"21RUN tar -xvf "${TOOLCHAIN}.tar.xz"
22RUN mkdir /toolchains && mv "./${TOOLCHAIN}" /toolchains22RUN mkdir /toolchains && mv "./${TOOLCHAIN}" /toolchains
2323
library/stdarch/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
2RUN apt-get update && apt-get install -y --no-install-recommends \2RUN apt-get update && apt-get install -y --no-install-recommends \
3 gcc \3 gcc \
4 ca-certificates \4 ca-certificates \
library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile+1-1
...@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \...@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
10 qemu-user \10 qemu-user \
11 make \11 make \
12 file \12 file \
13 clang-19 \13 clang \
14 lld14 lld
15ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \15ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
16 CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \16 CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \
library/stdarch/ci/docker/i586-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
2RUN apt-get update && apt-get install -y --no-install-recommends \2RUN apt-get update && apt-get install -y --no-install-recommends \
3 gcc-multilib \3 gcc-multilib \
4 libc6-dev \4 libc6-dev \
library/stdarch/ci/docker/i686-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
2RUN apt-get update && apt-get install -y --no-install-recommends \2RUN apt-get update && apt-get install -y --no-install-recommends \
3 gcc-multilib \3 gcc-multilib \
4 libc6-dev \4 libc6-dev \
library/stdarch/ci/docker/loongarch64-unknown-linux-gnu/Dockerfile+2-2
...@@ -1,9 +1,9 @@...@@ -1,9 +1,9 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && \3RUN apt-get update && \
4 apt-get install -y --no-install-recommends \4 apt-get install -y --no-install-recommends \
5 gcc libc6-dev qemu-user-static ca-certificates \5 gcc libc6-dev qemu-user-static ca-certificates \
6 gcc-14-loongarch64-linux-gnu libc6-dev-loong64-cross6 gcc-loongarch64-linux-gnu libc6-dev-loong64-cross
77
88
9ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=loongarch64-linux-gnu-gcc-14 \9ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=loongarch64-linux-gnu-gcc-14 \
library/stdarch/ci/docker/mips-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/mipsel-unknown-linux-musl/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && \3RUN apt-get update && \
4 apt-get install -y --no-install-recommends \4 apt-get install -y --no-install-recommends \
library/stdarch/ci/docker/nvptx64-nvidia-cuda/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
2RUN apt-get update && apt-get install -y --no-install-recommends \2RUN apt-get update && apt-get install -y --no-install-recommends \
3 gcc \3 gcc \
4 libc6-dev \4 libc6-dev \
library/stdarch/ci/docker/powerpc-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile+2-2
...@@ -1,10 +1,10 @@...@@ -1,10 +1,10 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
5 wget xz-utils make file llvm5 wget xz-utils make file llvm
66
7ENV VERSION=2025.01.207ENV VERSION=2025.07.03
88
9RUN wget "https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${VERSION}/riscv32-glibc-ubuntu-24.04-gcc-nightly-${VERSION}-nightly.tar.xz" \9RUN wget "https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${VERSION}/riscv32-glibc-ubuntu-24.04-gcc-nightly-${VERSION}-nightly.tar.xz" \
10 -O riscv-toolchain.tar.xz10 -O riscv-toolchain.tar.xz
library/stdarch/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 gcc libc6-dev qemu-user ca-certificates \4 gcc libc6-dev qemu-user ca-certificates \
library/stdarch/ci/docker/s390x-unknown-linux-gnu/Dockerfile+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3RUN apt-get update && apt-get install -y --no-install-recommends \3RUN apt-get update && apt-get install -y --no-install-recommends \
4 curl ca-certificates \4 curl ca-certificates \
library/stdarch/ci/docker/wasm32-wasip1/Dockerfile+5-3
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
22
3ENV DEBIAN_FRONTEND=noninteractive3ENV DEBIAN_FRONTEND=noninteractive
4RUN apt-get update -y && apt-get install -y --no-install-recommends \4RUN apt-get update -y && apt-get install -y --no-install-recommends \
...@@ -7,7 +7,9 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \...@@ -7,7 +7,9 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \
7 xz-utils \7 xz-utils \
8 clang8 clang
99
10RUN curl -L https://github.com/bytecodealliance/wasmtime/releases/download/v18.0.2/wasmtime-v18.0.2-x86_64-linux.tar.xz | tar xJf -10ENV VERSION=v34.0.1
11ENV PATH=$PATH:/wasmtime-v18.0.2-x86_64-linux11
12RUN curl -L https://github.com/bytecodealliance/wasmtime/releases/download/${VERSION}/wasmtime-${VERSION}-x86_64-linux.tar.xz | tar xJf -
13ENV PATH=$PATH:/wasmtime-${VERSION}-x86_64-linux
1214
13ENV CARGO_TARGET_WASM32_WASIP1_RUNNER="wasmtime --dir /checkout/target/wasm32-wasip1/release/deps::."15ENV CARGO_TARGET_WASM32_WASIP1_RUNNER="wasmtime --dir /checkout/target/wasm32-wasip1/release/deps::."
library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile+2-2
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1FROM ubuntu:25.041FROM ubuntu:25.10
2RUN apt-get update && apt-get install -y --no-install-recommends \2RUN apt-get update && apt-get install -y --no-install-recommends \
3 gcc \3 gcc \
4 libc6-dev \4 libc6-dev \
...@@ -8,7 +8,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \...@@ -8,7 +8,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
8 wget \8 wget \
9 xz-utils9 xz-utils
1010
11RUN wget http://ci-mirrors.rust-lang.org/stdarch/sde-external-9.53.0-2025-03-16-lin.tar.xz -O sde.tar.xz11RUN wget http://ci-mirrors.rust-lang.org/stdarch/sde-external-9.58.0-2025-06-16-lin.tar.xz -O sde.tar.xz
12RUN mkdir intel-sde12RUN mkdir intel-sde
13RUN tar -xJf sde.tar.xz --strip-components=1 -C intel-sde13RUN tar -xJf sde.tar.xz --strip-components=1 -C intel-sde
14ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/intel-sde/sde64 \14ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/intel-sde/sde64 \
library/stdarch/ci/docker/x86_64-unknown-linux-gnu/cpuid.def+14-22
...@@ -1,41 +1,35 @@...@@ -1,41 +1,35 @@
1# Copyright (C) 2024-2024 Intel Corporation.1# Copyright (C) 2017-2025 Intel Corporation.
2#2#
3# This software and the related documents are Intel copyrighted materials, and your3# This software and the related documents are Intel copyrighted materials, and your
4# use of them is governed by the express license under which they were provided to4# use of them is governed by the express license under which they were provided to
5# you ("License"). Unless the License provides otherwise, you may not use, modify,5# you ("License"). Unless the License provides otherwise, you may not use, modify,
6# copy, publish, distribute, disclose or transmit this software or the related6# copy, publish, distribute, disclose or transmit this software or the related
7# documents without Intel's prior written permission.7# documents without Intel's prior written permission.
8#8#
9# This software and the related documents are provided as is, with no express or9# This software and the related documents are provided as is, with no express or
10# implied warranties, other than those that are expressly stated in the License.10# implied warranties, other than those that are expressly stated in the License.
11#11#
12# The CPUID information in this file is for software enabling purposes only and
13# it is not a full and accurate representation of the CPU under development which
14# it represents.
15# The CPUID information in this file is not a guarantee of the availability of
16# features or characteristics in the final released CPU.
17#
18# CPUID_VERSION = 1.012# CPUID_VERSION = 1.0
19# Input => Output13# Input => Output
20# EAX ECX => EAX EBX ECX EDX14# EAX ECX => EAX EBX ECX EDX
2100000000 ******** => 00000024 68747541 444d4163 69746e651500000000 ******** => 00000024 68747541 444d4163 69746e65
2200000001 ******** => 000d06f0 00100800 7ffaf3ff bfebfbff1600000001 ******** => 00400f10 00100800 7ffaf3ff bfebfbff
2300000002 ******** => 76035a01 00f0b6ff 00000000 00c100001700000002 ******** => 76035a01 00f0b6ff 00000000 00c10000
2400000003 ******** => 00000000 00000000 00000000 000000001800000003 ******** => 00000000 00000000 00000000 00000000
2500000004 00000000 => 7c004121 02c0003f 0000003f 00000000 #Deterministic Cache1900000004 00000000 => 7c004121 01c0003f 0000003f 00000000 #Deterministic Cache
2600000004 00000001 => 7c004122 01c0003f 0000003f 000000002000000004 00000001 => 7c004122 01c0003f 0000003f 00000000
2700000004 00000002 => 7c004143 03c0003f 000007ff 000000002100000004 00000002 => 7c004143 03c0003f 000003ff 00000000
2800000004 00000003 => 7c0fc163 04c0003f 0005ffff 000000042200000004 00000003 => 7c0fc163 0280003f 0000dfff 00000004
2900000004 00000004 => 00000000 00000000 00000000 000000002300000004 00000004 => 00000000 00000000 00000000 00000000
3000000005 ******** => 00000040 00000040 00000003 00042120 #MONITOR/MWAIT2400000005 ******** => 00000040 00000040 00000003 00042120 #MONITOR/MWAIT
3100000006 ******** => 00000077 00000002 00000001 00000000 #Thermal and Power2500000006 ******** => 00000077 00000002 00000001 00000000 #Thermal and Power
3200000007 00000000 => 00000001 f3bfbfbf bbc05ffe 03d55130 #Extended Features2600000007 00000000 => 00000001 f3bfbfbf bac05ffe 03d54130 #Extended Features
3300000007 00000001 => 88ee00bf 00000002 00000000 1d29cd3e2700000007 00000001 => 98ee00bf 00000002 00000020 1d29cd3e
3400000008 ******** => 00000000 00000000 00000000 000000002800000008 ******** => 00000000 00000000 00000000 00000000
3500000009 ******** => 00000000 00000000 00000000 00000000 #Direct Cache2900000009 ******** => 00000000 00000000 00000000 00000000 #Direct Cache
360000000a ******** => 07300403 00000000 00000000 00000603300000000a ******** => 07300403 00000000 00000000 00000603
370000000b 00000000 => 00000001 00000002 00000100 0000001e #Extended Topology310000000b 00000000 => 00000001 00000002 00000100 00000000 #Extended Topology
380000000b 00000001 => 00000004 00000002 00000201 0000001e320000000b 00000001 => 00000004 00000002 00000201 00000000
390000000c ******** => 00000000 00000000 00000000 00000000330000000c ******** => 00000000 00000000 00000000 00000000
400000000d 00000000 => 000e02e7 00002b00 00002b00 00000000 #xcr0340000000d 00000000 => 000e02e7 00002b00 00002b00 00000000 #xcr0
410000000d 00000001 => 0000001f 00000240 00000100 00000000350000000d 00000001 => 0000001f 00000240 00000100 00000000
...@@ -52,10 +46,8 @@...@@ -52,10 +46,8 @@
520000001d 00000001 => 04002000 00080040 00000010 00000000 #AMX Palette1460000001d 00000001 => 04002000 00080040 00000010 00000000 #AMX Palette1
530000001e 00000000 => 00000001 00004010 00000000 00000000 #AMX Tmul470000001e 00000000 => 00000001 00004010 00000000 00000000 #AMX Tmul
540000001e 00000001 => 000001ff 00000000 00000000 00000000480000001e 00000001 => 000001ff 00000000 00000000 00000000
550000001f 00000000 => 00000001 00000002 00000100 0000001e4900000024 00000000 => 00000001 00070002 00000000 00000000 #AVX10
560000001f 00000001 => 00000007 00000070 00000201 0000001e5000000024 00000001 => 00000000 00000000 00000004 00000000
570000001f 00000002 => 00000000 00000000 00000002 0000001e
5800000024 00000000 => 00000000 00070002 00000000 00000000 #AVX10
5980000000 ******** => 80000008 00000000 00000000 000000005180000000 ******** => 80000008 00000000 00000000 00000000
6080000001 ******** => 00000000 00000000 00200961 2c1000005280000001 ******** => 00000000 00000000 00200961 2c100000
6180000002 ******** => 00000000 00000000 00000000 000000005380000002 ******** => 00000000 00000000 00000000 00000000
...@@ -66,6 +58,6 @@...@@ -66,6 +58,6 @@
6680000007 ******** => 00000000 00000000 00000000 000001005880000007 ******** => 00000000 00000000 00000000 00000100
6780000008 ******** => 00003028 00000200 00000200 000000005980000008 ******** => 00003028 00000200 00000200 00000000
6860
69# This file was copied from intel-sde/misc/cpuid/dmr/cpuid.def, and modified to61# This file was copied from intel-sde/misc/cpuid/future/cpuid.def, and modified to
70# use "AuthenticAMD" as the vendor and the support for `XOP`, `SSE4a`, `TBM`,62# use "AuthenticAMD" as the vendor and the support for `XOP`, `SSE4a`, `TBM`,
71# `AVX512_VP2INTERSECT` and the VEX variants of AVX512 was added in the CPUID.63# `AVX512_VP2INTERSECT` and the VEX variants of AVX512 was added in the CPUID.
library/stdarch/ci/run.sh+3-3
...@@ -144,21 +144,21 @@ case ${TARGET} in...@@ -144,21 +144,21 @@ case ${TARGET} in
144 aarch64-unknown-linux-gnu*)144 aarch64-unknown-linux-gnu*)
145 TEST_CPPFLAGS="-fuse-ld=lld -I/usr/aarch64-linux-gnu/include/ -I/usr/aarch64-linux-gnu/include/c++/9/aarch64-linux-gnu/"145 TEST_CPPFLAGS="-fuse-ld=lld -I/usr/aarch64-linux-gnu/include/ -I/usr/aarch64-linux-gnu/include/c++/9/aarch64-linux-gnu/"
146 TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt146 TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
147 TEST_CXX_COMPILER="clang++-19"147 TEST_CXX_COMPILER="clang++"
148 TEST_RUNNER="${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER}"148 TEST_RUNNER="${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER}"
149 ;;149 ;;
150150
151 aarch64_be-unknown-linux-gnu*)151 aarch64_be-unknown-linux-gnu*)
152 TEST_CPPFLAGS="-fuse-ld=lld"152 TEST_CPPFLAGS="-fuse-ld=lld"
153 TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt153 TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
154 TEST_CXX_COMPILER="clang++-19"154 TEST_CXX_COMPILER="clang++"
155 TEST_RUNNER="${CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER}"155 TEST_RUNNER="${CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER}"
156 ;;156 ;;
157157
158 armv7-unknown-linux-gnueabihf*)158 armv7-unknown-linux-gnueabihf*)
159 TEST_CPPFLAGS="-fuse-ld=lld -I/usr/arm-linux-gnueabihf/include/ -I/usr/arm-linux-gnueabihf/include/c++/9/arm-linux-gnueabihf/"159 TEST_CPPFLAGS="-fuse-ld=lld -I/usr/arm-linux-gnueabihf/include/ -I/usr/arm-linux-gnueabihf/include/c++/9/arm-linux-gnueabihf/"
160 TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_arm.txt160 TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_arm.txt
161 TEST_CXX_COMPILER="clang++-19"161 TEST_CXX_COMPILER="clang++"
162 TEST_RUNNER="${CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER}"162 TEST_RUNNER="${CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER}"
163 ;;163 ;;
164 *)164 *)
library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs+100-496
...@@ -51,7 +51,7 @@ pub fn __crc32d(crc: u32, data: u64) -> u32 {...@@ -51,7 +51,7 @@ pub fn __crc32d(crc: u32, data: u64) -> u32 {
51#[inline]51#[inline]
52#[target_feature(enable = "neon")]52#[target_feature(enable = "neon")]
53#[stable(feature = "neon_intrinsics", since = "1.59.0")]53#[stable(feature = "neon_intrinsics", since = "1.59.0")]
54#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]54#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
55pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {55pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
56 unsafe {56 unsafe {
57 let d: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);57 let d: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -66,7 +66,7 @@ pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {...@@ -66,7 +66,7 @@ pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
66#[inline]66#[inline]
67#[target_feature(enable = "neon")]67#[target_feature(enable = "neon")]
68#[stable(feature = "neon_intrinsics", since = "1.59.0")]68#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]69#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
70pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {70pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
71 unsafe {71 unsafe {
72 let d: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);72 let d: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
...@@ -81,7 +81,7 @@ pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {...@@ -81,7 +81,7 @@ pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
81#[inline]81#[inline]
82#[target_feature(enable = "neon")]82#[target_feature(enable = "neon")]
83#[stable(feature = "neon_intrinsics", since = "1.59.0")]83#[stable(feature = "neon_intrinsics", since = "1.59.0")]
84#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]84#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
85pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {85pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
86 unsafe {86 unsafe {
87 let d: int32x2_t = simd_shuffle!(b, b, [2, 3]);87 let d: int32x2_t = simd_shuffle!(b, b, [2, 3]);
...@@ -96,7 +96,7 @@ pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {...@@ -96,7 +96,7 @@ pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
96#[inline]96#[inline]
97#[target_feature(enable = "neon")]97#[target_feature(enable = "neon")]
98#[stable(feature = "neon_intrinsics", since = "1.59.0")]98#[stable(feature = "neon_intrinsics", since = "1.59.0")]
99#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]99#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
100pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t {100pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t {
101 unsafe {101 unsafe {
102 let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);102 let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -110,7 +110,7 @@ pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t...@@ -110,7 +110,7 @@ pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t
110#[inline]110#[inline]
111#[target_feature(enable = "neon")]111#[target_feature(enable = "neon")]
112#[stable(feature = "neon_intrinsics", since = "1.59.0")]112#[stable(feature = "neon_intrinsics", since = "1.59.0")]
113#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]113#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
114pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t {114pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t {
115 unsafe {115 unsafe {
116 let d: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);116 let d: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
...@@ -124,7 +124,7 @@ pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t...@@ -124,7 +124,7 @@ pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t
124#[inline]124#[inline]
125#[target_feature(enable = "neon")]125#[target_feature(enable = "neon")]
126#[stable(feature = "neon_intrinsics", since = "1.59.0")]126#[stable(feature = "neon_intrinsics", since = "1.59.0")]
127#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]127#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
128pub fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uint64x2_t {128pub fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uint64x2_t {
129 unsafe {129 unsafe {
130 let d: uint32x2_t = simd_shuffle!(b, b, [2, 3]);130 let d: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
...@@ -197,7 +197,7 @@ pub fn vabdh_f16(a: f16, b: f16) -> f16 {...@@ -197,7 +197,7 @@ pub fn vabdh_f16(a: f16, b: f16) -> f16 {
197#[inline]197#[inline]
198#[target_feature(enable = "neon")]198#[target_feature(enable = "neon")]
199#[stable(feature = "neon_intrinsics", since = "1.59.0")]199#[stable(feature = "neon_intrinsics", since = "1.59.0")]
200#[cfg_attr(test, assert_instr(sabdl))]200#[cfg_attr(test, assert_instr(sabdl2))]
201pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {201pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
202 unsafe {202 unsafe {
203 let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);203 let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
...@@ -211,7 +211,7 @@ pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {...@@ -211,7 +211,7 @@ pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
211#[inline]211#[inline]
212#[target_feature(enable = "neon")]212#[target_feature(enable = "neon")]
213#[stable(feature = "neon_intrinsics", since = "1.59.0")]213#[stable(feature = "neon_intrinsics", since = "1.59.0")]
214#[cfg_attr(test, assert_instr(sabdl))]214#[cfg_attr(test, assert_instr(sabdl2))]
215pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {215pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
216 unsafe {216 unsafe {
217 let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);217 let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
...@@ -225,7 +225,7 @@ pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {...@@ -225,7 +225,7 @@ pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
225#[inline]225#[inline]
226#[target_feature(enable = "neon")]226#[target_feature(enable = "neon")]
227#[stable(feature = "neon_intrinsics", since = "1.59.0")]227#[stable(feature = "neon_intrinsics", since = "1.59.0")]
228#[cfg_attr(test, assert_instr(sabdl))]228#[cfg_attr(test, assert_instr(sabdl2))]
229pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {229pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
230 unsafe {230 unsafe {
231 let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);231 let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -238,7 +238,7 @@ pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {...@@ -238,7 +238,7 @@ pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]
239#[inline]239#[inline]
240#[target_feature(enable = "neon")]240#[target_feature(enable = "neon")]
241#[cfg_attr(test, assert_instr(uabdl))]241#[cfg_attr(test, assert_instr(uabdl2))]
242#[stable(feature = "neon_intrinsics", since = "1.59.0")]242#[stable(feature = "neon_intrinsics", since = "1.59.0")]
243pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {243pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
244 unsafe {244 unsafe {
...@@ -251,7 +251,7 @@ pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {...@@ -251,7 +251,7 @@ pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u16)"]251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u16)"]
252#[inline]252#[inline]
253#[target_feature(enable = "neon")]253#[target_feature(enable = "neon")]
254#[cfg_attr(test, assert_instr(uabdl))]254#[cfg_attr(test, assert_instr(uabdl2))]
255#[stable(feature = "neon_intrinsics", since = "1.59.0")]255#[stable(feature = "neon_intrinsics", since = "1.59.0")]
256pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {256pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
257 unsafe {257 unsafe {
...@@ -264,7 +264,7 @@ pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {...@@ -264,7 +264,7 @@ pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u32)"]264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u32)"]
265#[inline]265#[inline]
266#[target_feature(enable = "neon")]266#[target_feature(enable = "neon")]
267#[cfg_attr(test, assert_instr(uabdl))]267#[cfg_attr(test, assert_instr(uabdl2))]
268#[stable(feature = "neon_intrinsics", since = "1.59.0")]268#[stable(feature = "neon_intrinsics", since = "1.59.0")]
269pub fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {269pub fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
270 unsafe {270 unsafe {
...@@ -298,46 +298,40 @@ pub fn vabsq_f64(a: float64x2_t) -> float64x2_t {...@@ -298,46 +298,40 @@ pub fn vabsq_f64(a: float64x2_t) -> float64x2_t {
298#[stable(feature = "neon_intrinsics", since = "1.59.0")]298#[stable(feature = "neon_intrinsics", since = "1.59.0")]
299#[cfg_attr(test, assert_instr(abs))]299#[cfg_attr(test, assert_instr(abs))]
300pub fn vabs_s64(a: int64x1_t) -> int64x1_t {300pub fn vabs_s64(a: int64x1_t) -> int64x1_t {
301 unsafe extern "unadjusted" {301 unsafe {
302 #[cfg_attr(302 let neg: int64x1_t = simd_neg(a);
303 any(target_arch = "aarch64", target_arch = "arm64ec"),303 let mask: int64x1_t = simd_ge(a, neg);
304 link_name = "llvm.aarch64.neon.abs.v1i64"304 simd_select(mask, a, neg)
305 )]
306 fn _vabs_s64(a: int64x1_t) -> int64x1_t;
307 }305 }
308 unsafe { _vabs_s64(a) }
309}306}
310#[doc = "Absolute Value (wrapping)."]307#[doc = "Absolute Value (wrapping)."]
311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsd_s64)"]308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s64)"]
312#[inline]309#[inline]
313#[target_feature(enable = "neon")]310#[target_feature(enable = "neon")]
314#[stable(feature = "neon_intrinsics", since = "1.59.0")]311#[stable(feature = "neon_intrinsics", since = "1.59.0")]
315#[cfg_attr(test, assert_instr(abs))]312#[cfg_attr(test, assert_instr(abs))]
316pub fn vabsd_s64(a: i64) -> i64 {313pub fn vabsq_s64(a: int64x2_t) -> int64x2_t {
317 unsafe extern "unadjusted" {314 unsafe {
318 #[cfg_attr(315 let neg: int64x2_t = simd_neg(a);
319 any(target_arch = "aarch64", target_arch = "arm64ec"),316 let mask: int64x2_t = simd_ge(a, neg);
320 link_name = "llvm.aarch64.neon.abs.i64"317 simd_select(mask, a, neg)
321 )]
322 fn _vabsd_s64(a: i64) -> i64;
323 }318 }
324 unsafe { _vabsd_s64(a) }
325}319}
326#[doc = "Absolute Value (wrapping)."]320#[doc = "Absolute Value (wrapping)."]
327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s64)"]321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsd_s64)"]
328#[inline]322#[inline]
329#[target_feature(enable = "neon")]323#[target_feature(enable = "neon")]
330#[stable(feature = "neon_intrinsics", since = "1.59.0")]324#[stable(feature = "neon_intrinsics", since = "1.59.0")]
331#[cfg_attr(test, assert_instr(abs))]325#[cfg_attr(test, assert_instr(abs))]
332pub fn vabsq_s64(a: int64x2_t) -> int64x2_t {326pub fn vabsd_s64(a: i64) -> i64 {
333 unsafe extern "unadjusted" {327 unsafe extern "unadjusted" {
334 #[cfg_attr(328 #[cfg_attr(
335 any(target_arch = "aarch64", target_arch = "arm64ec"),329 any(target_arch = "aarch64", target_arch = "arm64ec"),
336 link_name = "llvm.aarch64.neon.abs.v2i64"330 link_name = "llvm.aarch64.neon.abs.i64"
337 )]331 )]
338 fn _vabsq_s64(a: int64x2_t) -> int64x2_t;332 fn _vabsd_s64(a: i64) -> i64;
339 }333 }
340 unsafe { _vabsq_s64(a) }334 unsafe { _vabsd_s64(a) }
341}335}
342#[doc = "Add"]336#[doc = "Add"]
343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddd_s64)"]337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddd_s64)"]
...@@ -604,14 +598,7 @@ pub fn vaddvq_f64(a: float64x2_t) -> f64 {...@@ -604,14 +598,7 @@ pub fn vaddvq_f64(a: float64x2_t) -> f64 {
604#[stable(feature = "neon_intrinsics", since = "1.59.0")]598#[stable(feature = "neon_intrinsics", since = "1.59.0")]
605#[cfg_attr(test, assert_instr(addp))]599#[cfg_attr(test, assert_instr(addp))]
606pub fn vaddv_s32(a: int32x2_t) -> i32 {600pub fn vaddv_s32(a: int32x2_t) -> i32 {
607 unsafe extern "unadjusted" {601 unsafe { simd_reduce_add_unordered(a) }
608 #[cfg_attr(
609 any(target_arch = "aarch64", target_arch = "arm64ec"),
610 link_name = "llvm.aarch64.neon.saddv.i32.v2i32"
611 )]
612 fn _vaddv_s32(a: int32x2_t) -> i32;
613 }
614 unsafe { _vaddv_s32(a) }
615}602}
616#[doc = "Add across vector"]603#[doc = "Add across vector"]
617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s8)"]604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s8)"]
...@@ -620,14 +607,7 @@ pub fn vaddv_s32(a: int32x2_t) -> i32 {...@@ -620,14 +607,7 @@ pub fn vaddv_s32(a: int32x2_t) -> i32 {
620#[stable(feature = "neon_intrinsics", since = "1.59.0")]607#[stable(feature = "neon_intrinsics", since = "1.59.0")]
621#[cfg_attr(test, assert_instr(addv))]608#[cfg_attr(test, assert_instr(addv))]
622pub fn vaddv_s8(a: int8x8_t) -> i8 {609pub fn vaddv_s8(a: int8x8_t) -> i8 {
623 unsafe extern "unadjusted" {610 unsafe { simd_reduce_add_unordered(a) }
624 #[cfg_attr(
625 any(target_arch = "aarch64", target_arch = "arm64ec"),
626 link_name = "llvm.aarch64.neon.saddv.i8.v8i8"
627 )]
628 fn _vaddv_s8(a: int8x8_t) -> i8;
629 }
630 unsafe { _vaddv_s8(a) }
631}611}
632#[doc = "Add across vector"]612#[doc = "Add across vector"]
633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s8)"]613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s8)"]
...@@ -636,14 +616,7 @@ pub fn vaddv_s8(a: int8x8_t) -> i8 {...@@ -636,14 +616,7 @@ pub fn vaddv_s8(a: int8x8_t) -> i8 {
636#[stable(feature = "neon_intrinsics", since = "1.59.0")]616#[stable(feature = "neon_intrinsics", since = "1.59.0")]
637#[cfg_attr(test, assert_instr(addv))]617#[cfg_attr(test, assert_instr(addv))]
638pub fn vaddvq_s8(a: int8x16_t) -> i8 {618pub fn vaddvq_s8(a: int8x16_t) -> i8 {
639 unsafe extern "unadjusted" {619 unsafe { simd_reduce_add_unordered(a) }
640 #[cfg_attr(
641 any(target_arch = "aarch64", target_arch = "arm64ec"),
642 link_name = "llvm.aarch64.neon.saddv.i8.v16i8"
643 )]
644 fn _vaddvq_s8(a: int8x16_t) -> i8;
645 }
646 unsafe { _vaddvq_s8(a) }
647}620}
648#[doc = "Add across vector"]621#[doc = "Add across vector"]
649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s16)"]622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s16)"]
...@@ -652,14 +625,7 @@ pub fn vaddvq_s8(a: int8x16_t) -> i8 {...@@ -652,14 +625,7 @@ pub fn vaddvq_s8(a: int8x16_t) -> i8 {
652#[stable(feature = "neon_intrinsics", since = "1.59.0")]625#[stable(feature = "neon_intrinsics", since = "1.59.0")]
653#[cfg_attr(test, assert_instr(addv))]626#[cfg_attr(test, assert_instr(addv))]
654pub fn vaddv_s16(a: int16x4_t) -> i16 {627pub fn vaddv_s16(a: int16x4_t) -> i16 {
655 unsafe extern "unadjusted" {628 unsafe { simd_reduce_add_unordered(a) }
656 #[cfg_attr(
657 any(target_arch = "aarch64", target_arch = "arm64ec"),
658 link_name = "llvm.aarch64.neon.saddv.i16.v4i16"
659 )]
660 fn _vaddv_s16(a: int16x4_t) -> i16;
661 }
662 unsafe { _vaddv_s16(a) }
663}629}
664#[doc = "Add across vector"]630#[doc = "Add across vector"]
665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s16)"]631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s16)"]
...@@ -668,14 +634,7 @@ pub fn vaddv_s16(a: int16x4_t) -> i16 {...@@ -668,14 +634,7 @@ pub fn vaddv_s16(a: int16x4_t) -> i16 {
668#[stable(feature = "neon_intrinsics", since = "1.59.0")]634#[stable(feature = "neon_intrinsics", since = "1.59.0")]
669#[cfg_attr(test, assert_instr(addv))]635#[cfg_attr(test, assert_instr(addv))]
670pub fn vaddvq_s16(a: int16x8_t) -> i16 {636pub fn vaddvq_s16(a: int16x8_t) -> i16 {
671 unsafe extern "unadjusted" {637 unsafe { simd_reduce_add_unordered(a) }
672 #[cfg_attr(
673 any(target_arch = "aarch64", target_arch = "arm64ec"),
674 link_name = "llvm.aarch64.neon.saddv.i16.v8i16"
675 )]
676 fn _vaddvq_s16(a: int16x8_t) -> i16;
677 }
678 unsafe { _vaddvq_s16(a) }
679}638}
680#[doc = "Add across vector"]639#[doc = "Add across vector"]
681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s32)"]640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s32)"]
...@@ -684,14 +643,7 @@ pub fn vaddvq_s16(a: int16x8_t) -> i16 {...@@ -684,14 +643,7 @@ pub fn vaddvq_s16(a: int16x8_t) -> i16 {
684#[stable(feature = "neon_intrinsics", since = "1.59.0")]643#[stable(feature = "neon_intrinsics", since = "1.59.0")]
685#[cfg_attr(test, assert_instr(addv))]644#[cfg_attr(test, assert_instr(addv))]
686pub fn vaddvq_s32(a: int32x4_t) -> i32 {645pub fn vaddvq_s32(a: int32x4_t) -> i32 {
687 unsafe extern "unadjusted" {646 unsafe { simd_reduce_add_unordered(a) }
688 #[cfg_attr(
689 any(target_arch = "aarch64", target_arch = "arm64ec"),
690 link_name = "llvm.aarch64.neon.saddv.i32.v4i32"
691 )]
692 fn _vaddvq_s32(a: int32x4_t) -> i32;
693 }
694 unsafe { _vaddvq_s32(a) }
695}647}
696#[doc = "Add across vector"]648#[doc = "Add across vector"]
697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u32)"]649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u32)"]
...@@ -700,14 +652,7 @@ pub fn vaddvq_s32(a: int32x4_t) -> i32 {...@@ -700,14 +652,7 @@ pub fn vaddvq_s32(a: int32x4_t) -> i32 {
700#[stable(feature = "neon_intrinsics", since = "1.59.0")]652#[stable(feature = "neon_intrinsics", since = "1.59.0")]
701#[cfg_attr(test, assert_instr(addp))]653#[cfg_attr(test, assert_instr(addp))]
702pub fn vaddv_u32(a: uint32x2_t) -> u32 {654pub fn vaddv_u32(a: uint32x2_t) -> u32 {
703 unsafe extern "unadjusted" {655 unsafe { simd_reduce_add_unordered(a) }
704 #[cfg_attr(
705 any(target_arch = "aarch64", target_arch = "arm64ec"),
706 link_name = "llvm.aarch64.neon.uaddv.i32.v2i32"
707 )]
708 fn _vaddv_u32(a: uint32x2_t) -> u32;
709 }
710 unsafe { _vaddv_u32(a) }
711}656}
712#[doc = "Add across vector"]657#[doc = "Add across vector"]
713#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u8)"]658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u8)"]
...@@ -716,14 +661,7 @@ pub fn vaddv_u32(a: uint32x2_t) -> u32 {...@@ -716,14 +661,7 @@ pub fn vaddv_u32(a: uint32x2_t) -> u32 {
716#[stable(feature = "neon_intrinsics", since = "1.59.0")]661#[stable(feature = "neon_intrinsics", since = "1.59.0")]
717#[cfg_attr(test, assert_instr(addv))]662#[cfg_attr(test, assert_instr(addv))]
718pub fn vaddv_u8(a: uint8x8_t) -> u8 {663pub fn vaddv_u8(a: uint8x8_t) -> u8 {
719 unsafe extern "unadjusted" {664 unsafe { simd_reduce_add_unordered(a) }
720 #[cfg_attr(
721 any(target_arch = "aarch64", target_arch = "arm64ec"),
722 link_name = "llvm.aarch64.neon.uaddv.i8.v8i8"
723 )]
724 fn _vaddv_u8(a: uint8x8_t) -> u8;
725 }
726 unsafe { _vaddv_u8(a) }
727}665}
728#[doc = "Add across vector"]666#[doc = "Add across vector"]
729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u8)"]667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u8)"]
...@@ -732,14 +670,7 @@ pub fn vaddv_u8(a: uint8x8_t) -> u8 {...@@ -732,14 +670,7 @@ pub fn vaddv_u8(a: uint8x8_t) -> u8 {
732#[stable(feature = "neon_intrinsics", since = "1.59.0")]670#[stable(feature = "neon_intrinsics", since = "1.59.0")]
733#[cfg_attr(test, assert_instr(addv))]671#[cfg_attr(test, assert_instr(addv))]
734pub fn vaddvq_u8(a: uint8x16_t) -> u8 {672pub fn vaddvq_u8(a: uint8x16_t) -> u8 {
735 unsafe extern "unadjusted" {673 unsafe { simd_reduce_add_unordered(a) }
736 #[cfg_attr(
737 any(target_arch = "aarch64", target_arch = "arm64ec"),
738 link_name = "llvm.aarch64.neon.uaddv.i8.v16i8"
739 )]
740 fn _vaddvq_u8(a: uint8x16_t) -> u8;
741 }
742 unsafe { _vaddvq_u8(a) }
743}674}
744#[doc = "Add across vector"]675#[doc = "Add across vector"]
745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u16)"]676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u16)"]
...@@ -748,14 +679,7 @@ pub fn vaddvq_u8(a: uint8x16_t) -> u8 {...@@ -748,14 +679,7 @@ pub fn vaddvq_u8(a: uint8x16_t) -> u8 {
748#[stable(feature = "neon_intrinsics", since = "1.59.0")]679#[stable(feature = "neon_intrinsics", since = "1.59.0")]
749#[cfg_attr(test, assert_instr(addv))]680#[cfg_attr(test, assert_instr(addv))]
750pub fn vaddv_u16(a: uint16x4_t) -> u16 {681pub fn vaddv_u16(a: uint16x4_t) -> u16 {
751 unsafe extern "unadjusted" {682 unsafe { simd_reduce_add_unordered(a) }
752 #[cfg_attr(
753 any(target_arch = "aarch64", target_arch = "arm64ec"),
754 link_name = "llvm.aarch64.neon.uaddv.i16.v4i16"
755 )]
756 fn _vaddv_u16(a: uint16x4_t) -> u16;
757 }
758 unsafe { _vaddv_u16(a) }
759}683}
760#[doc = "Add across vector"]684#[doc = "Add across vector"]
761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u16)"]685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u16)"]
...@@ -764,14 +688,7 @@ pub fn vaddv_u16(a: uint16x4_t) -> u16 {...@@ -764,14 +688,7 @@ pub fn vaddv_u16(a: uint16x4_t) -> u16 {
764#[stable(feature = "neon_intrinsics", since = "1.59.0")]688#[stable(feature = "neon_intrinsics", since = "1.59.0")]
765#[cfg_attr(test, assert_instr(addv))]689#[cfg_attr(test, assert_instr(addv))]
766pub fn vaddvq_u16(a: uint16x8_t) -> u16 {690pub fn vaddvq_u16(a: uint16x8_t) -> u16 {
767 unsafe extern "unadjusted" {691 unsafe { simd_reduce_add_unordered(a) }
768 #[cfg_attr(
769 any(target_arch = "aarch64", target_arch = "arm64ec"),
770 link_name = "llvm.aarch64.neon.uaddv.i16.v8i16"
771 )]
772 fn _vaddvq_u16(a: uint16x8_t) -> u16;
773 }
774 unsafe { _vaddvq_u16(a) }
775}692}
776#[doc = "Add across vector"]693#[doc = "Add across vector"]
777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u32)"]694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u32)"]
...@@ -780,14 +697,7 @@ pub fn vaddvq_u16(a: uint16x8_t) -> u16 {...@@ -780,14 +697,7 @@ pub fn vaddvq_u16(a: uint16x8_t) -> u16 {
780#[stable(feature = "neon_intrinsics", since = "1.59.0")]697#[stable(feature = "neon_intrinsics", since = "1.59.0")]
781#[cfg_attr(test, assert_instr(addv))]698#[cfg_attr(test, assert_instr(addv))]
782pub fn vaddvq_u32(a: uint32x4_t) -> u32 {699pub fn vaddvq_u32(a: uint32x4_t) -> u32 {
783 unsafe extern "unadjusted" {700 unsafe { simd_reduce_add_unordered(a) }
784 #[cfg_attr(
785 any(target_arch = "aarch64", target_arch = "arm64ec"),
786 link_name = "llvm.aarch64.neon.uaddv.i32.v4i32"
787 )]
788 fn _vaddvq_u32(a: uint32x4_t) -> u32;
789 }
790 unsafe { _vaddvq_u32(a) }
791}701}
792#[doc = "Add across vector"]702#[doc = "Add across vector"]
793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s64)"]703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s64)"]
...@@ -796,14 +706,7 @@ pub fn vaddvq_u32(a: uint32x4_t) -> u32 {...@@ -796,14 +706,7 @@ pub fn vaddvq_u32(a: uint32x4_t) -> u32 {
796#[stable(feature = "neon_intrinsics", since = "1.59.0")]706#[stable(feature = "neon_intrinsics", since = "1.59.0")]
797#[cfg_attr(test, assert_instr(addp))]707#[cfg_attr(test, assert_instr(addp))]
798pub fn vaddvq_s64(a: int64x2_t) -> i64 {708pub fn vaddvq_s64(a: int64x2_t) -> i64 {
799 unsafe extern "unadjusted" {709 unsafe { simd_reduce_add_unordered(a) }
800 #[cfg_attr(
801 any(target_arch = "aarch64", target_arch = "arm64ec"),
802 link_name = "llvm.aarch64.neon.saddv.i64.v2i64"
803 )]
804 fn _vaddvq_s64(a: int64x2_t) -> i64;
805 }
806 unsafe { _vaddvq_s64(a) }
807}710}
808#[doc = "Add across vector"]711#[doc = "Add across vector"]
809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u64)"]712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u64)"]
...@@ -812,14 +715,7 @@ pub fn vaddvq_s64(a: int64x2_t) -> i64 {...@@ -812,14 +715,7 @@ pub fn vaddvq_s64(a: int64x2_t) -> i64 {
812#[stable(feature = "neon_intrinsics", since = "1.59.0")]715#[stable(feature = "neon_intrinsics", since = "1.59.0")]
813#[cfg_attr(test, assert_instr(addp))]716#[cfg_attr(test, assert_instr(addp))]
814pub fn vaddvq_u64(a: uint64x2_t) -> u64 {717pub fn vaddvq_u64(a: uint64x2_t) -> u64 {
815 unsafe extern "unadjusted" {718 unsafe { simd_reduce_add_unordered(a) }
816 #[cfg_attr(
817 any(target_arch = "aarch64", target_arch = "arm64ec"),
818 link_name = "llvm.aarch64.neon.uaddv.i64.v2i64"
819 )]
820 fn _vaddvq_u64(a: uint64x2_t) -> u64;
821 }
822 unsafe { _vaddvq_u64(a) }
823}719}
824#[doc = "Multi-vector floating-point absolute maximum"]720#[doc = "Multi-vector floating-point absolute maximum"]
825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vamax_f32)"]721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vamax_f32)"]
...@@ -7281,7 +7177,7 @@ pub fn vcvt_high_f32_f16(a: float16x8_t) -> float32x4_t {...@@ -7281,7 +7177,7 @@ pub fn vcvt_high_f32_f16(a: float16x8_t) -> float32x4_t {
7281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f32_f64)"]7177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f32_f64)"]
7282#[inline]7178#[inline]
7283#[target_feature(enable = "neon")]7179#[target_feature(enable = "neon")]
7284#[cfg_attr(test, assert_instr(fcvtn))]7180#[cfg_attr(test, assert_instr(fcvtn2))]
7285#[stable(feature = "neon_intrinsics", since = "1.59.0")]7181#[stable(feature = "neon_intrinsics", since = "1.59.0")]
7286pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {7182pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
7287 unsafe { simd_shuffle!(a, simd_cast(b), [0, 1, 2, 3]) }7183 unsafe { simd_shuffle!(a, simd_cast(b), [0, 1, 2, 3]) }
...@@ -7290,7 +7186,7 @@ pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {...@@ -7290,7 +7186,7 @@ pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
7290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f64_f32)"]7186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f64_f32)"]
7291#[inline]7187#[inline]
7292#[target_feature(enable = "neon")]7188#[target_feature(enable = "neon")]
7293#[cfg_attr(test, assert_instr(fcvtl))]7189#[cfg_attr(test, assert_instr(fcvtl2))]
7294#[stable(feature = "neon_intrinsics", since = "1.59.0")]7190#[stable(feature = "neon_intrinsics", since = "1.59.0")]
7295pub fn vcvt_high_f64_f32(a: float32x4_t) -> float64x2_t {7191pub fn vcvt_high_f64_f32(a: float32x4_t) -> float64x2_t {
7296 unsafe {7192 unsafe {
...@@ -9390,7 +9286,7 @@ pub fn vcvtx_f32_f64(a: float64x2_t) -> float32x2_t {...@@ -9390,7 +9286,7 @@ pub fn vcvtx_f32_f64(a: float64x2_t) -> float32x2_t {
9390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtx_high_f32_f64)"]9286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtx_high_f32_f64)"]
9391#[inline]9287#[inline]
9392#[target_feature(enable = "neon")]9288#[target_feature(enable = "neon")]
9393#[cfg_attr(test, assert_instr(fcvtxn))]9289#[cfg_attr(test, assert_instr(fcvtxn2))]
9394#[stable(feature = "neon_intrinsics", since = "1.59.0")]9290#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9395pub fn vcvtx_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {9291pub fn vcvtx_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
9396 unsafe { simd_shuffle!(a, vcvtx_f32_f64(b), [0, 1, 2, 3]) }9292 unsafe { simd_shuffle!(a, vcvtx_f32_f64(b), [0, 1, 2, 3]) }
...@@ -13229,14 +13125,7 @@ pub fn vmaxh_f16(a: f16, b: f16) -> f16 {...@@ -13229,14 +13125,7 @@ pub fn vmaxh_f16(a: f16, b: f16) -> f16 {
13229#[stable(feature = "neon_intrinsics", since = "1.59.0")]13125#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13230#[cfg_attr(test, assert_instr(fmaxnm))]13126#[cfg_attr(test, assert_instr(fmaxnm))]
13231pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {13127pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
13232 unsafe extern "unadjusted" {13128 unsafe { simd_fmax(a, b) }
13233 #[cfg_attr(
13234 any(target_arch = "aarch64", target_arch = "arm64ec"),
13235 link_name = "llvm.aarch64.neon.fmaxnm.v1f64"
13236 )]
13237 fn _vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t;
13238 }
13239 unsafe { _vmaxnm_f64(a, b) }
13240}13129}
13241#[doc = "Floating-point Maximum Number (vector)"]13130#[doc = "Floating-point Maximum Number (vector)"]
13242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f64)"]13131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f64)"]
...@@ -13245,14 +13134,7 @@ pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {...@@ -13245,14 +13134,7 @@ pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
13245#[stable(feature = "neon_intrinsics", since = "1.59.0")]13134#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13246#[cfg_attr(test, assert_instr(fmaxnm))]13135#[cfg_attr(test, assert_instr(fmaxnm))]
13247pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {13136pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
13248 unsafe extern "unadjusted" {13137 unsafe { simd_fmax(a, b) }
13249 #[cfg_attr(
13250 any(target_arch = "aarch64", target_arch = "arm64ec"),
13251 link_name = "llvm.aarch64.neon.fmaxnm.v2f64"
13252 )]
13253 fn _vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t;
13254 }
13255 unsafe { _vmaxnmq_f64(a, b) }
13256}13138}
13257#[doc = "Floating-point Maximum Number"]13139#[doc = "Floating-point Maximum Number"]
13258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmh_f16)"]13140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmh_f16)"]
...@@ -13261,14 +13143,7 @@ pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {...@@ -13261,14 +13143,7 @@ pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
13261#[unstable(feature = "stdarch_neon_f16", issue = "136306")]13143#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13262#[cfg_attr(test, assert_instr(fmaxnm))]13144#[cfg_attr(test, assert_instr(fmaxnm))]
13263pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {13145pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {
13264 unsafe extern "unadjusted" {13146 f16::max(a, b)
13265 #[cfg_attr(
13266 any(target_arch = "aarch64", target_arch = "arm64ec"),
13267 link_name = "llvm.aarch64.neon.fmaxnm.f16"
13268 )]
13269 fn _vmaxnmh_f16(a: f16, b: f16) -> f16;
13270 }
13271 unsafe { _vmaxnmh_f16(a, b) }
13272}13147}
13273#[doc = "Floating-point maximum number across vector"]13148#[doc = "Floating-point maximum number across vector"]
13274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f16)"]13149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f16)"]
...@@ -13277,14 +13152,7 @@ pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {...@@ -13277,14 +13152,7 @@ pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {
13277#[unstable(feature = "stdarch_neon_f16", issue = "136306")]13152#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13278#[cfg_attr(test, assert_instr(fmaxnmv))]13153#[cfg_attr(test, assert_instr(fmaxnmv))]
13279pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {13154pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {
13280 unsafe extern "unadjusted" {13155 unsafe { simd_reduce_max(a) }
13281 #[cfg_attr(
13282 any(target_arch = "aarch64", target_arch = "arm64ec"),
13283 link_name = "llvm.aarch64.neon.fmaxnmv.f16.v4f16"
13284 )]
13285 fn _vmaxnmv_f16(a: float16x4_t) -> f16;
13286 }
13287 unsafe { _vmaxnmv_f16(a) }
13288}13156}
13289#[doc = "Floating-point maximum number across vector"]13157#[doc = "Floating-point maximum number across vector"]
13290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f16)"]13158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f16)"]
...@@ -13293,14 +13161,7 @@ pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {...@@ -13293,14 +13161,7 @@ pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {
13293#[unstable(feature = "stdarch_neon_f16", issue = "136306")]13161#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13294#[cfg_attr(test, assert_instr(fmaxnmv))]13162#[cfg_attr(test, assert_instr(fmaxnmv))]
13295pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {13163pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {
13296 unsafe extern "unadjusted" {13164 unsafe { simd_reduce_max(a) }
13297 #[cfg_attr(
13298 any(target_arch = "aarch64", target_arch = "arm64ec"),
13299 link_name = "llvm.aarch64.neon.fmaxnmv.f16.v8f16"
13300 )]
13301 fn _vmaxnmvq_f16(a: float16x8_t) -> f16;
13302 }
13303 unsafe { _vmaxnmvq_f16(a) }
13304}13165}
13305#[doc = "Floating-point maximum number across vector"]13166#[doc = "Floating-point maximum number across vector"]
13306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f32)"]13167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f32)"]
...@@ -13309,14 +13170,7 @@ pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {...@@ -13309,14 +13170,7 @@ pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {
13309#[stable(feature = "neon_intrinsics", since = "1.59.0")]13170#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13310#[cfg_attr(test, assert_instr(fmaxnmp))]13171#[cfg_attr(test, assert_instr(fmaxnmp))]
13311pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {13172pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {
13312 unsafe extern "unadjusted" {13173 unsafe { simd_reduce_max(a) }
13313 #[cfg_attr(
13314 any(target_arch = "aarch64", target_arch = "arm64ec"),
13315 link_name = "llvm.aarch64.neon.fmaxnmv.f32.v2f32"
13316 )]
13317 fn _vmaxnmv_f32(a: float32x2_t) -> f32;
13318 }
13319 unsafe { _vmaxnmv_f32(a) }
13320}13174}
13321#[doc = "Floating-point maximum number across vector"]13175#[doc = "Floating-point maximum number across vector"]
13322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f64)"]13176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f64)"]
...@@ -13325,14 +13179,7 @@ pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {...@@ -13325,14 +13179,7 @@ pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {
13325#[stable(feature = "neon_intrinsics", since = "1.59.0")]13179#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13326#[cfg_attr(test, assert_instr(fmaxnmp))]13180#[cfg_attr(test, assert_instr(fmaxnmp))]
13327pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {13181pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {
13328 unsafe extern "unadjusted" {13182 unsafe { simd_reduce_max(a) }
13329 #[cfg_attr(
13330 any(target_arch = "aarch64", target_arch = "arm64ec"),
13331 link_name = "llvm.aarch64.neon.fmaxnmv.f64.v2f64"
13332 )]
13333 fn _vmaxnmvq_f64(a: float64x2_t) -> f64;
13334 }
13335 unsafe { _vmaxnmvq_f64(a) }
13336}13183}
13337#[doc = "Floating-point maximum number across vector"]13184#[doc = "Floating-point maximum number across vector"]
13338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f32)"]13185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f32)"]
...@@ -13341,14 +13188,7 @@ pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {...@@ -13341,14 +13188,7 @@ pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {
13341#[stable(feature = "neon_intrinsics", since = "1.59.0")]13188#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13342#[cfg_attr(test, assert_instr(fmaxnmv))]13189#[cfg_attr(test, assert_instr(fmaxnmv))]
13343pub fn vmaxnmvq_f32(a: float32x4_t) -> f32 {13190pub fn vmaxnmvq_f32(a: float32x4_t) -> f32 {
13344 unsafe extern "unadjusted" {13191 unsafe { simd_reduce_max(a) }
13345 #[cfg_attr(
13346 any(target_arch = "aarch64", target_arch = "arm64ec"),
13347 link_name = "llvm.aarch64.neon.fmaxnmv.f32.v4f32"
13348 )]
13349 fn _vmaxnmvq_f32(a: float32x4_t) -> f32;
13350 }
13351 unsafe { _vmaxnmvq_f32(a) }
13352}13192}
13353#[doc = "Floating-point maximum number across vector"]13193#[doc = "Floating-point maximum number across vector"]
13354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_f16)"]13194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_f16)"]
...@@ -13437,14 +13277,7 @@ pub fn vmaxvq_f64(a: float64x2_t) -> f64 {...@@ -13437,14 +13277,7 @@ pub fn vmaxvq_f64(a: float64x2_t) -> f64 {
13437#[stable(feature = "neon_intrinsics", since = "1.59.0")]13277#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13438#[cfg_attr(test, assert_instr(smaxv))]13278#[cfg_attr(test, assert_instr(smaxv))]
13439pub fn vmaxv_s8(a: int8x8_t) -> i8 {13279pub fn vmaxv_s8(a: int8x8_t) -> i8 {
13440 unsafe extern "unadjusted" {13280 unsafe { simd_reduce_max(a) }
13441 #[cfg_attr(
13442 any(target_arch = "aarch64", target_arch = "arm64ec"),
13443 link_name = "llvm.aarch64.neon.smaxv.i8.v8i8"
13444 )]
13445 fn _vmaxv_s8(a: int8x8_t) -> i8;
13446 }
13447 unsafe { _vmaxv_s8(a) }
13448}13281}
13449#[doc = "Horizontal vector max."]13282#[doc = "Horizontal vector max."]
13450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s8)"]13283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s8)"]
...@@ -13453,14 +13286,7 @@ pub fn vmaxv_s8(a: int8x8_t) -> i8 {...@@ -13453,14 +13286,7 @@ pub fn vmaxv_s8(a: int8x8_t) -> i8 {
13453#[stable(feature = "neon_intrinsics", since = "1.59.0")]13286#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13454#[cfg_attr(test, assert_instr(smaxv))]13287#[cfg_attr(test, assert_instr(smaxv))]
13455pub fn vmaxvq_s8(a: int8x16_t) -> i8 {13288pub fn vmaxvq_s8(a: int8x16_t) -> i8 {
13456 unsafe extern "unadjusted" {13289 unsafe { simd_reduce_max(a) }
13457 #[cfg_attr(
13458 any(target_arch = "aarch64", target_arch = "arm64ec"),
13459 link_name = "llvm.aarch64.neon.smaxv.i8.v16i8"
13460 )]
13461 fn _vmaxvq_s8(a: int8x16_t) -> i8;
13462 }
13463 unsafe { _vmaxvq_s8(a) }
13464}13290}
13465#[doc = "Horizontal vector max."]13291#[doc = "Horizontal vector max."]
13466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_s16)"]13292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_s16)"]
...@@ -13469,14 +13295,7 @@ pub fn vmaxvq_s8(a: int8x16_t) -> i8 {...@@ -13469,14 +13295,7 @@ pub fn vmaxvq_s8(a: int8x16_t) -> i8 {
13469#[stable(feature = "neon_intrinsics", since = "1.59.0")]13295#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13470#[cfg_attr(test, assert_instr(smaxv))]13296#[cfg_attr(test, assert_instr(smaxv))]
13471pub fn vmaxv_s16(a: int16x4_t) -> i16 {13297pub fn vmaxv_s16(a: int16x4_t) -> i16 {
13472 unsafe extern "unadjusted" {13298 unsafe { simd_reduce_max(a) }
13473 #[cfg_attr(
13474 any(target_arch = "aarch64", target_arch = "arm64ec"),
13475 link_name = "llvm.aarch64.neon.smaxv.i16.v4i16"
13476 )]
13477 fn _vmaxv_s16(a: int16x4_t) -> i16;
13478 }
13479 unsafe { _vmaxv_s16(a) }
13480}13299}
13481#[doc = "Horizontal vector max."]13300#[doc = "Horizontal vector max."]
13482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s16)"]13301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s16)"]
...@@ -13485,14 +13304,7 @@ pub fn vmaxv_s16(a: int16x4_t) -> i16 {...@@ -13485,14 +13304,7 @@ pub fn vmaxv_s16(a: int16x4_t) -> i16 {
13485#[stable(feature = "neon_intrinsics", since = "1.59.0")]13304#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13486#[cfg_attr(test, assert_instr(smaxv))]13305#[cfg_attr(test, assert_instr(smaxv))]
13487pub fn vmaxvq_s16(a: int16x8_t) -> i16 {13306pub fn vmaxvq_s16(a: int16x8_t) -> i16 {
13488 unsafe extern "unadjusted" {13307 unsafe { simd_reduce_max(a) }
13489 #[cfg_attr(
13490 any(target_arch = "aarch64", target_arch = "arm64ec"),
13491 link_name = "llvm.aarch64.neon.smaxv.i16.v8i16"
13492 )]
13493 fn _vmaxvq_s16(a: int16x8_t) -> i16;
13494 }
13495 unsafe { _vmaxvq_s16(a) }
13496}13308}
13497#[doc = "Horizontal vector max."]13309#[doc = "Horizontal vector max."]
13498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_s32)"]13310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_s32)"]
...@@ -13501,14 +13313,7 @@ pub fn vmaxvq_s16(a: int16x8_t) -> i16 {...@@ -13501,14 +13313,7 @@ pub fn vmaxvq_s16(a: int16x8_t) -> i16 {
13501#[stable(feature = "neon_intrinsics", since = "1.59.0")]13313#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13502#[cfg_attr(test, assert_instr(smaxp))]13314#[cfg_attr(test, assert_instr(smaxp))]
13503pub fn vmaxv_s32(a: int32x2_t) -> i32 {13315pub fn vmaxv_s32(a: int32x2_t) -> i32 {
13504 unsafe extern "unadjusted" {13316 unsafe { simd_reduce_max(a) }
13505 #[cfg_attr(
13506 any(target_arch = "aarch64", target_arch = "arm64ec"),
13507 link_name = "llvm.aarch64.neon.smaxv.i32.v2i32"
13508 )]
13509 fn _vmaxv_s32(a: int32x2_t) -> i32;
13510 }
13511 unsafe { _vmaxv_s32(a) }
13512}13317}
13513#[doc = "Horizontal vector max."]13318#[doc = "Horizontal vector max."]
13514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s32)"]13319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s32)"]
...@@ -13517,14 +13322,7 @@ pub fn vmaxv_s32(a: int32x2_t) -> i32 {...@@ -13517,14 +13322,7 @@ pub fn vmaxv_s32(a: int32x2_t) -> i32 {
13517#[stable(feature = "neon_intrinsics", since = "1.59.0")]13322#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13518#[cfg_attr(test, assert_instr(smaxv))]13323#[cfg_attr(test, assert_instr(smaxv))]
13519pub fn vmaxvq_s32(a: int32x4_t) -> i32 {13324pub fn vmaxvq_s32(a: int32x4_t) -> i32 {
13520 unsafe extern "unadjusted" {13325 unsafe { simd_reduce_max(a) }
13521 #[cfg_attr(
13522 any(target_arch = "aarch64", target_arch = "arm64ec"),
13523 link_name = "llvm.aarch64.neon.smaxv.i32.v4i32"
13524 )]
13525 fn _vmaxvq_s32(a: int32x4_t) -> i32;
13526 }
13527 unsafe { _vmaxvq_s32(a) }
13528}13326}
13529#[doc = "Horizontal vector max."]13327#[doc = "Horizontal vector max."]
13530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u8)"]13328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u8)"]
...@@ -13533,14 +13331,7 @@ pub fn vmaxvq_s32(a: int32x4_t) -> i32 {...@@ -13533,14 +13331,7 @@ pub fn vmaxvq_s32(a: int32x4_t) -> i32 {
13533#[stable(feature = "neon_intrinsics", since = "1.59.0")]13331#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13534#[cfg_attr(test, assert_instr(umaxv))]13332#[cfg_attr(test, assert_instr(umaxv))]
13535pub fn vmaxv_u8(a: uint8x8_t) -> u8 {13333pub fn vmaxv_u8(a: uint8x8_t) -> u8 {
13536 unsafe extern "unadjusted" {13334 unsafe { simd_reduce_max(a) }
13537 #[cfg_attr(
13538 any(target_arch = "aarch64", target_arch = "arm64ec"),
13539 link_name = "llvm.aarch64.neon.umaxv.i8.v8i8"
13540 )]
13541 fn _vmaxv_u8(a: uint8x8_t) -> u8;
13542 }
13543 unsafe { _vmaxv_u8(a) }
13544}13335}
13545#[doc = "Horizontal vector max."]13336#[doc = "Horizontal vector max."]
13546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u8)"]13337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u8)"]
...@@ -13549,14 +13340,7 @@ pub fn vmaxv_u8(a: uint8x8_t) -> u8 {...@@ -13549,14 +13340,7 @@ pub fn vmaxv_u8(a: uint8x8_t) -> u8 {
13549#[stable(feature = "neon_intrinsics", since = "1.59.0")]13340#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13550#[cfg_attr(test, assert_instr(umaxv))]13341#[cfg_attr(test, assert_instr(umaxv))]
13551pub fn vmaxvq_u8(a: uint8x16_t) -> u8 {13342pub fn vmaxvq_u8(a: uint8x16_t) -> u8 {
13552 unsafe extern "unadjusted" {13343 unsafe { simd_reduce_max(a) }
13553 #[cfg_attr(
13554 any(target_arch = "aarch64", target_arch = "arm64ec"),
13555 link_name = "llvm.aarch64.neon.umaxv.i8.v16i8"
13556 )]
13557 fn _vmaxvq_u8(a: uint8x16_t) -> u8;
13558 }
13559 unsafe { _vmaxvq_u8(a) }
13560}13344}
13561#[doc = "Horizontal vector max."]13345#[doc = "Horizontal vector max."]
13562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u16)"]13346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u16)"]
...@@ -13565,14 +13349,7 @@ pub fn vmaxvq_u8(a: uint8x16_t) -> u8 {...@@ -13565,14 +13349,7 @@ pub fn vmaxvq_u8(a: uint8x16_t) -> u8 {
13565#[stable(feature = "neon_intrinsics", since = "1.59.0")]13349#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13566#[cfg_attr(test, assert_instr(umaxv))]13350#[cfg_attr(test, assert_instr(umaxv))]
13567pub fn vmaxv_u16(a: uint16x4_t) -> u16 {13351pub fn vmaxv_u16(a: uint16x4_t) -> u16 {
13568 unsafe extern "unadjusted" {13352 unsafe { simd_reduce_max(a) }
13569 #[cfg_attr(
13570 any(target_arch = "aarch64", target_arch = "arm64ec"),
13571 link_name = "llvm.aarch64.neon.umaxv.i16.v4i16"
13572 )]
13573 fn _vmaxv_u16(a: uint16x4_t) -> u16;
13574 }
13575 unsafe { _vmaxv_u16(a) }
13576}13353}
13577#[doc = "Horizontal vector max."]13354#[doc = "Horizontal vector max."]
13578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u16)"]13355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u16)"]
...@@ -13581,14 +13358,7 @@ pub fn vmaxv_u16(a: uint16x4_t) -> u16 {...@@ -13581,14 +13358,7 @@ pub fn vmaxv_u16(a: uint16x4_t) -> u16 {
13581#[stable(feature = "neon_intrinsics", since = "1.59.0")]13358#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13582#[cfg_attr(test, assert_instr(umaxv))]13359#[cfg_attr(test, assert_instr(umaxv))]
13583pub fn vmaxvq_u16(a: uint16x8_t) -> u16 {13360pub fn vmaxvq_u16(a: uint16x8_t) -> u16 {
13584 unsafe extern "unadjusted" {13361 unsafe { simd_reduce_max(a) }
13585 #[cfg_attr(
13586 any(target_arch = "aarch64", target_arch = "arm64ec"),
13587 link_name = "llvm.aarch64.neon.umaxv.i16.v8i16"
13588 )]
13589 fn _vmaxvq_u16(a: uint16x8_t) -> u16;
13590 }
13591 unsafe { _vmaxvq_u16(a) }
13592}13362}
13593#[doc = "Horizontal vector max."]13363#[doc = "Horizontal vector max."]
13594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u32)"]13364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u32)"]
...@@ -13597,14 +13367,7 @@ pub fn vmaxvq_u16(a: uint16x8_t) -> u16 {...@@ -13597,14 +13367,7 @@ pub fn vmaxvq_u16(a: uint16x8_t) -> u16 {
13597#[stable(feature = "neon_intrinsics", since = "1.59.0")]13367#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13598#[cfg_attr(test, assert_instr(umaxp))]13368#[cfg_attr(test, assert_instr(umaxp))]
13599pub fn vmaxv_u32(a: uint32x2_t) -> u32 {13369pub fn vmaxv_u32(a: uint32x2_t) -> u32 {
13600 unsafe extern "unadjusted" {13370 unsafe { simd_reduce_max(a) }
13601 #[cfg_attr(
13602 any(target_arch = "aarch64", target_arch = "arm64ec"),
13603 link_name = "llvm.aarch64.neon.umaxv.i32.v2i32"
13604 )]
13605 fn _vmaxv_u32(a: uint32x2_t) -> u32;
13606 }
13607 unsafe { _vmaxv_u32(a) }
13608}13371}
13609#[doc = "Horizontal vector max."]13372#[doc = "Horizontal vector max."]
13610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u32)"]13373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u32)"]
...@@ -13613,14 +13376,7 @@ pub fn vmaxv_u32(a: uint32x2_t) -> u32 {...@@ -13613,14 +13376,7 @@ pub fn vmaxv_u32(a: uint32x2_t) -> u32 {
13613#[stable(feature = "neon_intrinsics", since = "1.59.0")]13376#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13614#[cfg_attr(test, assert_instr(umaxv))]13377#[cfg_attr(test, assert_instr(umaxv))]
13615pub fn vmaxvq_u32(a: uint32x4_t) -> u32 {13378pub fn vmaxvq_u32(a: uint32x4_t) -> u32 {
13616 unsafe extern "unadjusted" {13379 unsafe { simd_reduce_max(a) }
13617 #[cfg_attr(
13618 any(target_arch = "aarch64", target_arch = "arm64ec"),
13619 link_name = "llvm.aarch64.neon.umaxv.i32.v4i32"
13620 )]
13621 fn _vmaxvq_u32(a: uint32x4_t) -> u32;
13622 }
13623 unsafe { _vmaxvq_u32(a) }
13624}13380}
13625#[doc = "Minimum (vector)"]13381#[doc = "Minimum (vector)"]
13626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f64)"]13382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f64)"]
...@@ -13677,14 +13433,7 @@ pub fn vminh_f16(a: f16, b: f16) -> f16 {...@@ -13677,14 +13433,7 @@ pub fn vminh_f16(a: f16, b: f16) -> f16 {
13677#[stable(feature = "neon_intrinsics", since = "1.59.0")]13433#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13678#[cfg_attr(test, assert_instr(fminnm))]13434#[cfg_attr(test, assert_instr(fminnm))]
13679pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {13435pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
13680 unsafe extern "unadjusted" {13436 unsafe { simd_fmin(a, b) }
13681 #[cfg_attr(
13682 any(target_arch = "aarch64", target_arch = "arm64ec"),
13683 link_name = "llvm.aarch64.neon.fminnm.v1f64"
13684 )]
13685 fn _vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t;
13686 }
13687 unsafe { _vminnm_f64(a, b) }
13688}13437}
13689#[doc = "Floating-point Minimum Number (vector)"]13438#[doc = "Floating-point Minimum Number (vector)"]
13690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f64)"]13439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f64)"]
...@@ -13693,14 +13442,7 @@ pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {...@@ -13693,14 +13442,7 @@ pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
13693#[stable(feature = "neon_intrinsics", since = "1.59.0")]13442#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13694#[cfg_attr(test, assert_instr(fminnm))]13443#[cfg_attr(test, assert_instr(fminnm))]
13695pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {13444pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
13696 unsafe extern "unadjusted" {13445 unsafe { simd_fmin(a, b) }
13697 #[cfg_attr(
13698 any(target_arch = "aarch64", target_arch = "arm64ec"),
13699 link_name = "llvm.aarch64.neon.fminnm.v2f64"
13700 )]
13701 fn _vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t;
13702 }
13703 unsafe { _vminnmq_f64(a, b) }
13704}13446}
13705#[doc = "Floating-point Minimum Number"]13447#[doc = "Floating-point Minimum Number"]
13706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmh_f16)"]13448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmh_f16)"]
...@@ -13709,14 +13451,7 @@ pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {...@@ -13709,14 +13451,7 @@ pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
13709#[unstable(feature = "stdarch_neon_f16", issue = "136306")]13451#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13710#[cfg_attr(test, assert_instr(fminnm))]13452#[cfg_attr(test, assert_instr(fminnm))]
13711pub fn vminnmh_f16(a: f16, b: f16) -> f16 {13453pub fn vminnmh_f16(a: f16, b: f16) -> f16 {
13712 unsafe extern "unadjusted" {13454 f16::min(a, b)
13713 #[cfg_attr(
13714 any(target_arch = "aarch64", target_arch = "arm64ec"),
13715 link_name = "llvm.aarch64.neon.fminnm.f16"
13716 )]
13717 fn _vminnmh_f16(a: f16, b: f16) -> f16;
13718 }
13719 unsafe { _vminnmh_f16(a, b) }
13720}13455}
13721#[doc = "Floating-point minimum number across vector"]13456#[doc = "Floating-point minimum number across vector"]
13722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f16)"]13457#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f16)"]
...@@ -13725,14 +13460,7 @@ pub fn vminnmh_f16(a: f16, b: f16) -> f16 {...@@ -13725,14 +13460,7 @@ pub fn vminnmh_f16(a: f16, b: f16) -> f16 {
13725#[unstable(feature = "stdarch_neon_f16", issue = "136306")]13460#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13726#[cfg_attr(test, assert_instr(fminnmv))]13461#[cfg_attr(test, assert_instr(fminnmv))]
13727pub fn vminnmv_f16(a: float16x4_t) -> f16 {13462pub fn vminnmv_f16(a: float16x4_t) -> f16 {
13728 unsafe extern "unadjusted" {13463 unsafe { simd_reduce_min(a) }
13729 #[cfg_attr(
13730 any(target_arch = "aarch64", target_arch = "arm64ec"),
13731 link_name = "llvm.aarch64.neon.fminnmv.f16.v4f16"
13732 )]
13733 fn _vminnmv_f16(a: float16x4_t) -> f16;
13734 }
13735 unsafe { _vminnmv_f16(a) }
13736}13464}
13737#[doc = "Floating-point minimum number across vector"]13465#[doc = "Floating-point minimum number across vector"]
13738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f16)"]13466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f16)"]
...@@ -13741,14 +13469,7 @@ pub fn vminnmv_f16(a: float16x4_t) -> f16 {...@@ -13741,14 +13469,7 @@ pub fn vminnmv_f16(a: float16x4_t) -> f16 {
13741#[unstable(feature = "stdarch_neon_f16", issue = "136306")]13469#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13742#[cfg_attr(test, assert_instr(fminnmv))]13470#[cfg_attr(test, assert_instr(fminnmv))]
13743pub fn vminnmvq_f16(a: float16x8_t) -> f16 {13471pub fn vminnmvq_f16(a: float16x8_t) -> f16 {
13744 unsafe extern "unadjusted" {13472 unsafe { simd_reduce_min(a) }
13745 #[cfg_attr(
13746 any(target_arch = "aarch64", target_arch = "arm64ec"),
13747 link_name = "llvm.aarch64.neon.fminnmv.f16.v8f16"
13748 )]
13749 fn _vminnmvq_f16(a: float16x8_t) -> f16;
13750 }
13751 unsafe { _vminnmvq_f16(a) }
13752}13473}
13753#[doc = "Floating-point minimum number across vector"]13474#[doc = "Floating-point minimum number across vector"]
13754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f32)"]13475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f32)"]
...@@ -13757,14 +13478,7 @@ pub fn vminnmvq_f16(a: float16x8_t) -> f16 {...@@ -13757,14 +13478,7 @@ pub fn vminnmvq_f16(a: float16x8_t) -> f16 {
13757#[cfg_attr(test, assert_instr(fminnmp))]13478#[cfg_attr(test, assert_instr(fminnmp))]
13758#[stable(feature = "neon_intrinsics", since = "1.59.0")]13479#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13759pub fn vminnmv_f32(a: float32x2_t) -> f32 {13480pub fn vminnmv_f32(a: float32x2_t) -> f32 {
13760 unsafe extern "unadjusted" {13481 unsafe { simd_reduce_min(a) }
13761 #[cfg_attr(
13762 any(target_arch = "aarch64", target_arch = "arm64ec"),
13763 link_name = "llvm.aarch64.neon.fminnmv.f32.v2f32"
13764 )]
13765 fn _vminnmv_f32(a: float32x2_t) -> f32;
13766 }
13767 unsafe { _vminnmv_f32(a) }
13768}13482}
13769#[doc = "Floating-point minimum number across vector"]13483#[doc = "Floating-point minimum number across vector"]
13770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f64)"]13484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f64)"]
...@@ -13773,14 +13487,7 @@ pub fn vminnmv_f32(a: float32x2_t) -> f32 {...@@ -13773,14 +13487,7 @@ pub fn vminnmv_f32(a: float32x2_t) -> f32 {
13773#[cfg_attr(test, assert_instr(fminnmp))]13487#[cfg_attr(test, assert_instr(fminnmp))]
13774#[stable(feature = "neon_intrinsics", since = "1.59.0")]13488#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13775pub fn vminnmvq_f64(a: float64x2_t) -> f64 {13489pub fn vminnmvq_f64(a: float64x2_t) -> f64 {
13776 unsafe extern "unadjusted" {13490 unsafe { simd_reduce_min(a) }
13777 #[cfg_attr(
13778 any(target_arch = "aarch64", target_arch = "arm64ec"),
13779 link_name = "llvm.aarch64.neon.fminnmv.f64.v2f64"
13780 )]
13781 fn _vminnmvq_f64(a: float64x2_t) -> f64;
13782 }
13783 unsafe { _vminnmvq_f64(a) }
13784}13491}
13785#[doc = "Floating-point minimum number across vector"]13492#[doc = "Floating-point minimum number across vector"]
13786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f32)"]13493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f32)"]
...@@ -13789,14 +13496,7 @@ pub fn vminnmvq_f64(a: float64x2_t) -> f64 {...@@ -13789,14 +13496,7 @@ pub fn vminnmvq_f64(a: float64x2_t) -> f64 {
13789#[cfg_attr(test, assert_instr(fminnmv))]13496#[cfg_attr(test, assert_instr(fminnmv))]
13790#[stable(feature = "neon_intrinsics", since = "1.59.0")]13497#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13791pub fn vminnmvq_f32(a: float32x4_t) -> f32 {13498pub fn vminnmvq_f32(a: float32x4_t) -> f32 {
13792 unsafe extern "unadjusted" {13499 unsafe { simd_reduce_min(a) }
13793 #[cfg_attr(
13794 any(target_arch = "aarch64", target_arch = "arm64ec"),
13795 link_name = "llvm.aarch64.neon.fminnmv.f32.v4f32"
13796 )]
13797 fn _vminnmvq_f32(a: float32x4_t) -> f32;
13798 }
13799 unsafe { _vminnmvq_f32(a) }
13800}13500}
13801#[doc = "Floating-point minimum number across vector"]13501#[doc = "Floating-point minimum number across vector"]
13802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_f16)"]13502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_f16)"]
...@@ -13885,14 +13585,7 @@ pub fn vminvq_f64(a: float64x2_t) -> f64 {...@@ -13885,14 +13585,7 @@ pub fn vminvq_f64(a: float64x2_t) -> f64 {
13885#[stable(feature = "neon_intrinsics", since = "1.59.0")]13585#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13886#[cfg_attr(test, assert_instr(sminv))]13586#[cfg_attr(test, assert_instr(sminv))]
13887pub fn vminv_s8(a: int8x8_t) -> i8 {13587pub fn vminv_s8(a: int8x8_t) -> i8 {
13888 unsafe extern "unadjusted" {13588 unsafe { simd_reduce_min(a) }
13889 #[cfg_attr(
13890 any(target_arch = "aarch64", target_arch = "arm64ec"),
13891 link_name = "llvm.aarch64.neon.sminv.i8.v8i8"
13892 )]
13893 fn _vminv_s8(a: int8x8_t) -> i8;
13894 }
13895 unsafe { _vminv_s8(a) }
13896}13589}
13897#[doc = "Horizontal vector min."]13590#[doc = "Horizontal vector min."]
13898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s8)"]13591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s8)"]
...@@ -13901,14 +13594,7 @@ pub fn vminv_s8(a: int8x8_t) -> i8 {...@@ -13901,14 +13594,7 @@ pub fn vminv_s8(a: int8x8_t) -> i8 {
13901#[stable(feature = "neon_intrinsics", since = "1.59.0")]13594#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13902#[cfg_attr(test, assert_instr(sminv))]13595#[cfg_attr(test, assert_instr(sminv))]
13903pub fn vminvq_s8(a: int8x16_t) -> i8 {13596pub fn vminvq_s8(a: int8x16_t) -> i8 {
13904 unsafe extern "unadjusted" {13597 unsafe { simd_reduce_min(a) }
13905 #[cfg_attr(
13906 any(target_arch = "aarch64", target_arch = "arm64ec"),
13907 link_name = "llvm.aarch64.neon.sminv.i8.v16i8"
13908 )]
13909 fn _vminvq_s8(a: int8x16_t) -> i8;
13910 }
13911 unsafe { _vminvq_s8(a) }
13912}13598}
13913#[doc = "Horizontal vector min."]13599#[doc = "Horizontal vector min."]
13914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_s16)"]13600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_s16)"]
...@@ -13917,14 +13603,7 @@ pub fn vminvq_s8(a: int8x16_t) -> i8 {...@@ -13917,14 +13603,7 @@ pub fn vminvq_s8(a: int8x16_t) -> i8 {
13917#[stable(feature = "neon_intrinsics", since = "1.59.0")]13603#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13918#[cfg_attr(test, assert_instr(sminv))]13604#[cfg_attr(test, assert_instr(sminv))]
13919pub fn vminv_s16(a: int16x4_t) -> i16 {13605pub fn vminv_s16(a: int16x4_t) -> i16 {
13920 unsafe extern "unadjusted" {13606 unsafe { simd_reduce_min(a) }
13921 #[cfg_attr(
13922 any(target_arch = "aarch64", target_arch = "arm64ec"),
13923 link_name = "llvm.aarch64.neon.sminv.i16.v4i16"
13924 )]
13925 fn _vminv_s16(a: int16x4_t) -> i16;
13926 }
13927 unsafe { _vminv_s16(a) }
13928}13607}
13929#[doc = "Horizontal vector min."]13608#[doc = "Horizontal vector min."]
13930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s16)"]13609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s16)"]
...@@ -13933,14 +13612,7 @@ pub fn vminv_s16(a: int16x4_t) -> i16 {...@@ -13933,14 +13612,7 @@ pub fn vminv_s16(a: int16x4_t) -> i16 {
13933#[stable(feature = "neon_intrinsics", since = "1.59.0")]13612#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13934#[cfg_attr(test, assert_instr(sminv))]13613#[cfg_attr(test, assert_instr(sminv))]
13935pub fn vminvq_s16(a: int16x8_t) -> i16 {13614pub fn vminvq_s16(a: int16x8_t) -> i16 {
13936 unsafe extern "unadjusted" {13615 unsafe { simd_reduce_min(a) }
13937 #[cfg_attr(
13938 any(target_arch = "aarch64", target_arch = "arm64ec"),
13939 link_name = "llvm.aarch64.neon.sminv.i16.v8i16"
13940 )]
13941 fn _vminvq_s16(a: int16x8_t) -> i16;
13942 }
13943 unsafe { _vminvq_s16(a) }
13944}13616}
13945#[doc = "Horizontal vector min."]13617#[doc = "Horizontal vector min."]
13946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_s32)"]13618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_s32)"]
...@@ -13949,14 +13621,7 @@ pub fn vminvq_s16(a: int16x8_t) -> i16 {...@@ -13949,14 +13621,7 @@ pub fn vminvq_s16(a: int16x8_t) -> i16 {
13949#[stable(feature = "neon_intrinsics", since = "1.59.0")]13621#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13950#[cfg_attr(test, assert_instr(sminp))]13622#[cfg_attr(test, assert_instr(sminp))]
13951pub fn vminv_s32(a: int32x2_t) -> i32 {13623pub fn vminv_s32(a: int32x2_t) -> i32 {
13952 unsafe extern "unadjusted" {13624 unsafe { simd_reduce_min(a) }
13953 #[cfg_attr(
13954 any(target_arch = "aarch64", target_arch = "arm64ec"),
13955 link_name = "llvm.aarch64.neon.sminv.i32.v2i32"
13956 )]
13957 fn _vminv_s32(a: int32x2_t) -> i32;
13958 }
13959 unsafe { _vminv_s32(a) }
13960}13625}
13961#[doc = "Horizontal vector min."]13626#[doc = "Horizontal vector min."]
13962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s32)"]13627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s32)"]
...@@ -13965,14 +13630,7 @@ pub fn vminv_s32(a: int32x2_t) -> i32 {...@@ -13965,14 +13630,7 @@ pub fn vminv_s32(a: int32x2_t) -> i32 {
13965#[stable(feature = "neon_intrinsics", since = "1.59.0")]13630#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13966#[cfg_attr(test, assert_instr(sminv))]13631#[cfg_attr(test, assert_instr(sminv))]
13967pub fn vminvq_s32(a: int32x4_t) -> i32 {13632pub fn vminvq_s32(a: int32x4_t) -> i32 {
13968 unsafe extern "unadjusted" {13633 unsafe { simd_reduce_min(a) }
13969 #[cfg_attr(
13970 any(target_arch = "aarch64", target_arch = "arm64ec"),
13971 link_name = "llvm.aarch64.neon.sminv.i32.v4i32"
13972 )]
13973 fn _vminvq_s32(a: int32x4_t) -> i32;
13974 }
13975 unsafe { _vminvq_s32(a) }
13976}13634}
13977#[doc = "Horizontal vector min."]13635#[doc = "Horizontal vector min."]
13978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u8)"]13636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u8)"]
...@@ -13981,14 +13639,7 @@ pub fn vminvq_s32(a: int32x4_t) -> i32 {...@@ -13981,14 +13639,7 @@ pub fn vminvq_s32(a: int32x4_t) -> i32 {
13981#[stable(feature = "neon_intrinsics", since = "1.59.0")]13639#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13982#[cfg_attr(test, assert_instr(uminv))]13640#[cfg_attr(test, assert_instr(uminv))]
13983pub fn vminv_u8(a: uint8x8_t) -> u8 {13641pub fn vminv_u8(a: uint8x8_t) -> u8 {
13984 unsafe extern "unadjusted" {13642 unsafe { simd_reduce_min(a) }
13985 #[cfg_attr(
13986 any(target_arch = "aarch64", target_arch = "arm64ec"),
13987 link_name = "llvm.aarch64.neon.uminv.i8.v8i8"
13988 )]
13989 fn _vminv_u8(a: uint8x8_t) -> u8;
13990 }
13991 unsafe { _vminv_u8(a) }
13992}13643}
13993#[doc = "Horizontal vector min."]13644#[doc = "Horizontal vector min."]
13994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u8)"]13645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u8)"]
...@@ -13997,14 +13648,7 @@ pub fn vminv_u8(a: uint8x8_t) -> u8 {...@@ -13997,14 +13648,7 @@ pub fn vminv_u8(a: uint8x8_t) -> u8 {
13997#[stable(feature = "neon_intrinsics", since = "1.59.0")]13648#[stable(feature = "neon_intrinsics", since = "1.59.0")]
13998#[cfg_attr(test, assert_instr(uminv))]13649#[cfg_attr(test, assert_instr(uminv))]
13999pub fn vminvq_u8(a: uint8x16_t) -> u8 {13650pub fn vminvq_u8(a: uint8x16_t) -> u8 {
14000 unsafe extern "unadjusted" {13651 unsafe { simd_reduce_min(a) }
14001 #[cfg_attr(
14002 any(target_arch = "aarch64", target_arch = "arm64ec"),
14003 link_name = "llvm.aarch64.neon.uminv.i8.v16i8"
14004 )]
14005 fn _vminvq_u8(a: uint8x16_t) -> u8;
14006 }
14007 unsafe { _vminvq_u8(a) }
14008}13652}
14009#[doc = "Horizontal vector min."]13653#[doc = "Horizontal vector min."]
14010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u16)"]13654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u16)"]
...@@ -14013,14 +13657,7 @@ pub fn vminvq_u8(a: uint8x16_t) -> u8 {...@@ -14013,14 +13657,7 @@ pub fn vminvq_u8(a: uint8x16_t) -> u8 {
14013#[stable(feature = "neon_intrinsics", since = "1.59.0")]13657#[stable(feature = "neon_intrinsics", since = "1.59.0")]
14014#[cfg_attr(test, assert_instr(uminv))]13658#[cfg_attr(test, assert_instr(uminv))]
14015pub fn vminv_u16(a: uint16x4_t) -> u16 {13659pub fn vminv_u16(a: uint16x4_t) -> u16 {
14016 unsafe extern "unadjusted" {13660 unsafe { simd_reduce_min(a) }
14017 #[cfg_attr(
14018 any(target_arch = "aarch64", target_arch = "arm64ec"),
14019 link_name = "llvm.aarch64.neon.uminv.i16.v4i16"
14020 )]
14021 fn _vminv_u16(a: uint16x4_t) -> u16;
14022 }
14023 unsafe { _vminv_u16(a) }
14024}13661}
14025#[doc = "Horizontal vector min."]13662#[doc = "Horizontal vector min."]
14026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u16)"]13663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u16)"]
...@@ -14029,14 +13666,7 @@ pub fn vminv_u16(a: uint16x4_t) -> u16 {...@@ -14029,14 +13666,7 @@ pub fn vminv_u16(a: uint16x4_t) -> u16 {
14029#[stable(feature = "neon_intrinsics", since = "1.59.0")]13666#[stable(feature = "neon_intrinsics", since = "1.59.0")]
14030#[cfg_attr(test, assert_instr(uminv))]13667#[cfg_attr(test, assert_instr(uminv))]
14031pub fn vminvq_u16(a: uint16x8_t) -> u16 {13668pub fn vminvq_u16(a: uint16x8_t) -> u16 {
14032 unsafe extern "unadjusted" {13669 unsafe { simd_reduce_min(a) }
14033 #[cfg_attr(
14034 any(target_arch = "aarch64", target_arch = "arm64ec"),
14035 link_name = "llvm.aarch64.neon.uminv.i16.v8i16"
14036 )]
14037 fn _vminvq_u16(a: uint16x8_t) -> u16;
14038 }
14039 unsafe { _vminvq_u16(a) }
14040}13670}
14041#[doc = "Horizontal vector min."]13671#[doc = "Horizontal vector min."]
14042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u32)"]13672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u32)"]
...@@ -14045,14 +13675,7 @@ pub fn vminvq_u16(a: uint16x8_t) -> u16 {...@@ -14045,14 +13675,7 @@ pub fn vminvq_u16(a: uint16x8_t) -> u16 {
14045#[stable(feature = "neon_intrinsics", since = "1.59.0")]13675#[stable(feature = "neon_intrinsics", since = "1.59.0")]
14046#[cfg_attr(test, assert_instr(uminp))]13676#[cfg_attr(test, assert_instr(uminp))]
14047pub fn vminv_u32(a: uint32x2_t) -> u32 {13677pub fn vminv_u32(a: uint32x2_t) -> u32 {
14048 unsafe extern "unadjusted" {13678 unsafe { simd_reduce_min(a) }
14049 #[cfg_attr(
14050 any(target_arch = "aarch64", target_arch = "arm64ec"),
14051 link_name = "llvm.aarch64.neon.uminv.i32.v2i32"
14052 )]
14053 fn _vminv_u32(a: uint32x2_t) -> u32;
14054 }
14055 unsafe { _vminv_u32(a) }
14056}13679}
14057#[doc = "Horizontal vector min."]13680#[doc = "Horizontal vector min."]
14058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u32)"]13681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u32)"]
...@@ -14061,14 +13684,7 @@ pub fn vminv_u32(a: uint32x2_t) -> u32 {...@@ -14061,14 +13684,7 @@ pub fn vminv_u32(a: uint32x2_t) -> u32 {
14061#[stable(feature = "neon_intrinsics", since = "1.59.0")]13684#[stable(feature = "neon_intrinsics", since = "1.59.0")]
14062#[cfg_attr(test, assert_instr(uminv))]13685#[cfg_attr(test, assert_instr(uminv))]
14063pub fn vminvq_u32(a: uint32x4_t) -> u32 {13686pub fn vminvq_u32(a: uint32x4_t) -> u32 {
14064 unsafe extern "unadjusted" {13687 unsafe { simd_reduce_min(a) }
14065 #[cfg_attr(
14066 any(target_arch = "aarch64", target_arch = "arm64ec"),
14067 link_name = "llvm.aarch64.neon.uminv.i32.v4i32"
14068 )]
14069 fn _vminvq_u32(a: uint32x4_t) -> u32;
14070 }
14071 unsafe { _vminvq_u32(a) }
14072}13688}
14073#[doc = "Floating-point multiply-add to accumulator"]13689#[doc = "Floating-point multiply-add to accumulator"]
14074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f64)"]13690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f64)"]
...@@ -15277,7 +14893,7 @@ pub fn vmull_high_n_u32(a: uint32x4_t, b: u32) -> uint64x2_t {...@@ -15277,7 +14893,7 @@ pub fn vmull_high_n_u32(a: uint32x4_t, b: u32) -> uint64x2_t {
15277#[inline]14893#[inline]
15278#[target_feature(enable = "neon,aes")]14894#[target_feature(enable = "neon,aes")]
15279#[stable(feature = "neon_intrinsics", since = "1.59.0")]14895#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15280#[cfg_attr(test, assert_instr(pmull))]14896#[cfg_attr(test, assert_instr(pmull2))]
15281pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {14897pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
15282 unsafe { vmull_p64(simd_extract!(a, 1), simd_extract!(b, 1)) }14898 unsafe { vmull_p64(simd_extract!(a, 1), simd_extract!(b, 1)) }
15283}14899}
...@@ -15286,7 +14902,7 @@ pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {...@@ -15286,7 +14902,7 @@ pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
15286#[inline]14902#[inline]
15287#[target_feature(enable = "neon")]14903#[target_feature(enable = "neon")]
15288#[stable(feature = "neon_intrinsics", since = "1.59.0")]14904#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15289#[cfg_attr(test, assert_instr(pmull))]14905#[cfg_attr(test, assert_instr(pmull2))]
15290pub fn vmull_high_p8(a: poly8x16_t, b: poly8x16_t) -> poly16x8_t {14906pub fn vmull_high_p8(a: poly8x16_t, b: poly8x16_t) -> poly16x8_t {
15291 unsafe {14907 unsafe {
15292 let a: poly8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);14908 let a: poly8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -15951,23 +15567,11 @@ pub fn vpadds_f32(a: float32x2_t) -> f32 {...@@ -15951,23 +15567,11 @@ pub fn vpadds_f32(a: float32x2_t) -> f32 {
15951#[doc = "Add pairwise"]15567#[doc = "Add pairwise"]
15952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]15568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]
15953#[inline]15569#[inline]
15954#[cfg(target_endian = "little")]
15955#[target_feature(enable = "neon")]15570#[target_feature(enable = "neon")]
15956#[stable(feature = "neon_intrinsics", since = "1.59.0")]15571#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15957#[cfg_attr(test, assert_instr(addp))]15572#[cfg_attr(test, assert_instr(addp))]
15958pub fn vpaddd_s64(a: int64x2_t) -> i64 {15573pub fn vpaddd_s64(a: int64x2_t) -> i64 {
15959 unsafe { transmute(vaddvq_u64(transmute(a))) }15574 unsafe { simd_reduce_add_unordered(a) }
15960}
15961#[doc = "Add pairwise"]
15962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]
15963#[inline]
15964#[cfg(target_endian = "big")]
15965#[target_feature(enable = "neon")]
15966#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15967#[cfg_attr(test, assert_instr(addp))]
15968pub fn vpaddd_s64(a: int64x2_t) -> i64 {
15969 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
15970 unsafe { transmute(vaddvq_u64(transmute(a))) }
15971}15575}
15972#[doc = "Add pairwise"]15576#[doc = "Add pairwise"]
15973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_u64)"]15577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_u64)"]
...@@ -15976,7 +15580,7 @@ pub fn vpaddd_s64(a: int64x2_t) -> i64 {...@@ -15976,7 +15580,7 @@ pub fn vpaddd_s64(a: int64x2_t) -> i64 {
15976#[stable(feature = "neon_intrinsics", since = "1.59.0")]15580#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15977#[cfg_attr(test, assert_instr(addp))]15581#[cfg_attr(test, assert_instr(addp))]
15978pub fn vpaddd_u64(a: uint64x2_t) -> u64 {15582pub fn vpaddd_u64(a: uint64x2_t) -> u64 {
15979 vaddvq_u64(a)15583 unsafe { simd_reduce_add_unordered(a) }
15980}15584}
15981#[doc = "Floating-point add pairwise"]15585#[doc = "Floating-point add pairwise"]
15982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddq_f16)"]15586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddq_f16)"]
...@@ -26893,7 +26497,7 @@ pub fn vsubh_f16(a: f16, b: f16) -> f16 {...@@ -26893,7 +26497,7 @@ pub fn vsubh_f16(a: f16, b: f16) -> f16 {
26893#[inline]26497#[inline]
26894#[target_feature(enable = "neon")]26498#[target_feature(enable = "neon")]
26895#[stable(feature = "neon_intrinsics", since = "1.59.0")]26499#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26896#[cfg_attr(test, assert_instr(ssubl))]26500#[cfg_attr(test, assert_instr(ssubl2))]
26897pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {26501pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
26898 unsafe {26502 unsafe {
26899 let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);26503 let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -26908,7 +26512,7 @@ pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {...@@ -26908,7 +26512,7 @@ pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
26908#[inline]26512#[inline]
26909#[target_feature(enable = "neon")]26513#[target_feature(enable = "neon")]
26910#[stable(feature = "neon_intrinsics", since = "1.59.0")]26514#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26911#[cfg_attr(test, assert_instr(ssubl))]26515#[cfg_attr(test, assert_instr(ssubl2))]
26912pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {26516pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
26913 unsafe {26517 unsafe {
26914 let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);26518 let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
...@@ -26923,7 +26527,7 @@ pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {...@@ -26923,7 +26527,7 @@ pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
26923#[inline]26527#[inline]
26924#[target_feature(enable = "neon")]26528#[target_feature(enable = "neon")]
26925#[stable(feature = "neon_intrinsics", since = "1.59.0")]26529#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26926#[cfg_attr(test, assert_instr(ssubl))]26530#[cfg_attr(test, assert_instr(ssubl2))]
26927pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {26531pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
26928 unsafe {26532 unsafe {
26929 let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);26533 let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
...@@ -26938,7 +26542,7 @@ pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {...@@ -26938,7 +26542,7 @@ pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
26938#[inline]26542#[inline]
26939#[target_feature(enable = "neon")]26543#[target_feature(enable = "neon")]
26940#[stable(feature = "neon_intrinsics", since = "1.59.0")]26544#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26941#[cfg_attr(test, assert_instr(usubl))]26545#[cfg_attr(test, assert_instr(usubl2))]
26942pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {26546pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
26943 unsafe {26547 unsafe {
26944 let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);26548 let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -26953,7 +26557,7 @@ pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {...@@ -26953,7 +26557,7 @@ pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
26953#[inline]26557#[inline]
26954#[target_feature(enable = "neon")]26558#[target_feature(enable = "neon")]
26955#[stable(feature = "neon_intrinsics", since = "1.59.0")]26559#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26956#[cfg_attr(test, assert_instr(usubl))]26560#[cfg_attr(test, assert_instr(usubl2))]
26957pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {26561pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
26958 unsafe {26562 unsafe {
26959 let c: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);26563 let c: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
...@@ -26968,7 +26572,7 @@ pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {...@@ -26968,7 +26572,7 @@ pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
26968#[inline]26572#[inline]
26969#[target_feature(enable = "neon")]26573#[target_feature(enable = "neon")]
26970#[stable(feature = "neon_intrinsics", since = "1.59.0")]26574#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26971#[cfg_attr(test, assert_instr(usubl))]26575#[cfg_attr(test, assert_instr(usubl2))]
26972pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {26576pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
26973 unsafe {26577 unsafe {
26974 let c: uint32x2_t = simd_shuffle!(a, a, [2, 3]);26578 let c: uint32x2_t = simd_shuffle!(a, a, [2, 3]);
...@@ -26983,7 +26587,7 @@ pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {...@@ -26983,7 +26587,7 @@ pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
26983#[inline]26587#[inline]
26984#[target_feature(enable = "neon")]26588#[target_feature(enable = "neon")]
26985#[stable(feature = "neon_intrinsics", since = "1.59.0")]26589#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26986#[cfg_attr(test, assert_instr(ssubw))]26590#[cfg_attr(test, assert_instr(ssubw2))]
26987pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {26591pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
26988 unsafe {26592 unsafe {
26989 let c: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);26593 let c: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -26995,7 +26599,7 @@ pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {...@@ -26995,7 +26599,7 @@ pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
26995#[inline]26599#[inline]
26996#[target_feature(enable = "neon")]26600#[target_feature(enable = "neon")]
26997#[stable(feature = "neon_intrinsics", since = "1.59.0")]26601#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26998#[cfg_attr(test, assert_instr(ssubw))]26602#[cfg_attr(test, assert_instr(ssubw2))]
26999pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {26603pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
27000 unsafe {26604 unsafe {
27001 let c: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);26605 let c: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
...@@ -27007,7 +26611,7 @@ pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {...@@ -27007,7 +26611,7 @@ pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
27007#[inline]26611#[inline]
27008#[target_feature(enable = "neon")]26612#[target_feature(enable = "neon")]
27009#[stable(feature = "neon_intrinsics", since = "1.59.0")]26613#[stable(feature = "neon_intrinsics", since = "1.59.0")]
27010#[cfg_attr(test, assert_instr(ssubw))]26614#[cfg_attr(test, assert_instr(ssubw2))]
27011pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {26615pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
27012 unsafe {26616 unsafe {
27013 let c: int32x2_t = simd_shuffle!(b, b, [2, 3]);26617 let c: int32x2_t = simd_shuffle!(b, b, [2, 3]);
...@@ -27019,7 +26623,7 @@ pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {...@@ -27019,7 +26623,7 @@ pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
27019#[inline]26623#[inline]
27020#[target_feature(enable = "neon")]26624#[target_feature(enable = "neon")]
27021#[stable(feature = "neon_intrinsics", since = "1.59.0")]26625#[stable(feature = "neon_intrinsics", since = "1.59.0")]
27022#[cfg_attr(test, assert_instr(usubw))]26626#[cfg_attr(test, assert_instr(usubw2))]
27023pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {26627pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
27024 unsafe {26628 unsafe {
27025 let c: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);26629 let c: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
...@@ -27031,7 +26635,7 @@ pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {...@@ -27031,7 +26635,7 @@ pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
27031#[inline]26635#[inline]
27032#[target_feature(enable = "neon")]26636#[target_feature(enable = "neon")]
27033#[stable(feature = "neon_intrinsics", since = "1.59.0")]26637#[stable(feature = "neon_intrinsics", since = "1.59.0")]
27034#[cfg_attr(test, assert_instr(usubw))]26638#[cfg_attr(test, assert_instr(usubw2))]
27035pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {26639pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
27036 unsafe {26640 unsafe {
27037 let c: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);26641 let c: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
...@@ -27043,7 +26647,7 @@ pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {...@@ -27043,7 +26647,7 @@ pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
27043#[inline]26647#[inline]
27044#[target_feature(enable = "neon")]26648#[target_feature(enable = "neon")]
27045#[stable(feature = "neon_intrinsics", since = "1.59.0")]26649#[stable(feature = "neon_intrinsics", since = "1.59.0")]
27046#[cfg_attr(test, assert_instr(usubw))]26650#[cfg_attr(test, assert_instr(usubw2))]
27047pub fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {26651pub fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
27048 unsafe {26652 unsafe {
27049 let c: uint32x2_t = simd_shuffle!(b, b, [2, 3]);26653 let c: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs+445-508
...@@ -1483,15 +1483,11 @@ pub fn vabsq_f32(a: float32x4_t) -> float32x4_t {...@@ -1483,15 +1483,11 @@ pub fn vabsq_f32(a: float32x4_t) -> float32x4_t {
1483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")1483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1484)]1484)]
1485pub fn vabs_s8(a: int8x8_t) -> int8x8_t {1485pub fn vabs_s8(a: int8x8_t) -> int8x8_t {
1486 unsafe extern "unadjusted" {1486 unsafe {
1487 #[cfg_attr(1487 let neg: int8x8_t = simd_neg(a);
1488 any(target_arch = "aarch64", target_arch = "arm64ec"),1488 let mask: int8x8_t = simd_ge(a, neg);
1489 link_name = "llvm.aarch64.neon.abs.v8i8"1489 simd_select(mask, a, neg)
1490 )]
1491 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v8i8")]
1492 fn _vabs_s8(a: int8x8_t) -> int8x8_t;
1493 }1490 }
1494 unsafe { _vabs_s8(a) }
1495}1491}
1496#[doc = "Absolute value (wrapping)."]1492#[doc = "Absolute value (wrapping)."]
1497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s8)"]1493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s8)"]
...@@ -1512,15 +1508,11 @@ pub fn vabs_s8(a: int8x8_t) -> int8x8_t {...@@ -1512,15 +1508,11 @@ pub fn vabs_s8(a: int8x8_t) -> int8x8_t {
1512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")1508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1513)]1509)]
1514pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {1510pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {
1515 unsafe extern "unadjusted" {1511 unsafe {
1516 #[cfg_attr(1512 let neg: int8x16_t = simd_neg(a);
1517 any(target_arch = "aarch64", target_arch = "arm64ec"),1513 let mask: int8x16_t = simd_ge(a, neg);
1518 link_name = "llvm.aarch64.neon.abs.v16i8"1514 simd_select(mask, a, neg)
1519 )]
1520 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v16i8")]
1521 fn _vabsq_s8(a: int8x16_t) -> int8x16_t;
1522 }1515 }
1523 unsafe { _vabsq_s8(a) }
1524}1516}
1525#[doc = "Absolute value (wrapping)."]1517#[doc = "Absolute value (wrapping)."]
1526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s16)"]1518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s16)"]
...@@ -1541,15 +1533,11 @@ pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {...@@ -1541,15 +1533,11 @@ pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {
1541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")1533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1542)]1534)]
1543pub fn vabs_s16(a: int16x4_t) -> int16x4_t {1535pub fn vabs_s16(a: int16x4_t) -> int16x4_t {
1544 unsafe extern "unadjusted" {1536 unsafe {
1545 #[cfg_attr(1537 let neg: int16x4_t = simd_neg(a);
1546 any(target_arch = "aarch64", target_arch = "arm64ec"),1538 let mask: int16x4_t = simd_ge(a, neg);
1547 link_name = "llvm.aarch64.neon.abs.v4i16"1539 simd_select(mask, a, neg)
1548 )]
1549 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v4i16")]
1550 fn _vabs_s16(a: int16x4_t) -> int16x4_t;
1551 }1540 }
1552 unsafe { _vabs_s16(a) }
1553}1541}
1554#[doc = "Absolute value (wrapping)."]1542#[doc = "Absolute value (wrapping)."]
1555#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s16)"]1543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s16)"]
...@@ -1570,15 +1558,11 @@ pub fn vabs_s16(a: int16x4_t) -> int16x4_t {...@@ -1570,15 +1558,11 @@ pub fn vabs_s16(a: int16x4_t) -> int16x4_t {
1570 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")1558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1571)]1559)]
1572pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {1560pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {
1573 unsafe extern "unadjusted" {1561 unsafe {
1574 #[cfg_attr(1562 let neg: int16x8_t = simd_neg(a);
1575 any(target_arch = "aarch64", target_arch = "arm64ec"),1563 let mask: int16x8_t = simd_ge(a, neg);
1576 link_name = "llvm.aarch64.neon.abs.v8i16"1564 simd_select(mask, a, neg)
1577 )]
1578 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v8i16")]
1579 fn _vabsq_s16(a: int16x8_t) -> int16x8_t;
1580 }1565 }
1581 unsafe { _vabsq_s16(a) }
1582}1566}
1583#[doc = "Absolute value (wrapping)."]1567#[doc = "Absolute value (wrapping)."]
1584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s32)"]1568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s32)"]
...@@ -1599,15 +1583,11 @@ pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {...@@ -1599,15 +1583,11 @@ pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {
1599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")1583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1600)]1584)]
1601pub fn vabs_s32(a: int32x2_t) -> int32x2_t {1585pub fn vabs_s32(a: int32x2_t) -> int32x2_t {
1602 unsafe extern "unadjusted" {1586 unsafe {
1603 #[cfg_attr(1587 let neg: int32x2_t = simd_neg(a);
1604 any(target_arch = "aarch64", target_arch = "arm64ec"),1588 let mask: int32x2_t = simd_ge(a, neg);
1605 link_name = "llvm.aarch64.neon.abs.v2i32"1589 simd_select(mask, a, neg)
1606 )]
1607 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v2i32")]
1608 fn _vabs_s32(a: int32x2_t) -> int32x2_t;
1609 }1590 }
1610 unsafe { _vabs_s32(a) }
1611}1591}
1612#[doc = "Absolute value (wrapping)."]1592#[doc = "Absolute value (wrapping)."]
1613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s32)"]1593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s32)"]
...@@ -1628,15 +1608,11 @@ pub fn vabs_s32(a: int32x2_t) -> int32x2_t {...@@ -1628,15 +1608,11 @@ pub fn vabs_s32(a: int32x2_t) -> int32x2_t {
1628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")1608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1629)]1609)]
1630pub fn vabsq_s32(a: int32x4_t) -> int32x4_t {1610pub fn vabsq_s32(a: int32x4_t) -> int32x4_t {
1631 unsafe extern "unadjusted" {1611 unsafe {
1632 #[cfg_attr(1612 let neg: int32x4_t = simd_neg(a);
1633 any(target_arch = "aarch64", target_arch = "arm64ec"),1613 let mask: int32x4_t = simd_ge(a, neg);
1634 link_name = "llvm.aarch64.neon.abs.v4i32"1614 simd_select(mask, a, neg)
1635 )]
1636 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v4i32")]
1637 fn _vabsq_s32(a: int32x4_t) -> int32x4_t;
1638 }1615 }
1639 unsafe { _vabsq_s32(a) }
1640}1616}
1641#[doc = "Floating-point absolute value"]1617#[doc = "Floating-point absolute value"]
1642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsh_f16)"]1618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsh_f16)"]
...@@ -14322,8 +14298,7 @@ pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {...@@ -14322,8 +14298,7 @@ pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {
14322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14323)]14299)]
14324pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {14300pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
14325 let x = vld1_lane_f32::<0>(ptr, transmute(f32x2::splat(0.0)));14301 transmute(f32x2::splat(*ptr))
14326 simd_shuffle!(x, x, [0, 0])
14327}14302}
14328#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14303#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]14304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]
...@@ -14346,8 +14321,7 @@ pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {...@@ -14346,8 +14321,7 @@ pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
14346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14347)]14322)]
14348pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {14323pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
14349 let x = vld1_lane_p16::<0>(ptr, transmute(u16x4::splat(0)));14324 transmute(u16x4::splat(*ptr))
14350 simd_shuffle!(x, x, [0, 0, 0, 0])
14351}14325}
14352#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14326#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]14327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]
...@@ -14370,8 +14344,7 @@ pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {...@@ -14370,8 +14344,7 @@ pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
14370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14371)]14345)]
14372pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {14346pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
14373 let x = vld1_lane_p8::<0>(ptr, transmute(u8x8::splat(0)));14347 transmute(u8x8::splat(*ptr))
14374 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14375}14348}
14376#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14349#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]14350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]
...@@ -14394,8 +14367,7 @@ pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {...@@ -14394,8 +14367,7 @@ pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
14394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14395)]14368)]
14396pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {14369pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
14397 let x = vld1_lane_s16::<0>(ptr, transmute(i16x4::splat(0)));14370 transmute(i16x4::splat(*ptr))
14398 simd_shuffle!(x, x, [0, 0, 0, 0])
14399}14371}
14400#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14372#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]14373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]
...@@ -14418,8 +14390,7 @@ pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {...@@ -14418,8 +14390,7 @@ pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
14418 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14419)]14391)]
14420pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {14392pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
14421 let x = vld1_lane_s32::<0>(ptr, transmute(i32x2::splat(0)));14393 transmute(i32x2::splat(*ptr))
14422 simd_shuffle!(x, x, [0, 0])
14423}14394}
14424#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14395#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]14396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]
...@@ -14442,8 +14413,7 @@ pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {...@@ -14442,8 +14413,7 @@ pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
14442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14443)]14414)]
14444pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {14415pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
14445 let x = vld1_lane_s8::<0>(ptr, transmute(i8x8::splat(0)));14416 transmute(i8x8::splat(*ptr))
14446 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14447}14417}
14448#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14418#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u16)"]14419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u16)"]
...@@ -14466,8 +14436,7 @@ pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {...@@ -14466,8 +14436,7 @@ pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
14466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14467)]14437)]
14468pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {14438pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
14469 let x = vld1_lane_u16::<0>(ptr, transmute(u16x4::splat(0)));14439 transmute(u16x4::splat(*ptr))
14470 simd_shuffle!(x, x, [0, 0, 0, 0])
14471}14440}
14472#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14441#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u32)"]14442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u32)"]
...@@ -14490,8 +14459,7 @@ pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {...@@ -14490,8 +14459,7 @@ pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
14490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14491)]14460)]
14492pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {14461pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
14493 let x = vld1_lane_u32::<0>(ptr, transmute(u32x2::splat(0)));14462 transmute(u32x2::splat(*ptr))
14494 simd_shuffle!(x, x, [0, 0])
14495}14463}
14496#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14464#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u8)"]14465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u8)"]
...@@ -14514,8 +14482,7 @@ pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {...@@ -14514,8 +14482,7 @@ pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
14514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14515)]14483)]
14516pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {14484pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
14517 let x = vld1_lane_u8::<0>(ptr, transmute(u8x8::splat(0)));14485 transmute(u8x8::splat(*ptr))
14518 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14519}14486}
14520#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14487#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f32)"]14488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f32)"]
...@@ -14538,8 +14505,7 @@ pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {...@@ -14538,8 +14505,7 @@ pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
14538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14539)]14506)]
14540pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {14507pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
14541 let x = vld1q_lane_f32::<0>(ptr, transmute(f32x4::splat(0.0)));14508 transmute(f32x4::splat(*ptr))
14542 simd_shuffle!(x, x, [0, 0, 0, 0])
14543}14509}
14544#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14510#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p16)"]14511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p16)"]
...@@ -14562,8 +14528,7 @@ pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {...@@ -14562,8 +14528,7 @@ pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
14562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14528 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14563)]14529)]
14564pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {14530pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
14565 let x = vld1q_lane_p16::<0>(ptr, transmute(u16x8::splat(0)));14531 transmute(u16x8::splat(*ptr))
14566 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14567}14532}
14568#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14533#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p8)"]14534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p8)"]
...@@ -14586,8 +14551,7 @@ pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {...@@ -14586,8 +14551,7 @@ pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
14586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14587)]14552)]
14588pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {14553pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
14589 let x = vld1q_lane_p8::<0>(ptr, transmute(u8x16::splat(0)));14554 transmute(u8x16::splat(*ptr))
14590 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
14591}14555}
14592#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14556#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s16)"]14557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s16)"]
...@@ -14610,8 +14574,7 @@ pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {...@@ -14610,8 +14574,7 @@ pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
14610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14611)]14575)]
14612pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {14576pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
14613 let x = vld1q_lane_s16::<0>(ptr, transmute(i16x8::splat(0)));14577 transmute(i16x8::splat(*ptr))
14614 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14615}14578}
14616#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14579#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s32)"]14580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s32)"]
...@@ -14634,8 +14597,7 @@ pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {...@@ -14634,8 +14597,7 @@ pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
14634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14635)]14598)]
14636pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {14599pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
14637 let x = vld1q_lane_s32::<0>(ptr, transmute(i32x4::splat(0)));14600 transmute(i32x4::splat(*ptr))
14638 simd_shuffle!(x, x, [0, 0, 0, 0])
14639}14601}
14640#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14602#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s64)"]14603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s64)"]
...@@ -14647,7 +14609,7 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {...@@ -14647,7 +14609,7 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
14647#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]14609#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
14648#[cfg_attr(14610#[cfg_attr(
14649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),14611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14650 assert_instr(ld1)14612 assert_instr(ld1r)
14651)]14613)]
14652#[cfg_attr(14614#[cfg_attr(
14653 not(target_arch = "arm"),14615 not(target_arch = "arm"),
...@@ -14658,8 +14620,7 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {...@@ -14658,8 +14620,7 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
14658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14659)]14621)]
14660pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {14622pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
14661 let x = vld1q_lane_s64::<0>(ptr, transmute(i64x2::splat(0)));14623 transmute(i64x2::splat(*ptr))
14662 simd_shuffle!(x, x, [0, 0])
14663}14624}
14664#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14625#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s8)"]14626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s8)"]
...@@ -14682,8 +14643,7 @@ pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {...@@ -14682,8 +14643,7 @@ pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
14682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14683)]14644)]
14684pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {14645pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
14685 let x = vld1q_lane_s8::<0>(ptr, transmute(i8x16::splat(0)));14646 transmute(i8x16::splat(*ptr))
14686 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
14687}14647}
14688#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14648#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u16)"]14649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u16)"]
...@@ -14706,8 +14666,7 @@ pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {...@@ -14706,8 +14666,7 @@ pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
14706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14707)]14667)]
14708pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {14668pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
14709 let x = vld1q_lane_u16::<0>(ptr, transmute(u16x8::splat(0)));14669 transmute(u16x8::splat(*ptr))
14710 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14711}14670}
14712#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14671#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14713#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u32)"]14672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u32)"]
...@@ -14730,8 +14689,7 @@ pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {...@@ -14730,8 +14689,7 @@ pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
14730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14731)]14690)]
14732pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {14691pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
14733 let x = vld1q_lane_u32::<0>(ptr, transmute(u32x4::splat(0)));14692 transmute(u32x4::splat(*ptr))
14734 simd_shuffle!(x, x, [0, 0, 0, 0])
14735}14693}
14736#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14694#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u64)"]14695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u64)"]
...@@ -14743,7 +14701,7 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {...@@ -14743,7 +14701,7 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
14743#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]14701#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
14744#[cfg_attr(14702#[cfg_attr(
14745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),14703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14746 assert_instr(ld1)14704 assert_instr(ld1r)
14747)]14705)]
14748#[cfg_attr(14706#[cfg_attr(
14749 not(target_arch = "arm"),14707 not(target_arch = "arm"),
...@@ -14754,8 +14712,7 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {...@@ -14754,8 +14712,7 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
14754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14755)]14713)]
14756pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {14714pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
14757 let x = vld1q_lane_u64::<0>(ptr, transmute(u64x2::splat(0)));14715 transmute(u64x2::splat(*ptr))
14758 simd_shuffle!(x, x, [0, 0])
14759}14716}
14760#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14717#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u8)"]14718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u8)"]
...@@ -14778,8 +14735,7 @@ pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {...@@ -14778,8 +14735,7 @@ pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
14778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")14735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14779)]14736)]
14780pub unsafe fn vld1q_dup_u8(ptr: *const u8) -> uint8x16_t {14737pub unsafe fn vld1q_dup_u8(ptr: *const u8) -> uint8x16_t {
14781 let x = vld1q_lane_u8::<0>(ptr, transmute(u8x16::splat(0)));14738 transmute(u8x16::splat(*ptr))
14782 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
14783}14739}
14784#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]14740#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p64)"]14741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p64)"]
...@@ -27681,15 +27637,10 @@ pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {...@@ -27681,15 +27637,10 @@ pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
27681 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27637 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27682)]27638)]
27683pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {27639pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
27684 unsafe extern "unadjusted" {27640 unsafe {
27685 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8i8")]27641 let mask: int8x8_t = simd_ge(a, b);
27686 #[cfg_attr(27642 simd_select(mask, a, b)
27687 any(target_arch = "aarch64", target_arch = "arm64ec"),
27688 link_name = "llvm.aarch64.neon.smax.v8i8"
27689 )]
27690 fn _vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
27691 }27643 }
27692 unsafe { _vmax_s8(a, b) }
27693}27644}
27694#[doc = "Maximum (vector)"]27645#[doc = "Maximum (vector)"]
27695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]27646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]
...@@ -27710,15 +27661,10 @@ pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {...@@ -27710,15 +27661,10 @@ pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
27710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27711)]27662)]
27712pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {27663pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
27713 unsafe extern "unadjusted" {27664 unsafe {
27714 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v16i8")]27665 let mask: int8x16_t = simd_ge(a, b);
27715 #[cfg_attr(27666 simd_select(mask, a, b)
27716 any(target_arch = "aarch64", target_arch = "arm64ec"),
27717 link_name = "llvm.aarch64.neon.smax.v16i8"
27718 )]
27719 fn _vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
27720 }27667 }
27721 unsafe { _vmaxq_s8(a, b) }
27722}27668}
27723#[doc = "Maximum (vector)"]27669#[doc = "Maximum (vector)"]
27724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]27670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]
...@@ -27739,15 +27685,10 @@ pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {...@@ -27739,15 +27685,10 @@ pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
27739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27740)]27686)]
27741pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {27687pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
27742 unsafe extern "unadjusted" {27688 unsafe {
27743 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4i16")]27689 let mask: int16x4_t = simd_ge(a, b);
27744 #[cfg_attr(27690 simd_select(mask, a, b)
27745 any(target_arch = "aarch64", target_arch = "arm64ec"),
27746 link_name = "llvm.aarch64.neon.smax.v4i16"
27747 )]
27748 fn _vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
27749 }27691 }
27750 unsafe { _vmax_s16(a, b) }
27751}27692}
27752#[doc = "Maximum (vector)"]27693#[doc = "Maximum (vector)"]
27753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]27694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]
...@@ -27768,15 +27709,10 @@ pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {...@@ -27768,15 +27709,10 @@ pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
27768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27769)]27710)]
27770pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {27711pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
27771 unsafe extern "unadjusted" {27712 unsafe {
27772 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8i16")]27713 let mask: int16x8_t = simd_ge(a, b);
27773 #[cfg_attr(27714 simd_select(mask, a, b)
27774 any(target_arch = "aarch64", target_arch = "arm64ec"),
27775 link_name = "llvm.aarch64.neon.smax.v8i16"
27776 )]
27777 fn _vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
27778 }27715 }
27779 unsafe { _vmaxq_s16(a, b) }
27780}27716}
27781#[doc = "Maximum (vector)"]27717#[doc = "Maximum (vector)"]
27782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]27718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]
...@@ -27797,15 +27733,10 @@ pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {...@@ -27797,15 +27733,10 @@ pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
27797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27798)]27734)]
27799pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {27735pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
27800 unsafe extern "unadjusted" {27736 unsafe {
27801 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v2i32")]27737 let mask: int32x2_t = simd_ge(a, b);
27802 #[cfg_attr(27738 simd_select(mask, a, b)
27803 any(target_arch = "aarch64", target_arch = "arm64ec"),
27804 link_name = "llvm.aarch64.neon.smax.v2i32"
27805 )]
27806 fn _vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
27807 }27739 }
27808 unsafe { _vmax_s32(a, b) }
27809}27740}
27810#[doc = "Maximum (vector)"]27741#[doc = "Maximum (vector)"]
27811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]27742#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]
...@@ -27826,15 +27757,10 @@ pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {...@@ -27826,15 +27757,10 @@ pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
27826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27757 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27827)]27758)]
27828pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {27759pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
27829 unsafe extern "unadjusted" {27760 unsafe {
27830 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4i32")]27761 let mask: int32x4_t = simd_ge(a, b);
27831 #[cfg_attr(27762 simd_select(mask, a, b)
27832 any(target_arch = "aarch64", target_arch = "arm64ec"),
27833 link_name = "llvm.aarch64.neon.smax.v4i32"
27834 )]
27835 fn _vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
27836 }27763 }
27837 unsafe { _vmaxq_s32(a, b) }
27838}27764}
27839#[doc = "Maximum (vector)"]27765#[doc = "Maximum (vector)"]
27840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]27766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]
...@@ -27855,15 +27781,10 @@ pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {...@@ -27855,15 +27781,10 @@ pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
27855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27856)]27782)]
27857pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {27783pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
27858 unsafe extern "unadjusted" {27784 unsafe {
27859 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v8i8")]27785 let mask: uint8x8_t = simd_ge(a, b);
27860 #[cfg_attr(27786 simd_select(mask, a, b)
27861 any(target_arch = "aarch64", target_arch = "arm64ec"),
27862 link_name = "llvm.aarch64.neon.umax.v8i8"
27863 )]
27864 fn _vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
27865 }27787 }
27866 unsafe { _vmax_u8(a, b) }
27867}27788}
27868#[doc = "Maximum (vector)"]27789#[doc = "Maximum (vector)"]
27869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]27790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]
...@@ -27884,15 +27805,10 @@ pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {...@@ -27884,15 +27805,10 @@ pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
27884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27885)]27806)]
27886pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {27807pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
27887 unsafe extern "unadjusted" {27808 unsafe {
27888 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v16i8")]27809 let mask: uint8x16_t = simd_ge(a, b);
27889 #[cfg_attr(27810 simd_select(mask, a, b)
27890 any(target_arch = "aarch64", target_arch = "arm64ec"),
27891 link_name = "llvm.aarch64.neon.umax.v16i8"
27892 )]
27893 fn _vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
27894 }27811 }
27895 unsafe { _vmaxq_u8(a, b) }
27896}27812}
27897#[doc = "Maximum (vector)"]27813#[doc = "Maximum (vector)"]
27898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]27814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]
...@@ -27913,15 +27829,10 @@ pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {...@@ -27913,15 +27829,10 @@ pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
27913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27914)]27830)]
27915pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {27831pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
27916 unsafe extern "unadjusted" {27832 unsafe {
27917 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v4i16")]27833 let mask: uint16x4_t = simd_ge(a, b);
27918 #[cfg_attr(27834 simd_select(mask, a, b)
27919 any(target_arch = "aarch64", target_arch = "arm64ec"),
27920 link_name = "llvm.aarch64.neon.umax.v4i16"
27921 )]
27922 fn _vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
27923 }27835 }
27924 unsafe { _vmax_u16(a, b) }
27925}27836}
27926#[doc = "Maximum (vector)"]27837#[doc = "Maximum (vector)"]
27927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]27838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]
...@@ -27942,15 +27853,10 @@ pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {...@@ -27942,15 +27853,10 @@ pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
27942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27943)]27854)]
27944pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {27855pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
27945 unsafe extern "unadjusted" {27856 unsafe {
27946 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v8i16")]27857 let mask: uint16x8_t = simd_ge(a, b);
27947 #[cfg_attr(27858 simd_select(mask, a, b)
27948 any(target_arch = "aarch64", target_arch = "arm64ec"),
27949 link_name = "llvm.aarch64.neon.umax.v8i16"
27950 )]
27951 fn _vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
27952 }27859 }
27953 unsafe { _vmaxq_u16(a, b) }
27954}27860}
27955#[doc = "Maximum (vector)"]27861#[doc = "Maximum (vector)"]
27956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]27862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]
...@@ -27971,15 +27877,10 @@ pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {...@@ -27971,15 +27877,10 @@ pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
27971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27877 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27972)]27878)]
27973pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {27879pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
27974 unsafe extern "unadjusted" {27880 unsafe {
27975 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v2i32")]27881 let mask: uint32x2_t = simd_ge(a, b);
27976 #[cfg_attr(27882 simd_select(mask, a, b)
27977 any(target_arch = "aarch64", target_arch = "arm64ec"),
27978 link_name = "llvm.aarch64.neon.umax.v2i32"
27979 )]
27980 fn _vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
27981 }27883 }
27982 unsafe { _vmax_u32(a, b) }
27983}27884}
27984#[doc = "Maximum (vector)"]27885#[doc = "Maximum (vector)"]
27985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]27886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]
...@@ -28000,15 +27901,10 @@ pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {...@@ -28000,15 +27901,10 @@ pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28001)]27902)]
28002pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {27903pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28003 unsafe extern "unadjusted" {27904 unsafe {
28004 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v4i32")]27905 let mask: uint32x4_t = simd_ge(a, b);
28005 #[cfg_attr(27906 simd_select(mask, a, b)
28006 any(target_arch = "aarch64", target_arch = "arm64ec"),
28007 link_name = "llvm.aarch64.neon.umax.v4i32"
28008 )]
28009 fn _vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
28010 }27907 }
28011 unsafe { _vmaxq_u32(a, b) }
28012}27908}
28013#[doc = "Floating-point Maximum Number (vector)"]27909#[doc = "Floating-point Maximum Number (vector)"]
28014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]27910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]
...@@ -28022,15 +27918,7 @@ pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {...@@ -28022,15 +27918,7 @@ pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28022#[target_feature(enable = "neon,fp16")]27918#[target_feature(enable = "neon,fp16")]
28023#[unstable(feature = "stdarch_neon_f16", issue = "136306")]27919#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28024pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {27920pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28025 unsafe extern "unadjusted" {27921 unsafe { simd_fmax(a, b) }
28026 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f16")]
28027 #[cfg_attr(
28028 any(target_arch = "aarch64", target_arch = "arm64ec"),
28029 link_name = "llvm.aarch64.neon.fmaxnm.v4f16"
28030 )]
28031 fn _vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
28032 }
28033 unsafe { _vmaxnm_f16(a, b) }
28034}27922}
28035#[doc = "Floating-point Maximum Number (vector)"]27923#[doc = "Floating-point Maximum Number (vector)"]
28036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]27924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
...@@ -28044,15 +27932,7 @@ pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {...@@ -28044,15 +27932,7 @@ pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28044#[target_feature(enable = "neon,fp16")]27932#[target_feature(enable = "neon,fp16")]
28045#[unstable(feature = "stdarch_neon_f16", issue = "136306")]27933#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28046pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {27934pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28047 unsafe extern "unadjusted" {27935 unsafe { simd_fmax(a, b) }
28048 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v8f16")]
28049 #[cfg_attr(
28050 any(target_arch = "aarch64", target_arch = "arm64ec"),
28051 link_name = "llvm.aarch64.neon.fmaxnm.v8f16"
28052 )]
28053 fn _vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
28054 }
28055 unsafe { _vmaxnmq_f16(a, b) }
28056}27936}
28057#[doc = "Floating-point Maximum Number (vector)"]27937#[doc = "Floating-point Maximum Number (vector)"]
28058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]27938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
...@@ -28073,15 +27953,7 @@ pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {...@@ -28073,15 +27953,7 @@ pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28074)]27954)]
28075pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {27955pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28076 unsafe extern "unadjusted" {27956 unsafe { simd_fmax(a, b) }
28077 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v2f32")]
28078 #[cfg_attr(
28079 any(target_arch = "aarch64", target_arch = "arm64ec"),
28080 link_name = "llvm.aarch64.neon.fmaxnm.v2f32"
28081 )]
28082 fn _vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28083 }
28084 unsafe { _vmaxnm_f32(a, b) }
28085}27957}
28086#[doc = "Floating-point Maximum Number (vector)"]27958#[doc = "Floating-point Maximum Number (vector)"]
28087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]27959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
...@@ -28102,15 +27974,7 @@ pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {...@@ -28102,15 +27974,7 @@ pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")27974 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28103)]27975)]
28104pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {27976pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28105 unsafe extern "unadjusted" {27977 unsafe { simd_fmax(a, b) }
28106 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f32")]
28107 #[cfg_attr(
28108 any(target_arch = "aarch64", target_arch = "arm64ec"),
28109 link_name = "llvm.aarch64.neon.fmaxnm.v4f32"
28110 )]
28111 fn _vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28112 }
28113 unsafe { _vmaxnmq_f32(a, b) }
28114}27978}
28115#[doc = "Minimum (vector)"]27979#[doc = "Minimum (vector)"]
28116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]27980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
...@@ -28233,15 +28097,10 @@ pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {...@@ -28233,15 +28097,10 @@ pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28234)]28098)]
28235pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {28099pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
28236 unsafe extern "unadjusted" {28100 unsafe {
28237 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8i8")]28101 let mask: int8x8_t = simd_le(a, b);
28238 #[cfg_attr(28102 simd_select(mask, a, b)
28239 any(target_arch = "aarch64", target_arch = "arm64ec"),
28240 link_name = "llvm.aarch64.neon.smin.v8i8"
28241 )]
28242 fn _vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
28243 }28103 }
28244 unsafe { _vmin_s8(a, b) }
28245}28104}
28246#[doc = "Minimum (vector)"]28105#[doc = "Minimum (vector)"]
28247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]28106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]
...@@ -28262,15 +28121,10 @@ pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {...@@ -28262,15 +28121,10 @@ pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
28262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28263)]28122)]
28264pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {28123pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
28265 unsafe extern "unadjusted" {28124 unsafe {
28266 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v16i8")]28125 let mask: int8x16_t = simd_le(a, b);
28267 #[cfg_attr(28126 simd_select(mask, a, b)
28268 any(target_arch = "aarch64", target_arch = "arm64ec"),
28269 link_name = "llvm.aarch64.neon.smin.v16i8"
28270 )]
28271 fn _vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
28272 }28127 }
28273 unsafe { _vminq_s8(a, b) }
28274}28128}
28275#[doc = "Minimum (vector)"]28129#[doc = "Minimum (vector)"]
28276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]28130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]
...@@ -28291,15 +28145,10 @@ pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {...@@ -28291,15 +28145,10 @@ pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
28291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28292)]28146)]
28293pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {28147pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
28294 unsafe extern "unadjusted" {28148 unsafe {
28295 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4i16")]28149 let mask: int16x4_t = simd_le(a, b);
28296 #[cfg_attr(28150 simd_select(mask, a, b)
28297 any(target_arch = "aarch64", target_arch = "arm64ec"),
28298 link_name = "llvm.aarch64.neon.smin.v4i16"
28299 )]
28300 fn _vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
28301 }28151 }
28302 unsafe { _vmin_s16(a, b) }
28303}28152}
28304#[doc = "Minimum (vector)"]28153#[doc = "Minimum (vector)"]
28305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]28154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]
...@@ -28320,15 +28169,10 @@ pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {...@@ -28320,15 +28169,10 @@ pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
28320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28169 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28321)]28170)]
28322pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {28171pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
28323 unsafe extern "unadjusted" {28172 unsafe {
28324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8i16")]28173 let mask: int16x8_t = simd_le(a, b);
28325 #[cfg_attr(28174 simd_select(mask, a, b)
28326 any(target_arch = "aarch64", target_arch = "arm64ec"),
28327 link_name = "llvm.aarch64.neon.smin.v8i16"
28328 )]
28329 fn _vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
28330 }28175 }
28331 unsafe { _vminq_s16(a, b) }
28332}28176}
28333#[doc = "Minimum (vector)"]28177#[doc = "Minimum (vector)"]
28334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]28178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]
...@@ -28349,15 +28193,10 @@ pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {...@@ -28349,15 +28193,10 @@ pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
28349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28350)]28194)]
28351pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {28195pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
28352 unsafe extern "unadjusted" {28196 unsafe {
28353 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v2i32")]28197 let mask: int32x2_t = simd_le(a, b);
28354 #[cfg_attr(28198 simd_select(mask, a, b)
28355 any(target_arch = "aarch64", target_arch = "arm64ec"),
28356 link_name = "llvm.aarch64.neon.smin.v2i32"
28357 )]
28358 fn _vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
28359 }28199 }
28360 unsafe { _vmin_s32(a, b) }
28361}28200}
28362#[doc = "Minimum (vector)"]28201#[doc = "Minimum (vector)"]
28363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]28202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]
...@@ -28378,15 +28217,10 @@ pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {...@@ -28378,15 +28217,10 @@ pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
28378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28217 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28379)]28218)]
28380pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {28219pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
28381 unsafe extern "unadjusted" {28220 unsafe {
28382 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4i32")]28221 let mask: int32x4_t = simd_le(a, b);
28383 #[cfg_attr(28222 simd_select(mask, a, b)
28384 any(target_arch = "aarch64", target_arch = "arm64ec"),
28385 link_name = "llvm.aarch64.neon.smin.v4i32"
28386 )]
28387 fn _vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
28388 }28223 }
28389 unsafe { _vminq_s32(a, b) }
28390}28224}
28391#[doc = "Minimum (vector)"]28225#[doc = "Minimum (vector)"]
28392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]28226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]
...@@ -28407,15 +28241,10 @@ pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {...@@ -28407,15 +28241,10 @@ pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
28407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28408)]28242)]
28409pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {28243pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
28410 unsafe extern "unadjusted" {28244 unsafe {
28411 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v8i8")]28245 let mask: uint8x8_t = simd_le(a, b);
28412 #[cfg_attr(28246 simd_select(mask, a, b)
28413 any(target_arch = "aarch64", target_arch = "arm64ec"),
28414 link_name = "llvm.aarch64.neon.umin.v8i8"
28415 )]
28416 fn _vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
28417 }28247 }
28418 unsafe { _vmin_u8(a, b) }
28419}28248}
28420#[doc = "Minimum (vector)"]28249#[doc = "Minimum (vector)"]
28421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]28250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]
...@@ -28436,15 +28265,10 @@ pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {...@@ -28436,15 +28265,10 @@ pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
28436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28437)]28266)]
28438pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {28267pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
28439 unsafe extern "unadjusted" {28268 unsafe {
28440 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v16i8")]28269 let mask: uint8x16_t = simd_le(a, b);
28441 #[cfg_attr(28270 simd_select(mask, a, b)
28442 any(target_arch = "aarch64", target_arch = "arm64ec"),
28443 link_name = "llvm.aarch64.neon.umin.v16i8"
28444 )]
28445 fn _vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
28446 }28271 }
28447 unsafe { _vminq_u8(a, b) }
28448}28272}
28449#[doc = "Minimum (vector)"]28273#[doc = "Minimum (vector)"]
28450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]28274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]
...@@ -28465,15 +28289,10 @@ pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {...@@ -28465,15 +28289,10 @@ pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
28465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28466)]28290)]
28467pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {28291pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
28468 unsafe extern "unadjusted" {28292 unsafe {
28469 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v4i16")]28293 let mask: uint16x4_t = simd_le(a, b);
28470 #[cfg_attr(28294 simd_select(mask, a, b)
28471 any(target_arch = "aarch64", target_arch = "arm64ec"),
28472 link_name = "llvm.aarch64.neon.umin.v4i16"
28473 )]
28474 fn _vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
28475 }28295 }
28476 unsafe { _vmin_u16(a, b) }
28477}28296}
28478#[doc = "Minimum (vector)"]28297#[doc = "Minimum (vector)"]
28479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]28298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]
...@@ -28494,15 +28313,10 @@ pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {...@@ -28494,15 +28313,10 @@ pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
28494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28495)]28314)]
28496pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {28315pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
28497 unsafe extern "unadjusted" {28316 unsafe {
28498 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v8i16")]28317 let mask: uint16x8_t = simd_le(a, b);
28499 #[cfg_attr(28318 simd_select(mask, a, b)
28500 any(target_arch = "aarch64", target_arch = "arm64ec"),
28501 link_name = "llvm.aarch64.neon.umin.v8i16"
28502 )]
28503 fn _vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
28504 }28319 }
28505 unsafe { _vminq_u16(a, b) }
28506}28320}
28507#[doc = "Minimum (vector)"]28321#[doc = "Minimum (vector)"]
28508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]28322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]
...@@ -28523,15 +28337,10 @@ pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {...@@ -28523,15 +28337,10 @@ pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
28523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28524)]28338)]
28525pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {28339pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28526 unsafe extern "unadjusted" {28340 unsafe {
28527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v2i32")]28341 let mask: uint32x2_t = simd_le(a, b);
28528 #[cfg_attr(28342 simd_select(mask, a, b)
28529 any(target_arch = "aarch64", target_arch = "arm64ec"),
28530 link_name = "llvm.aarch64.neon.umin.v2i32"
28531 )]
28532 fn _vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
28533 }28343 }
28534 unsafe { _vmin_u32(a, b) }
28535}28344}
28536#[doc = "Minimum (vector)"]28345#[doc = "Minimum (vector)"]
28537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]28346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]
...@@ -28552,15 +28361,10 @@ pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {...@@ -28552,15 +28361,10 @@ pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28553)]28362)]
28554pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {28363pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28555 unsafe extern "unadjusted" {28364 unsafe {
28556 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v4i32")]28365 let mask: uint32x4_t = simd_le(a, b);
28557 #[cfg_attr(28366 simd_select(mask, a, b)
28558 any(target_arch = "aarch64", target_arch = "arm64ec"),
28559 link_name = "llvm.aarch64.neon.umin.v4i32"
28560 )]
28561 fn _vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
28562 }28367 }
28563 unsafe { _vminq_u32(a, b) }
28564}28368}
28565#[doc = "Floating-point Minimum Number (vector)"]28369#[doc = "Floating-point Minimum Number (vector)"]
28566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]28370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]
...@@ -28574,15 +28378,7 @@ pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {...@@ -28574,15 +28378,7 @@ pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28574#[target_feature(enable = "neon,fp16")]28378#[target_feature(enable = "neon,fp16")]
28575#[unstable(feature = "stdarch_neon_f16", issue = "136306")]28379#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28576pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {28380pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28577 unsafe extern "unadjusted" {28381 unsafe { simd_fmin(a, b) }
28578 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f16")]
28579 #[cfg_attr(
28580 any(target_arch = "aarch64", target_arch = "arm64ec"),
28581 link_name = "llvm.aarch64.neon.fminnm.v4f16"
28582 )]
28583 fn _vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
28584 }
28585 unsafe { _vminnm_f16(a, b) }
28586}28382}
28587#[doc = "Floating-point Minimum Number (vector)"]28383#[doc = "Floating-point Minimum Number (vector)"]
28588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]28384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
...@@ -28596,15 +28392,7 @@ pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {...@@ -28596,15 +28392,7 @@ pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28596#[target_feature(enable = "neon,fp16")]28392#[target_feature(enable = "neon,fp16")]
28597#[unstable(feature = "stdarch_neon_f16", issue = "136306")]28393#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28598pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {28394pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28599 unsafe extern "unadjusted" {28395 unsafe { simd_fmin(a, b) }
28600 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v8f16")]
28601 #[cfg_attr(
28602 any(target_arch = "aarch64", target_arch = "arm64ec"),
28603 link_name = "llvm.aarch64.neon.fminnm.v8f16"
28604 )]
28605 fn _vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
28606 }
28607 unsafe { _vminnmq_f16(a, b) }
28608}28396}
28609#[doc = "Floating-point Minimum Number (vector)"]28397#[doc = "Floating-point Minimum Number (vector)"]
28610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]28398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
...@@ -28625,15 +28413,7 @@ pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {...@@ -28625,15 +28413,7 @@ pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28626)]28414)]
28627pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {28415pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28628 unsafe extern "unadjusted" {28416 unsafe { simd_fmin(a, b) }
28629 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v2f32")]
28630 #[cfg_attr(
28631 any(target_arch = "aarch64", target_arch = "arm64ec"),
28632 link_name = "llvm.aarch64.neon.fminnm.v2f32"
28633 )]
28634 fn _vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28635 }
28636 unsafe { _vminnm_f32(a, b) }
28637}28417}
28638#[doc = "Floating-point Minimum Number (vector)"]28418#[doc = "Floating-point Minimum Number (vector)"]
28639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]28419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
...@@ -28654,15 +28434,7 @@ pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {...@@ -28654,15 +28434,7 @@ pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")28434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28655)]28435)]
28656pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {28436pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28657 unsafe extern "unadjusted" {28437 unsafe { simd_fmin(a, b) }
28658 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f32")]
28659 #[cfg_attr(
28660 any(target_arch = "aarch64", target_arch = "arm64ec"),
28661 link_name = "llvm.aarch64.neon.fminnm.v4f32"
28662 )]
28663 fn _vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28664 }
28665 unsafe { _vminnmq_f32(a, b) }
28666}28438}
28667#[doc = "Floating-point multiply-add to accumulator"]28439#[doc = "Floating-point multiply-add to accumulator"]
28668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]28440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]
...@@ -39566,17 +39338,7 @@ pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {...@@ -39566,17 +39338,7 @@ pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
39566 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]39338 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]
39567 fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;39339 fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
39568 }39340 }
39569 unsafe {39341 unsafe { _vqrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
39570 _vqrshrn_n_s16(
39571 a,
39572 const {
39573 int16x8_t([
39574 -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
39575 -N as i16,
39576 ])
39577 },
39578 )
39579 }
39580}39342}
39581#[doc = "Signed saturating rounded shift right narrow"]39343#[doc = "Signed saturating rounded shift right narrow"]
39582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]39344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
...@@ -39592,12 +39354,7 @@ pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {...@@ -39592,12 +39354,7 @@ pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
39592 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]39354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]
39593 fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;39355 fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
39594 }39356 }
39595 unsafe {39357 unsafe { _vqrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
39596 _vqrshrn_n_s32(
39597 a,
39598 const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
39599 )
39600 }
39601}39358}
39602#[doc = "Signed saturating rounded shift right narrow"]39359#[doc = "Signed saturating rounded shift right narrow"]
39603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]39360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
...@@ -39613,7 +39370,7 @@ pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {...@@ -39613,7 +39370,7 @@ pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
39613 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]39370 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]
39614 fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;39371 fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
39615 }39372 }
39616 unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }39373 unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
39617}39374}
39618#[doc = "Signed saturating rounded shift right narrow"]39375#[doc = "Signed saturating rounded shift right narrow"]
39619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]39376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
...@@ -39806,17 +39563,7 @@ pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {...@@ -39806,17 +39563,7 @@ pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
39806 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]39563 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]
39807 fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;39564 fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
39808 }39565 }
39809 unsafe {39566 unsafe { _vqrshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
39810 _vqrshrun_n_s16(
39811 a,
39812 const {
39813 int16x8_t([
39814 -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
39815 -N as i16,
39816 ])
39817 },
39818 )
39819 }
39820}39567}
39821#[doc = "Signed saturating rounded shift right unsigned narrow"]39568#[doc = "Signed saturating rounded shift right unsigned narrow"]
39822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]39569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
...@@ -39832,12 +39579,7 @@ pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {...@@ -39832,12 +39579,7 @@ pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
39832 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]39579 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]
39833 fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;39580 fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
39834 }39581 }
39835 unsafe {39582 unsafe { _vqrshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
39836 _vqrshrun_n_s32(
39837 a,
39838 const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
39839 )
39840 }
39841}39583}
39842#[doc = "Signed saturating rounded shift right unsigned narrow"]39584#[doc = "Signed saturating rounded shift right unsigned narrow"]
39843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]39585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
...@@ -39853,7 +39595,7 @@ pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {...@@ -39853,7 +39595,7 @@ pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
39853 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]39595 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]
39854 fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;39596 fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
39855 }39597 }
39856 unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }39598 unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
39857}39599}
39858#[doc = "Signed saturating rounded shift right unsigned narrow"]39600#[doc = "Signed saturating rounded shift right unsigned narrow"]
39859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]39601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
...@@ -41038,17 +40780,7 @@ pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {...@@ -41038,17 +40780,7 @@ pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
41038 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]40780 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]
41039 fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;40781 fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
41040 }40782 }
41041 unsafe {40783 unsafe { _vqshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
41042 _vqshrn_n_s16(
41043 a,
41044 const {
41045 int16x8_t([
41046 -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
41047 -N as i16,
41048 ])
41049 },
41050 )
41051 }
41052}40784}
41053#[doc = "Signed saturating shift right narrow"]40785#[doc = "Signed saturating shift right narrow"]
41054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]40786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
...@@ -41064,12 +40796,7 @@ pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {...@@ -41064,12 +40796,7 @@ pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
41064 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]40796 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]
41065 fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;40797 fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
41066 }40798 }
41067 unsafe {40799 unsafe { _vqshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
41068 _vqshrn_n_s32(
41069 a,
41070 const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
41071 )
41072 }
41073}40800}
41074#[doc = "Signed saturating shift right narrow"]40801#[doc = "Signed saturating shift right narrow"]
41075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]40802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
...@@ -41085,7 +40812,7 @@ pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {...@@ -41085,7 +40812,7 @@ pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
41085 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]40812 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]
41086 fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;40813 fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
41087 }40814 }
41088 unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }40815 unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
41089}40816}
41090#[doc = "Signed saturating shift right narrow"]40817#[doc = "Signed saturating shift right narrow"]
41091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]40818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
...@@ -41278,17 +41005,7 @@ pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {...@@ -41278,17 +41005,7 @@ pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
41278 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]41005 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]
41279 fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;41006 fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
41280 }41007 }
41281 unsafe {41008 unsafe { _vqshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
41282 _vqshrun_n_s16(
41283 a,
41284 const {
41285 int16x8_t([
41286 -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
41287 -N as i16,
41288 ])
41289 },
41290 )
41291 }
41292}41009}
41293#[doc = "Signed saturating shift right unsigned narrow"]41010#[doc = "Signed saturating shift right unsigned narrow"]
41294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]41011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
...@@ -41304,12 +41021,7 @@ pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {...@@ -41304,12 +41021,7 @@ pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
41304 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]41021 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]
41305 fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;41022 fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
41306 }41023 }
41307 unsafe {41024 unsafe { _vqshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
41308 _vqshrun_n_s32(
41309 a,
41310 const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
41311 )
41312 }
41313}41025}
41314#[doc = "Signed saturating shift right unsigned narrow"]41026#[doc = "Signed saturating shift right unsigned narrow"]
41315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]41027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
...@@ -41325,7 +41037,7 @@ pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {...@@ -41325,7 +41037,7 @@ pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
41325 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]41037 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]
41326 fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;41038 fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
41327 }41039 }
41328 unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }41040 unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
41329}41041}
41330#[doc = "Signed saturating shift right unsigned narrow"]41042#[doc = "Signed saturating shift right unsigned narrow"]
41331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]41043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
...@@ -59483,17 +59195,7 @@ pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {...@@ -59483,17 +59195,7 @@ pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
59483 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]59195 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]
59484 fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;59196 fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
59485 }59197 }
59486 unsafe {59198 unsafe { _vrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
59487 _vrshrn_n_s16(
59488 a,
59489 const {
59490 int16x8_t([
59491 -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
59492 -N as i16,
59493 ])
59494 },
59495 )
59496 }
59497}59199}
59498#[doc = "Rounding shift right narrow"]59200#[doc = "Rounding shift right narrow"]
59499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]59201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
...@@ -59509,12 +59211,7 @@ pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {...@@ -59509,12 +59211,7 @@ pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
59509 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]59211 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]
59510 fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;59212 fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
59511 }59213 }
59512 unsafe {59214 unsafe { _vrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
59513 _vrshrn_n_s32(
59514 a,
59515 const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
59516 )
59517 }
59518}59215}
59519#[doc = "Rounding shift right narrow"]59216#[doc = "Rounding shift right narrow"]
59520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]59217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
...@@ -59530,7 +59227,7 @@ pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {...@@ -59530,7 +59227,7 @@ pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
59530 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]59227 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]
59531 fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;59228 fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
59532 }59229 }
59533 unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }59230 unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
59534}59231}
59535#[doc = "Rounding shift right narrow"]59232#[doc = "Rounding shift right narrow"]
59536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]59233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
...@@ -63183,7 +62880,7 @@ pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {...@@ -63183,7 +62880,7 @@ pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
63183 transmute(vshiftins_v2i32(62880 transmute(vshiftins_v2i32(
63184 transmute(a),62881 transmute(a),
63185 transmute(b),62882 transmute(b),
63186 int32x2_t::splat(N as i32),62883 int32x2_t::splat(N),
63187 ))62884 ))
63188 }62885 }
63189}62886}
...@@ -63201,7 +62898,7 @@ pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {...@@ -63201,7 +62898,7 @@ pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
63201 transmute(vshiftins_v4i32(62898 transmute(vshiftins_v4i32(
63202 transmute(a),62899 transmute(a),
63203 transmute(b),62900 transmute(b),
63204 int32x4_t::splat(N as i32),62901 int32x4_t::splat(N),
63205 ))62902 ))
63206 }62903 }
63207}62904}
...@@ -63739,7 +63436,7 @@ pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {...@@ -63739,7 +63436,7 @@ pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
63739#[rustc_legacy_const_generics(2)]63436#[rustc_legacy_const_generics(2)]
63740pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {63437pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
63741 static_assert!(1 <= N && N <= 32);63438 static_assert!(1 <= N && N <= 32);
63742 vshiftins_v2i32(a, b, int32x2_t::splat(-N as i32))63439 vshiftins_v2i32(a, b, int32x2_t::splat(-N))
63743}63440}
63744#[doc = "Shift Right and Insert (immediate)"]63441#[doc = "Shift Right and Insert (immediate)"]
63745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]63442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]
...@@ -63751,7 +63448,7 @@ pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {...@@ -63751,7 +63448,7 @@ pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
63751#[rustc_legacy_const_generics(2)]63448#[rustc_legacy_const_generics(2)]
63752pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {63449pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
63753 static_assert!(1 <= N && N <= 32);63450 static_assert!(1 <= N && N <= 32);
63754 vshiftins_v4i32(a, b, int32x4_t::splat(-N as i32))63451 vshiftins_v4i32(a, b, int32x4_t::splat(-N))
63755}63452}
63756#[doc = "Shift Right and Insert (immediate)"]63453#[doc = "Shift Right and Insert (immediate)"]
63757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]63454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]
...@@ -73297,7 +72994,11 @@ pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {...@@ -73297,7 +72994,11 @@ pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
73297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]72994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73298#[cfg_attr(72995#[cfg_attr(
73299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),72996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73300 assert_instr(trn)72997 assert_instr(trn1)
72998)]
72999#[cfg_attr(
73000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73001 assert_instr(trn2)
73301)]73002)]
73302#[target_feature(enable = "neon,fp16")]73003#[target_feature(enable = "neon,fp16")]
73303#[unstable(feature = "stdarch_neon_f16", issue = "136306")]73004#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
...@@ -73315,7 +73016,11 @@ pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {...@@ -73315,7 +73016,11 @@ pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
73315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73316#[cfg_attr(73017#[cfg_attr(
73317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73318 assert_instr(trn)73019 assert_instr(trn1)
73020)]
73021#[cfg_attr(
73022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73023 assert_instr(trn2)
73319)]73024)]
73320#[target_feature(enable = "neon,fp16")]73025#[target_feature(enable = "neon,fp16")]
73321#[unstable(feature = "stdarch_neon_f16", issue = "136306")]73026#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
...@@ -73334,7 +73039,11 @@ pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {...@@ -73334,7 +73039,11 @@ pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
73334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73335#[cfg_attr(73040#[cfg_attr(
73336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73337 assert_instr(zip)73042 assert_instr(zip1)
73043)]
73044#[cfg_attr(
73045 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73046 assert_instr(zip2)
73338)]73047)]
73339#[cfg_attr(73048#[cfg_attr(
73340 not(target_arch = "arm"),73049 not(target_arch = "arm"),
...@@ -73359,7 +73068,11 @@ pub fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {...@@ -73359,7 +73068,11 @@ pub fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
73359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73068#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73360#[cfg_attr(73069#[cfg_attr(
73361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73362 assert_instr(zip)73071 assert_instr(zip1)
73072)]
73073#[cfg_attr(
73074 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73075 assert_instr(zip2)
73363)]73076)]
73364#[cfg_attr(73077#[cfg_attr(
73365 not(target_arch = "arm"),73078 not(target_arch = "arm"),
...@@ -73384,7 +73097,11 @@ pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {...@@ -73384,7 +73097,11 @@ pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
73384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73097#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73385#[cfg_attr(73098#[cfg_attr(
73386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73387 assert_instr(zip)73100 assert_instr(zip1)
73101)]
73102#[cfg_attr(
73103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73104 assert_instr(zip2)
73388)]73105)]
73389#[cfg_attr(73106#[cfg_attr(
73390 not(target_arch = "arm"),73107 not(target_arch = "arm"),
...@@ -73409,7 +73126,11 @@ pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {...@@ -73409,7 +73126,11 @@ pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
73409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73410#[cfg_attr(73127#[cfg_attr(
73411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73412 assert_instr(trn)73129 assert_instr(trn1)
73130)]
73131#[cfg_attr(
73132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73133 assert_instr(trn2)
73413)]73134)]
73414#[cfg_attr(73135#[cfg_attr(
73415 not(target_arch = "arm"),73136 not(target_arch = "arm"),
...@@ -73434,7 +73155,11 @@ pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {...@@ -73434,7 +73155,11 @@ pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
73434#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73435#[cfg_attr(73156#[cfg_attr(
73436 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73437 assert_instr(trn)73158 assert_instr(trn1)
73159)]
73160#[cfg_attr(
73161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73162 assert_instr(trn2)
73438)]73163)]
73439#[cfg_attr(73164#[cfg_attr(
73440 not(target_arch = "arm"),73165 not(target_arch = "arm"),
...@@ -73459,7 +73184,11 @@ pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {...@@ -73459,7 +73184,11 @@ pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
73459#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73460#[cfg_attr(73185#[cfg_attr(
73461 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73462 assert_instr(trn)73187 assert_instr(trn1)
73188)]
73189#[cfg_attr(
73190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73191 assert_instr(trn2)
73463)]73192)]
73464#[cfg_attr(73193#[cfg_attr(
73465 not(target_arch = "arm"),73194 not(target_arch = "arm"),
...@@ -73492,7 +73221,11 @@ pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {...@@ -73492,7 +73221,11 @@ pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
73492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73221#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73493#[cfg_attr(73222#[cfg_attr(
73494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73495 assert_instr(trn)73224 assert_instr(trn1)
73225)]
73226#[cfg_attr(
73227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73228 assert_instr(trn2)
73496)]73229)]
73497#[cfg_attr(73230#[cfg_attr(
73498 not(target_arch = "arm"),73231 not(target_arch = "arm"),
...@@ -73517,7 +73250,11 @@ pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {...@@ -73517,7 +73250,11 @@ pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
73517#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73518#[cfg_attr(73251#[cfg_attr(
73519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73520 assert_instr(trn)73253 assert_instr(trn1)
73254)]
73255#[cfg_attr(
73256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73257 assert_instr(trn2)
73521)]73258)]
73522#[cfg_attr(73259#[cfg_attr(
73523 not(target_arch = "arm"),73260 not(target_arch = "arm"),
...@@ -73542,7 +73279,11 @@ pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {...@@ -73542,7 +73279,11 @@ pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
73542#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73543#[cfg_attr(73280#[cfg_attr(
73544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73545 assert_instr(trn)73282 assert_instr(trn1)
73283)]
73284#[cfg_attr(
73285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73286 assert_instr(trn2)
73546)]73287)]
73547#[cfg_attr(73288#[cfg_attr(
73548 not(target_arch = "arm"),73289 not(target_arch = "arm"),
...@@ -73567,7 +73308,11 @@ pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {...@@ -73567,7 +73308,11 @@ pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
73567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73308#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73568#[cfg_attr(73309#[cfg_attr(
73569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73570 assert_instr(trn)73311 assert_instr(trn1)
73312)]
73313#[cfg_attr(
73314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73315 assert_instr(trn2)
73571)]73316)]
73572#[cfg_attr(73317#[cfg_attr(
73573 not(target_arch = "arm"),73318 not(target_arch = "arm"),
...@@ -73592,7 +73337,11 @@ pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {...@@ -73592,7 +73337,11 @@ pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
73592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73337#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73593#[cfg_attr(73338#[cfg_attr(
73594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73595 assert_instr(trn)73340 assert_instr(trn1)
73341)]
73342#[cfg_attr(
73343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73344 assert_instr(trn2)
73596)]73345)]
73597#[cfg_attr(73346#[cfg_attr(
73598 not(target_arch = "arm"),73347 not(target_arch = "arm"),
...@@ -73625,7 +73374,11 @@ pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {...@@ -73625,7 +73374,11 @@ pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
73625#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73374#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73626#[cfg_attr(73375#[cfg_attr(
73627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73376 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73628 assert_instr(trn)73377 assert_instr(trn1)
73378)]
73379#[cfg_attr(
73380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73381 assert_instr(trn2)
73629)]73382)]
73630#[cfg_attr(73383#[cfg_attr(
73631 not(target_arch = "arm"),73384 not(target_arch = "arm"),
...@@ -73650,7 +73403,11 @@ pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {...@@ -73650,7 +73403,11 @@ pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
73650#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73651#[cfg_attr(73404#[cfg_attr(
73652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73653 assert_instr(trn)73406 assert_instr(trn1)
73407)]
73408#[cfg_attr(
73409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73410 assert_instr(trn2)
73654)]73411)]
73655#[cfg_attr(73412#[cfg_attr(
73656 not(target_arch = "arm"),73413 not(target_arch = "arm"),
...@@ -73675,7 +73432,11 @@ pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {...@@ -73675,7 +73432,11 @@ pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
73675#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73676#[cfg_attr(73433#[cfg_attr(
73677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73678 assert_instr(trn)73435 assert_instr(trn1)
73436)]
73437#[cfg_attr(
73438 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73439 assert_instr(trn2)
73679)]73440)]
73680#[cfg_attr(73441#[cfg_attr(
73681 not(target_arch = "arm"),73442 not(target_arch = "arm"),
...@@ -73700,7 +73461,11 @@ pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {...@@ -73700,7 +73461,11 @@ pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
73700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73461#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73701#[cfg_attr(73462#[cfg_attr(
73702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73463 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73703 assert_instr(trn)73464 assert_instr(trn1)
73465)]
73466#[cfg_attr(
73467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73468 assert_instr(trn2)
73704)]73469)]
73705#[cfg_attr(73470#[cfg_attr(
73706 not(target_arch = "arm"),73471 not(target_arch = "arm"),
...@@ -73725,7 +73490,11 @@ pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {...@@ -73725,7 +73490,11 @@ pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
73725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73726#[cfg_attr(73491#[cfg_attr(
73727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73728 assert_instr(trn)73493 assert_instr(trn1)
73494)]
73495#[cfg_attr(
73496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73497 assert_instr(trn2)
73729)]73498)]
73730#[cfg_attr(73499#[cfg_attr(
73731 not(target_arch = "arm"),73500 not(target_arch = "arm"),
...@@ -73758,7 +73527,11 @@ pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {...@@ -73758,7 +73527,11 @@ pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
73758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73759#[cfg_attr(73528#[cfg_attr(
73760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73761 assert_instr(trn)73530 assert_instr(trn1)
73531)]
73532#[cfg_attr(
73533 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73534 assert_instr(trn2)
73762)]73535)]
73763#[cfg_attr(73536#[cfg_attr(
73764 not(target_arch = "arm"),73537 not(target_arch = "arm"),
...@@ -73783,7 +73556,11 @@ pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {...@@ -73783,7 +73556,11 @@ pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
73783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]73556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73784#[cfg_attr(73557#[cfg_attr(
73785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),73558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73786 assert_instr(trn)73559 assert_instr(trn1)
73560)]
73561#[cfg_attr(
73562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73563 assert_instr(trn2)
73787)]73564)]
73788#[cfg_attr(73565#[cfg_attr(
73789 not(target_arch = "arm"),73566 not(target_arch = "arm"),
...@@ -74349,7 +74126,11 @@ pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {...@@ -74349,7 +74126,11 @@ pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
74349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74350#[cfg_attr(74127#[cfg_attr(
74351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74352 assert_instr(uzp)74129 assert_instr(uzp1)
74130)]
74131#[cfg_attr(
74132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74133 assert_instr(uzp2)
74353)]74134)]
74354#[target_feature(enable = "neon,fp16")]74135#[target_feature(enable = "neon,fp16")]
74355#[unstable(feature = "stdarch_neon_f16", issue = "136306")]74136#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
...@@ -74367,7 +74148,11 @@ pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {...@@ -74367,7 +74148,11 @@ pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
74367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74368#[cfg_attr(74149#[cfg_attr(
74369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74370 assert_instr(uzp)74151 assert_instr(uzp1)
74152)]
74153#[cfg_attr(
74154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74155 assert_instr(uzp2)
74371)]74156)]
74372#[target_feature(enable = "neon,fp16")]74157#[target_feature(enable = "neon,fp16")]
74373#[unstable(feature = "stdarch_neon_f16", issue = "136306")]74158#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
...@@ -74386,7 +74171,11 @@ pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {...@@ -74386,7 +74171,11 @@ pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
74386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]74171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74387#[cfg_attr(74172#[cfg_attr(
74388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74389 assert_instr(zip)74174 assert_instr(zip1)
74175)]
74176#[cfg_attr(
74177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74178 assert_instr(zip2)
74390)]74179)]
74391#[cfg_attr(74180#[cfg_attr(
74392 not(target_arch = "arm"),74181 not(target_arch = "arm"),
...@@ -74411,7 +74200,11 @@ pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {...@@ -74411,7 +74200,11 @@ pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
74411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]74200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74412#[cfg_attr(74201#[cfg_attr(
74413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74414 assert_instr(zip)74203 assert_instr(zip1)
74204)]
74205#[cfg_attr(
74206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74207 assert_instr(zip2)
74415)]74208)]
74416#[cfg_attr(74209#[cfg_attr(
74417 not(target_arch = "arm"),74210 not(target_arch = "arm"),
...@@ -74436,7 +74229,11 @@ pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {...@@ -74436,7 +74229,11 @@ pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
74436#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]74229#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74437#[cfg_attr(74230#[cfg_attr(
74438 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74439 assert_instr(zip)74232 assert_instr(zip1)
74233)]
74234#[cfg_attr(
74235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74236 assert_instr(zip2)
74440)]74237)]
74441#[cfg_attr(74238#[cfg_attr(
74442 not(target_arch = "arm"),74239 not(target_arch = "arm"),
...@@ -74461,7 +74258,11 @@ pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {...@@ -74461,7 +74258,11 @@ pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
74461#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74462#[cfg_attr(74259#[cfg_attr(
74463 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74464 assert_instr(uzp)74261 assert_instr(uzp1)
74262)]
74263#[cfg_attr(
74264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74265 assert_instr(uzp2)
74465)]74266)]
74466#[cfg_attr(74267#[cfg_attr(
74467 not(target_arch = "arm"),74268 not(target_arch = "arm"),
...@@ -74486,7 +74287,11 @@ pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {...@@ -74486,7 +74287,11 @@ pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
74486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74487#[cfg_attr(74288#[cfg_attr(
74488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74489 assert_instr(uzp)74290 assert_instr(uzp1)
74291)]
74292#[cfg_attr(
74293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74294 assert_instr(uzp2)
74490)]74295)]
74491#[cfg_attr(74296#[cfg_attr(
74492 not(target_arch = "arm"),74297 not(target_arch = "arm"),
...@@ -74511,7 +74316,11 @@ pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {...@@ -74511,7 +74316,11 @@ pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
74511#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74316#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74512#[cfg_attr(74317#[cfg_attr(
74513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74318 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74514 assert_instr(uzp)74319 assert_instr(uzp1)
74320)]
74321#[cfg_attr(
74322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74323 assert_instr(uzp2)
74515)]74324)]
74516#[cfg_attr(74325#[cfg_attr(
74517 not(target_arch = "arm"),74326 not(target_arch = "arm"),
...@@ -74544,7 +74353,11 @@ pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {...@@ -74544,7 +74353,11 @@ pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
74544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74545#[cfg_attr(74354#[cfg_attr(
74546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74547 assert_instr(uzp)74356 assert_instr(uzp1)
74357)]
74358#[cfg_attr(
74359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74360 assert_instr(uzp2)
74548)]74361)]
74549#[cfg_attr(74362#[cfg_attr(
74550 not(target_arch = "arm"),74363 not(target_arch = "arm"),
...@@ -74569,7 +74382,11 @@ pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {...@@ -74569,7 +74382,11 @@ pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
74569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74382#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74570#[cfg_attr(74383#[cfg_attr(
74571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74384 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74572 assert_instr(uzp)74385 assert_instr(uzp1)
74386)]
74387#[cfg_attr(
74388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74389 assert_instr(uzp2)
74573)]74390)]
74574#[cfg_attr(74391#[cfg_attr(
74575 not(target_arch = "arm"),74392 not(target_arch = "arm"),
...@@ -74594,7 +74411,11 @@ pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {...@@ -74594,7 +74411,11 @@ pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
74594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74595#[cfg_attr(74412#[cfg_attr(
74596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74597 assert_instr(uzp)74414 assert_instr(uzp1)
74415)]
74416#[cfg_attr(
74417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74418 assert_instr(uzp2)
74598)]74419)]
74599#[cfg_attr(74420#[cfg_attr(
74600 not(target_arch = "arm"),74421 not(target_arch = "arm"),
...@@ -74619,7 +74440,11 @@ pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {...@@ -74619,7 +74440,11 @@ pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
74619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74440#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74620#[cfg_attr(74441#[cfg_attr(
74621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74622 assert_instr(uzp)74443 assert_instr(uzp1)
74444)]
74445#[cfg_attr(
74446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74447 assert_instr(uzp2)
74623)]74448)]
74624#[cfg_attr(74449#[cfg_attr(
74625 not(target_arch = "arm"),74450 not(target_arch = "arm"),
...@@ -74644,7 +74469,11 @@ pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {...@@ -74644,7 +74469,11 @@ pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
74644#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74469#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74645#[cfg_attr(74470#[cfg_attr(
74646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74647 assert_instr(uzp)74472 assert_instr(uzp1)
74473)]
74474#[cfg_attr(
74475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74476 assert_instr(uzp2)
74648)]74477)]
74649#[cfg_attr(74478#[cfg_attr(
74650 not(target_arch = "arm"),74479 not(target_arch = "arm"),
...@@ -74677,7 +74506,11 @@ pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {...@@ -74677,7 +74506,11 @@ pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
74677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74678#[cfg_attr(74507#[cfg_attr(
74679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74680 assert_instr(uzp)74509 assert_instr(uzp1)
74510)]
74511#[cfg_attr(
74512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74513 assert_instr(uzp2)
74681)]74514)]
74682#[cfg_attr(74515#[cfg_attr(
74683 not(target_arch = "arm"),74516 not(target_arch = "arm"),
...@@ -74702,7 +74535,11 @@ pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {...@@ -74702,7 +74535,11 @@ pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
74702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74703#[cfg_attr(74536#[cfg_attr(
74704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74705 assert_instr(uzp)74538 assert_instr(uzp1)
74539)]
74540#[cfg_attr(
74541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74542 assert_instr(uzp2)
74706)]74543)]
74707#[cfg_attr(74544#[cfg_attr(
74708 not(target_arch = "arm"),74545 not(target_arch = "arm"),
...@@ -74727,7 +74564,11 @@ pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {...@@ -74727,7 +74564,11 @@ pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
74727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74728#[cfg_attr(74565#[cfg_attr(
74729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74730 assert_instr(uzp)74567 assert_instr(uzp1)
74568)]
74569#[cfg_attr(
74570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74571 assert_instr(uzp2)
74731)]74572)]
74732#[cfg_attr(74573#[cfg_attr(
74733 not(target_arch = "arm"),74574 not(target_arch = "arm"),
...@@ -74752,7 +74593,11 @@ pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {...@@ -74752,7 +74593,11 @@ pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
74752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74593#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74753#[cfg_attr(74594#[cfg_attr(
74754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74755 assert_instr(uzp)74596 assert_instr(uzp1)
74597)]
74598#[cfg_attr(
74599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74600 assert_instr(uzp2)
74756)]74601)]
74757#[cfg_attr(74602#[cfg_attr(
74758 not(target_arch = "arm"),74603 not(target_arch = "arm"),
...@@ -74777,7 +74622,11 @@ pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {...@@ -74777,7 +74622,11 @@ pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
74777#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74622#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74778#[cfg_attr(74623#[cfg_attr(
74779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74780 assert_instr(uzp)74625 assert_instr(uzp1)
74626)]
74627#[cfg_attr(
74628 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74629 assert_instr(uzp2)
74781)]74630)]
74782#[cfg_attr(74631#[cfg_attr(
74783 not(target_arch = "arm"),74632 not(target_arch = "arm"),
...@@ -74810,7 +74659,11 @@ pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {...@@ -74810,7 +74659,11 @@ pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
74810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74659#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74811#[cfg_attr(74660#[cfg_attr(
74812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74661 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74813 assert_instr(uzp)74662 assert_instr(uzp1)
74663)]
74664#[cfg_attr(
74665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74666 assert_instr(uzp2)
74814)]74667)]
74815#[cfg_attr(74668#[cfg_attr(
74816 not(target_arch = "arm"),74669 not(target_arch = "arm"),
...@@ -74835,7 +74688,11 @@ pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {...@@ -74835,7 +74688,11 @@ pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
74835#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]74688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
74836#[cfg_attr(74689#[cfg_attr(
74837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74838 assert_instr(uzp)74691 assert_instr(uzp1)
74692)]
74693#[cfg_attr(
74694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74695 assert_instr(uzp2)
74839)]74696)]
74840#[cfg_attr(74697#[cfg_attr(
74841 not(target_arch = "arm"),74698 not(target_arch = "arm"),
...@@ -74859,7 +74716,11 @@ pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {...@@ -74859,7 +74716,11 @@ pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
74859#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]74716#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
74860#[cfg_attr(74717#[cfg_attr(
74861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74862 assert_instr(zip)74719 assert_instr(zip1)
74720)]
74721#[cfg_attr(
74722 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74723 assert_instr(zip2)
74863)]74724)]
74864#[target_feature(enable = "neon,fp16")]74725#[target_feature(enable = "neon,fp16")]
74865#[unstable(feature = "stdarch_neon_f16", issue = "136306")]74726#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
...@@ -74877,7 +74738,11 @@ pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {...@@ -74877,7 +74738,11 @@ pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
74877#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]74738#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
74878#[cfg_attr(74739#[cfg_attr(
74879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74880 assert_instr(zip)74741 assert_instr(zip1)
74742)]
74743#[cfg_attr(
74744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74745 assert_instr(zip2)
74881)]74746)]
74882#[target_feature(enable = "neon,fp16")]74747#[target_feature(enable = "neon,fp16")]
74883#[unstable(feature = "stdarch_neon_f16", issue = "136306")]74748#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
...@@ -74896,7 +74761,11 @@ pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {...@@ -74896,7 +74761,11 @@ pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
74896#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]74761#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74897#[cfg_attr(74762#[cfg_attr(
74898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74899 assert_instr(zip)74764 assert_instr(zip1)
74765)]
74766#[cfg_attr(
74767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74768 assert_instr(zip2)
74900)]74769)]
74901#[cfg_attr(74770#[cfg_attr(
74902 not(target_arch = "arm"),74771 not(target_arch = "arm"),
...@@ -74921,7 +74790,11 @@ pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {...@@ -74921,7 +74790,11 @@ pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
74921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]74790#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74922#[cfg_attr(74791#[cfg_attr(
74923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74792 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74924 assert_instr(zip)74793 assert_instr(zip1)
74794)]
74795#[cfg_attr(
74796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74797 assert_instr(zip2)
74925)]74798)]
74926#[cfg_attr(74799#[cfg_attr(
74927 not(target_arch = "arm"),74800 not(target_arch = "arm"),
...@@ -74946,7 +74819,11 @@ pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {...@@ -74946,7 +74819,11 @@ pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
74946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]74819#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74947#[cfg_attr(74820#[cfg_attr(
74948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74949 assert_instr(zip)74822 assert_instr(zip1)
74823)]
74824#[cfg_attr(
74825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74826 assert_instr(zip2)
74950)]74827)]
74951#[cfg_attr(74828#[cfg_attr(
74952 not(target_arch = "arm"),74829 not(target_arch = "arm"),
...@@ -74971,7 +74848,11 @@ pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {...@@ -74971,7 +74848,11 @@ pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
74971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]74848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
74972#[cfg_attr(74849#[cfg_attr(
74973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74974 assert_instr(zip)74851 assert_instr(zip1)
74852)]
74853#[cfg_attr(
74854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74855 assert_instr(zip2)
74975)]74856)]
74976#[cfg_attr(74857#[cfg_attr(
74977 not(target_arch = "arm"),74858 not(target_arch = "arm"),
...@@ -74996,7 +74877,11 @@ pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {...@@ -74996,7 +74877,11 @@ pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
74996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]74877#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
74997#[cfg_attr(74878#[cfg_attr(
74998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74999 assert_instr(zip)74880 assert_instr(zip1)
74881)]
74882#[cfg_attr(
74883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74884 assert_instr(zip2)
75000)]74885)]
75001#[cfg_attr(74886#[cfg_attr(
75002 not(target_arch = "arm"),74887 not(target_arch = "arm"),
...@@ -75021,7 +74906,11 @@ pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {...@@ -75021,7 +74906,11 @@ pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
75021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]74906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
75022#[cfg_attr(74907#[cfg_attr(
75023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75024 assert_instr(zip)74909 assert_instr(zip1)
74910)]
74911#[cfg_attr(
74912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74913 assert_instr(zip2)
75025)]74914)]
75026#[cfg_attr(74915#[cfg_attr(
75027 not(target_arch = "arm"),74916 not(target_arch = "arm"),
...@@ -75046,7 +74935,11 @@ pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {...@@ -75046,7 +74935,11 @@ pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
75046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]74935#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
75047#[cfg_attr(74936#[cfg_attr(
75048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75049 assert_instr(zip)74938 assert_instr(zip1)
74939)]
74940#[cfg_attr(
74941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74942 assert_instr(zip2)
75050)]74943)]
75051#[cfg_attr(74944#[cfg_attr(
75052 not(target_arch = "arm"),74945 not(target_arch = "arm"),
...@@ -75071,7 +74964,11 @@ pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {...@@ -75071,7 +74964,11 @@ pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
75071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]74964#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
75072#[cfg_attr(74965#[cfg_attr(
75073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75074 assert_instr(zip)74967 assert_instr(zip1)
74968)]
74969#[cfg_attr(
74970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74971 assert_instr(zip2)
75075)]74972)]
75076#[cfg_attr(74973#[cfg_attr(
75077 not(target_arch = "arm"),74974 not(target_arch = "arm"),
...@@ -75096,7 +74993,11 @@ pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {...@@ -75096,7 +74993,11 @@ pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
75096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]74993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
75097#[cfg_attr(74994#[cfg_attr(
75098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),74995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75099 assert_instr(zip)74996 assert_instr(zip1)
74997)]
74998#[cfg_attr(
74999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75000 assert_instr(zip2)
75100)]75001)]
75101#[cfg_attr(75002#[cfg_attr(
75102 not(target_arch = "arm"),75003 not(target_arch = "arm"),
...@@ -75121,7 +75022,11 @@ pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {...@@ -75121,7 +75022,11 @@ pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
75121#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75122#[cfg_attr(75023#[cfg_attr(
75123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75124 assert_instr(zip)75025 assert_instr(zip1)
75026)]
75027#[cfg_attr(
75028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75029 assert_instr(zip2)
75125)]75030)]
75126#[cfg_attr(75031#[cfg_attr(
75127 not(target_arch = "arm"),75032 not(target_arch = "arm"),
...@@ -75146,7 +75051,11 @@ pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {...@@ -75146,7 +75051,11 @@ pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
75146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75147#[cfg_attr(75052#[cfg_attr(
75148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75149 assert_instr(zip)75054 assert_instr(zip1)
75055)]
75056#[cfg_attr(
75057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75058 assert_instr(zip2)
75150)]75059)]
75151#[cfg_attr(75060#[cfg_attr(
75152 not(target_arch = "arm"),75061 not(target_arch = "arm"),
...@@ -75179,7 +75088,11 @@ pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {...@@ -75179,7 +75088,11 @@ pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
75179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75088#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75180#[cfg_attr(75089#[cfg_attr(
75181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75182 assert_instr(zip)75091 assert_instr(zip1)
75092)]
75093#[cfg_attr(
75094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75095 assert_instr(zip2)
75183)]75096)]
75184#[cfg_attr(75097#[cfg_attr(
75185 not(target_arch = "arm"),75098 not(target_arch = "arm"),
...@@ -75204,7 +75117,11 @@ pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {...@@ -75204,7 +75117,11 @@ pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
75204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75205#[cfg_attr(75118#[cfg_attr(
75206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75207 assert_instr(zip)75120 assert_instr(zip1)
75121)]
75122#[cfg_attr(
75123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75124 assert_instr(zip2)
75208)]75125)]
75209#[cfg_attr(75126#[cfg_attr(
75210 not(target_arch = "arm"),75127 not(target_arch = "arm"),
...@@ -75229,7 +75146,11 @@ pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {...@@ -75229,7 +75146,11 @@ pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
75229#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75230#[cfg_attr(75147#[cfg_attr(
75231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75232 assert_instr(zip)75149 assert_instr(zip1)
75150)]
75151#[cfg_attr(
75152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75153 assert_instr(zip2)
75233)]75154)]
75234#[cfg_attr(75155#[cfg_attr(
75235 not(target_arch = "arm"),75156 not(target_arch = "arm"),
...@@ -75262,7 +75183,11 @@ pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {...@@ -75262,7 +75183,11 @@ pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
75262#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75263#[cfg_attr(75184#[cfg_attr(
75264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75265 assert_instr(zip)75186 assert_instr(zip1)
75187)]
75188#[cfg_attr(
75189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75190 assert_instr(zip2)
75266)]75191)]
75267#[cfg_attr(75192#[cfg_attr(
75268 not(target_arch = "arm"),75193 not(target_arch = "arm"),
...@@ -75287,7 +75212,11 @@ pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {...@@ -75287,7 +75212,11 @@ pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
75287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75288#[cfg_attr(75213#[cfg_attr(
75289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75290 assert_instr(zip)75215 assert_instr(zip1)
75216)]
75217#[cfg_attr(
75218 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75219 assert_instr(zip2)
75291)]75220)]
75292#[cfg_attr(75221#[cfg_attr(
75293 not(target_arch = "arm"),75222 not(target_arch = "arm"),
...@@ -75312,7 +75241,11 @@ pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {...@@ -75312,7 +75241,11 @@ pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
75312#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75313#[cfg_attr(75242#[cfg_attr(
75314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75315 assert_instr(zip)75244 assert_instr(zip1)
75245)]
75246#[cfg_attr(
75247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75248 assert_instr(zip2)
75316)]75249)]
75317#[cfg_attr(75250#[cfg_attr(
75318 not(target_arch = "arm"),75251 not(target_arch = "arm"),
...@@ -75345,7 +75278,11 @@ pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {...@@ -75345,7 +75278,11 @@ pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
75345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]75278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
75346#[cfg_attr(75279#[cfg_attr(
75347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),75280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75348 assert_instr(zip)75281 assert_instr(zip1)
75282)]
75283#[cfg_attr(
75284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75285 assert_instr(zip2)
75349)]75286)]
75350#[cfg_attr(75287#[cfg_attr(
75351 not(target_arch = "arm"),75288 not(target_arch = "arm"),
library/stdarch/crates/core_arch/src/core_arch_docs.md+2
...@@ -193,6 +193,7 @@ others at:...@@ -193,6 +193,7 @@ others at:
193* [`powerpc64`]193* [`powerpc64`]
194* [`nvptx`]194* [`nvptx`]
195* [`wasm32`]195* [`wasm32`]
196* [`loongarch32`]
196* [`loongarch64`]197* [`loongarch64`]
197* [`s390x`]198* [`s390x`]
198199
...@@ -208,6 +209,7 @@ others at:...@@ -208,6 +209,7 @@ others at:
208[`powerpc64`]: ../../core/arch/powerpc64/index.html209[`powerpc64`]: ../../core/arch/powerpc64/index.html
209[`nvptx`]: ../../core/arch/nvptx/index.html210[`nvptx`]: ../../core/arch/nvptx/index.html
210[`wasm32`]: ../../core/arch/wasm32/index.html211[`wasm32`]: ../../core/arch/wasm32/index.html
212[`loongarch32`]: ../../core/arch/loongarch32/index.html
211[`loongarch64`]: ../../core/arch/loongarch64/index.html213[`loongarch64`]: ../../core/arch/loongarch64/index.html
212[`s390x`]: ../../core/arch/s390x/index.html214[`s390x`]: ../../core/arch/s390x/index.html
213215
library/stdarch/crates/core_arch/src/loongarch32/mod.rs created+47
...@@ -0,0 +1,47 @@
1//! `LoongArch32` intrinsics
2
3use crate::arch::asm;
4
5#[allow(improper_ctypes)]
6unsafe extern "unadjusted" {
7 #[link_name = "llvm.loongarch.cacop.w"]
8 fn __cacop(a: i32, b: i32, c: i32);
9 #[link_name = "llvm.loongarch.csrrd.w"]
10 fn __csrrd(a: i32) -> i32;
11 #[link_name = "llvm.loongarch.csrwr.w"]
12 fn __csrwr(a: i32, b: i32) -> i32;
13 #[link_name = "llvm.loongarch.csrxchg.w"]
14 fn __csrxchg(a: i32, b: i32, c: i32) -> i32;
15}
16
17/// Generates the cache operation instruction
18#[inline]
19#[unstable(feature = "stdarch_loongarch", issue = "117427")]
20pub unsafe fn cacop<const IMM12: i32>(a: i32, b: i32) {
21 static_assert_simm_bits!(IMM12, 12);
22 __cacop(a, b, IMM12);
23}
24
25/// Reads the CSR
26#[inline]
27#[unstable(feature = "stdarch_loongarch", issue = "117427")]
28pub unsafe fn csrrd<const IMM14: i32>() -> i32 {
29 static_assert_uimm_bits!(IMM14, 14);
30 __csrrd(IMM14)
31}
32
33/// Writes the CSR
34#[inline]
35#[unstable(feature = "stdarch_loongarch", issue = "117427")]
36pub unsafe fn csrwr<const IMM14: i32>(a: i32) -> i32 {
37 static_assert_uimm_bits!(IMM14, 14);
38 __csrwr(a, IMM14)
39}
40
41/// Exchanges the CSR
42#[inline]
43#[unstable(feature = "stdarch_loongarch", issue = "117427")]
44pub unsafe fn csrxchg<const IMM14: i32>(a: i32, b: i32) -> i32 {
45 static_assert_uimm_bits!(IMM14, 14);
46 __csrxchg(a, b, IMM14)
47}
library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs+1456-1456
...@@ -1495,3501 +1495,3501 @@ unsafe extern "unadjusted" {...@@ -1495,3501 +1495,3501 @@ unsafe extern "unadjusted" {
1495#[inline]1495#[inline]
1496#[target_feature(enable = "lasx")]1496#[target_feature(enable = "lasx")]
1497#[unstable(feature = "stdarch_loongarch", issue = "117427")]1497#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1498pub unsafe fn lasx_xvsll_b(a: v32i8, b: v32i8) -> v32i8 {1498pub fn lasx_xvsll_b(a: v32i8, b: v32i8) -> v32i8 {
1499 __lasx_xvsll_b(a, b)1499 unsafe { __lasx_xvsll_b(a, b) }
1500}1500}
15011501
1502#[inline]1502#[inline]
1503#[target_feature(enable = "lasx")]1503#[target_feature(enable = "lasx")]
1504#[unstable(feature = "stdarch_loongarch", issue = "117427")]1504#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1505pub unsafe fn lasx_xvsll_h(a: v16i16, b: v16i16) -> v16i16 {1505pub fn lasx_xvsll_h(a: v16i16, b: v16i16) -> v16i16 {
1506 __lasx_xvsll_h(a, b)1506 unsafe { __lasx_xvsll_h(a, b) }
1507}1507}
15081508
1509#[inline]1509#[inline]
1510#[target_feature(enable = "lasx")]1510#[target_feature(enable = "lasx")]
1511#[unstable(feature = "stdarch_loongarch", issue = "117427")]1511#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1512pub unsafe fn lasx_xvsll_w(a: v8i32, b: v8i32) -> v8i32 {1512pub fn lasx_xvsll_w(a: v8i32, b: v8i32) -> v8i32 {
1513 __lasx_xvsll_w(a, b)1513 unsafe { __lasx_xvsll_w(a, b) }
1514}1514}
15151515
1516#[inline]1516#[inline]
1517#[target_feature(enable = "lasx")]1517#[target_feature(enable = "lasx")]
1518#[unstable(feature = "stdarch_loongarch", issue = "117427")]1518#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1519pub unsafe fn lasx_xvsll_d(a: v4i64, b: v4i64) -> v4i64 {1519pub fn lasx_xvsll_d(a: v4i64, b: v4i64) -> v4i64 {
1520 __lasx_xvsll_d(a, b)1520 unsafe { __lasx_xvsll_d(a, b) }
1521}1521}
15221522
1523#[inline]1523#[inline]
1524#[target_feature(enable = "lasx")]1524#[target_feature(enable = "lasx")]
1525#[rustc_legacy_const_generics(1)]1525#[rustc_legacy_const_generics(1)]
1526#[unstable(feature = "stdarch_loongarch", issue = "117427")]1526#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1527pub unsafe fn lasx_xvslli_b<const IMM3: u32>(a: v32i8) -> v32i8 {1527pub fn lasx_xvslli_b<const IMM3: u32>(a: v32i8) -> v32i8 {
1528 static_assert_uimm_bits!(IMM3, 3);1528 static_assert_uimm_bits!(IMM3, 3);
1529 __lasx_xvslli_b(a, IMM3)1529 unsafe { __lasx_xvslli_b(a, IMM3) }
1530}1530}
15311531
1532#[inline]1532#[inline]
1533#[target_feature(enable = "lasx")]1533#[target_feature(enable = "lasx")]
1534#[rustc_legacy_const_generics(1)]1534#[rustc_legacy_const_generics(1)]
1535#[unstable(feature = "stdarch_loongarch", issue = "117427")]1535#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1536pub unsafe fn lasx_xvslli_h<const IMM4: u32>(a: v16i16) -> v16i16 {1536pub fn lasx_xvslli_h<const IMM4: u32>(a: v16i16) -> v16i16 {
1537 static_assert_uimm_bits!(IMM4, 4);1537 static_assert_uimm_bits!(IMM4, 4);
1538 __lasx_xvslli_h(a, IMM4)1538 unsafe { __lasx_xvslli_h(a, IMM4) }
1539}1539}
15401540
1541#[inline]1541#[inline]
1542#[target_feature(enable = "lasx")]1542#[target_feature(enable = "lasx")]
1543#[rustc_legacy_const_generics(1)]1543#[rustc_legacy_const_generics(1)]
1544#[unstable(feature = "stdarch_loongarch", issue = "117427")]1544#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1545pub unsafe fn lasx_xvslli_w<const IMM5: u32>(a: v8i32) -> v8i32 {1545pub fn lasx_xvslli_w<const IMM5: u32>(a: v8i32) -> v8i32 {
1546 static_assert_uimm_bits!(IMM5, 5);1546 static_assert_uimm_bits!(IMM5, 5);
1547 __lasx_xvslli_w(a, IMM5)1547 unsafe { __lasx_xvslli_w(a, IMM5) }
1548}1548}
15491549
1550#[inline]1550#[inline]
1551#[target_feature(enable = "lasx")]1551#[target_feature(enable = "lasx")]
1552#[rustc_legacy_const_generics(1)]1552#[rustc_legacy_const_generics(1)]
1553#[unstable(feature = "stdarch_loongarch", issue = "117427")]1553#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1554pub unsafe fn lasx_xvslli_d<const IMM6: u32>(a: v4i64) -> v4i64 {1554pub fn lasx_xvslli_d<const IMM6: u32>(a: v4i64) -> v4i64 {
1555 static_assert_uimm_bits!(IMM6, 6);1555 static_assert_uimm_bits!(IMM6, 6);
1556 __lasx_xvslli_d(a, IMM6)1556 unsafe { __lasx_xvslli_d(a, IMM6) }
1557}1557}
15581558
1559#[inline]1559#[inline]
1560#[target_feature(enable = "lasx")]1560#[target_feature(enable = "lasx")]
1561#[unstable(feature = "stdarch_loongarch", issue = "117427")]1561#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1562pub unsafe fn lasx_xvsra_b(a: v32i8, b: v32i8) -> v32i8 {1562pub fn lasx_xvsra_b(a: v32i8, b: v32i8) -> v32i8 {
1563 __lasx_xvsra_b(a, b)1563 unsafe { __lasx_xvsra_b(a, b) }
1564}1564}
15651565
1566#[inline]1566#[inline]
1567#[target_feature(enable = "lasx")]1567#[target_feature(enable = "lasx")]
1568#[unstable(feature = "stdarch_loongarch", issue = "117427")]1568#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1569pub unsafe fn lasx_xvsra_h(a: v16i16, b: v16i16) -> v16i16 {1569pub fn lasx_xvsra_h(a: v16i16, b: v16i16) -> v16i16 {
1570 __lasx_xvsra_h(a, b)1570 unsafe { __lasx_xvsra_h(a, b) }
1571}1571}
15721572
1573#[inline]1573#[inline]
1574#[target_feature(enable = "lasx")]1574#[target_feature(enable = "lasx")]
1575#[unstable(feature = "stdarch_loongarch", issue = "117427")]1575#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1576pub unsafe fn lasx_xvsra_w(a: v8i32, b: v8i32) -> v8i32 {1576pub fn lasx_xvsra_w(a: v8i32, b: v8i32) -> v8i32 {
1577 __lasx_xvsra_w(a, b)1577 unsafe { __lasx_xvsra_w(a, b) }
1578}1578}
15791579
1580#[inline]1580#[inline]
1581#[target_feature(enable = "lasx")]1581#[target_feature(enable = "lasx")]
1582#[unstable(feature = "stdarch_loongarch", issue = "117427")]1582#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1583pub unsafe fn lasx_xvsra_d(a: v4i64, b: v4i64) -> v4i64 {1583pub fn lasx_xvsra_d(a: v4i64, b: v4i64) -> v4i64 {
1584 __lasx_xvsra_d(a, b)1584 unsafe { __lasx_xvsra_d(a, b) }
1585}1585}
15861586
1587#[inline]1587#[inline]
1588#[target_feature(enable = "lasx")]1588#[target_feature(enable = "lasx")]
1589#[rustc_legacy_const_generics(1)]1589#[rustc_legacy_const_generics(1)]
1590#[unstable(feature = "stdarch_loongarch", issue = "117427")]1590#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1591pub unsafe fn lasx_xvsrai_b<const IMM3: u32>(a: v32i8) -> v32i8 {1591pub fn lasx_xvsrai_b<const IMM3: u32>(a: v32i8) -> v32i8 {
1592 static_assert_uimm_bits!(IMM3, 3);1592 static_assert_uimm_bits!(IMM3, 3);
1593 __lasx_xvsrai_b(a, IMM3)1593 unsafe { __lasx_xvsrai_b(a, IMM3) }
1594}1594}
15951595
1596#[inline]1596#[inline]
1597#[target_feature(enable = "lasx")]1597#[target_feature(enable = "lasx")]
1598#[rustc_legacy_const_generics(1)]1598#[rustc_legacy_const_generics(1)]
1599#[unstable(feature = "stdarch_loongarch", issue = "117427")]1599#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1600pub unsafe fn lasx_xvsrai_h<const IMM4: u32>(a: v16i16) -> v16i16 {1600pub fn lasx_xvsrai_h<const IMM4: u32>(a: v16i16) -> v16i16 {
1601 static_assert_uimm_bits!(IMM4, 4);1601 static_assert_uimm_bits!(IMM4, 4);
1602 __lasx_xvsrai_h(a, IMM4)1602 unsafe { __lasx_xvsrai_h(a, IMM4) }
1603}1603}
16041604
1605#[inline]1605#[inline]
1606#[target_feature(enable = "lasx")]1606#[target_feature(enable = "lasx")]
1607#[rustc_legacy_const_generics(1)]1607#[rustc_legacy_const_generics(1)]
1608#[unstable(feature = "stdarch_loongarch", issue = "117427")]1608#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1609pub unsafe fn lasx_xvsrai_w<const IMM5: u32>(a: v8i32) -> v8i32 {1609pub fn lasx_xvsrai_w<const IMM5: u32>(a: v8i32) -> v8i32 {
1610 static_assert_uimm_bits!(IMM5, 5);1610 static_assert_uimm_bits!(IMM5, 5);
1611 __lasx_xvsrai_w(a, IMM5)1611 unsafe { __lasx_xvsrai_w(a, IMM5) }
1612}1612}
16131613
1614#[inline]1614#[inline]
1615#[target_feature(enable = "lasx")]1615#[target_feature(enable = "lasx")]
1616#[rustc_legacy_const_generics(1)]1616#[rustc_legacy_const_generics(1)]
1617#[unstable(feature = "stdarch_loongarch", issue = "117427")]1617#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1618pub unsafe fn lasx_xvsrai_d<const IMM6: u32>(a: v4i64) -> v4i64 {1618pub fn lasx_xvsrai_d<const IMM6: u32>(a: v4i64) -> v4i64 {
1619 static_assert_uimm_bits!(IMM6, 6);1619 static_assert_uimm_bits!(IMM6, 6);
1620 __lasx_xvsrai_d(a, IMM6)1620 unsafe { __lasx_xvsrai_d(a, IMM6) }
1621}1621}
16221622
1623#[inline]1623#[inline]
1624#[target_feature(enable = "lasx")]1624#[target_feature(enable = "lasx")]
1625#[unstable(feature = "stdarch_loongarch", issue = "117427")]1625#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1626pub unsafe fn lasx_xvsrar_b(a: v32i8, b: v32i8) -> v32i8 {1626pub fn lasx_xvsrar_b(a: v32i8, b: v32i8) -> v32i8 {
1627 __lasx_xvsrar_b(a, b)1627 unsafe { __lasx_xvsrar_b(a, b) }
1628}1628}
16291629
1630#[inline]1630#[inline]
1631#[target_feature(enable = "lasx")]1631#[target_feature(enable = "lasx")]
1632#[unstable(feature = "stdarch_loongarch", issue = "117427")]1632#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1633pub unsafe fn lasx_xvsrar_h(a: v16i16, b: v16i16) -> v16i16 {1633pub fn lasx_xvsrar_h(a: v16i16, b: v16i16) -> v16i16 {
1634 __lasx_xvsrar_h(a, b)1634 unsafe { __lasx_xvsrar_h(a, b) }
1635}1635}
16361636
1637#[inline]1637#[inline]
1638#[target_feature(enable = "lasx")]1638#[target_feature(enable = "lasx")]
1639#[unstable(feature = "stdarch_loongarch", issue = "117427")]1639#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1640pub unsafe fn lasx_xvsrar_w(a: v8i32, b: v8i32) -> v8i32 {1640pub fn lasx_xvsrar_w(a: v8i32, b: v8i32) -> v8i32 {
1641 __lasx_xvsrar_w(a, b)1641 unsafe { __lasx_xvsrar_w(a, b) }
1642}1642}
16431643
1644#[inline]1644#[inline]
1645#[target_feature(enable = "lasx")]1645#[target_feature(enable = "lasx")]
1646#[unstable(feature = "stdarch_loongarch", issue = "117427")]1646#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1647pub unsafe fn lasx_xvsrar_d(a: v4i64, b: v4i64) -> v4i64 {1647pub fn lasx_xvsrar_d(a: v4i64, b: v4i64) -> v4i64 {
1648 __lasx_xvsrar_d(a, b)1648 unsafe { __lasx_xvsrar_d(a, b) }
1649}1649}
16501650
1651#[inline]1651#[inline]
1652#[target_feature(enable = "lasx")]1652#[target_feature(enable = "lasx")]
1653#[rustc_legacy_const_generics(1)]1653#[rustc_legacy_const_generics(1)]
1654#[unstable(feature = "stdarch_loongarch", issue = "117427")]1654#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1655pub unsafe fn lasx_xvsrari_b<const IMM3: u32>(a: v32i8) -> v32i8 {1655pub fn lasx_xvsrari_b<const IMM3: u32>(a: v32i8) -> v32i8 {
1656 static_assert_uimm_bits!(IMM3, 3);1656 static_assert_uimm_bits!(IMM3, 3);
1657 __lasx_xvsrari_b(a, IMM3)1657 unsafe { __lasx_xvsrari_b(a, IMM3) }
1658}1658}
16591659
1660#[inline]1660#[inline]
1661#[target_feature(enable = "lasx")]1661#[target_feature(enable = "lasx")]
1662#[rustc_legacy_const_generics(1)]1662#[rustc_legacy_const_generics(1)]
1663#[unstable(feature = "stdarch_loongarch", issue = "117427")]1663#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1664pub unsafe fn lasx_xvsrari_h<const IMM4: u32>(a: v16i16) -> v16i16 {1664pub fn lasx_xvsrari_h<const IMM4: u32>(a: v16i16) -> v16i16 {
1665 static_assert_uimm_bits!(IMM4, 4);1665 static_assert_uimm_bits!(IMM4, 4);
1666 __lasx_xvsrari_h(a, IMM4)1666 unsafe { __lasx_xvsrari_h(a, IMM4) }
1667}1667}
16681668
1669#[inline]1669#[inline]
1670#[target_feature(enable = "lasx")]1670#[target_feature(enable = "lasx")]
1671#[rustc_legacy_const_generics(1)]1671#[rustc_legacy_const_generics(1)]
1672#[unstable(feature = "stdarch_loongarch", issue = "117427")]1672#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1673pub unsafe fn lasx_xvsrari_w<const IMM5: u32>(a: v8i32) -> v8i32 {1673pub fn lasx_xvsrari_w<const IMM5: u32>(a: v8i32) -> v8i32 {
1674 static_assert_uimm_bits!(IMM5, 5);1674 static_assert_uimm_bits!(IMM5, 5);
1675 __lasx_xvsrari_w(a, IMM5)1675 unsafe { __lasx_xvsrari_w(a, IMM5) }
1676}1676}
16771677
1678#[inline]1678#[inline]
1679#[target_feature(enable = "lasx")]1679#[target_feature(enable = "lasx")]
1680#[rustc_legacy_const_generics(1)]1680#[rustc_legacy_const_generics(1)]
1681#[unstable(feature = "stdarch_loongarch", issue = "117427")]1681#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1682pub unsafe fn lasx_xvsrari_d<const IMM6: u32>(a: v4i64) -> v4i64 {1682pub fn lasx_xvsrari_d<const IMM6: u32>(a: v4i64) -> v4i64 {
1683 static_assert_uimm_bits!(IMM6, 6);1683 static_assert_uimm_bits!(IMM6, 6);
1684 __lasx_xvsrari_d(a, IMM6)1684 unsafe { __lasx_xvsrari_d(a, IMM6) }
1685}1685}
16861686
1687#[inline]1687#[inline]
1688#[target_feature(enable = "lasx")]1688#[target_feature(enable = "lasx")]
1689#[unstable(feature = "stdarch_loongarch", issue = "117427")]1689#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1690pub unsafe fn lasx_xvsrl_b(a: v32i8, b: v32i8) -> v32i8 {1690pub fn lasx_xvsrl_b(a: v32i8, b: v32i8) -> v32i8 {
1691 __lasx_xvsrl_b(a, b)1691 unsafe { __lasx_xvsrl_b(a, b) }
1692}1692}
16931693
1694#[inline]1694#[inline]
1695#[target_feature(enable = "lasx")]1695#[target_feature(enable = "lasx")]
1696#[unstable(feature = "stdarch_loongarch", issue = "117427")]1696#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1697pub unsafe fn lasx_xvsrl_h(a: v16i16, b: v16i16) -> v16i16 {1697pub fn lasx_xvsrl_h(a: v16i16, b: v16i16) -> v16i16 {
1698 __lasx_xvsrl_h(a, b)1698 unsafe { __lasx_xvsrl_h(a, b) }
1699}1699}
17001700
1701#[inline]1701#[inline]
1702#[target_feature(enable = "lasx")]1702#[target_feature(enable = "lasx")]
1703#[unstable(feature = "stdarch_loongarch", issue = "117427")]1703#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1704pub unsafe fn lasx_xvsrl_w(a: v8i32, b: v8i32) -> v8i32 {1704pub fn lasx_xvsrl_w(a: v8i32, b: v8i32) -> v8i32 {
1705 __lasx_xvsrl_w(a, b)1705 unsafe { __lasx_xvsrl_w(a, b) }
1706}1706}
17071707
1708#[inline]1708#[inline]
1709#[target_feature(enable = "lasx")]1709#[target_feature(enable = "lasx")]
1710#[unstable(feature = "stdarch_loongarch", issue = "117427")]1710#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1711pub unsafe fn lasx_xvsrl_d(a: v4i64, b: v4i64) -> v4i64 {1711pub fn lasx_xvsrl_d(a: v4i64, b: v4i64) -> v4i64 {
1712 __lasx_xvsrl_d(a, b)1712 unsafe { __lasx_xvsrl_d(a, b) }
1713}1713}
17141714
1715#[inline]1715#[inline]
1716#[target_feature(enable = "lasx")]1716#[target_feature(enable = "lasx")]
1717#[rustc_legacy_const_generics(1)]1717#[rustc_legacy_const_generics(1)]
1718#[unstable(feature = "stdarch_loongarch", issue = "117427")]1718#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1719pub unsafe fn lasx_xvsrli_b<const IMM3: u32>(a: v32i8) -> v32i8 {1719pub fn lasx_xvsrli_b<const IMM3: u32>(a: v32i8) -> v32i8 {
1720 static_assert_uimm_bits!(IMM3, 3);1720 static_assert_uimm_bits!(IMM3, 3);
1721 __lasx_xvsrli_b(a, IMM3)1721 unsafe { __lasx_xvsrli_b(a, IMM3) }
1722}1722}
17231723
1724#[inline]1724#[inline]
1725#[target_feature(enable = "lasx")]1725#[target_feature(enable = "lasx")]
1726#[rustc_legacy_const_generics(1)]1726#[rustc_legacy_const_generics(1)]
1727#[unstable(feature = "stdarch_loongarch", issue = "117427")]1727#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1728pub unsafe fn lasx_xvsrli_h<const IMM4: u32>(a: v16i16) -> v16i16 {1728pub fn lasx_xvsrli_h<const IMM4: u32>(a: v16i16) -> v16i16 {
1729 static_assert_uimm_bits!(IMM4, 4);1729 static_assert_uimm_bits!(IMM4, 4);
1730 __lasx_xvsrli_h(a, IMM4)1730 unsafe { __lasx_xvsrli_h(a, IMM4) }
1731}1731}
17321732
1733#[inline]1733#[inline]
1734#[target_feature(enable = "lasx")]1734#[target_feature(enable = "lasx")]
1735#[rustc_legacy_const_generics(1)]1735#[rustc_legacy_const_generics(1)]
1736#[unstable(feature = "stdarch_loongarch", issue = "117427")]1736#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1737pub unsafe fn lasx_xvsrli_w<const IMM5: u32>(a: v8i32) -> v8i32 {1737pub fn lasx_xvsrli_w<const IMM5: u32>(a: v8i32) -> v8i32 {
1738 static_assert_uimm_bits!(IMM5, 5);1738 static_assert_uimm_bits!(IMM5, 5);
1739 __lasx_xvsrli_w(a, IMM5)1739 unsafe { __lasx_xvsrli_w(a, IMM5) }
1740}1740}
17411741
1742#[inline]1742#[inline]
1743#[target_feature(enable = "lasx")]1743#[target_feature(enable = "lasx")]
1744#[rustc_legacy_const_generics(1)]1744#[rustc_legacy_const_generics(1)]
1745#[unstable(feature = "stdarch_loongarch", issue = "117427")]1745#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1746pub unsafe fn lasx_xvsrli_d<const IMM6: u32>(a: v4i64) -> v4i64 {1746pub fn lasx_xvsrli_d<const IMM6: u32>(a: v4i64) -> v4i64 {
1747 static_assert_uimm_bits!(IMM6, 6);1747 static_assert_uimm_bits!(IMM6, 6);
1748 __lasx_xvsrli_d(a, IMM6)1748 unsafe { __lasx_xvsrli_d(a, IMM6) }
1749}1749}
17501750
1751#[inline]1751#[inline]
1752#[target_feature(enable = "lasx")]1752#[target_feature(enable = "lasx")]
1753#[unstable(feature = "stdarch_loongarch", issue = "117427")]1753#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1754pub unsafe fn lasx_xvsrlr_b(a: v32i8, b: v32i8) -> v32i8 {1754pub fn lasx_xvsrlr_b(a: v32i8, b: v32i8) -> v32i8 {
1755 __lasx_xvsrlr_b(a, b)1755 unsafe { __lasx_xvsrlr_b(a, b) }
1756}1756}
17571757
1758#[inline]1758#[inline]
1759#[target_feature(enable = "lasx")]1759#[target_feature(enable = "lasx")]
1760#[unstable(feature = "stdarch_loongarch", issue = "117427")]1760#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1761pub unsafe fn lasx_xvsrlr_h(a: v16i16, b: v16i16) -> v16i16 {1761pub fn lasx_xvsrlr_h(a: v16i16, b: v16i16) -> v16i16 {
1762 __lasx_xvsrlr_h(a, b)1762 unsafe { __lasx_xvsrlr_h(a, b) }
1763}1763}
17641764
1765#[inline]1765#[inline]
1766#[target_feature(enable = "lasx")]1766#[target_feature(enable = "lasx")]
1767#[unstable(feature = "stdarch_loongarch", issue = "117427")]1767#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1768pub unsafe fn lasx_xvsrlr_w(a: v8i32, b: v8i32) -> v8i32 {1768pub fn lasx_xvsrlr_w(a: v8i32, b: v8i32) -> v8i32 {
1769 __lasx_xvsrlr_w(a, b)1769 unsafe { __lasx_xvsrlr_w(a, b) }
1770}1770}
17711771
1772#[inline]1772#[inline]
1773#[target_feature(enable = "lasx")]1773#[target_feature(enable = "lasx")]
1774#[unstable(feature = "stdarch_loongarch", issue = "117427")]1774#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1775pub unsafe fn lasx_xvsrlr_d(a: v4i64, b: v4i64) -> v4i64 {1775pub fn lasx_xvsrlr_d(a: v4i64, b: v4i64) -> v4i64 {
1776 __lasx_xvsrlr_d(a, b)1776 unsafe { __lasx_xvsrlr_d(a, b) }
1777}1777}
17781778
1779#[inline]1779#[inline]
1780#[target_feature(enable = "lasx")]1780#[target_feature(enable = "lasx")]
1781#[rustc_legacy_const_generics(1)]1781#[rustc_legacy_const_generics(1)]
1782#[unstable(feature = "stdarch_loongarch", issue = "117427")]1782#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1783pub unsafe fn lasx_xvsrlri_b<const IMM3: u32>(a: v32i8) -> v32i8 {1783pub fn lasx_xvsrlri_b<const IMM3: u32>(a: v32i8) -> v32i8 {
1784 static_assert_uimm_bits!(IMM3, 3);1784 static_assert_uimm_bits!(IMM3, 3);
1785 __lasx_xvsrlri_b(a, IMM3)1785 unsafe { __lasx_xvsrlri_b(a, IMM3) }
1786}1786}
17871787
1788#[inline]1788#[inline]
1789#[target_feature(enable = "lasx")]1789#[target_feature(enable = "lasx")]
1790#[rustc_legacy_const_generics(1)]1790#[rustc_legacy_const_generics(1)]
1791#[unstable(feature = "stdarch_loongarch", issue = "117427")]1791#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1792pub unsafe fn lasx_xvsrlri_h<const IMM4: u32>(a: v16i16) -> v16i16 {1792pub fn lasx_xvsrlri_h<const IMM4: u32>(a: v16i16) -> v16i16 {
1793 static_assert_uimm_bits!(IMM4, 4);1793 static_assert_uimm_bits!(IMM4, 4);
1794 __lasx_xvsrlri_h(a, IMM4)1794 unsafe { __lasx_xvsrlri_h(a, IMM4) }
1795}1795}
17961796
1797#[inline]1797#[inline]
1798#[target_feature(enable = "lasx")]1798#[target_feature(enable = "lasx")]
1799#[rustc_legacy_const_generics(1)]1799#[rustc_legacy_const_generics(1)]
1800#[unstable(feature = "stdarch_loongarch", issue = "117427")]1800#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1801pub unsafe fn lasx_xvsrlri_w<const IMM5: u32>(a: v8i32) -> v8i32 {1801pub fn lasx_xvsrlri_w<const IMM5: u32>(a: v8i32) -> v8i32 {
1802 static_assert_uimm_bits!(IMM5, 5);1802 static_assert_uimm_bits!(IMM5, 5);
1803 __lasx_xvsrlri_w(a, IMM5)1803 unsafe { __lasx_xvsrlri_w(a, IMM5) }
1804}1804}
18051805
1806#[inline]1806#[inline]
1807#[target_feature(enable = "lasx")]1807#[target_feature(enable = "lasx")]
1808#[rustc_legacy_const_generics(1)]1808#[rustc_legacy_const_generics(1)]
1809#[unstable(feature = "stdarch_loongarch", issue = "117427")]1809#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1810pub unsafe fn lasx_xvsrlri_d<const IMM6: u32>(a: v4i64) -> v4i64 {1810pub fn lasx_xvsrlri_d<const IMM6: u32>(a: v4i64) -> v4i64 {
1811 static_assert_uimm_bits!(IMM6, 6);1811 static_assert_uimm_bits!(IMM6, 6);
1812 __lasx_xvsrlri_d(a, IMM6)1812 unsafe { __lasx_xvsrlri_d(a, IMM6) }
1813}1813}
18141814
1815#[inline]1815#[inline]
1816#[target_feature(enable = "lasx")]1816#[target_feature(enable = "lasx")]
1817#[unstable(feature = "stdarch_loongarch", issue = "117427")]1817#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1818pub unsafe fn lasx_xvbitclr_b(a: v32u8, b: v32u8) -> v32u8 {1818pub fn lasx_xvbitclr_b(a: v32u8, b: v32u8) -> v32u8 {
1819 __lasx_xvbitclr_b(a, b)1819 unsafe { __lasx_xvbitclr_b(a, b) }
1820}1820}
18211821
1822#[inline]1822#[inline]
1823#[target_feature(enable = "lasx")]1823#[target_feature(enable = "lasx")]
1824#[unstable(feature = "stdarch_loongarch", issue = "117427")]1824#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1825pub unsafe fn lasx_xvbitclr_h(a: v16u16, b: v16u16) -> v16u16 {1825pub fn lasx_xvbitclr_h(a: v16u16, b: v16u16) -> v16u16 {
1826 __lasx_xvbitclr_h(a, b)1826 unsafe { __lasx_xvbitclr_h(a, b) }
1827}1827}
18281828
1829#[inline]1829#[inline]
1830#[target_feature(enable = "lasx")]1830#[target_feature(enable = "lasx")]
1831#[unstable(feature = "stdarch_loongarch", issue = "117427")]1831#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1832pub unsafe fn lasx_xvbitclr_w(a: v8u32, b: v8u32) -> v8u32 {1832pub fn lasx_xvbitclr_w(a: v8u32, b: v8u32) -> v8u32 {
1833 __lasx_xvbitclr_w(a, b)1833 unsafe { __lasx_xvbitclr_w(a, b) }
1834}1834}
18351835
1836#[inline]1836#[inline]
1837#[target_feature(enable = "lasx")]1837#[target_feature(enable = "lasx")]
1838#[unstable(feature = "stdarch_loongarch", issue = "117427")]1838#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1839pub unsafe fn lasx_xvbitclr_d(a: v4u64, b: v4u64) -> v4u64 {1839pub fn lasx_xvbitclr_d(a: v4u64, b: v4u64) -> v4u64 {
1840 __lasx_xvbitclr_d(a, b)1840 unsafe { __lasx_xvbitclr_d(a, b) }
1841}1841}
18421842
1843#[inline]1843#[inline]
1844#[target_feature(enable = "lasx")]1844#[target_feature(enable = "lasx")]
1845#[rustc_legacy_const_generics(1)]1845#[rustc_legacy_const_generics(1)]
1846#[unstable(feature = "stdarch_loongarch", issue = "117427")]1846#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1847pub unsafe fn lasx_xvbitclri_b<const IMM3: u32>(a: v32u8) -> v32u8 {1847pub fn lasx_xvbitclri_b<const IMM3: u32>(a: v32u8) -> v32u8 {
1848 static_assert_uimm_bits!(IMM3, 3);1848 static_assert_uimm_bits!(IMM3, 3);
1849 __lasx_xvbitclri_b(a, IMM3)1849 unsafe { __lasx_xvbitclri_b(a, IMM3) }
1850}1850}
18511851
1852#[inline]1852#[inline]
1853#[target_feature(enable = "lasx")]1853#[target_feature(enable = "lasx")]
1854#[rustc_legacy_const_generics(1)]1854#[rustc_legacy_const_generics(1)]
1855#[unstable(feature = "stdarch_loongarch", issue = "117427")]1855#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1856pub unsafe fn lasx_xvbitclri_h<const IMM4: u32>(a: v16u16) -> v16u16 {1856pub fn lasx_xvbitclri_h<const IMM4: u32>(a: v16u16) -> v16u16 {
1857 static_assert_uimm_bits!(IMM4, 4);1857 static_assert_uimm_bits!(IMM4, 4);
1858 __lasx_xvbitclri_h(a, IMM4)1858 unsafe { __lasx_xvbitclri_h(a, IMM4) }
1859}1859}
18601860
1861#[inline]1861#[inline]
1862#[target_feature(enable = "lasx")]1862#[target_feature(enable = "lasx")]
1863#[rustc_legacy_const_generics(1)]1863#[rustc_legacy_const_generics(1)]
1864#[unstable(feature = "stdarch_loongarch", issue = "117427")]1864#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1865pub unsafe fn lasx_xvbitclri_w<const IMM5: u32>(a: v8u32) -> v8u32 {1865pub fn lasx_xvbitclri_w<const IMM5: u32>(a: v8u32) -> v8u32 {
1866 static_assert_uimm_bits!(IMM5, 5);1866 static_assert_uimm_bits!(IMM5, 5);
1867 __lasx_xvbitclri_w(a, IMM5)1867 unsafe { __lasx_xvbitclri_w(a, IMM5) }
1868}1868}
18691869
1870#[inline]1870#[inline]
1871#[target_feature(enable = "lasx")]1871#[target_feature(enable = "lasx")]
1872#[rustc_legacy_const_generics(1)]1872#[rustc_legacy_const_generics(1)]
1873#[unstable(feature = "stdarch_loongarch", issue = "117427")]1873#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1874pub unsafe fn lasx_xvbitclri_d<const IMM6: u32>(a: v4u64) -> v4u64 {1874pub fn lasx_xvbitclri_d<const IMM6: u32>(a: v4u64) -> v4u64 {
1875 static_assert_uimm_bits!(IMM6, 6);1875 static_assert_uimm_bits!(IMM6, 6);
1876 __lasx_xvbitclri_d(a, IMM6)1876 unsafe { __lasx_xvbitclri_d(a, IMM6) }
1877}1877}
18781878
1879#[inline]1879#[inline]
1880#[target_feature(enable = "lasx")]1880#[target_feature(enable = "lasx")]
1881#[unstable(feature = "stdarch_loongarch", issue = "117427")]1881#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1882pub unsafe fn lasx_xvbitset_b(a: v32u8, b: v32u8) -> v32u8 {1882pub fn lasx_xvbitset_b(a: v32u8, b: v32u8) -> v32u8 {
1883 __lasx_xvbitset_b(a, b)1883 unsafe { __lasx_xvbitset_b(a, b) }
1884}1884}
18851885
1886#[inline]1886#[inline]
1887#[target_feature(enable = "lasx")]1887#[target_feature(enable = "lasx")]
1888#[unstable(feature = "stdarch_loongarch", issue = "117427")]1888#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1889pub unsafe fn lasx_xvbitset_h(a: v16u16, b: v16u16) -> v16u16 {1889pub fn lasx_xvbitset_h(a: v16u16, b: v16u16) -> v16u16 {
1890 __lasx_xvbitset_h(a, b)1890 unsafe { __lasx_xvbitset_h(a, b) }
1891}1891}
18921892
1893#[inline]1893#[inline]
1894#[target_feature(enable = "lasx")]1894#[target_feature(enable = "lasx")]
1895#[unstable(feature = "stdarch_loongarch", issue = "117427")]1895#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1896pub unsafe fn lasx_xvbitset_w(a: v8u32, b: v8u32) -> v8u32 {1896pub fn lasx_xvbitset_w(a: v8u32, b: v8u32) -> v8u32 {
1897 __lasx_xvbitset_w(a, b)1897 unsafe { __lasx_xvbitset_w(a, b) }
1898}1898}
18991899
1900#[inline]1900#[inline]
1901#[target_feature(enable = "lasx")]1901#[target_feature(enable = "lasx")]
1902#[unstable(feature = "stdarch_loongarch", issue = "117427")]1902#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1903pub unsafe fn lasx_xvbitset_d(a: v4u64, b: v4u64) -> v4u64 {1903pub fn lasx_xvbitset_d(a: v4u64, b: v4u64) -> v4u64 {
1904 __lasx_xvbitset_d(a, b)1904 unsafe { __lasx_xvbitset_d(a, b) }
1905}1905}
19061906
1907#[inline]1907#[inline]
1908#[target_feature(enable = "lasx")]1908#[target_feature(enable = "lasx")]
1909#[rustc_legacy_const_generics(1)]1909#[rustc_legacy_const_generics(1)]
1910#[unstable(feature = "stdarch_loongarch", issue = "117427")]1910#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1911pub unsafe fn lasx_xvbitseti_b<const IMM3: u32>(a: v32u8) -> v32u8 {1911pub fn lasx_xvbitseti_b<const IMM3: u32>(a: v32u8) -> v32u8 {
1912 static_assert_uimm_bits!(IMM3, 3);1912 static_assert_uimm_bits!(IMM3, 3);
1913 __lasx_xvbitseti_b(a, IMM3)1913 unsafe { __lasx_xvbitseti_b(a, IMM3) }
1914}1914}
19151915
1916#[inline]1916#[inline]
1917#[target_feature(enable = "lasx")]1917#[target_feature(enable = "lasx")]
1918#[rustc_legacy_const_generics(1)]1918#[rustc_legacy_const_generics(1)]
1919#[unstable(feature = "stdarch_loongarch", issue = "117427")]1919#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1920pub unsafe fn lasx_xvbitseti_h<const IMM4: u32>(a: v16u16) -> v16u16 {1920pub fn lasx_xvbitseti_h<const IMM4: u32>(a: v16u16) -> v16u16 {
1921 static_assert_uimm_bits!(IMM4, 4);1921 static_assert_uimm_bits!(IMM4, 4);
1922 __lasx_xvbitseti_h(a, IMM4)1922 unsafe { __lasx_xvbitseti_h(a, IMM4) }
1923}1923}
19241924
1925#[inline]1925#[inline]
1926#[target_feature(enable = "lasx")]1926#[target_feature(enable = "lasx")]
1927#[rustc_legacy_const_generics(1)]1927#[rustc_legacy_const_generics(1)]
1928#[unstable(feature = "stdarch_loongarch", issue = "117427")]1928#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1929pub unsafe fn lasx_xvbitseti_w<const IMM5: u32>(a: v8u32) -> v8u32 {1929pub fn lasx_xvbitseti_w<const IMM5: u32>(a: v8u32) -> v8u32 {
1930 static_assert_uimm_bits!(IMM5, 5);1930 static_assert_uimm_bits!(IMM5, 5);
1931 __lasx_xvbitseti_w(a, IMM5)1931 unsafe { __lasx_xvbitseti_w(a, IMM5) }
1932}1932}
19331933
1934#[inline]1934#[inline]
1935#[target_feature(enable = "lasx")]1935#[target_feature(enable = "lasx")]
1936#[rustc_legacy_const_generics(1)]1936#[rustc_legacy_const_generics(1)]
1937#[unstable(feature = "stdarch_loongarch", issue = "117427")]1937#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1938pub unsafe fn lasx_xvbitseti_d<const IMM6: u32>(a: v4u64) -> v4u64 {1938pub fn lasx_xvbitseti_d<const IMM6: u32>(a: v4u64) -> v4u64 {
1939 static_assert_uimm_bits!(IMM6, 6);1939 static_assert_uimm_bits!(IMM6, 6);
1940 __lasx_xvbitseti_d(a, IMM6)1940 unsafe { __lasx_xvbitseti_d(a, IMM6) }
1941}1941}
19421942
1943#[inline]1943#[inline]
1944#[target_feature(enable = "lasx")]1944#[target_feature(enable = "lasx")]
1945#[unstable(feature = "stdarch_loongarch", issue = "117427")]1945#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1946pub unsafe fn lasx_xvbitrev_b(a: v32u8, b: v32u8) -> v32u8 {1946pub fn lasx_xvbitrev_b(a: v32u8, b: v32u8) -> v32u8 {
1947 __lasx_xvbitrev_b(a, b)1947 unsafe { __lasx_xvbitrev_b(a, b) }
1948}1948}
19491949
1950#[inline]1950#[inline]
1951#[target_feature(enable = "lasx")]1951#[target_feature(enable = "lasx")]
1952#[unstable(feature = "stdarch_loongarch", issue = "117427")]1952#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1953pub unsafe fn lasx_xvbitrev_h(a: v16u16, b: v16u16) -> v16u16 {1953pub fn lasx_xvbitrev_h(a: v16u16, b: v16u16) -> v16u16 {
1954 __lasx_xvbitrev_h(a, b)1954 unsafe { __lasx_xvbitrev_h(a, b) }
1955}1955}
19561956
1957#[inline]1957#[inline]
1958#[target_feature(enable = "lasx")]1958#[target_feature(enable = "lasx")]
1959#[unstable(feature = "stdarch_loongarch", issue = "117427")]1959#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1960pub unsafe fn lasx_xvbitrev_w(a: v8u32, b: v8u32) -> v8u32 {1960pub fn lasx_xvbitrev_w(a: v8u32, b: v8u32) -> v8u32 {
1961 __lasx_xvbitrev_w(a, b)1961 unsafe { __lasx_xvbitrev_w(a, b) }
1962}1962}
19631963
1964#[inline]1964#[inline]
1965#[target_feature(enable = "lasx")]1965#[target_feature(enable = "lasx")]
1966#[unstable(feature = "stdarch_loongarch", issue = "117427")]1966#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1967pub unsafe fn lasx_xvbitrev_d(a: v4u64, b: v4u64) -> v4u64 {1967pub fn lasx_xvbitrev_d(a: v4u64, b: v4u64) -> v4u64 {
1968 __lasx_xvbitrev_d(a, b)1968 unsafe { __lasx_xvbitrev_d(a, b) }
1969}1969}
19701970
1971#[inline]1971#[inline]
1972#[target_feature(enable = "lasx")]1972#[target_feature(enable = "lasx")]
1973#[rustc_legacy_const_generics(1)]1973#[rustc_legacy_const_generics(1)]
1974#[unstable(feature = "stdarch_loongarch", issue = "117427")]1974#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1975pub unsafe fn lasx_xvbitrevi_b<const IMM3: u32>(a: v32u8) -> v32u8 {1975pub fn lasx_xvbitrevi_b<const IMM3: u32>(a: v32u8) -> v32u8 {
1976 static_assert_uimm_bits!(IMM3, 3);1976 static_assert_uimm_bits!(IMM3, 3);
1977 __lasx_xvbitrevi_b(a, IMM3)1977 unsafe { __lasx_xvbitrevi_b(a, IMM3) }
1978}1978}
19791979
1980#[inline]1980#[inline]
1981#[target_feature(enable = "lasx")]1981#[target_feature(enable = "lasx")]
1982#[rustc_legacy_const_generics(1)]1982#[rustc_legacy_const_generics(1)]
1983#[unstable(feature = "stdarch_loongarch", issue = "117427")]1983#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1984pub unsafe fn lasx_xvbitrevi_h<const IMM4: u32>(a: v16u16) -> v16u16 {1984pub fn lasx_xvbitrevi_h<const IMM4: u32>(a: v16u16) -> v16u16 {
1985 static_assert_uimm_bits!(IMM4, 4);1985 static_assert_uimm_bits!(IMM4, 4);
1986 __lasx_xvbitrevi_h(a, IMM4)1986 unsafe { __lasx_xvbitrevi_h(a, IMM4) }
1987}1987}
19881988
1989#[inline]1989#[inline]
1990#[target_feature(enable = "lasx")]1990#[target_feature(enable = "lasx")]
1991#[rustc_legacy_const_generics(1)]1991#[rustc_legacy_const_generics(1)]
1992#[unstable(feature = "stdarch_loongarch", issue = "117427")]1992#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1993pub unsafe fn lasx_xvbitrevi_w<const IMM5: u32>(a: v8u32) -> v8u32 {1993pub fn lasx_xvbitrevi_w<const IMM5: u32>(a: v8u32) -> v8u32 {
1994 static_assert_uimm_bits!(IMM5, 5);1994 static_assert_uimm_bits!(IMM5, 5);
1995 __lasx_xvbitrevi_w(a, IMM5)1995 unsafe { __lasx_xvbitrevi_w(a, IMM5) }
1996}1996}
19971997
1998#[inline]1998#[inline]
1999#[target_feature(enable = "lasx")]1999#[target_feature(enable = "lasx")]
2000#[rustc_legacy_const_generics(1)]2000#[rustc_legacy_const_generics(1)]
2001#[unstable(feature = "stdarch_loongarch", issue = "117427")]2001#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2002pub unsafe fn lasx_xvbitrevi_d<const IMM6: u32>(a: v4u64) -> v4u64 {2002pub fn lasx_xvbitrevi_d<const IMM6: u32>(a: v4u64) -> v4u64 {
2003 static_assert_uimm_bits!(IMM6, 6);2003 static_assert_uimm_bits!(IMM6, 6);
2004 __lasx_xvbitrevi_d(a, IMM6)2004 unsafe { __lasx_xvbitrevi_d(a, IMM6) }
2005}2005}
20062006
2007#[inline]2007#[inline]
2008#[target_feature(enable = "lasx")]2008#[target_feature(enable = "lasx")]
2009#[unstable(feature = "stdarch_loongarch", issue = "117427")]2009#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2010pub unsafe fn lasx_xvadd_b(a: v32i8, b: v32i8) -> v32i8 {2010pub fn lasx_xvadd_b(a: v32i8, b: v32i8) -> v32i8 {
2011 __lasx_xvadd_b(a, b)2011 unsafe { __lasx_xvadd_b(a, b) }
2012}2012}
20132013
2014#[inline]2014#[inline]
2015#[target_feature(enable = "lasx")]2015#[target_feature(enable = "lasx")]
2016#[unstable(feature = "stdarch_loongarch", issue = "117427")]2016#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2017pub unsafe fn lasx_xvadd_h(a: v16i16, b: v16i16) -> v16i16 {2017pub fn lasx_xvadd_h(a: v16i16, b: v16i16) -> v16i16 {
2018 __lasx_xvadd_h(a, b)2018 unsafe { __lasx_xvadd_h(a, b) }
2019}2019}
20202020
2021#[inline]2021#[inline]
2022#[target_feature(enable = "lasx")]2022#[target_feature(enable = "lasx")]
2023#[unstable(feature = "stdarch_loongarch", issue = "117427")]2023#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2024pub unsafe fn lasx_xvadd_w(a: v8i32, b: v8i32) -> v8i32 {2024pub fn lasx_xvadd_w(a: v8i32, b: v8i32) -> v8i32 {
2025 __lasx_xvadd_w(a, b)2025 unsafe { __lasx_xvadd_w(a, b) }
2026}2026}
20272027
2028#[inline]2028#[inline]
2029#[target_feature(enable = "lasx")]2029#[target_feature(enable = "lasx")]
2030#[unstable(feature = "stdarch_loongarch", issue = "117427")]2030#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2031pub unsafe fn lasx_xvadd_d(a: v4i64, b: v4i64) -> v4i64 {2031pub fn lasx_xvadd_d(a: v4i64, b: v4i64) -> v4i64 {
2032 __lasx_xvadd_d(a, b)2032 unsafe { __lasx_xvadd_d(a, b) }
2033}2033}
20342034
2035#[inline]2035#[inline]
2036#[target_feature(enable = "lasx")]2036#[target_feature(enable = "lasx")]
2037#[rustc_legacy_const_generics(1)]2037#[rustc_legacy_const_generics(1)]
2038#[unstable(feature = "stdarch_loongarch", issue = "117427")]2038#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2039pub unsafe fn lasx_xvaddi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {2039pub fn lasx_xvaddi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {
2040 static_assert_uimm_bits!(IMM5, 5);2040 static_assert_uimm_bits!(IMM5, 5);
2041 __lasx_xvaddi_bu(a, IMM5)2041 unsafe { __lasx_xvaddi_bu(a, IMM5) }
2042}2042}
20432043
2044#[inline]2044#[inline]
2045#[target_feature(enable = "lasx")]2045#[target_feature(enable = "lasx")]
2046#[rustc_legacy_const_generics(1)]2046#[rustc_legacy_const_generics(1)]
2047#[unstable(feature = "stdarch_loongarch", issue = "117427")]2047#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2048pub unsafe fn lasx_xvaddi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {2048pub fn lasx_xvaddi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {
2049 static_assert_uimm_bits!(IMM5, 5);2049 static_assert_uimm_bits!(IMM5, 5);
2050 __lasx_xvaddi_hu(a, IMM5)2050 unsafe { __lasx_xvaddi_hu(a, IMM5) }
2051}2051}
20522052
2053#[inline]2053#[inline]
2054#[target_feature(enable = "lasx")]2054#[target_feature(enable = "lasx")]
2055#[rustc_legacy_const_generics(1)]2055#[rustc_legacy_const_generics(1)]
2056#[unstable(feature = "stdarch_loongarch", issue = "117427")]2056#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2057pub unsafe fn lasx_xvaddi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {2057pub fn lasx_xvaddi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {
2058 static_assert_uimm_bits!(IMM5, 5);2058 static_assert_uimm_bits!(IMM5, 5);
2059 __lasx_xvaddi_wu(a, IMM5)2059 unsafe { __lasx_xvaddi_wu(a, IMM5) }
2060}2060}
20612061
2062#[inline]2062#[inline]
2063#[target_feature(enable = "lasx")]2063#[target_feature(enable = "lasx")]
2064#[rustc_legacy_const_generics(1)]2064#[rustc_legacy_const_generics(1)]
2065#[unstable(feature = "stdarch_loongarch", issue = "117427")]2065#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2066pub unsafe fn lasx_xvaddi_du<const IMM5: u32>(a: v4i64) -> v4i64 {2066pub fn lasx_xvaddi_du<const IMM5: u32>(a: v4i64) -> v4i64 {
2067 static_assert_uimm_bits!(IMM5, 5);2067 static_assert_uimm_bits!(IMM5, 5);
2068 __lasx_xvaddi_du(a, IMM5)2068 unsafe { __lasx_xvaddi_du(a, IMM5) }
2069}2069}
20702070
2071#[inline]2071#[inline]
2072#[target_feature(enable = "lasx")]2072#[target_feature(enable = "lasx")]
2073#[unstable(feature = "stdarch_loongarch", issue = "117427")]2073#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2074pub unsafe fn lasx_xvsub_b(a: v32i8, b: v32i8) -> v32i8 {2074pub fn lasx_xvsub_b(a: v32i8, b: v32i8) -> v32i8 {
2075 __lasx_xvsub_b(a, b)2075 unsafe { __lasx_xvsub_b(a, b) }
2076}2076}
20772077
2078#[inline]2078#[inline]
2079#[target_feature(enable = "lasx")]2079#[target_feature(enable = "lasx")]
2080#[unstable(feature = "stdarch_loongarch", issue = "117427")]2080#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2081pub unsafe fn lasx_xvsub_h(a: v16i16, b: v16i16) -> v16i16 {2081pub fn lasx_xvsub_h(a: v16i16, b: v16i16) -> v16i16 {
2082 __lasx_xvsub_h(a, b)2082 unsafe { __lasx_xvsub_h(a, b) }
2083}2083}
20842084
2085#[inline]2085#[inline]
2086#[target_feature(enable = "lasx")]2086#[target_feature(enable = "lasx")]
2087#[unstable(feature = "stdarch_loongarch", issue = "117427")]2087#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2088pub unsafe fn lasx_xvsub_w(a: v8i32, b: v8i32) -> v8i32 {2088pub fn lasx_xvsub_w(a: v8i32, b: v8i32) -> v8i32 {
2089 __lasx_xvsub_w(a, b)2089 unsafe { __lasx_xvsub_w(a, b) }
2090}2090}
20912091
2092#[inline]2092#[inline]
2093#[target_feature(enable = "lasx")]2093#[target_feature(enable = "lasx")]
2094#[unstable(feature = "stdarch_loongarch", issue = "117427")]2094#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2095pub unsafe fn lasx_xvsub_d(a: v4i64, b: v4i64) -> v4i64 {2095pub fn lasx_xvsub_d(a: v4i64, b: v4i64) -> v4i64 {
2096 __lasx_xvsub_d(a, b)2096 unsafe { __lasx_xvsub_d(a, b) }
2097}2097}
20982098
2099#[inline]2099#[inline]
2100#[target_feature(enable = "lasx")]2100#[target_feature(enable = "lasx")]
2101#[rustc_legacy_const_generics(1)]2101#[rustc_legacy_const_generics(1)]
2102#[unstable(feature = "stdarch_loongarch", issue = "117427")]2102#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2103pub unsafe fn lasx_xvsubi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {2103pub fn lasx_xvsubi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {
2104 static_assert_uimm_bits!(IMM5, 5);2104 static_assert_uimm_bits!(IMM5, 5);
2105 __lasx_xvsubi_bu(a, IMM5)2105 unsafe { __lasx_xvsubi_bu(a, IMM5) }
2106}2106}
21072107
2108#[inline]2108#[inline]
2109#[target_feature(enable = "lasx")]2109#[target_feature(enable = "lasx")]
2110#[rustc_legacy_const_generics(1)]2110#[rustc_legacy_const_generics(1)]
2111#[unstable(feature = "stdarch_loongarch", issue = "117427")]2111#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2112pub unsafe fn lasx_xvsubi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {2112pub fn lasx_xvsubi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {
2113 static_assert_uimm_bits!(IMM5, 5);2113 static_assert_uimm_bits!(IMM5, 5);
2114 __lasx_xvsubi_hu(a, IMM5)2114 unsafe { __lasx_xvsubi_hu(a, IMM5) }
2115}2115}
21162116
2117#[inline]2117#[inline]
2118#[target_feature(enable = "lasx")]2118#[target_feature(enable = "lasx")]
2119#[rustc_legacy_const_generics(1)]2119#[rustc_legacy_const_generics(1)]
2120#[unstable(feature = "stdarch_loongarch", issue = "117427")]2120#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2121pub unsafe fn lasx_xvsubi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {2121pub fn lasx_xvsubi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {
2122 static_assert_uimm_bits!(IMM5, 5);2122 static_assert_uimm_bits!(IMM5, 5);
2123 __lasx_xvsubi_wu(a, IMM5)2123 unsafe { __lasx_xvsubi_wu(a, IMM5) }
2124}2124}
21252125
2126#[inline]2126#[inline]
2127#[target_feature(enable = "lasx")]2127#[target_feature(enable = "lasx")]
2128#[rustc_legacy_const_generics(1)]2128#[rustc_legacy_const_generics(1)]
2129#[unstable(feature = "stdarch_loongarch", issue = "117427")]2129#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2130pub unsafe fn lasx_xvsubi_du<const IMM5: u32>(a: v4i64) -> v4i64 {2130pub fn lasx_xvsubi_du<const IMM5: u32>(a: v4i64) -> v4i64 {
2131 static_assert_uimm_bits!(IMM5, 5);2131 static_assert_uimm_bits!(IMM5, 5);
2132 __lasx_xvsubi_du(a, IMM5)2132 unsafe { __lasx_xvsubi_du(a, IMM5) }
2133}2133}
21342134
2135#[inline]2135#[inline]
2136#[target_feature(enable = "lasx")]2136#[target_feature(enable = "lasx")]
2137#[unstable(feature = "stdarch_loongarch", issue = "117427")]2137#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2138pub unsafe fn lasx_xvmax_b(a: v32i8, b: v32i8) -> v32i8 {2138pub fn lasx_xvmax_b(a: v32i8, b: v32i8) -> v32i8 {
2139 __lasx_xvmax_b(a, b)2139 unsafe { __lasx_xvmax_b(a, b) }
2140}2140}
21412141
2142#[inline]2142#[inline]
2143#[target_feature(enable = "lasx")]2143#[target_feature(enable = "lasx")]
2144#[unstable(feature = "stdarch_loongarch", issue = "117427")]2144#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2145pub unsafe fn lasx_xvmax_h(a: v16i16, b: v16i16) -> v16i16 {2145pub fn lasx_xvmax_h(a: v16i16, b: v16i16) -> v16i16 {
2146 __lasx_xvmax_h(a, b)2146 unsafe { __lasx_xvmax_h(a, b) }
2147}2147}
21482148
2149#[inline]2149#[inline]
2150#[target_feature(enable = "lasx")]2150#[target_feature(enable = "lasx")]
2151#[unstable(feature = "stdarch_loongarch", issue = "117427")]2151#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2152pub unsafe fn lasx_xvmax_w(a: v8i32, b: v8i32) -> v8i32 {2152pub fn lasx_xvmax_w(a: v8i32, b: v8i32) -> v8i32 {
2153 __lasx_xvmax_w(a, b)2153 unsafe { __lasx_xvmax_w(a, b) }
2154}2154}
21552155
2156#[inline]2156#[inline]
2157#[target_feature(enable = "lasx")]2157#[target_feature(enable = "lasx")]
2158#[unstable(feature = "stdarch_loongarch", issue = "117427")]2158#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2159pub unsafe fn lasx_xvmax_d(a: v4i64, b: v4i64) -> v4i64 {2159pub fn lasx_xvmax_d(a: v4i64, b: v4i64) -> v4i64 {
2160 __lasx_xvmax_d(a, b)2160 unsafe { __lasx_xvmax_d(a, b) }
2161}2161}
21622162
2163#[inline]2163#[inline]
2164#[target_feature(enable = "lasx")]2164#[target_feature(enable = "lasx")]
2165#[rustc_legacy_const_generics(1)]2165#[rustc_legacy_const_generics(1)]
2166#[unstable(feature = "stdarch_loongarch", issue = "117427")]2166#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2167pub unsafe fn lasx_xvmaxi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {2167pub fn lasx_xvmaxi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
2168 static_assert_simm_bits!(IMM_S5, 5);2168 static_assert_simm_bits!(IMM_S5, 5);
2169 __lasx_xvmaxi_b(a, IMM_S5)2169 unsafe { __lasx_xvmaxi_b(a, IMM_S5) }
2170}2170}
21712171
2172#[inline]2172#[inline]
2173#[target_feature(enable = "lasx")]2173#[target_feature(enable = "lasx")]
2174#[rustc_legacy_const_generics(1)]2174#[rustc_legacy_const_generics(1)]
2175#[unstable(feature = "stdarch_loongarch", issue = "117427")]2175#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2176pub unsafe fn lasx_xvmaxi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {2176pub fn lasx_xvmaxi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
2177 static_assert_simm_bits!(IMM_S5, 5);2177 static_assert_simm_bits!(IMM_S5, 5);
2178 __lasx_xvmaxi_h(a, IMM_S5)2178 unsafe { __lasx_xvmaxi_h(a, IMM_S5) }
2179}2179}
21802180
2181#[inline]2181#[inline]
2182#[target_feature(enable = "lasx")]2182#[target_feature(enable = "lasx")]
2183#[rustc_legacy_const_generics(1)]2183#[rustc_legacy_const_generics(1)]
2184#[unstable(feature = "stdarch_loongarch", issue = "117427")]2184#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2185pub unsafe fn lasx_xvmaxi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {2185pub fn lasx_xvmaxi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
2186 static_assert_simm_bits!(IMM_S5, 5);2186 static_assert_simm_bits!(IMM_S5, 5);
2187 __lasx_xvmaxi_w(a, IMM_S5)2187 unsafe { __lasx_xvmaxi_w(a, IMM_S5) }
2188}2188}
21892189
2190#[inline]2190#[inline]
2191#[target_feature(enable = "lasx")]2191#[target_feature(enable = "lasx")]
2192#[rustc_legacy_const_generics(1)]2192#[rustc_legacy_const_generics(1)]
2193#[unstable(feature = "stdarch_loongarch", issue = "117427")]2193#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2194pub unsafe fn lasx_xvmaxi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {2194pub fn lasx_xvmaxi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
2195 static_assert_simm_bits!(IMM_S5, 5);2195 static_assert_simm_bits!(IMM_S5, 5);
2196 __lasx_xvmaxi_d(a, IMM_S5)2196 unsafe { __lasx_xvmaxi_d(a, IMM_S5) }
2197}2197}
21982198
2199#[inline]2199#[inline]
2200#[target_feature(enable = "lasx")]2200#[target_feature(enable = "lasx")]
2201#[unstable(feature = "stdarch_loongarch", issue = "117427")]2201#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2202pub unsafe fn lasx_xvmax_bu(a: v32u8, b: v32u8) -> v32u8 {2202pub fn lasx_xvmax_bu(a: v32u8, b: v32u8) -> v32u8 {
2203 __lasx_xvmax_bu(a, b)2203 unsafe { __lasx_xvmax_bu(a, b) }
2204}2204}
22052205
2206#[inline]2206#[inline]
2207#[target_feature(enable = "lasx")]2207#[target_feature(enable = "lasx")]
2208#[unstable(feature = "stdarch_loongarch", issue = "117427")]2208#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2209pub unsafe fn lasx_xvmax_hu(a: v16u16, b: v16u16) -> v16u16 {2209pub fn lasx_xvmax_hu(a: v16u16, b: v16u16) -> v16u16 {
2210 __lasx_xvmax_hu(a, b)2210 unsafe { __lasx_xvmax_hu(a, b) }
2211}2211}
22122212
2213#[inline]2213#[inline]
2214#[target_feature(enable = "lasx")]2214#[target_feature(enable = "lasx")]
2215#[unstable(feature = "stdarch_loongarch", issue = "117427")]2215#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2216pub unsafe fn lasx_xvmax_wu(a: v8u32, b: v8u32) -> v8u32 {2216pub fn lasx_xvmax_wu(a: v8u32, b: v8u32) -> v8u32 {
2217 __lasx_xvmax_wu(a, b)2217 unsafe { __lasx_xvmax_wu(a, b) }
2218}2218}
22192219
2220#[inline]2220#[inline]
2221#[target_feature(enable = "lasx")]2221#[target_feature(enable = "lasx")]
2222#[unstable(feature = "stdarch_loongarch", issue = "117427")]2222#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2223pub unsafe fn lasx_xvmax_du(a: v4u64, b: v4u64) -> v4u64 {2223pub fn lasx_xvmax_du(a: v4u64, b: v4u64) -> v4u64 {
2224 __lasx_xvmax_du(a, b)2224 unsafe { __lasx_xvmax_du(a, b) }
2225}2225}
22262226
2227#[inline]2227#[inline]
2228#[target_feature(enable = "lasx")]2228#[target_feature(enable = "lasx")]
2229#[rustc_legacy_const_generics(1)]2229#[rustc_legacy_const_generics(1)]
2230#[unstable(feature = "stdarch_loongarch", issue = "117427")]2230#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2231pub unsafe fn lasx_xvmaxi_bu<const IMM5: u32>(a: v32u8) -> v32u8 {2231pub fn lasx_xvmaxi_bu<const IMM5: u32>(a: v32u8) -> v32u8 {
2232 static_assert_uimm_bits!(IMM5, 5);2232 static_assert_uimm_bits!(IMM5, 5);
2233 __lasx_xvmaxi_bu(a, IMM5)2233 unsafe { __lasx_xvmaxi_bu(a, IMM5) }
2234}2234}
22352235
2236#[inline]2236#[inline]
2237#[target_feature(enable = "lasx")]2237#[target_feature(enable = "lasx")]
2238#[rustc_legacy_const_generics(1)]2238#[rustc_legacy_const_generics(1)]
2239#[unstable(feature = "stdarch_loongarch", issue = "117427")]2239#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2240pub unsafe fn lasx_xvmaxi_hu<const IMM5: u32>(a: v16u16) -> v16u16 {2240pub fn lasx_xvmaxi_hu<const IMM5: u32>(a: v16u16) -> v16u16 {
2241 static_assert_uimm_bits!(IMM5, 5);2241 static_assert_uimm_bits!(IMM5, 5);
2242 __lasx_xvmaxi_hu(a, IMM5)2242 unsafe { __lasx_xvmaxi_hu(a, IMM5) }
2243}2243}
22442244
2245#[inline]2245#[inline]
2246#[target_feature(enable = "lasx")]2246#[target_feature(enable = "lasx")]
2247#[rustc_legacy_const_generics(1)]2247#[rustc_legacy_const_generics(1)]
2248#[unstable(feature = "stdarch_loongarch", issue = "117427")]2248#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2249pub unsafe fn lasx_xvmaxi_wu<const IMM5: u32>(a: v8u32) -> v8u32 {2249pub fn lasx_xvmaxi_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
2250 static_assert_uimm_bits!(IMM5, 5);2250 static_assert_uimm_bits!(IMM5, 5);
2251 __lasx_xvmaxi_wu(a, IMM5)2251 unsafe { __lasx_xvmaxi_wu(a, IMM5) }
2252}2252}
22532253
2254#[inline]2254#[inline]
2255#[target_feature(enable = "lasx")]2255#[target_feature(enable = "lasx")]
2256#[rustc_legacy_const_generics(1)]2256#[rustc_legacy_const_generics(1)]
2257#[unstable(feature = "stdarch_loongarch", issue = "117427")]2257#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2258pub unsafe fn lasx_xvmaxi_du<const IMM5: u32>(a: v4u64) -> v4u64 {2258pub fn lasx_xvmaxi_du<const IMM5: u32>(a: v4u64) -> v4u64 {
2259 static_assert_uimm_bits!(IMM5, 5);2259 static_assert_uimm_bits!(IMM5, 5);
2260 __lasx_xvmaxi_du(a, IMM5)2260 unsafe { __lasx_xvmaxi_du(a, IMM5) }
2261}2261}
22622262
2263#[inline]2263#[inline]
2264#[target_feature(enable = "lasx")]2264#[target_feature(enable = "lasx")]
2265#[unstable(feature = "stdarch_loongarch", issue = "117427")]2265#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2266pub unsafe fn lasx_xvmin_b(a: v32i8, b: v32i8) -> v32i8 {2266pub fn lasx_xvmin_b(a: v32i8, b: v32i8) -> v32i8 {
2267 __lasx_xvmin_b(a, b)2267 unsafe { __lasx_xvmin_b(a, b) }
2268}2268}
22692269
2270#[inline]2270#[inline]
2271#[target_feature(enable = "lasx")]2271#[target_feature(enable = "lasx")]
2272#[unstable(feature = "stdarch_loongarch", issue = "117427")]2272#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2273pub unsafe fn lasx_xvmin_h(a: v16i16, b: v16i16) -> v16i16 {2273pub fn lasx_xvmin_h(a: v16i16, b: v16i16) -> v16i16 {
2274 __lasx_xvmin_h(a, b)2274 unsafe { __lasx_xvmin_h(a, b) }
2275}2275}
22762276
2277#[inline]2277#[inline]
2278#[target_feature(enable = "lasx")]2278#[target_feature(enable = "lasx")]
2279#[unstable(feature = "stdarch_loongarch", issue = "117427")]2279#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2280pub unsafe fn lasx_xvmin_w(a: v8i32, b: v8i32) -> v8i32 {2280pub fn lasx_xvmin_w(a: v8i32, b: v8i32) -> v8i32 {
2281 __lasx_xvmin_w(a, b)2281 unsafe { __lasx_xvmin_w(a, b) }
2282}2282}
22832283
2284#[inline]2284#[inline]
2285#[target_feature(enable = "lasx")]2285#[target_feature(enable = "lasx")]
2286#[unstable(feature = "stdarch_loongarch", issue = "117427")]2286#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2287pub unsafe fn lasx_xvmin_d(a: v4i64, b: v4i64) -> v4i64 {2287pub fn lasx_xvmin_d(a: v4i64, b: v4i64) -> v4i64 {
2288 __lasx_xvmin_d(a, b)2288 unsafe { __lasx_xvmin_d(a, b) }
2289}2289}
22902290
2291#[inline]2291#[inline]
2292#[target_feature(enable = "lasx")]2292#[target_feature(enable = "lasx")]
2293#[rustc_legacy_const_generics(1)]2293#[rustc_legacy_const_generics(1)]
2294#[unstable(feature = "stdarch_loongarch", issue = "117427")]2294#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2295pub unsafe fn lasx_xvmini_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {2295pub fn lasx_xvmini_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
2296 static_assert_simm_bits!(IMM_S5, 5);2296 static_assert_simm_bits!(IMM_S5, 5);
2297 __lasx_xvmini_b(a, IMM_S5)2297 unsafe { __lasx_xvmini_b(a, IMM_S5) }
2298}2298}
22992299
2300#[inline]2300#[inline]
2301#[target_feature(enable = "lasx")]2301#[target_feature(enable = "lasx")]
2302#[rustc_legacy_const_generics(1)]2302#[rustc_legacy_const_generics(1)]
2303#[unstable(feature = "stdarch_loongarch", issue = "117427")]2303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2304pub unsafe fn lasx_xvmini_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {2304pub fn lasx_xvmini_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
2305 static_assert_simm_bits!(IMM_S5, 5);2305 static_assert_simm_bits!(IMM_S5, 5);
2306 __lasx_xvmini_h(a, IMM_S5)2306 unsafe { __lasx_xvmini_h(a, IMM_S5) }
2307}2307}
23082308
2309#[inline]2309#[inline]
2310#[target_feature(enable = "lasx")]2310#[target_feature(enable = "lasx")]
2311#[rustc_legacy_const_generics(1)]2311#[rustc_legacy_const_generics(1)]
2312#[unstable(feature = "stdarch_loongarch", issue = "117427")]2312#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2313pub unsafe fn lasx_xvmini_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {2313pub fn lasx_xvmini_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
2314 static_assert_simm_bits!(IMM_S5, 5);2314 static_assert_simm_bits!(IMM_S5, 5);
2315 __lasx_xvmini_w(a, IMM_S5)2315 unsafe { __lasx_xvmini_w(a, IMM_S5) }
2316}2316}
23172317
2318#[inline]2318#[inline]
2319#[target_feature(enable = "lasx")]2319#[target_feature(enable = "lasx")]
2320#[rustc_legacy_const_generics(1)]2320#[rustc_legacy_const_generics(1)]
2321#[unstable(feature = "stdarch_loongarch", issue = "117427")]2321#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2322pub unsafe fn lasx_xvmini_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {2322pub fn lasx_xvmini_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
2323 static_assert_simm_bits!(IMM_S5, 5);2323 static_assert_simm_bits!(IMM_S5, 5);
2324 __lasx_xvmini_d(a, IMM_S5)2324 unsafe { __lasx_xvmini_d(a, IMM_S5) }
2325}2325}
23262326
2327#[inline]2327#[inline]
2328#[target_feature(enable = "lasx")]2328#[target_feature(enable = "lasx")]
2329#[unstable(feature = "stdarch_loongarch", issue = "117427")]2329#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2330pub unsafe fn lasx_xvmin_bu(a: v32u8, b: v32u8) -> v32u8 {2330pub fn lasx_xvmin_bu(a: v32u8, b: v32u8) -> v32u8 {
2331 __lasx_xvmin_bu(a, b)2331 unsafe { __lasx_xvmin_bu(a, b) }
2332}2332}
23332333
2334#[inline]2334#[inline]
2335#[target_feature(enable = "lasx")]2335#[target_feature(enable = "lasx")]
2336#[unstable(feature = "stdarch_loongarch", issue = "117427")]2336#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2337pub unsafe fn lasx_xvmin_hu(a: v16u16, b: v16u16) -> v16u16 {2337pub fn lasx_xvmin_hu(a: v16u16, b: v16u16) -> v16u16 {
2338 __lasx_xvmin_hu(a, b)2338 unsafe { __lasx_xvmin_hu(a, b) }
2339}2339}
23402340
2341#[inline]2341#[inline]
2342#[target_feature(enable = "lasx")]2342#[target_feature(enable = "lasx")]
2343#[unstable(feature = "stdarch_loongarch", issue = "117427")]2343#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2344pub unsafe fn lasx_xvmin_wu(a: v8u32, b: v8u32) -> v8u32 {2344pub fn lasx_xvmin_wu(a: v8u32, b: v8u32) -> v8u32 {
2345 __lasx_xvmin_wu(a, b)2345 unsafe { __lasx_xvmin_wu(a, b) }
2346}2346}
23472347
2348#[inline]2348#[inline]
2349#[target_feature(enable = "lasx")]2349#[target_feature(enable = "lasx")]
2350#[unstable(feature = "stdarch_loongarch", issue = "117427")]2350#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2351pub unsafe fn lasx_xvmin_du(a: v4u64, b: v4u64) -> v4u64 {2351pub fn lasx_xvmin_du(a: v4u64, b: v4u64) -> v4u64 {
2352 __lasx_xvmin_du(a, b)2352 unsafe { __lasx_xvmin_du(a, b) }
2353}2353}
23542354
2355#[inline]2355#[inline]
2356#[target_feature(enable = "lasx")]2356#[target_feature(enable = "lasx")]
2357#[rustc_legacy_const_generics(1)]2357#[rustc_legacy_const_generics(1)]
2358#[unstable(feature = "stdarch_loongarch", issue = "117427")]2358#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2359pub unsafe fn lasx_xvmini_bu<const IMM5: u32>(a: v32u8) -> v32u8 {2359pub fn lasx_xvmini_bu<const IMM5: u32>(a: v32u8) -> v32u8 {
2360 static_assert_uimm_bits!(IMM5, 5);2360 static_assert_uimm_bits!(IMM5, 5);
2361 __lasx_xvmini_bu(a, IMM5)2361 unsafe { __lasx_xvmini_bu(a, IMM5) }
2362}2362}
23632363
2364#[inline]2364#[inline]
2365#[target_feature(enable = "lasx")]2365#[target_feature(enable = "lasx")]
2366#[rustc_legacy_const_generics(1)]2366#[rustc_legacy_const_generics(1)]
2367#[unstable(feature = "stdarch_loongarch", issue = "117427")]2367#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2368pub unsafe fn lasx_xvmini_hu<const IMM5: u32>(a: v16u16) -> v16u16 {2368pub fn lasx_xvmini_hu<const IMM5: u32>(a: v16u16) -> v16u16 {
2369 static_assert_uimm_bits!(IMM5, 5);2369 static_assert_uimm_bits!(IMM5, 5);
2370 __lasx_xvmini_hu(a, IMM5)2370 unsafe { __lasx_xvmini_hu(a, IMM5) }
2371}2371}
23722372
2373#[inline]2373#[inline]
2374#[target_feature(enable = "lasx")]2374#[target_feature(enable = "lasx")]
2375#[rustc_legacy_const_generics(1)]2375#[rustc_legacy_const_generics(1)]
2376#[unstable(feature = "stdarch_loongarch", issue = "117427")]2376#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2377pub unsafe fn lasx_xvmini_wu<const IMM5: u32>(a: v8u32) -> v8u32 {2377pub fn lasx_xvmini_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
2378 static_assert_uimm_bits!(IMM5, 5);2378 static_assert_uimm_bits!(IMM5, 5);
2379 __lasx_xvmini_wu(a, IMM5)2379 unsafe { __lasx_xvmini_wu(a, IMM5) }
2380}2380}
23812381
2382#[inline]2382#[inline]
2383#[target_feature(enable = "lasx")]2383#[target_feature(enable = "lasx")]
2384#[rustc_legacy_const_generics(1)]2384#[rustc_legacy_const_generics(1)]
2385#[unstable(feature = "stdarch_loongarch", issue = "117427")]2385#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2386pub unsafe fn lasx_xvmini_du<const IMM5: u32>(a: v4u64) -> v4u64 {2386pub fn lasx_xvmini_du<const IMM5: u32>(a: v4u64) -> v4u64 {
2387 static_assert_uimm_bits!(IMM5, 5);2387 static_assert_uimm_bits!(IMM5, 5);
2388 __lasx_xvmini_du(a, IMM5)2388 unsafe { __lasx_xvmini_du(a, IMM5) }
2389}2389}
23902390
2391#[inline]2391#[inline]
2392#[target_feature(enable = "lasx")]2392#[target_feature(enable = "lasx")]
2393#[unstable(feature = "stdarch_loongarch", issue = "117427")]2393#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2394pub unsafe fn lasx_xvseq_b(a: v32i8, b: v32i8) -> v32i8 {2394pub fn lasx_xvseq_b(a: v32i8, b: v32i8) -> v32i8 {
2395 __lasx_xvseq_b(a, b)2395 unsafe { __lasx_xvseq_b(a, b) }
2396}2396}
23972397
2398#[inline]2398#[inline]
2399#[target_feature(enable = "lasx")]2399#[target_feature(enable = "lasx")]
2400#[unstable(feature = "stdarch_loongarch", issue = "117427")]2400#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2401pub unsafe fn lasx_xvseq_h(a: v16i16, b: v16i16) -> v16i16 {2401pub fn lasx_xvseq_h(a: v16i16, b: v16i16) -> v16i16 {
2402 __lasx_xvseq_h(a, b)2402 unsafe { __lasx_xvseq_h(a, b) }
2403}2403}
24042404
2405#[inline]2405#[inline]
2406#[target_feature(enable = "lasx")]2406#[target_feature(enable = "lasx")]
2407#[unstable(feature = "stdarch_loongarch", issue = "117427")]2407#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2408pub unsafe fn lasx_xvseq_w(a: v8i32, b: v8i32) -> v8i32 {2408pub fn lasx_xvseq_w(a: v8i32, b: v8i32) -> v8i32 {
2409 __lasx_xvseq_w(a, b)2409 unsafe { __lasx_xvseq_w(a, b) }
2410}2410}
24112411
2412#[inline]2412#[inline]
2413#[target_feature(enable = "lasx")]2413#[target_feature(enable = "lasx")]
2414#[unstable(feature = "stdarch_loongarch", issue = "117427")]2414#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2415pub unsafe fn lasx_xvseq_d(a: v4i64, b: v4i64) -> v4i64 {2415pub fn lasx_xvseq_d(a: v4i64, b: v4i64) -> v4i64 {
2416 __lasx_xvseq_d(a, b)2416 unsafe { __lasx_xvseq_d(a, b) }
2417}2417}
24182418
2419#[inline]2419#[inline]
2420#[target_feature(enable = "lasx")]2420#[target_feature(enable = "lasx")]
2421#[rustc_legacy_const_generics(1)]2421#[rustc_legacy_const_generics(1)]
2422#[unstable(feature = "stdarch_loongarch", issue = "117427")]2422#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2423pub unsafe fn lasx_xvseqi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {2423pub fn lasx_xvseqi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
2424 static_assert_simm_bits!(IMM_S5, 5);2424 static_assert_simm_bits!(IMM_S5, 5);
2425 __lasx_xvseqi_b(a, IMM_S5)2425 unsafe { __lasx_xvseqi_b(a, IMM_S5) }
2426}2426}
24272427
2428#[inline]2428#[inline]
2429#[target_feature(enable = "lasx")]2429#[target_feature(enable = "lasx")]
2430#[rustc_legacy_const_generics(1)]2430#[rustc_legacy_const_generics(1)]
2431#[unstable(feature = "stdarch_loongarch", issue = "117427")]2431#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2432pub unsafe fn lasx_xvseqi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {2432pub fn lasx_xvseqi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
2433 static_assert_simm_bits!(IMM_S5, 5);2433 static_assert_simm_bits!(IMM_S5, 5);
2434 __lasx_xvseqi_h(a, IMM_S5)2434 unsafe { __lasx_xvseqi_h(a, IMM_S5) }
2435}2435}
24362436
2437#[inline]2437#[inline]
2438#[target_feature(enable = "lasx")]2438#[target_feature(enable = "lasx")]
2439#[rustc_legacy_const_generics(1)]2439#[rustc_legacy_const_generics(1)]
2440#[unstable(feature = "stdarch_loongarch", issue = "117427")]2440#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2441pub unsafe fn lasx_xvseqi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {2441pub fn lasx_xvseqi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
2442 static_assert_simm_bits!(IMM_S5, 5);2442 static_assert_simm_bits!(IMM_S5, 5);
2443 __lasx_xvseqi_w(a, IMM_S5)2443 unsafe { __lasx_xvseqi_w(a, IMM_S5) }
2444}2444}
24452445
2446#[inline]2446#[inline]
2447#[target_feature(enable = "lasx")]2447#[target_feature(enable = "lasx")]
2448#[rustc_legacy_const_generics(1)]2448#[rustc_legacy_const_generics(1)]
2449#[unstable(feature = "stdarch_loongarch", issue = "117427")]2449#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2450pub unsafe fn lasx_xvseqi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {2450pub fn lasx_xvseqi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
2451 static_assert_simm_bits!(IMM_S5, 5);2451 static_assert_simm_bits!(IMM_S5, 5);
2452 __lasx_xvseqi_d(a, IMM_S5)2452 unsafe { __lasx_xvseqi_d(a, IMM_S5) }
2453}2453}
24542454
2455#[inline]2455#[inline]
2456#[target_feature(enable = "lasx")]2456#[target_feature(enable = "lasx")]
2457#[unstable(feature = "stdarch_loongarch", issue = "117427")]2457#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2458pub unsafe fn lasx_xvslt_b(a: v32i8, b: v32i8) -> v32i8 {2458pub fn lasx_xvslt_b(a: v32i8, b: v32i8) -> v32i8 {
2459 __lasx_xvslt_b(a, b)2459 unsafe { __lasx_xvslt_b(a, b) }
2460}2460}
24612461
2462#[inline]2462#[inline]
2463#[target_feature(enable = "lasx")]2463#[target_feature(enable = "lasx")]
2464#[unstable(feature = "stdarch_loongarch", issue = "117427")]2464#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2465pub unsafe fn lasx_xvslt_h(a: v16i16, b: v16i16) -> v16i16 {2465pub fn lasx_xvslt_h(a: v16i16, b: v16i16) -> v16i16 {
2466 __lasx_xvslt_h(a, b)2466 unsafe { __lasx_xvslt_h(a, b) }
2467}2467}
24682468
2469#[inline]2469#[inline]
2470#[target_feature(enable = "lasx")]2470#[target_feature(enable = "lasx")]
2471#[unstable(feature = "stdarch_loongarch", issue = "117427")]2471#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2472pub unsafe fn lasx_xvslt_w(a: v8i32, b: v8i32) -> v8i32 {2472pub fn lasx_xvslt_w(a: v8i32, b: v8i32) -> v8i32 {
2473 __lasx_xvslt_w(a, b)2473 unsafe { __lasx_xvslt_w(a, b) }
2474}2474}
24752475
2476#[inline]2476#[inline]
2477#[target_feature(enable = "lasx")]2477#[target_feature(enable = "lasx")]
2478#[unstable(feature = "stdarch_loongarch", issue = "117427")]2478#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2479pub unsafe fn lasx_xvslt_d(a: v4i64, b: v4i64) -> v4i64 {2479pub fn lasx_xvslt_d(a: v4i64, b: v4i64) -> v4i64 {
2480 __lasx_xvslt_d(a, b)2480 unsafe { __lasx_xvslt_d(a, b) }
2481}2481}
24822482
2483#[inline]2483#[inline]
2484#[target_feature(enable = "lasx")]2484#[target_feature(enable = "lasx")]
2485#[rustc_legacy_const_generics(1)]2485#[rustc_legacy_const_generics(1)]
2486#[unstable(feature = "stdarch_loongarch", issue = "117427")]2486#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2487pub unsafe fn lasx_xvslti_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {2487pub fn lasx_xvslti_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
2488 static_assert_simm_bits!(IMM_S5, 5);2488 static_assert_simm_bits!(IMM_S5, 5);
2489 __lasx_xvslti_b(a, IMM_S5)2489 unsafe { __lasx_xvslti_b(a, IMM_S5) }
2490}2490}
24912491
2492#[inline]2492#[inline]
2493#[target_feature(enable = "lasx")]2493#[target_feature(enable = "lasx")]
2494#[rustc_legacy_const_generics(1)]2494#[rustc_legacy_const_generics(1)]
2495#[unstable(feature = "stdarch_loongarch", issue = "117427")]2495#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2496pub unsafe fn lasx_xvslti_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {2496pub fn lasx_xvslti_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
2497 static_assert_simm_bits!(IMM_S5, 5);2497 static_assert_simm_bits!(IMM_S5, 5);
2498 __lasx_xvslti_h(a, IMM_S5)2498 unsafe { __lasx_xvslti_h(a, IMM_S5) }
2499}2499}
25002500
2501#[inline]2501#[inline]
2502#[target_feature(enable = "lasx")]2502#[target_feature(enable = "lasx")]
2503#[rustc_legacy_const_generics(1)]2503#[rustc_legacy_const_generics(1)]
2504#[unstable(feature = "stdarch_loongarch", issue = "117427")]2504#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2505pub unsafe fn lasx_xvslti_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {2505pub fn lasx_xvslti_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
2506 static_assert_simm_bits!(IMM_S5, 5);2506 static_assert_simm_bits!(IMM_S5, 5);
2507 __lasx_xvslti_w(a, IMM_S5)2507 unsafe { __lasx_xvslti_w(a, IMM_S5) }
2508}2508}
25092509
2510#[inline]2510#[inline]
2511#[target_feature(enable = "lasx")]2511#[target_feature(enable = "lasx")]
2512#[rustc_legacy_const_generics(1)]2512#[rustc_legacy_const_generics(1)]
2513#[unstable(feature = "stdarch_loongarch", issue = "117427")]2513#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2514pub unsafe fn lasx_xvslti_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {2514pub fn lasx_xvslti_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
2515 static_assert_simm_bits!(IMM_S5, 5);2515 static_assert_simm_bits!(IMM_S5, 5);
2516 __lasx_xvslti_d(a, IMM_S5)2516 unsafe { __lasx_xvslti_d(a, IMM_S5) }
2517}2517}
25182518
2519#[inline]2519#[inline]
2520#[target_feature(enable = "lasx")]2520#[target_feature(enable = "lasx")]
2521#[unstable(feature = "stdarch_loongarch", issue = "117427")]2521#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2522pub unsafe fn lasx_xvslt_bu(a: v32u8, b: v32u8) -> v32i8 {2522pub fn lasx_xvslt_bu(a: v32u8, b: v32u8) -> v32i8 {
2523 __lasx_xvslt_bu(a, b)2523 unsafe { __lasx_xvslt_bu(a, b) }
2524}2524}
25252525
2526#[inline]2526#[inline]
2527#[target_feature(enable = "lasx")]2527#[target_feature(enable = "lasx")]
2528#[unstable(feature = "stdarch_loongarch", issue = "117427")]2528#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2529pub unsafe fn lasx_xvslt_hu(a: v16u16, b: v16u16) -> v16i16 {2529pub fn lasx_xvslt_hu(a: v16u16, b: v16u16) -> v16i16 {
2530 __lasx_xvslt_hu(a, b)2530 unsafe { __lasx_xvslt_hu(a, b) }
2531}2531}
25322532
2533#[inline]2533#[inline]
2534#[target_feature(enable = "lasx")]2534#[target_feature(enable = "lasx")]
2535#[unstable(feature = "stdarch_loongarch", issue = "117427")]2535#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2536pub unsafe fn lasx_xvslt_wu(a: v8u32, b: v8u32) -> v8i32 {2536pub fn lasx_xvslt_wu(a: v8u32, b: v8u32) -> v8i32 {
2537 __lasx_xvslt_wu(a, b)2537 unsafe { __lasx_xvslt_wu(a, b) }
2538}2538}
25392539
2540#[inline]2540#[inline]
2541#[target_feature(enable = "lasx")]2541#[target_feature(enable = "lasx")]
2542#[unstable(feature = "stdarch_loongarch", issue = "117427")]2542#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2543pub unsafe fn lasx_xvslt_du(a: v4u64, b: v4u64) -> v4i64 {2543pub fn lasx_xvslt_du(a: v4u64, b: v4u64) -> v4i64 {
2544 __lasx_xvslt_du(a, b)2544 unsafe { __lasx_xvslt_du(a, b) }
2545}2545}
25462546
2547#[inline]2547#[inline]
2548#[target_feature(enable = "lasx")]2548#[target_feature(enable = "lasx")]
2549#[rustc_legacy_const_generics(1)]2549#[rustc_legacy_const_generics(1)]
2550#[unstable(feature = "stdarch_loongarch", issue = "117427")]2550#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2551pub unsafe fn lasx_xvslti_bu<const IMM5: u32>(a: v32u8) -> v32i8 {2551pub fn lasx_xvslti_bu<const IMM5: u32>(a: v32u8) -> v32i8 {
2552 static_assert_uimm_bits!(IMM5, 5);2552 static_assert_uimm_bits!(IMM5, 5);
2553 __lasx_xvslti_bu(a, IMM5)2553 unsafe { __lasx_xvslti_bu(a, IMM5) }
2554}2554}
25552555
2556#[inline]2556#[inline]
2557#[target_feature(enable = "lasx")]2557#[target_feature(enable = "lasx")]
2558#[rustc_legacy_const_generics(1)]2558#[rustc_legacy_const_generics(1)]
2559#[unstable(feature = "stdarch_loongarch", issue = "117427")]2559#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2560pub unsafe fn lasx_xvslti_hu<const IMM5: u32>(a: v16u16) -> v16i16 {2560pub fn lasx_xvslti_hu<const IMM5: u32>(a: v16u16) -> v16i16 {
2561 static_assert_uimm_bits!(IMM5, 5);2561 static_assert_uimm_bits!(IMM5, 5);
2562 __lasx_xvslti_hu(a, IMM5)2562 unsafe { __lasx_xvslti_hu(a, IMM5) }
2563}2563}
25642564
2565#[inline]2565#[inline]
2566#[target_feature(enable = "lasx")]2566#[target_feature(enable = "lasx")]
2567#[rustc_legacy_const_generics(1)]2567#[rustc_legacy_const_generics(1)]
2568#[unstable(feature = "stdarch_loongarch", issue = "117427")]2568#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2569pub unsafe fn lasx_xvslti_wu<const IMM5: u32>(a: v8u32) -> v8i32 {2569pub fn lasx_xvslti_wu<const IMM5: u32>(a: v8u32) -> v8i32 {
2570 static_assert_uimm_bits!(IMM5, 5);2570 static_assert_uimm_bits!(IMM5, 5);
2571 __lasx_xvslti_wu(a, IMM5)2571 unsafe { __lasx_xvslti_wu(a, IMM5) }
2572}2572}
25732573
2574#[inline]2574#[inline]
2575#[target_feature(enable = "lasx")]2575#[target_feature(enable = "lasx")]
2576#[rustc_legacy_const_generics(1)]2576#[rustc_legacy_const_generics(1)]
2577#[unstable(feature = "stdarch_loongarch", issue = "117427")]2577#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2578pub unsafe fn lasx_xvslti_du<const IMM5: u32>(a: v4u64) -> v4i64 {2578pub fn lasx_xvslti_du<const IMM5: u32>(a: v4u64) -> v4i64 {
2579 static_assert_uimm_bits!(IMM5, 5);2579 static_assert_uimm_bits!(IMM5, 5);
2580 __lasx_xvslti_du(a, IMM5)2580 unsafe { __lasx_xvslti_du(a, IMM5) }
2581}2581}
25822582
2583#[inline]2583#[inline]
2584#[target_feature(enable = "lasx")]2584#[target_feature(enable = "lasx")]
2585#[unstable(feature = "stdarch_loongarch", issue = "117427")]2585#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2586pub unsafe fn lasx_xvsle_b(a: v32i8, b: v32i8) -> v32i8 {2586pub fn lasx_xvsle_b(a: v32i8, b: v32i8) -> v32i8 {
2587 __lasx_xvsle_b(a, b)2587 unsafe { __lasx_xvsle_b(a, b) }
2588}2588}
25892589
2590#[inline]2590#[inline]
2591#[target_feature(enable = "lasx")]2591#[target_feature(enable = "lasx")]
2592#[unstable(feature = "stdarch_loongarch", issue = "117427")]2592#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2593pub unsafe fn lasx_xvsle_h(a: v16i16, b: v16i16) -> v16i16 {2593pub fn lasx_xvsle_h(a: v16i16, b: v16i16) -> v16i16 {
2594 __lasx_xvsle_h(a, b)2594 unsafe { __lasx_xvsle_h(a, b) }
2595}2595}
25962596
2597#[inline]2597#[inline]
2598#[target_feature(enable = "lasx")]2598#[target_feature(enable = "lasx")]
2599#[unstable(feature = "stdarch_loongarch", issue = "117427")]2599#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2600pub unsafe fn lasx_xvsle_w(a: v8i32, b: v8i32) -> v8i32 {2600pub fn lasx_xvsle_w(a: v8i32, b: v8i32) -> v8i32 {
2601 __lasx_xvsle_w(a, b)2601 unsafe { __lasx_xvsle_w(a, b) }
2602}2602}
26032603
2604#[inline]2604#[inline]
2605#[target_feature(enable = "lasx")]2605#[target_feature(enable = "lasx")]
2606#[unstable(feature = "stdarch_loongarch", issue = "117427")]2606#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2607pub unsafe fn lasx_xvsle_d(a: v4i64, b: v4i64) -> v4i64 {2607pub fn lasx_xvsle_d(a: v4i64, b: v4i64) -> v4i64 {
2608 __lasx_xvsle_d(a, b)2608 unsafe { __lasx_xvsle_d(a, b) }
2609}2609}
26102610
2611#[inline]2611#[inline]
2612#[target_feature(enable = "lasx")]2612#[target_feature(enable = "lasx")]
2613#[rustc_legacy_const_generics(1)]2613#[rustc_legacy_const_generics(1)]
2614#[unstable(feature = "stdarch_loongarch", issue = "117427")]2614#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2615pub unsafe fn lasx_xvslei_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {2615pub fn lasx_xvslei_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
2616 static_assert_simm_bits!(IMM_S5, 5);2616 static_assert_simm_bits!(IMM_S5, 5);
2617 __lasx_xvslei_b(a, IMM_S5)2617 unsafe { __lasx_xvslei_b(a, IMM_S5) }
2618}2618}
26192619
2620#[inline]2620#[inline]
2621#[target_feature(enable = "lasx")]2621#[target_feature(enable = "lasx")]
2622#[rustc_legacy_const_generics(1)]2622#[rustc_legacy_const_generics(1)]
2623#[unstable(feature = "stdarch_loongarch", issue = "117427")]2623#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2624pub unsafe fn lasx_xvslei_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {2624pub fn lasx_xvslei_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
2625 static_assert_simm_bits!(IMM_S5, 5);2625 static_assert_simm_bits!(IMM_S5, 5);
2626 __lasx_xvslei_h(a, IMM_S5)2626 unsafe { __lasx_xvslei_h(a, IMM_S5) }
2627}2627}
26282628
2629#[inline]2629#[inline]
2630#[target_feature(enable = "lasx")]2630#[target_feature(enable = "lasx")]
2631#[rustc_legacy_const_generics(1)]2631#[rustc_legacy_const_generics(1)]
2632#[unstable(feature = "stdarch_loongarch", issue = "117427")]2632#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2633pub unsafe fn lasx_xvslei_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {2633pub fn lasx_xvslei_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
2634 static_assert_simm_bits!(IMM_S5, 5);2634 static_assert_simm_bits!(IMM_S5, 5);
2635 __lasx_xvslei_w(a, IMM_S5)2635 unsafe { __lasx_xvslei_w(a, IMM_S5) }
2636}2636}
26372637
2638#[inline]2638#[inline]
2639#[target_feature(enable = "lasx")]2639#[target_feature(enable = "lasx")]
2640#[rustc_legacy_const_generics(1)]2640#[rustc_legacy_const_generics(1)]
2641#[unstable(feature = "stdarch_loongarch", issue = "117427")]2641#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2642pub unsafe fn lasx_xvslei_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {2642pub fn lasx_xvslei_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
2643 static_assert_simm_bits!(IMM_S5, 5);2643 static_assert_simm_bits!(IMM_S5, 5);
2644 __lasx_xvslei_d(a, IMM_S5)2644 unsafe { __lasx_xvslei_d(a, IMM_S5) }
2645}2645}
26462646
2647#[inline]2647#[inline]
2648#[target_feature(enable = "lasx")]2648#[target_feature(enable = "lasx")]
2649#[unstable(feature = "stdarch_loongarch", issue = "117427")]2649#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2650pub unsafe fn lasx_xvsle_bu(a: v32u8, b: v32u8) -> v32i8 {2650pub fn lasx_xvsle_bu(a: v32u8, b: v32u8) -> v32i8 {
2651 __lasx_xvsle_bu(a, b)2651 unsafe { __lasx_xvsle_bu(a, b) }
2652}2652}
26532653
2654#[inline]2654#[inline]
2655#[target_feature(enable = "lasx")]2655#[target_feature(enable = "lasx")]
2656#[unstable(feature = "stdarch_loongarch", issue = "117427")]2656#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2657pub unsafe fn lasx_xvsle_hu(a: v16u16, b: v16u16) -> v16i16 {2657pub fn lasx_xvsle_hu(a: v16u16, b: v16u16) -> v16i16 {
2658 __lasx_xvsle_hu(a, b)2658 unsafe { __lasx_xvsle_hu(a, b) }
2659}2659}
26602660
2661#[inline]2661#[inline]
2662#[target_feature(enable = "lasx")]2662#[target_feature(enable = "lasx")]
2663#[unstable(feature = "stdarch_loongarch", issue = "117427")]2663#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2664pub unsafe fn lasx_xvsle_wu(a: v8u32, b: v8u32) -> v8i32 {2664pub fn lasx_xvsle_wu(a: v8u32, b: v8u32) -> v8i32 {
2665 __lasx_xvsle_wu(a, b)2665 unsafe { __lasx_xvsle_wu(a, b) }
2666}2666}
26672667
2668#[inline]2668#[inline]
2669#[target_feature(enable = "lasx")]2669#[target_feature(enable = "lasx")]
2670#[unstable(feature = "stdarch_loongarch", issue = "117427")]2670#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2671pub unsafe fn lasx_xvsle_du(a: v4u64, b: v4u64) -> v4i64 {2671pub fn lasx_xvsle_du(a: v4u64, b: v4u64) -> v4i64 {
2672 __lasx_xvsle_du(a, b)2672 unsafe { __lasx_xvsle_du(a, b) }
2673}2673}
26742674
2675#[inline]2675#[inline]
2676#[target_feature(enable = "lasx")]2676#[target_feature(enable = "lasx")]
2677#[rustc_legacy_const_generics(1)]2677#[rustc_legacy_const_generics(1)]
2678#[unstable(feature = "stdarch_loongarch", issue = "117427")]2678#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2679pub unsafe fn lasx_xvslei_bu<const IMM5: u32>(a: v32u8) -> v32i8 {2679pub fn lasx_xvslei_bu<const IMM5: u32>(a: v32u8) -> v32i8 {
2680 static_assert_uimm_bits!(IMM5, 5);2680 static_assert_uimm_bits!(IMM5, 5);
2681 __lasx_xvslei_bu(a, IMM5)2681 unsafe { __lasx_xvslei_bu(a, IMM5) }
2682}2682}
26832683
2684#[inline]2684#[inline]
2685#[target_feature(enable = "lasx")]2685#[target_feature(enable = "lasx")]
2686#[rustc_legacy_const_generics(1)]2686#[rustc_legacy_const_generics(1)]
2687#[unstable(feature = "stdarch_loongarch", issue = "117427")]2687#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2688pub unsafe fn lasx_xvslei_hu<const IMM5: u32>(a: v16u16) -> v16i16 {2688pub fn lasx_xvslei_hu<const IMM5: u32>(a: v16u16) -> v16i16 {
2689 static_assert_uimm_bits!(IMM5, 5);2689 static_assert_uimm_bits!(IMM5, 5);
2690 __lasx_xvslei_hu(a, IMM5)2690 unsafe { __lasx_xvslei_hu(a, IMM5) }
2691}2691}
26922692
2693#[inline]2693#[inline]
2694#[target_feature(enable = "lasx")]2694#[target_feature(enable = "lasx")]
2695#[rustc_legacy_const_generics(1)]2695#[rustc_legacy_const_generics(1)]
2696#[unstable(feature = "stdarch_loongarch", issue = "117427")]2696#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2697pub unsafe fn lasx_xvslei_wu<const IMM5: u32>(a: v8u32) -> v8i32 {2697pub fn lasx_xvslei_wu<const IMM5: u32>(a: v8u32) -> v8i32 {
2698 static_assert_uimm_bits!(IMM5, 5);2698 static_assert_uimm_bits!(IMM5, 5);
2699 __lasx_xvslei_wu(a, IMM5)2699 unsafe { __lasx_xvslei_wu(a, IMM5) }
2700}2700}
27012701
2702#[inline]2702#[inline]
2703#[target_feature(enable = "lasx")]2703#[target_feature(enable = "lasx")]
2704#[rustc_legacy_const_generics(1)]2704#[rustc_legacy_const_generics(1)]
2705#[unstable(feature = "stdarch_loongarch", issue = "117427")]2705#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2706pub unsafe fn lasx_xvslei_du<const IMM5: u32>(a: v4u64) -> v4i64 {2706pub fn lasx_xvslei_du<const IMM5: u32>(a: v4u64) -> v4i64 {
2707 static_assert_uimm_bits!(IMM5, 5);2707 static_assert_uimm_bits!(IMM5, 5);
2708 __lasx_xvslei_du(a, IMM5)2708 unsafe { __lasx_xvslei_du(a, IMM5) }
2709}2709}
27102710
2711#[inline]2711#[inline]
2712#[target_feature(enable = "lasx")]2712#[target_feature(enable = "lasx")]
2713#[rustc_legacy_const_generics(1)]2713#[rustc_legacy_const_generics(1)]
2714#[unstable(feature = "stdarch_loongarch", issue = "117427")]2714#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2715pub unsafe fn lasx_xvsat_b<const IMM3: u32>(a: v32i8) -> v32i8 {2715pub fn lasx_xvsat_b<const IMM3: u32>(a: v32i8) -> v32i8 {
2716 static_assert_uimm_bits!(IMM3, 3);2716 static_assert_uimm_bits!(IMM3, 3);
2717 __lasx_xvsat_b(a, IMM3)2717 unsafe { __lasx_xvsat_b(a, IMM3) }
2718}2718}
27192719
2720#[inline]2720#[inline]
2721#[target_feature(enable = "lasx")]2721#[target_feature(enable = "lasx")]
2722#[rustc_legacy_const_generics(1)]2722#[rustc_legacy_const_generics(1)]
2723#[unstable(feature = "stdarch_loongarch", issue = "117427")]2723#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2724pub unsafe fn lasx_xvsat_h<const IMM4: u32>(a: v16i16) -> v16i16 {2724pub fn lasx_xvsat_h<const IMM4: u32>(a: v16i16) -> v16i16 {
2725 static_assert_uimm_bits!(IMM4, 4);2725 static_assert_uimm_bits!(IMM4, 4);
2726 __lasx_xvsat_h(a, IMM4)2726 unsafe { __lasx_xvsat_h(a, IMM4) }
2727}2727}
27282728
2729#[inline]2729#[inline]
2730#[target_feature(enable = "lasx")]2730#[target_feature(enable = "lasx")]
2731#[rustc_legacy_const_generics(1)]2731#[rustc_legacy_const_generics(1)]
2732#[unstable(feature = "stdarch_loongarch", issue = "117427")]2732#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2733pub unsafe fn lasx_xvsat_w<const IMM5: u32>(a: v8i32) -> v8i32 {2733pub fn lasx_xvsat_w<const IMM5: u32>(a: v8i32) -> v8i32 {
2734 static_assert_uimm_bits!(IMM5, 5);2734 static_assert_uimm_bits!(IMM5, 5);
2735 __lasx_xvsat_w(a, IMM5)2735 unsafe { __lasx_xvsat_w(a, IMM5) }
2736}2736}
27372737
2738#[inline]2738#[inline]
2739#[target_feature(enable = "lasx")]2739#[target_feature(enable = "lasx")]
2740#[rustc_legacy_const_generics(1)]2740#[rustc_legacy_const_generics(1)]
2741#[unstable(feature = "stdarch_loongarch", issue = "117427")]2741#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2742pub unsafe fn lasx_xvsat_d<const IMM6: u32>(a: v4i64) -> v4i64 {2742pub fn lasx_xvsat_d<const IMM6: u32>(a: v4i64) -> v4i64 {
2743 static_assert_uimm_bits!(IMM6, 6);2743 static_assert_uimm_bits!(IMM6, 6);
2744 __lasx_xvsat_d(a, IMM6)2744 unsafe { __lasx_xvsat_d(a, IMM6) }
2745}2745}
27462746
2747#[inline]2747#[inline]
2748#[target_feature(enable = "lasx")]2748#[target_feature(enable = "lasx")]
2749#[rustc_legacy_const_generics(1)]2749#[rustc_legacy_const_generics(1)]
2750#[unstable(feature = "stdarch_loongarch", issue = "117427")]2750#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2751pub unsafe fn lasx_xvsat_bu<const IMM3: u32>(a: v32u8) -> v32u8 {2751pub fn lasx_xvsat_bu<const IMM3: u32>(a: v32u8) -> v32u8 {
2752 static_assert_uimm_bits!(IMM3, 3);2752 static_assert_uimm_bits!(IMM3, 3);
2753 __lasx_xvsat_bu(a, IMM3)2753 unsafe { __lasx_xvsat_bu(a, IMM3) }
2754}2754}
27552755
2756#[inline]2756#[inline]
2757#[target_feature(enable = "lasx")]2757#[target_feature(enable = "lasx")]
2758#[rustc_legacy_const_generics(1)]2758#[rustc_legacy_const_generics(1)]
2759#[unstable(feature = "stdarch_loongarch", issue = "117427")]2759#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2760pub unsafe fn lasx_xvsat_hu<const IMM4: u32>(a: v16u16) -> v16u16 {2760pub fn lasx_xvsat_hu<const IMM4: u32>(a: v16u16) -> v16u16 {
2761 static_assert_uimm_bits!(IMM4, 4);2761 static_assert_uimm_bits!(IMM4, 4);
2762 __lasx_xvsat_hu(a, IMM4)2762 unsafe { __lasx_xvsat_hu(a, IMM4) }
2763}2763}
27642764
2765#[inline]2765#[inline]
2766#[target_feature(enable = "lasx")]2766#[target_feature(enable = "lasx")]
2767#[rustc_legacy_const_generics(1)]2767#[rustc_legacy_const_generics(1)]
2768#[unstable(feature = "stdarch_loongarch", issue = "117427")]2768#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2769pub unsafe fn lasx_xvsat_wu<const IMM5: u32>(a: v8u32) -> v8u32 {2769pub fn lasx_xvsat_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
2770 static_assert_uimm_bits!(IMM5, 5);2770 static_assert_uimm_bits!(IMM5, 5);
2771 __lasx_xvsat_wu(a, IMM5)2771 unsafe { __lasx_xvsat_wu(a, IMM5) }
2772}2772}
27732773
2774#[inline]2774#[inline]
2775#[target_feature(enable = "lasx")]2775#[target_feature(enable = "lasx")]
2776#[rustc_legacy_const_generics(1)]2776#[rustc_legacy_const_generics(1)]
2777#[unstable(feature = "stdarch_loongarch", issue = "117427")]2777#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2778pub unsafe fn lasx_xvsat_du<const IMM6: u32>(a: v4u64) -> v4u64 {2778pub fn lasx_xvsat_du<const IMM6: u32>(a: v4u64) -> v4u64 {
2779 static_assert_uimm_bits!(IMM6, 6);2779 static_assert_uimm_bits!(IMM6, 6);
2780 __lasx_xvsat_du(a, IMM6)2780 unsafe { __lasx_xvsat_du(a, IMM6) }
2781}2781}
27822782
2783#[inline]2783#[inline]
2784#[target_feature(enable = "lasx")]2784#[target_feature(enable = "lasx")]
2785#[unstable(feature = "stdarch_loongarch", issue = "117427")]2785#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2786pub unsafe fn lasx_xvadda_b(a: v32i8, b: v32i8) -> v32i8 {2786pub fn lasx_xvadda_b(a: v32i8, b: v32i8) -> v32i8 {
2787 __lasx_xvadda_b(a, b)2787 unsafe { __lasx_xvadda_b(a, b) }
2788}2788}
27892789
2790#[inline]2790#[inline]
2791#[target_feature(enable = "lasx")]2791#[target_feature(enable = "lasx")]
2792#[unstable(feature = "stdarch_loongarch", issue = "117427")]2792#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2793pub unsafe fn lasx_xvadda_h(a: v16i16, b: v16i16) -> v16i16 {2793pub fn lasx_xvadda_h(a: v16i16, b: v16i16) -> v16i16 {
2794 __lasx_xvadda_h(a, b)2794 unsafe { __lasx_xvadda_h(a, b) }
2795}2795}
27962796
2797#[inline]2797#[inline]
2798#[target_feature(enable = "lasx")]2798#[target_feature(enable = "lasx")]
2799#[unstable(feature = "stdarch_loongarch", issue = "117427")]2799#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2800pub unsafe fn lasx_xvadda_w(a: v8i32, b: v8i32) -> v8i32 {2800pub fn lasx_xvadda_w(a: v8i32, b: v8i32) -> v8i32 {
2801 __lasx_xvadda_w(a, b)2801 unsafe { __lasx_xvadda_w(a, b) }
2802}2802}
28032803
2804#[inline]2804#[inline]
2805#[target_feature(enable = "lasx")]2805#[target_feature(enable = "lasx")]
2806#[unstable(feature = "stdarch_loongarch", issue = "117427")]2806#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2807pub unsafe fn lasx_xvadda_d(a: v4i64, b: v4i64) -> v4i64 {2807pub fn lasx_xvadda_d(a: v4i64, b: v4i64) -> v4i64 {
2808 __lasx_xvadda_d(a, b)2808 unsafe { __lasx_xvadda_d(a, b) }
2809}2809}
28102810
2811#[inline]2811#[inline]
2812#[target_feature(enable = "lasx")]2812#[target_feature(enable = "lasx")]
2813#[unstable(feature = "stdarch_loongarch", issue = "117427")]2813#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2814pub unsafe fn lasx_xvsadd_b(a: v32i8, b: v32i8) -> v32i8 {2814pub fn lasx_xvsadd_b(a: v32i8, b: v32i8) -> v32i8 {
2815 __lasx_xvsadd_b(a, b)2815 unsafe { __lasx_xvsadd_b(a, b) }
2816}2816}
28172817
2818#[inline]2818#[inline]
2819#[target_feature(enable = "lasx")]2819#[target_feature(enable = "lasx")]
2820#[unstable(feature = "stdarch_loongarch", issue = "117427")]2820#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2821pub unsafe fn lasx_xvsadd_h(a: v16i16, b: v16i16) -> v16i16 {2821pub fn lasx_xvsadd_h(a: v16i16, b: v16i16) -> v16i16 {
2822 __lasx_xvsadd_h(a, b)2822 unsafe { __lasx_xvsadd_h(a, b) }
2823}2823}
28242824
2825#[inline]2825#[inline]
2826#[target_feature(enable = "lasx")]2826#[target_feature(enable = "lasx")]
2827#[unstable(feature = "stdarch_loongarch", issue = "117427")]2827#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2828pub unsafe fn lasx_xvsadd_w(a: v8i32, b: v8i32) -> v8i32 {2828pub fn lasx_xvsadd_w(a: v8i32, b: v8i32) -> v8i32 {
2829 __lasx_xvsadd_w(a, b)2829 unsafe { __lasx_xvsadd_w(a, b) }
2830}2830}
28312831
2832#[inline]2832#[inline]
2833#[target_feature(enable = "lasx")]2833#[target_feature(enable = "lasx")]
2834#[unstable(feature = "stdarch_loongarch", issue = "117427")]2834#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2835pub unsafe fn lasx_xvsadd_d(a: v4i64, b: v4i64) -> v4i64 {2835pub fn lasx_xvsadd_d(a: v4i64, b: v4i64) -> v4i64 {
2836 __lasx_xvsadd_d(a, b)2836 unsafe { __lasx_xvsadd_d(a, b) }
2837}2837}
28382838
2839#[inline]2839#[inline]
2840#[target_feature(enable = "lasx")]2840#[target_feature(enable = "lasx")]
2841#[unstable(feature = "stdarch_loongarch", issue = "117427")]2841#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2842pub unsafe fn lasx_xvsadd_bu(a: v32u8, b: v32u8) -> v32u8 {2842pub fn lasx_xvsadd_bu(a: v32u8, b: v32u8) -> v32u8 {
2843 __lasx_xvsadd_bu(a, b)2843 unsafe { __lasx_xvsadd_bu(a, b) }
2844}2844}
28452845
2846#[inline]2846#[inline]
2847#[target_feature(enable = "lasx")]2847#[target_feature(enable = "lasx")]
2848#[unstable(feature = "stdarch_loongarch", issue = "117427")]2848#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2849pub unsafe fn lasx_xvsadd_hu(a: v16u16, b: v16u16) -> v16u16 {2849pub fn lasx_xvsadd_hu(a: v16u16, b: v16u16) -> v16u16 {
2850 __lasx_xvsadd_hu(a, b)2850 unsafe { __lasx_xvsadd_hu(a, b) }
2851}2851}
28522852
2853#[inline]2853#[inline]
2854#[target_feature(enable = "lasx")]2854#[target_feature(enable = "lasx")]
2855#[unstable(feature = "stdarch_loongarch", issue = "117427")]2855#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2856pub unsafe fn lasx_xvsadd_wu(a: v8u32, b: v8u32) -> v8u32 {2856pub fn lasx_xvsadd_wu(a: v8u32, b: v8u32) -> v8u32 {
2857 __lasx_xvsadd_wu(a, b)2857 unsafe { __lasx_xvsadd_wu(a, b) }
2858}2858}
28592859
2860#[inline]2860#[inline]
2861#[target_feature(enable = "lasx")]2861#[target_feature(enable = "lasx")]
2862#[unstable(feature = "stdarch_loongarch", issue = "117427")]2862#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2863pub unsafe fn lasx_xvsadd_du(a: v4u64, b: v4u64) -> v4u64 {2863pub fn lasx_xvsadd_du(a: v4u64, b: v4u64) -> v4u64 {
2864 __lasx_xvsadd_du(a, b)2864 unsafe { __lasx_xvsadd_du(a, b) }
2865}2865}
28662866
2867#[inline]2867#[inline]
2868#[target_feature(enable = "lasx")]2868#[target_feature(enable = "lasx")]
2869#[unstable(feature = "stdarch_loongarch", issue = "117427")]2869#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2870pub unsafe fn lasx_xvavg_b(a: v32i8, b: v32i8) -> v32i8 {2870pub fn lasx_xvavg_b(a: v32i8, b: v32i8) -> v32i8 {
2871 __lasx_xvavg_b(a, b)2871 unsafe { __lasx_xvavg_b(a, b) }
2872}2872}
28732873
2874#[inline]2874#[inline]
2875#[target_feature(enable = "lasx")]2875#[target_feature(enable = "lasx")]
2876#[unstable(feature = "stdarch_loongarch", issue = "117427")]2876#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2877pub unsafe fn lasx_xvavg_h(a: v16i16, b: v16i16) -> v16i16 {2877pub fn lasx_xvavg_h(a: v16i16, b: v16i16) -> v16i16 {
2878 __lasx_xvavg_h(a, b)2878 unsafe { __lasx_xvavg_h(a, b) }
2879}2879}
28802880
2881#[inline]2881#[inline]
2882#[target_feature(enable = "lasx")]2882#[target_feature(enable = "lasx")]
2883#[unstable(feature = "stdarch_loongarch", issue = "117427")]2883#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2884pub unsafe fn lasx_xvavg_w(a: v8i32, b: v8i32) -> v8i32 {2884pub fn lasx_xvavg_w(a: v8i32, b: v8i32) -> v8i32 {
2885 __lasx_xvavg_w(a, b)2885 unsafe { __lasx_xvavg_w(a, b) }
2886}2886}
28872887
2888#[inline]2888#[inline]
2889#[target_feature(enable = "lasx")]2889#[target_feature(enable = "lasx")]
2890#[unstable(feature = "stdarch_loongarch", issue = "117427")]2890#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2891pub unsafe fn lasx_xvavg_d(a: v4i64, b: v4i64) -> v4i64 {2891pub fn lasx_xvavg_d(a: v4i64, b: v4i64) -> v4i64 {
2892 __lasx_xvavg_d(a, b)2892 unsafe { __lasx_xvavg_d(a, b) }
2893}2893}
28942894
2895#[inline]2895#[inline]
2896#[target_feature(enable = "lasx")]2896#[target_feature(enable = "lasx")]
2897#[unstable(feature = "stdarch_loongarch", issue = "117427")]2897#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2898pub unsafe fn lasx_xvavg_bu(a: v32u8, b: v32u8) -> v32u8 {2898pub fn lasx_xvavg_bu(a: v32u8, b: v32u8) -> v32u8 {
2899 __lasx_xvavg_bu(a, b)2899 unsafe { __lasx_xvavg_bu(a, b) }
2900}2900}
29012901
2902#[inline]2902#[inline]
2903#[target_feature(enable = "lasx")]2903#[target_feature(enable = "lasx")]
2904#[unstable(feature = "stdarch_loongarch", issue = "117427")]2904#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2905pub unsafe fn lasx_xvavg_hu(a: v16u16, b: v16u16) -> v16u16 {2905pub fn lasx_xvavg_hu(a: v16u16, b: v16u16) -> v16u16 {
2906 __lasx_xvavg_hu(a, b)2906 unsafe { __lasx_xvavg_hu(a, b) }
2907}2907}
29082908
2909#[inline]2909#[inline]
2910#[target_feature(enable = "lasx")]2910#[target_feature(enable = "lasx")]
2911#[unstable(feature = "stdarch_loongarch", issue = "117427")]2911#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2912pub unsafe fn lasx_xvavg_wu(a: v8u32, b: v8u32) -> v8u32 {2912pub fn lasx_xvavg_wu(a: v8u32, b: v8u32) -> v8u32 {
2913 __lasx_xvavg_wu(a, b)2913 unsafe { __lasx_xvavg_wu(a, b) }
2914}2914}
29152915
2916#[inline]2916#[inline]
2917#[target_feature(enable = "lasx")]2917#[target_feature(enable = "lasx")]
2918#[unstable(feature = "stdarch_loongarch", issue = "117427")]2918#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2919pub unsafe fn lasx_xvavg_du(a: v4u64, b: v4u64) -> v4u64 {2919pub fn lasx_xvavg_du(a: v4u64, b: v4u64) -> v4u64 {
2920 __lasx_xvavg_du(a, b)2920 unsafe { __lasx_xvavg_du(a, b) }
2921}2921}
29222922
2923#[inline]2923#[inline]
2924#[target_feature(enable = "lasx")]2924#[target_feature(enable = "lasx")]
2925#[unstable(feature = "stdarch_loongarch", issue = "117427")]2925#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2926pub unsafe fn lasx_xvavgr_b(a: v32i8, b: v32i8) -> v32i8 {2926pub fn lasx_xvavgr_b(a: v32i8, b: v32i8) -> v32i8 {
2927 __lasx_xvavgr_b(a, b)2927 unsafe { __lasx_xvavgr_b(a, b) }
2928}2928}
29292929
2930#[inline]2930#[inline]
2931#[target_feature(enable = "lasx")]2931#[target_feature(enable = "lasx")]
2932#[unstable(feature = "stdarch_loongarch", issue = "117427")]2932#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2933pub unsafe fn lasx_xvavgr_h(a: v16i16, b: v16i16) -> v16i16 {2933pub fn lasx_xvavgr_h(a: v16i16, b: v16i16) -> v16i16 {
2934 __lasx_xvavgr_h(a, b)2934 unsafe { __lasx_xvavgr_h(a, b) }
2935}2935}
29362936
2937#[inline]2937#[inline]
2938#[target_feature(enable = "lasx")]2938#[target_feature(enable = "lasx")]
2939#[unstable(feature = "stdarch_loongarch", issue = "117427")]2939#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2940pub unsafe fn lasx_xvavgr_w(a: v8i32, b: v8i32) -> v8i32 {2940pub fn lasx_xvavgr_w(a: v8i32, b: v8i32) -> v8i32 {
2941 __lasx_xvavgr_w(a, b)2941 unsafe { __lasx_xvavgr_w(a, b) }
2942}2942}
29432943
2944#[inline]2944#[inline]
2945#[target_feature(enable = "lasx")]2945#[target_feature(enable = "lasx")]
2946#[unstable(feature = "stdarch_loongarch", issue = "117427")]2946#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2947pub unsafe fn lasx_xvavgr_d(a: v4i64, b: v4i64) -> v4i64 {2947pub fn lasx_xvavgr_d(a: v4i64, b: v4i64) -> v4i64 {
2948 __lasx_xvavgr_d(a, b)2948 unsafe { __lasx_xvavgr_d(a, b) }
2949}2949}
29502950
2951#[inline]2951#[inline]
2952#[target_feature(enable = "lasx")]2952#[target_feature(enable = "lasx")]
2953#[unstable(feature = "stdarch_loongarch", issue = "117427")]2953#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2954pub unsafe fn lasx_xvavgr_bu(a: v32u8, b: v32u8) -> v32u8 {2954pub fn lasx_xvavgr_bu(a: v32u8, b: v32u8) -> v32u8 {
2955 __lasx_xvavgr_bu(a, b)2955 unsafe { __lasx_xvavgr_bu(a, b) }
2956}2956}
29572957
2958#[inline]2958#[inline]
2959#[target_feature(enable = "lasx")]2959#[target_feature(enable = "lasx")]
2960#[unstable(feature = "stdarch_loongarch", issue = "117427")]2960#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2961pub unsafe fn lasx_xvavgr_hu(a: v16u16, b: v16u16) -> v16u16 {2961pub fn lasx_xvavgr_hu(a: v16u16, b: v16u16) -> v16u16 {
2962 __lasx_xvavgr_hu(a, b)2962 unsafe { __lasx_xvavgr_hu(a, b) }
2963}2963}
29642964
2965#[inline]2965#[inline]
2966#[target_feature(enable = "lasx")]2966#[target_feature(enable = "lasx")]
2967#[unstable(feature = "stdarch_loongarch", issue = "117427")]2967#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2968pub unsafe fn lasx_xvavgr_wu(a: v8u32, b: v8u32) -> v8u32 {2968pub fn lasx_xvavgr_wu(a: v8u32, b: v8u32) -> v8u32 {
2969 __lasx_xvavgr_wu(a, b)2969 unsafe { __lasx_xvavgr_wu(a, b) }
2970}2970}
29712971
2972#[inline]2972#[inline]
2973#[target_feature(enable = "lasx")]2973#[target_feature(enable = "lasx")]
2974#[unstable(feature = "stdarch_loongarch", issue = "117427")]2974#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2975pub unsafe fn lasx_xvavgr_du(a: v4u64, b: v4u64) -> v4u64 {2975pub fn lasx_xvavgr_du(a: v4u64, b: v4u64) -> v4u64 {
2976 __lasx_xvavgr_du(a, b)2976 unsafe { __lasx_xvavgr_du(a, b) }
2977}2977}
29782978
2979#[inline]2979#[inline]
2980#[target_feature(enable = "lasx")]2980#[target_feature(enable = "lasx")]
2981#[unstable(feature = "stdarch_loongarch", issue = "117427")]2981#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2982pub unsafe fn lasx_xvssub_b(a: v32i8, b: v32i8) -> v32i8 {2982pub fn lasx_xvssub_b(a: v32i8, b: v32i8) -> v32i8 {
2983 __lasx_xvssub_b(a, b)2983 unsafe { __lasx_xvssub_b(a, b) }
2984}2984}
29852985
2986#[inline]2986#[inline]
2987#[target_feature(enable = "lasx")]2987#[target_feature(enable = "lasx")]
2988#[unstable(feature = "stdarch_loongarch", issue = "117427")]2988#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2989pub unsafe fn lasx_xvssub_h(a: v16i16, b: v16i16) -> v16i16 {2989pub fn lasx_xvssub_h(a: v16i16, b: v16i16) -> v16i16 {
2990 __lasx_xvssub_h(a, b)2990 unsafe { __lasx_xvssub_h(a, b) }
2991}2991}
29922992
2993#[inline]2993#[inline]
2994#[target_feature(enable = "lasx")]2994#[target_feature(enable = "lasx")]
2995#[unstable(feature = "stdarch_loongarch", issue = "117427")]2995#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2996pub unsafe fn lasx_xvssub_w(a: v8i32, b: v8i32) -> v8i32 {2996pub fn lasx_xvssub_w(a: v8i32, b: v8i32) -> v8i32 {
2997 __lasx_xvssub_w(a, b)2997 unsafe { __lasx_xvssub_w(a, b) }
2998}2998}
29992999
3000#[inline]3000#[inline]
3001#[target_feature(enable = "lasx")]3001#[target_feature(enable = "lasx")]
3002#[unstable(feature = "stdarch_loongarch", issue = "117427")]3002#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3003pub unsafe fn lasx_xvssub_d(a: v4i64, b: v4i64) -> v4i64 {3003pub fn lasx_xvssub_d(a: v4i64, b: v4i64) -> v4i64 {
3004 __lasx_xvssub_d(a, b)3004 unsafe { __lasx_xvssub_d(a, b) }
3005}3005}
30063006
3007#[inline]3007#[inline]
3008#[target_feature(enable = "lasx")]3008#[target_feature(enable = "lasx")]
3009#[unstable(feature = "stdarch_loongarch", issue = "117427")]3009#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3010pub unsafe fn lasx_xvssub_bu(a: v32u8, b: v32u8) -> v32u8 {3010pub fn lasx_xvssub_bu(a: v32u8, b: v32u8) -> v32u8 {
3011 __lasx_xvssub_bu(a, b)3011 unsafe { __lasx_xvssub_bu(a, b) }
3012}3012}
30133013
3014#[inline]3014#[inline]
3015#[target_feature(enable = "lasx")]3015#[target_feature(enable = "lasx")]
3016#[unstable(feature = "stdarch_loongarch", issue = "117427")]3016#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3017pub unsafe fn lasx_xvssub_hu(a: v16u16, b: v16u16) -> v16u16 {3017pub fn lasx_xvssub_hu(a: v16u16, b: v16u16) -> v16u16 {
3018 __lasx_xvssub_hu(a, b)3018 unsafe { __lasx_xvssub_hu(a, b) }
3019}3019}
30203020
3021#[inline]3021#[inline]
3022#[target_feature(enable = "lasx")]3022#[target_feature(enable = "lasx")]
3023#[unstable(feature = "stdarch_loongarch", issue = "117427")]3023#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3024pub unsafe fn lasx_xvssub_wu(a: v8u32, b: v8u32) -> v8u32 {3024pub fn lasx_xvssub_wu(a: v8u32, b: v8u32) -> v8u32 {
3025 __lasx_xvssub_wu(a, b)3025 unsafe { __lasx_xvssub_wu(a, b) }
3026}3026}
30273027
3028#[inline]3028#[inline]
3029#[target_feature(enable = "lasx")]3029#[target_feature(enable = "lasx")]
3030#[unstable(feature = "stdarch_loongarch", issue = "117427")]3030#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3031pub unsafe fn lasx_xvssub_du(a: v4u64, b: v4u64) -> v4u64 {3031pub fn lasx_xvssub_du(a: v4u64, b: v4u64) -> v4u64 {
3032 __lasx_xvssub_du(a, b)3032 unsafe { __lasx_xvssub_du(a, b) }
3033}3033}
30343034
3035#[inline]3035#[inline]
3036#[target_feature(enable = "lasx")]3036#[target_feature(enable = "lasx")]
3037#[unstable(feature = "stdarch_loongarch", issue = "117427")]3037#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3038pub unsafe fn lasx_xvabsd_b(a: v32i8, b: v32i8) -> v32i8 {3038pub fn lasx_xvabsd_b(a: v32i8, b: v32i8) -> v32i8 {
3039 __lasx_xvabsd_b(a, b)3039 unsafe { __lasx_xvabsd_b(a, b) }
3040}3040}
30413041
3042#[inline]3042#[inline]
3043#[target_feature(enable = "lasx")]3043#[target_feature(enable = "lasx")]
3044#[unstable(feature = "stdarch_loongarch", issue = "117427")]3044#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3045pub unsafe fn lasx_xvabsd_h(a: v16i16, b: v16i16) -> v16i16 {3045pub fn lasx_xvabsd_h(a: v16i16, b: v16i16) -> v16i16 {
3046 __lasx_xvabsd_h(a, b)3046 unsafe { __lasx_xvabsd_h(a, b) }
3047}3047}
30483048
3049#[inline]3049#[inline]
3050#[target_feature(enable = "lasx")]3050#[target_feature(enable = "lasx")]
3051#[unstable(feature = "stdarch_loongarch", issue = "117427")]3051#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3052pub unsafe fn lasx_xvabsd_w(a: v8i32, b: v8i32) -> v8i32 {3052pub fn lasx_xvabsd_w(a: v8i32, b: v8i32) -> v8i32 {
3053 __lasx_xvabsd_w(a, b)3053 unsafe { __lasx_xvabsd_w(a, b) }
3054}3054}
30553055
3056#[inline]3056#[inline]
3057#[target_feature(enable = "lasx")]3057#[target_feature(enable = "lasx")]
3058#[unstable(feature = "stdarch_loongarch", issue = "117427")]3058#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3059pub unsafe fn lasx_xvabsd_d(a: v4i64, b: v4i64) -> v4i64 {3059pub fn lasx_xvabsd_d(a: v4i64, b: v4i64) -> v4i64 {
3060 __lasx_xvabsd_d(a, b)3060 unsafe { __lasx_xvabsd_d(a, b) }
3061}3061}
30623062
3063#[inline]3063#[inline]
3064#[target_feature(enable = "lasx")]3064#[target_feature(enable = "lasx")]
3065#[unstable(feature = "stdarch_loongarch", issue = "117427")]3065#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3066pub unsafe fn lasx_xvabsd_bu(a: v32u8, b: v32u8) -> v32u8 {3066pub fn lasx_xvabsd_bu(a: v32u8, b: v32u8) -> v32u8 {
3067 __lasx_xvabsd_bu(a, b)3067 unsafe { __lasx_xvabsd_bu(a, b) }
3068}3068}
30693069
3070#[inline]3070#[inline]
3071#[target_feature(enable = "lasx")]3071#[target_feature(enable = "lasx")]
3072#[unstable(feature = "stdarch_loongarch", issue = "117427")]3072#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3073pub unsafe fn lasx_xvabsd_hu(a: v16u16, b: v16u16) -> v16u16 {3073pub fn lasx_xvabsd_hu(a: v16u16, b: v16u16) -> v16u16 {
3074 __lasx_xvabsd_hu(a, b)3074 unsafe { __lasx_xvabsd_hu(a, b) }
3075}3075}
30763076
3077#[inline]3077#[inline]
3078#[target_feature(enable = "lasx")]3078#[target_feature(enable = "lasx")]
3079#[unstable(feature = "stdarch_loongarch", issue = "117427")]3079#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3080pub unsafe fn lasx_xvabsd_wu(a: v8u32, b: v8u32) -> v8u32 {3080pub fn lasx_xvabsd_wu(a: v8u32, b: v8u32) -> v8u32 {
3081 __lasx_xvabsd_wu(a, b)3081 unsafe { __lasx_xvabsd_wu(a, b) }
3082}3082}
30833083
3084#[inline]3084#[inline]
3085#[target_feature(enable = "lasx")]3085#[target_feature(enable = "lasx")]
3086#[unstable(feature = "stdarch_loongarch", issue = "117427")]3086#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3087pub unsafe fn lasx_xvabsd_du(a: v4u64, b: v4u64) -> v4u64 {3087pub fn lasx_xvabsd_du(a: v4u64, b: v4u64) -> v4u64 {
3088 __lasx_xvabsd_du(a, b)3088 unsafe { __lasx_xvabsd_du(a, b) }
3089}3089}
30903090
3091#[inline]3091#[inline]
3092#[target_feature(enable = "lasx")]3092#[target_feature(enable = "lasx")]
3093#[unstable(feature = "stdarch_loongarch", issue = "117427")]3093#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3094pub unsafe fn lasx_xvmul_b(a: v32i8, b: v32i8) -> v32i8 {3094pub fn lasx_xvmul_b(a: v32i8, b: v32i8) -> v32i8 {
3095 __lasx_xvmul_b(a, b)3095 unsafe { __lasx_xvmul_b(a, b) }
3096}3096}
30973097
3098#[inline]3098#[inline]
3099#[target_feature(enable = "lasx")]3099#[target_feature(enable = "lasx")]
3100#[unstable(feature = "stdarch_loongarch", issue = "117427")]3100#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3101pub unsafe fn lasx_xvmul_h(a: v16i16, b: v16i16) -> v16i16 {3101pub fn lasx_xvmul_h(a: v16i16, b: v16i16) -> v16i16 {
3102 __lasx_xvmul_h(a, b)3102 unsafe { __lasx_xvmul_h(a, b) }
3103}3103}
31043104
3105#[inline]3105#[inline]
3106#[target_feature(enable = "lasx")]3106#[target_feature(enable = "lasx")]
3107#[unstable(feature = "stdarch_loongarch", issue = "117427")]3107#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3108pub unsafe fn lasx_xvmul_w(a: v8i32, b: v8i32) -> v8i32 {3108pub fn lasx_xvmul_w(a: v8i32, b: v8i32) -> v8i32 {
3109 __lasx_xvmul_w(a, b)3109 unsafe { __lasx_xvmul_w(a, b) }
3110}3110}
31113111
3112#[inline]3112#[inline]
3113#[target_feature(enable = "lasx")]3113#[target_feature(enable = "lasx")]
3114#[unstable(feature = "stdarch_loongarch", issue = "117427")]3114#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3115pub unsafe fn lasx_xvmul_d(a: v4i64, b: v4i64) -> v4i64 {3115pub fn lasx_xvmul_d(a: v4i64, b: v4i64) -> v4i64 {
3116 __lasx_xvmul_d(a, b)3116 unsafe { __lasx_xvmul_d(a, b) }
3117}3117}
31183118
3119#[inline]3119#[inline]
3120#[target_feature(enable = "lasx")]3120#[target_feature(enable = "lasx")]
3121#[unstable(feature = "stdarch_loongarch", issue = "117427")]3121#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3122pub unsafe fn lasx_xvmadd_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {3122pub fn lasx_xvmadd_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
3123 __lasx_xvmadd_b(a, b, c)3123 unsafe { __lasx_xvmadd_b(a, b, c) }
3124}3124}
31253125
3126#[inline]3126#[inline]
3127#[target_feature(enable = "lasx")]3127#[target_feature(enable = "lasx")]
3128#[unstable(feature = "stdarch_loongarch", issue = "117427")]3128#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3129pub unsafe fn lasx_xvmadd_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {3129pub fn lasx_xvmadd_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
3130 __lasx_xvmadd_h(a, b, c)3130 unsafe { __lasx_xvmadd_h(a, b, c) }
3131}3131}
31323132
3133#[inline]3133#[inline]
3134#[target_feature(enable = "lasx")]3134#[target_feature(enable = "lasx")]
3135#[unstable(feature = "stdarch_loongarch", issue = "117427")]3135#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3136pub unsafe fn lasx_xvmadd_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {3136pub fn lasx_xvmadd_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
3137 __lasx_xvmadd_w(a, b, c)3137 unsafe { __lasx_xvmadd_w(a, b, c) }
3138}3138}
31393139
3140#[inline]3140#[inline]
3141#[target_feature(enable = "lasx")]3141#[target_feature(enable = "lasx")]
3142#[unstable(feature = "stdarch_loongarch", issue = "117427")]3142#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3143pub unsafe fn lasx_xvmadd_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {3143pub fn lasx_xvmadd_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
3144 __lasx_xvmadd_d(a, b, c)3144 unsafe { __lasx_xvmadd_d(a, b, c) }
3145}3145}
31463146
3147#[inline]3147#[inline]
3148#[target_feature(enable = "lasx")]3148#[target_feature(enable = "lasx")]
3149#[unstable(feature = "stdarch_loongarch", issue = "117427")]3149#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3150pub unsafe fn lasx_xvmsub_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {3150pub fn lasx_xvmsub_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
3151 __lasx_xvmsub_b(a, b, c)3151 unsafe { __lasx_xvmsub_b(a, b, c) }
3152}3152}
31533153
3154#[inline]3154#[inline]
3155#[target_feature(enable = "lasx")]3155#[target_feature(enable = "lasx")]
3156#[unstable(feature = "stdarch_loongarch", issue = "117427")]3156#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3157pub unsafe fn lasx_xvmsub_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {3157pub fn lasx_xvmsub_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
3158 __lasx_xvmsub_h(a, b, c)3158 unsafe { __lasx_xvmsub_h(a, b, c) }
3159}3159}
31603160
3161#[inline]3161#[inline]
3162#[target_feature(enable = "lasx")]3162#[target_feature(enable = "lasx")]
3163#[unstable(feature = "stdarch_loongarch", issue = "117427")]3163#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3164pub unsafe fn lasx_xvmsub_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {3164pub fn lasx_xvmsub_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
3165 __lasx_xvmsub_w(a, b, c)3165 unsafe { __lasx_xvmsub_w(a, b, c) }
3166}3166}
31673167
3168#[inline]3168#[inline]
3169#[target_feature(enable = "lasx")]3169#[target_feature(enable = "lasx")]
3170#[unstable(feature = "stdarch_loongarch", issue = "117427")]3170#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3171pub unsafe fn lasx_xvmsub_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {3171pub fn lasx_xvmsub_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
3172 __lasx_xvmsub_d(a, b, c)3172 unsafe { __lasx_xvmsub_d(a, b, c) }
3173}3173}
31743174
3175#[inline]3175#[inline]
3176#[target_feature(enable = "lasx")]3176#[target_feature(enable = "lasx")]
3177#[unstable(feature = "stdarch_loongarch", issue = "117427")]3177#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3178pub unsafe fn lasx_xvdiv_b(a: v32i8, b: v32i8) -> v32i8 {3178pub fn lasx_xvdiv_b(a: v32i8, b: v32i8) -> v32i8 {
3179 __lasx_xvdiv_b(a, b)3179 unsafe { __lasx_xvdiv_b(a, b) }
3180}3180}
31813181
3182#[inline]3182#[inline]
3183#[target_feature(enable = "lasx")]3183#[target_feature(enable = "lasx")]
3184#[unstable(feature = "stdarch_loongarch", issue = "117427")]3184#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3185pub unsafe fn lasx_xvdiv_h(a: v16i16, b: v16i16) -> v16i16 {3185pub fn lasx_xvdiv_h(a: v16i16, b: v16i16) -> v16i16 {
3186 __lasx_xvdiv_h(a, b)3186 unsafe { __lasx_xvdiv_h(a, b) }
3187}3187}
31883188
3189#[inline]3189#[inline]
3190#[target_feature(enable = "lasx")]3190#[target_feature(enable = "lasx")]
3191#[unstable(feature = "stdarch_loongarch", issue = "117427")]3191#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3192pub unsafe fn lasx_xvdiv_w(a: v8i32, b: v8i32) -> v8i32 {3192pub fn lasx_xvdiv_w(a: v8i32, b: v8i32) -> v8i32 {
3193 __lasx_xvdiv_w(a, b)3193 unsafe { __lasx_xvdiv_w(a, b) }
3194}3194}
31953195
3196#[inline]3196#[inline]
3197#[target_feature(enable = "lasx")]3197#[target_feature(enable = "lasx")]
3198#[unstable(feature = "stdarch_loongarch", issue = "117427")]3198#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3199pub unsafe fn lasx_xvdiv_d(a: v4i64, b: v4i64) -> v4i64 {3199pub fn lasx_xvdiv_d(a: v4i64, b: v4i64) -> v4i64 {
3200 __lasx_xvdiv_d(a, b)3200 unsafe { __lasx_xvdiv_d(a, b) }
3201}3201}
32023202
3203#[inline]3203#[inline]
3204#[target_feature(enable = "lasx")]3204#[target_feature(enable = "lasx")]
3205#[unstable(feature = "stdarch_loongarch", issue = "117427")]3205#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3206pub unsafe fn lasx_xvdiv_bu(a: v32u8, b: v32u8) -> v32u8 {3206pub fn lasx_xvdiv_bu(a: v32u8, b: v32u8) -> v32u8 {
3207 __lasx_xvdiv_bu(a, b)3207 unsafe { __lasx_xvdiv_bu(a, b) }
3208}3208}
32093209
3210#[inline]3210#[inline]
3211#[target_feature(enable = "lasx")]3211#[target_feature(enable = "lasx")]
3212#[unstable(feature = "stdarch_loongarch", issue = "117427")]3212#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3213pub unsafe fn lasx_xvdiv_hu(a: v16u16, b: v16u16) -> v16u16 {3213pub fn lasx_xvdiv_hu(a: v16u16, b: v16u16) -> v16u16 {
3214 __lasx_xvdiv_hu(a, b)3214 unsafe { __lasx_xvdiv_hu(a, b) }
3215}3215}
32163216
3217#[inline]3217#[inline]
3218#[target_feature(enable = "lasx")]3218#[target_feature(enable = "lasx")]
3219#[unstable(feature = "stdarch_loongarch", issue = "117427")]3219#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3220pub unsafe fn lasx_xvdiv_wu(a: v8u32, b: v8u32) -> v8u32 {3220pub fn lasx_xvdiv_wu(a: v8u32, b: v8u32) -> v8u32 {
3221 __lasx_xvdiv_wu(a, b)3221 unsafe { __lasx_xvdiv_wu(a, b) }
3222}3222}
32233223
3224#[inline]3224#[inline]
3225#[target_feature(enable = "lasx")]3225#[target_feature(enable = "lasx")]
3226#[unstable(feature = "stdarch_loongarch", issue = "117427")]3226#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3227pub unsafe fn lasx_xvdiv_du(a: v4u64, b: v4u64) -> v4u64 {3227pub fn lasx_xvdiv_du(a: v4u64, b: v4u64) -> v4u64 {
3228 __lasx_xvdiv_du(a, b)3228 unsafe { __lasx_xvdiv_du(a, b) }
3229}3229}
32303230
3231#[inline]3231#[inline]
3232#[target_feature(enable = "lasx")]3232#[target_feature(enable = "lasx")]
3233#[unstable(feature = "stdarch_loongarch", issue = "117427")]3233#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3234pub unsafe fn lasx_xvhaddw_h_b(a: v32i8, b: v32i8) -> v16i16 {3234pub fn lasx_xvhaddw_h_b(a: v32i8, b: v32i8) -> v16i16 {
3235 __lasx_xvhaddw_h_b(a, b)3235 unsafe { __lasx_xvhaddw_h_b(a, b) }
3236}3236}
32373237
3238#[inline]3238#[inline]
3239#[target_feature(enable = "lasx")]3239#[target_feature(enable = "lasx")]
3240#[unstable(feature = "stdarch_loongarch", issue = "117427")]3240#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3241pub unsafe fn lasx_xvhaddw_w_h(a: v16i16, b: v16i16) -> v8i32 {3241pub fn lasx_xvhaddw_w_h(a: v16i16, b: v16i16) -> v8i32 {
3242 __lasx_xvhaddw_w_h(a, b)3242 unsafe { __lasx_xvhaddw_w_h(a, b) }
3243}3243}
32443244
3245#[inline]3245#[inline]
3246#[target_feature(enable = "lasx")]3246#[target_feature(enable = "lasx")]
3247#[unstable(feature = "stdarch_loongarch", issue = "117427")]3247#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3248pub unsafe fn lasx_xvhaddw_d_w(a: v8i32, b: v8i32) -> v4i64 {3248pub fn lasx_xvhaddw_d_w(a: v8i32, b: v8i32) -> v4i64 {
3249 __lasx_xvhaddw_d_w(a, b)3249 unsafe { __lasx_xvhaddw_d_w(a, b) }
3250}3250}
32513251
3252#[inline]3252#[inline]
3253#[target_feature(enable = "lasx")]3253#[target_feature(enable = "lasx")]
3254#[unstable(feature = "stdarch_loongarch", issue = "117427")]3254#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3255pub unsafe fn lasx_xvhaddw_hu_bu(a: v32u8, b: v32u8) -> v16u16 {3255pub fn lasx_xvhaddw_hu_bu(a: v32u8, b: v32u8) -> v16u16 {
3256 __lasx_xvhaddw_hu_bu(a, b)3256 unsafe { __lasx_xvhaddw_hu_bu(a, b) }
3257}3257}
32583258
3259#[inline]3259#[inline]
3260#[target_feature(enable = "lasx")]3260#[target_feature(enable = "lasx")]
3261#[unstable(feature = "stdarch_loongarch", issue = "117427")]3261#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3262pub unsafe fn lasx_xvhaddw_wu_hu(a: v16u16, b: v16u16) -> v8u32 {3262pub fn lasx_xvhaddw_wu_hu(a: v16u16, b: v16u16) -> v8u32 {
3263 __lasx_xvhaddw_wu_hu(a, b)3263 unsafe { __lasx_xvhaddw_wu_hu(a, b) }
3264}3264}
32653265
3266#[inline]3266#[inline]
3267#[target_feature(enable = "lasx")]3267#[target_feature(enable = "lasx")]
3268#[unstable(feature = "stdarch_loongarch", issue = "117427")]3268#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3269pub unsafe fn lasx_xvhaddw_du_wu(a: v8u32, b: v8u32) -> v4u64 {3269pub fn lasx_xvhaddw_du_wu(a: v8u32, b: v8u32) -> v4u64 {
3270 __lasx_xvhaddw_du_wu(a, b)3270 unsafe { __lasx_xvhaddw_du_wu(a, b) }
3271}3271}
32723272
3273#[inline]3273#[inline]
3274#[target_feature(enable = "lasx")]3274#[target_feature(enable = "lasx")]
3275#[unstable(feature = "stdarch_loongarch", issue = "117427")]3275#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3276pub unsafe fn lasx_xvhsubw_h_b(a: v32i8, b: v32i8) -> v16i16 {3276pub fn lasx_xvhsubw_h_b(a: v32i8, b: v32i8) -> v16i16 {
3277 __lasx_xvhsubw_h_b(a, b)3277 unsafe { __lasx_xvhsubw_h_b(a, b) }
3278}3278}
32793279
3280#[inline]3280#[inline]
3281#[target_feature(enable = "lasx")]3281#[target_feature(enable = "lasx")]
3282#[unstable(feature = "stdarch_loongarch", issue = "117427")]3282#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3283pub unsafe fn lasx_xvhsubw_w_h(a: v16i16, b: v16i16) -> v8i32 {3283pub fn lasx_xvhsubw_w_h(a: v16i16, b: v16i16) -> v8i32 {
3284 __lasx_xvhsubw_w_h(a, b)3284 unsafe { __lasx_xvhsubw_w_h(a, b) }
3285}3285}
32863286
3287#[inline]3287#[inline]
3288#[target_feature(enable = "lasx")]3288#[target_feature(enable = "lasx")]
3289#[unstable(feature = "stdarch_loongarch", issue = "117427")]3289#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3290pub unsafe fn lasx_xvhsubw_d_w(a: v8i32, b: v8i32) -> v4i64 {3290pub fn lasx_xvhsubw_d_w(a: v8i32, b: v8i32) -> v4i64 {
3291 __lasx_xvhsubw_d_w(a, b)3291 unsafe { __lasx_xvhsubw_d_w(a, b) }
3292}3292}
32933293
3294#[inline]3294#[inline]
3295#[target_feature(enable = "lasx")]3295#[target_feature(enable = "lasx")]
3296#[unstable(feature = "stdarch_loongarch", issue = "117427")]3296#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3297pub unsafe fn lasx_xvhsubw_hu_bu(a: v32u8, b: v32u8) -> v16i16 {3297pub fn lasx_xvhsubw_hu_bu(a: v32u8, b: v32u8) -> v16i16 {
3298 __lasx_xvhsubw_hu_bu(a, b)3298 unsafe { __lasx_xvhsubw_hu_bu(a, b) }
3299}3299}
33003300
3301#[inline]3301#[inline]
3302#[target_feature(enable = "lasx")]3302#[target_feature(enable = "lasx")]
3303#[unstable(feature = "stdarch_loongarch", issue = "117427")]3303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3304pub unsafe fn lasx_xvhsubw_wu_hu(a: v16u16, b: v16u16) -> v8i32 {3304pub fn lasx_xvhsubw_wu_hu(a: v16u16, b: v16u16) -> v8i32 {
3305 __lasx_xvhsubw_wu_hu(a, b)3305 unsafe { __lasx_xvhsubw_wu_hu(a, b) }
3306}3306}
33073307
3308#[inline]3308#[inline]
3309#[target_feature(enable = "lasx")]3309#[target_feature(enable = "lasx")]
3310#[unstable(feature = "stdarch_loongarch", issue = "117427")]3310#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3311pub unsafe fn lasx_xvhsubw_du_wu(a: v8u32, b: v8u32) -> v4i64 {3311pub fn lasx_xvhsubw_du_wu(a: v8u32, b: v8u32) -> v4i64 {
3312 __lasx_xvhsubw_du_wu(a, b)3312 unsafe { __lasx_xvhsubw_du_wu(a, b) }
3313}3313}
33143314
3315#[inline]3315#[inline]
3316#[target_feature(enable = "lasx")]3316#[target_feature(enable = "lasx")]
3317#[unstable(feature = "stdarch_loongarch", issue = "117427")]3317#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3318pub unsafe fn lasx_xvmod_b(a: v32i8, b: v32i8) -> v32i8 {3318pub fn lasx_xvmod_b(a: v32i8, b: v32i8) -> v32i8 {
3319 __lasx_xvmod_b(a, b)3319 unsafe { __lasx_xvmod_b(a, b) }
3320}3320}
33213321
3322#[inline]3322#[inline]
3323#[target_feature(enable = "lasx")]3323#[target_feature(enable = "lasx")]
3324#[unstable(feature = "stdarch_loongarch", issue = "117427")]3324#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3325pub unsafe fn lasx_xvmod_h(a: v16i16, b: v16i16) -> v16i16 {3325pub fn lasx_xvmod_h(a: v16i16, b: v16i16) -> v16i16 {
3326 __lasx_xvmod_h(a, b)3326 unsafe { __lasx_xvmod_h(a, b) }
3327}3327}
33283328
3329#[inline]3329#[inline]
3330#[target_feature(enable = "lasx")]3330#[target_feature(enable = "lasx")]
3331#[unstable(feature = "stdarch_loongarch", issue = "117427")]3331#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3332pub unsafe fn lasx_xvmod_w(a: v8i32, b: v8i32) -> v8i32 {3332pub fn lasx_xvmod_w(a: v8i32, b: v8i32) -> v8i32 {
3333 __lasx_xvmod_w(a, b)3333 unsafe { __lasx_xvmod_w(a, b) }
3334}3334}
33353335
3336#[inline]3336#[inline]
3337#[target_feature(enable = "lasx")]3337#[target_feature(enable = "lasx")]
3338#[unstable(feature = "stdarch_loongarch", issue = "117427")]3338#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3339pub unsafe fn lasx_xvmod_d(a: v4i64, b: v4i64) -> v4i64 {3339pub fn lasx_xvmod_d(a: v4i64, b: v4i64) -> v4i64 {
3340 __lasx_xvmod_d(a, b)3340 unsafe { __lasx_xvmod_d(a, b) }
3341}3341}
33423342
3343#[inline]3343#[inline]
3344#[target_feature(enable = "lasx")]3344#[target_feature(enable = "lasx")]
3345#[unstable(feature = "stdarch_loongarch", issue = "117427")]3345#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3346pub unsafe fn lasx_xvmod_bu(a: v32u8, b: v32u8) -> v32u8 {3346pub fn lasx_xvmod_bu(a: v32u8, b: v32u8) -> v32u8 {
3347 __lasx_xvmod_bu(a, b)3347 unsafe { __lasx_xvmod_bu(a, b) }
3348}3348}
33493349
3350#[inline]3350#[inline]
3351#[target_feature(enable = "lasx")]3351#[target_feature(enable = "lasx")]
3352#[unstable(feature = "stdarch_loongarch", issue = "117427")]3352#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3353pub unsafe fn lasx_xvmod_hu(a: v16u16, b: v16u16) -> v16u16 {3353pub fn lasx_xvmod_hu(a: v16u16, b: v16u16) -> v16u16 {
3354 __lasx_xvmod_hu(a, b)3354 unsafe { __lasx_xvmod_hu(a, b) }
3355}3355}
33563356
3357#[inline]3357#[inline]
3358#[target_feature(enable = "lasx")]3358#[target_feature(enable = "lasx")]
3359#[unstable(feature = "stdarch_loongarch", issue = "117427")]3359#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3360pub unsafe fn lasx_xvmod_wu(a: v8u32, b: v8u32) -> v8u32 {3360pub fn lasx_xvmod_wu(a: v8u32, b: v8u32) -> v8u32 {
3361 __lasx_xvmod_wu(a, b)3361 unsafe { __lasx_xvmod_wu(a, b) }
3362}3362}
33633363
3364#[inline]3364#[inline]
3365#[target_feature(enable = "lasx")]3365#[target_feature(enable = "lasx")]
3366#[unstable(feature = "stdarch_loongarch", issue = "117427")]3366#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3367pub unsafe fn lasx_xvmod_du(a: v4u64, b: v4u64) -> v4u64 {3367pub fn lasx_xvmod_du(a: v4u64, b: v4u64) -> v4u64 {
3368 __lasx_xvmod_du(a, b)3368 unsafe { __lasx_xvmod_du(a, b) }
3369}3369}
33703370
3371#[inline]3371#[inline]
3372#[target_feature(enable = "lasx")]3372#[target_feature(enable = "lasx")]
3373#[rustc_legacy_const_generics(1)]3373#[rustc_legacy_const_generics(1)]
3374#[unstable(feature = "stdarch_loongarch", issue = "117427")]3374#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3375pub unsafe fn lasx_xvrepl128vei_b<const IMM4: u32>(a: v32i8) -> v32i8 {3375pub fn lasx_xvrepl128vei_b<const IMM4: u32>(a: v32i8) -> v32i8 {
3376 static_assert_uimm_bits!(IMM4, 4);3376 static_assert_uimm_bits!(IMM4, 4);
3377 __lasx_xvrepl128vei_b(a, IMM4)3377 unsafe { __lasx_xvrepl128vei_b(a, IMM4) }
3378}3378}
33793379
3380#[inline]3380#[inline]
3381#[target_feature(enable = "lasx")]3381#[target_feature(enable = "lasx")]
3382#[rustc_legacy_const_generics(1)]3382#[rustc_legacy_const_generics(1)]
3383#[unstable(feature = "stdarch_loongarch", issue = "117427")]3383#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3384pub unsafe fn lasx_xvrepl128vei_h<const IMM3: u32>(a: v16i16) -> v16i16 {3384pub fn lasx_xvrepl128vei_h<const IMM3: u32>(a: v16i16) -> v16i16 {
3385 static_assert_uimm_bits!(IMM3, 3);3385 static_assert_uimm_bits!(IMM3, 3);
3386 __lasx_xvrepl128vei_h(a, IMM3)3386 unsafe { __lasx_xvrepl128vei_h(a, IMM3) }
3387}3387}
33883388
3389#[inline]3389#[inline]
3390#[target_feature(enable = "lasx")]3390#[target_feature(enable = "lasx")]
3391#[rustc_legacy_const_generics(1)]3391#[rustc_legacy_const_generics(1)]
3392#[unstable(feature = "stdarch_loongarch", issue = "117427")]3392#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3393pub unsafe fn lasx_xvrepl128vei_w<const IMM2: u32>(a: v8i32) -> v8i32 {3393pub fn lasx_xvrepl128vei_w<const IMM2: u32>(a: v8i32) -> v8i32 {
3394 static_assert_uimm_bits!(IMM2, 2);3394 static_assert_uimm_bits!(IMM2, 2);
3395 __lasx_xvrepl128vei_w(a, IMM2)3395 unsafe { __lasx_xvrepl128vei_w(a, IMM2) }
3396}3396}
33973397
3398#[inline]3398#[inline]
3399#[target_feature(enable = "lasx")]3399#[target_feature(enable = "lasx")]
3400#[rustc_legacy_const_generics(1)]3400#[rustc_legacy_const_generics(1)]
3401#[unstable(feature = "stdarch_loongarch", issue = "117427")]3401#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3402pub unsafe fn lasx_xvrepl128vei_d<const IMM1: u32>(a: v4i64) -> v4i64 {3402pub fn lasx_xvrepl128vei_d<const IMM1: u32>(a: v4i64) -> v4i64 {
3403 static_assert_uimm_bits!(IMM1, 1);3403 static_assert_uimm_bits!(IMM1, 1);
3404 __lasx_xvrepl128vei_d(a, IMM1)3404 unsafe { __lasx_xvrepl128vei_d(a, IMM1) }
3405}3405}
34063406
3407#[inline]3407#[inline]
3408#[target_feature(enable = "lasx")]3408#[target_feature(enable = "lasx")]
3409#[unstable(feature = "stdarch_loongarch", issue = "117427")]3409#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3410pub unsafe fn lasx_xvpickev_b(a: v32i8, b: v32i8) -> v32i8 {3410pub fn lasx_xvpickev_b(a: v32i8, b: v32i8) -> v32i8 {
3411 __lasx_xvpickev_b(a, b)3411 unsafe { __lasx_xvpickev_b(a, b) }
3412}3412}
34133413
3414#[inline]3414#[inline]
3415#[target_feature(enable = "lasx")]3415#[target_feature(enable = "lasx")]
3416#[unstable(feature = "stdarch_loongarch", issue = "117427")]3416#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3417pub unsafe fn lasx_xvpickev_h(a: v16i16, b: v16i16) -> v16i16 {3417pub fn lasx_xvpickev_h(a: v16i16, b: v16i16) -> v16i16 {
3418 __lasx_xvpickev_h(a, b)3418 unsafe { __lasx_xvpickev_h(a, b) }
3419}3419}
34203420
3421#[inline]3421#[inline]
3422#[target_feature(enable = "lasx")]3422#[target_feature(enable = "lasx")]
3423#[unstable(feature = "stdarch_loongarch", issue = "117427")]3423#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3424pub unsafe fn lasx_xvpickev_w(a: v8i32, b: v8i32) -> v8i32 {3424pub fn lasx_xvpickev_w(a: v8i32, b: v8i32) -> v8i32 {
3425 __lasx_xvpickev_w(a, b)3425 unsafe { __lasx_xvpickev_w(a, b) }
3426}3426}
34273427
3428#[inline]3428#[inline]
3429#[target_feature(enable = "lasx")]3429#[target_feature(enable = "lasx")]
3430#[unstable(feature = "stdarch_loongarch", issue = "117427")]3430#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3431pub unsafe fn lasx_xvpickev_d(a: v4i64, b: v4i64) -> v4i64 {3431pub fn lasx_xvpickev_d(a: v4i64, b: v4i64) -> v4i64 {
3432 __lasx_xvpickev_d(a, b)3432 unsafe { __lasx_xvpickev_d(a, b) }
3433}3433}
34343434
3435#[inline]3435#[inline]
3436#[target_feature(enable = "lasx")]3436#[target_feature(enable = "lasx")]
3437#[unstable(feature = "stdarch_loongarch", issue = "117427")]3437#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3438pub unsafe fn lasx_xvpickod_b(a: v32i8, b: v32i8) -> v32i8 {3438pub fn lasx_xvpickod_b(a: v32i8, b: v32i8) -> v32i8 {
3439 __lasx_xvpickod_b(a, b)3439 unsafe { __lasx_xvpickod_b(a, b) }
3440}3440}
34413441
3442#[inline]3442#[inline]
3443#[target_feature(enable = "lasx")]3443#[target_feature(enable = "lasx")]
3444#[unstable(feature = "stdarch_loongarch", issue = "117427")]3444#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3445pub unsafe fn lasx_xvpickod_h(a: v16i16, b: v16i16) -> v16i16 {3445pub fn lasx_xvpickod_h(a: v16i16, b: v16i16) -> v16i16 {
3446 __lasx_xvpickod_h(a, b)3446 unsafe { __lasx_xvpickod_h(a, b) }
3447}3447}
34483448
3449#[inline]3449#[inline]
3450#[target_feature(enable = "lasx")]3450#[target_feature(enable = "lasx")]
3451#[unstable(feature = "stdarch_loongarch", issue = "117427")]3451#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3452pub unsafe fn lasx_xvpickod_w(a: v8i32, b: v8i32) -> v8i32 {3452pub fn lasx_xvpickod_w(a: v8i32, b: v8i32) -> v8i32 {
3453 __lasx_xvpickod_w(a, b)3453 unsafe { __lasx_xvpickod_w(a, b) }
3454}3454}
34553455
3456#[inline]3456#[inline]
3457#[target_feature(enable = "lasx")]3457#[target_feature(enable = "lasx")]
3458#[unstable(feature = "stdarch_loongarch", issue = "117427")]3458#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3459pub unsafe fn lasx_xvpickod_d(a: v4i64, b: v4i64) -> v4i64 {3459pub fn lasx_xvpickod_d(a: v4i64, b: v4i64) -> v4i64 {
3460 __lasx_xvpickod_d(a, b)3460 unsafe { __lasx_xvpickod_d(a, b) }
3461}3461}
34623462
3463#[inline]3463#[inline]
3464#[target_feature(enable = "lasx")]3464#[target_feature(enable = "lasx")]
3465#[unstable(feature = "stdarch_loongarch", issue = "117427")]3465#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3466pub unsafe fn lasx_xvilvh_b(a: v32i8, b: v32i8) -> v32i8 {3466pub fn lasx_xvilvh_b(a: v32i8, b: v32i8) -> v32i8 {
3467 __lasx_xvilvh_b(a, b)3467 unsafe { __lasx_xvilvh_b(a, b) }
3468}3468}
34693469
3470#[inline]3470#[inline]
3471#[target_feature(enable = "lasx")]3471#[target_feature(enable = "lasx")]
3472#[unstable(feature = "stdarch_loongarch", issue = "117427")]3472#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3473pub unsafe fn lasx_xvilvh_h(a: v16i16, b: v16i16) -> v16i16 {3473pub fn lasx_xvilvh_h(a: v16i16, b: v16i16) -> v16i16 {
3474 __lasx_xvilvh_h(a, b)3474 unsafe { __lasx_xvilvh_h(a, b) }
3475}3475}
34763476
3477#[inline]3477#[inline]
3478#[target_feature(enable = "lasx")]3478#[target_feature(enable = "lasx")]
3479#[unstable(feature = "stdarch_loongarch", issue = "117427")]3479#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3480pub unsafe fn lasx_xvilvh_w(a: v8i32, b: v8i32) -> v8i32 {3480pub fn lasx_xvilvh_w(a: v8i32, b: v8i32) -> v8i32 {
3481 __lasx_xvilvh_w(a, b)3481 unsafe { __lasx_xvilvh_w(a, b) }
3482}3482}
34833483
3484#[inline]3484#[inline]
3485#[target_feature(enable = "lasx")]3485#[target_feature(enable = "lasx")]
3486#[unstable(feature = "stdarch_loongarch", issue = "117427")]3486#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3487pub unsafe fn lasx_xvilvh_d(a: v4i64, b: v4i64) -> v4i64 {3487pub fn lasx_xvilvh_d(a: v4i64, b: v4i64) -> v4i64 {
3488 __lasx_xvilvh_d(a, b)3488 unsafe { __lasx_xvilvh_d(a, b) }
3489}3489}
34903490
3491#[inline]3491#[inline]
3492#[target_feature(enable = "lasx")]3492#[target_feature(enable = "lasx")]
3493#[unstable(feature = "stdarch_loongarch", issue = "117427")]3493#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3494pub unsafe fn lasx_xvilvl_b(a: v32i8, b: v32i8) -> v32i8 {3494pub fn lasx_xvilvl_b(a: v32i8, b: v32i8) -> v32i8 {
3495 __lasx_xvilvl_b(a, b)3495 unsafe { __lasx_xvilvl_b(a, b) }
3496}3496}
34973497
3498#[inline]3498#[inline]
3499#[target_feature(enable = "lasx")]3499#[target_feature(enable = "lasx")]
3500#[unstable(feature = "stdarch_loongarch", issue = "117427")]3500#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3501pub unsafe fn lasx_xvilvl_h(a: v16i16, b: v16i16) -> v16i16 {3501pub fn lasx_xvilvl_h(a: v16i16, b: v16i16) -> v16i16 {
3502 __lasx_xvilvl_h(a, b)3502 unsafe { __lasx_xvilvl_h(a, b) }
3503}3503}
35043504
3505#[inline]3505#[inline]
3506#[target_feature(enable = "lasx")]3506#[target_feature(enable = "lasx")]
3507#[unstable(feature = "stdarch_loongarch", issue = "117427")]3507#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3508pub unsafe fn lasx_xvilvl_w(a: v8i32, b: v8i32) -> v8i32 {3508pub fn lasx_xvilvl_w(a: v8i32, b: v8i32) -> v8i32 {
3509 __lasx_xvilvl_w(a, b)3509 unsafe { __lasx_xvilvl_w(a, b) }
3510}3510}
35113511
3512#[inline]3512#[inline]
3513#[target_feature(enable = "lasx")]3513#[target_feature(enable = "lasx")]
3514#[unstable(feature = "stdarch_loongarch", issue = "117427")]3514#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3515pub unsafe fn lasx_xvilvl_d(a: v4i64, b: v4i64) -> v4i64 {3515pub fn lasx_xvilvl_d(a: v4i64, b: v4i64) -> v4i64 {
3516 __lasx_xvilvl_d(a, b)3516 unsafe { __lasx_xvilvl_d(a, b) }
3517}3517}
35183518
3519#[inline]3519#[inline]
3520#[target_feature(enable = "lasx")]3520#[target_feature(enable = "lasx")]
3521#[unstable(feature = "stdarch_loongarch", issue = "117427")]3521#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3522pub unsafe fn lasx_xvpackev_b(a: v32i8, b: v32i8) -> v32i8 {3522pub fn lasx_xvpackev_b(a: v32i8, b: v32i8) -> v32i8 {
3523 __lasx_xvpackev_b(a, b)3523 unsafe { __lasx_xvpackev_b(a, b) }
3524}3524}
35253525
3526#[inline]3526#[inline]
3527#[target_feature(enable = "lasx")]3527#[target_feature(enable = "lasx")]
3528#[unstable(feature = "stdarch_loongarch", issue = "117427")]3528#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3529pub unsafe fn lasx_xvpackev_h(a: v16i16, b: v16i16) -> v16i16 {3529pub fn lasx_xvpackev_h(a: v16i16, b: v16i16) -> v16i16 {
3530 __lasx_xvpackev_h(a, b)3530 unsafe { __lasx_xvpackev_h(a, b) }
3531}3531}
35323532
3533#[inline]3533#[inline]
3534#[target_feature(enable = "lasx")]3534#[target_feature(enable = "lasx")]
3535#[unstable(feature = "stdarch_loongarch", issue = "117427")]3535#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3536pub unsafe fn lasx_xvpackev_w(a: v8i32, b: v8i32) -> v8i32 {3536pub fn lasx_xvpackev_w(a: v8i32, b: v8i32) -> v8i32 {
3537 __lasx_xvpackev_w(a, b)3537 unsafe { __lasx_xvpackev_w(a, b) }
3538}3538}
35393539
3540#[inline]3540#[inline]
3541#[target_feature(enable = "lasx")]3541#[target_feature(enable = "lasx")]
3542#[unstable(feature = "stdarch_loongarch", issue = "117427")]3542#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3543pub unsafe fn lasx_xvpackev_d(a: v4i64, b: v4i64) -> v4i64 {3543pub fn lasx_xvpackev_d(a: v4i64, b: v4i64) -> v4i64 {
3544 __lasx_xvpackev_d(a, b)3544 unsafe { __lasx_xvpackev_d(a, b) }
3545}3545}
35463546
3547#[inline]3547#[inline]
3548#[target_feature(enable = "lasx")]3548#[target_feature(enable = "lasx")]
3549#[unstable(feature = "stdarch_loongarch", issue = "117427")]3549#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3550pub unsafe fn lasx_xvpackod_b(a: v32i8, b: v32i8) -> v32i8 {3550pub fn lasx_xvpackod_b(a: v32i8, b: v32i8) -> v32i8 {
3551 __lasx_xvpackod_b(a, b)3551 unsafe { __lasx_xvpackod_b(a, b) }
3552}3552}
35533553
3554#[inline]3554#[inline]
3555#[target_feature(enable = "lasx")]3555#[target_feature(enable = "lasx")]
3556#[unstable(feature = "stdarch_loongarch", issue = "117427")]3556#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3557pub unsafe fn lasx_xvpackod_h(a: v16i16, b: v16i16) -> v16i16 {3557pub fn lasx_xvpackod_h(a: v16i16, b: v16i16) -> v16i16 {
3558 __lasx_xvpackod_h(a, b)3558 unsafe { __lasx_xvpackod_h(a, b) }
3559}3559}
35603560
3561#[inline]3561#[inline]
3562#[target_feature(enable = "lasx")]3562#[target_feature(enable = "lasx")]
3563#[unstable(feature = "stdarch_loongarch", issue = "117427")]3563#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3564pub unsafe fn lasx_xvpackod_w(a: v8i32, b: v8i32) -> v8i32 {3564pub fn lasx_xvpackod_w(a: v8i32, b: v8i32) -> v8i32 {
3565 __lasx_xvpackod_w(a, b)3565 unsafe { __lasx_xvpackod_w(a, b) }
3566}3566}
35673567
3568#[inline]3568#[inline]
3569#[target_feature(enable = "lasx")]3569#[target_feature(enable = "lasx")]
3570#[unstable(feature = "stdarch_loongarch", issue = "117427")]3570#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3571pub unsafe fn lasx_xvpackod_d(a: v4i64, b: v4i64) -> v4i64 {3571pub fn lasx_xvpackod_d(a: v4i64, b: v4i64) -> v4i64 {
3572 __lasx_xvpackod_d(a, b)3572 unsafe { __lasx_xvpackod_d(a, b) }
3573}3573}
35743574
3575#[inline]3575#[inline]
3576#[target_feature(enable = "lasx")]3576#[target_feature(enable = "lasx")]
3577#[unstable(feature = "stdarch_loongarch", issue = "117427")]3577#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3578pub unsafe fn lasx_xvshuf_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {3578pub fn lasx_xvshuf_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
3579 __lasx_xvshuf_b(a, b, c)3579 unsafe { __lasx_xvshuf_b(a, b, c) }
3580}3580}
35813581
3582#[inline]3582#[inline]
3583#[target_feature(enable = "lasx")]3583#[target_feature(enable = "lasx")]
3584#[unstable(feature = "stdarch_loongarch", issue = "117427")]3584#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3585pub unsafe fn lasx_xvshuf_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {3585pub fn lasx_xvshuf_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
3586 __lasx_xvshuf_h(a, b, c)3586 unsafe { __lasx_xvshuf_h(a, b, c) }
3587}3587}
35883588
3589#[inline]3589#[inline]
3590#[target_feature(enable = "lasx")]3590#[target_feature(enable = "lasx")]
3591#[unstable(feature = "stdarch_loongarch", issue = "117427")]3591#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3592pub unsafe fn lasx_xvshuf_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {3592pub fn lasx_xvshuf_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
3593 __lasx_xvshuf_w(a, b, c)3593 unsafe { __lasx_xvshuf_w(a, b, c) }
3594}3594}
35953595
3596#[inline]3596#[inline]
3597#[target_feature(enable = "lasx")]3597#[target_feature(enable = "lasx")]
3598#[unstable(feature = "stdarch_loongarch", issue = "117427")]3598#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3599pub unsafe fn lasx_xvshuf_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {3599pub fn lasx_xvshuf_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
3600 __lasx_xvshuf_d(a, b, c)3600 unsafe { __lasx_xvshuf_d(a, b, c) }
3601}3601}
36023602
3603#[inline]3603#[inline]
3604#[target_feature(enable = "lasx")]3604#[target_feature(enable = "lasx")]
3605#[unstable(feature = "stdarch_loongarch", issue = "117427")]3605#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3606pub unsafe fn lasx_xvand_v(a: v32u8, b: v32u8) -> v32u8 {3606pub fn lasx_xvand_v(a: v32u8, b: v32u8) -> v32u8 {
3607 __lasx_xvand_v(a, b)3607 unsafe { __lasx_xvand_v(a, b) }
3608}3608}
36093609
3610#[inline]3610#[inline]
3611#[target_feature(enable = "lasx")]3611#[target_feature(enable = "lasx")]
3612#[rustc_legacy_const_generics(1)]3612#[rustc_legacy_const_generics(1)]
3613#[unstable(feature = "stdarch_loongarch", issue = "117427")]3613#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3614pub unsafe fn lasx_xvandi_b<const IMM8: u32>(a: v32u8) -> v32u8 {3614pub fn lasx_xvandi_b<const IMM8: u32>(a: v32u8) -> v32u8 {
3615 static_assert_uimm_bits!(IMM8, 8);3615 static_assert_uimm_bits!(IMM8, 8);
3616 __lasx_xvandi_b(a, IMM8)3616 unsafe { __lasx_xvandi_b(a, IMM8) }
3617}3617}
36183618
3619#[inline]3619#[inline]
3620#[target_feature(enable = "lasx")]3620#[target_feature(enable = "lasx")]
3621#[unstable(feature = "stdarch_loongarch", issue = "117427")]3621#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3622pub unsafe fn lasx_xvor_v(a: v32u8, b: v32u8) -> v32u8 {3622pub fn lasx_xvor_v(a: v32u8, b: v32u8) -> v32u8 {
3623 __lasx_xvor_v(a, b)3623 unsafe { __lasx_xvor_v(a, b) }
3624}3624}
36253625
3626#[inline]3626#[inline]
3627#[target_feature(enable = "lasx")]3627#[target_feature(enable = "lasx")]
3628#[rustc_legacy_const_generics(1)]3628#[rustc_legacy_const_generics(1)]
3629#[unstable(feature = "stdarch_loongarch", issue = "117427")]3629#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3630pub unsafe fn lasx_xvori_b<const IMM8: u32>(a: v32u8) -> v32u8 {3630pub fn lasx_xvori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
3631 static_assert_uimm_bits!(IMM8, 8);3631 static_assert_uimm_bits!(IMM8, 8);
3632 __lasx_xvori_b(a, IMM8)3632 unsafe { __lasx_xvori_b(a, IMM8) }
3633}3633}
36343634
3635#[inline]3635#[inline]
3636#[target_feature(enable = "lasx")]3636#[target_feature(enable = "lasx")]
3637#[unstable(feature = "stdarch_loongarch", issue = "117427")]3637#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3638pub unsafe fn lasx_xvnor_v(a: v32u8, b: v32u8) -> v32u8 {3638pub fn lasx_xvnor_v(a: v32u8, b: v32u8) -> v32u8 {
3639 __lasx_xvnor_v(a, b)3639 unsafe { __lasx_xvnor_v(a, b) }
3640}3640}
36413641
3642#[inline]3642#[inline]
3643#[target_feature(enable = "lasx")]3643#[target_feature(enable = "lasx")]
3644#[rustc_legacy_const_generics(1)]3644#[rustc_legacy_const_generics(1)]
3645#[unstable(feature = "stdarch_loongarch", issue = "117427")]3645#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3646pub unsafe fn lasx_xvnori_b<const IMM8: u32>(a: v32u8) -> v32u8 {3646pub fn lasx_xvnori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
3647 static_assert_uimm_bits!(IMM8, 8);3647 static_assert_uimm_bits!(IMM8, 8);
3648 __lasx_xvnori_b(a, IMM8)3648 unsafe { __lasx_xvnori_b(a, IMM8) }
3649}3649}
36503650
3651#[inline]3651#[inline]
3652#[target_feature(enable = "lasx")]3652#[target_feature(enable = "lasx")]
3653#[unstable(feature = "stdarch_loongarch", issue = "117427")]3653#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3654pub unsafe fn lasx_xvxor_v(a: v32u8, b: v32u8) -> v32u8 {3654pub fn lasx_xvxor_v(a: v32u8, b: v32u8) -> v32u8 {
3655 __lasx_xvxor_v(a, b)3655 unsafe { __lasx_xvxor_v(a, b) }
3656}3656}
36573657
3658#[inline]3658#[inline]
3659#[target_feature(enable = "lasx")]3659#[target_feature(enable = "lasx")]
3660#[rustc_legacy_const_generics(1)]3660#[rustc_legacy_const_generics(1)]
3661#[unstable(feature = "stdarch_loongarch", issue = "117427")]3661#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3662pub unsafe fn lasx_xvxori_b<const IMM8: u32>(a: v32u8) -> v32u8 {3662pub fn lasx_xvxori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
3663 static_assert_uimm_bits!(IMM8, 8);3663 static_assert_uimm_bits!(IMM8, 8);
3664 __lasx_xvxori_b(a, IMM8)3664 unsafe { __lasx_xvxori_b(a, IMM8) }
3665}3665}
36663666
3667#[inline]3667#[inline]
3668#[target_feature(enable = "lasx")]3668#[target_feature(enable = "lasx")]
3669#[unstable(feature = "stdarch_loongarch", issue = "117427")]3669#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3670pub unsafe fn lasx_xvbitsel_v(a: v32u8, b: v32u8, c: v32u8) -> v32u8 {3670pub fn lasx_xvbitsel_v(a: v32u8, b: v32u8, c: v32u8) -> v32u8 {
3671 __lasx_xvbitsel_v(a, b, c)3671 unsafe { __lasx_xvbitsel_v(a, b, c) }
3672}3672}
36733673
3674#[inline]3674#[inline]
3675#[target_feature(enable = "lasx")]3675#[target_feature(enable = "lasx")]
3676#[rustc_legacy_const_generics(2)]3676#[rustc_legacy_const_generics(2)]
3677#[unstable(feature = "stdarch_loongarch", issue = "117427")]3677#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3678pub unsafe fn lasx_xvbitseli_b<const IMM8: u32>(a: v32u8, b: v32u8) -> v32u8 {3678pub fn lasx_xvbitseli_b<const IMM8: u32>(a: v32u8, b: v32u8) -> v32u8 {
3679 static_assert_uimm_bits!(IMM8, 8);3679 static_assert_uimm_bits!(IMM8, 8);
3680 __lasx_xvbitseli_b(a, b, IMM8)3680 unsafe { __lasx_xvbitseli_b(a, b, IMM8) }
3681}3681}
36823682
3683#[inline]3683#[inline]
3684#[target_feature(enable = "lasx")]3684#[target_feature(enable = "lasx")]
3685#[rustc_legacy_const_generics(1)]3685#[rustc_legacy_const_generics(1)]
3686#[unstable(feature = "stdarch_loongarch", issue = "117427")]3686#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3687pub unsafe fn lasx_xvshuf4i_b<const IMM8: u32>(a: v32i8) -> v32i8 {3687pub fn lasx_xvshuf4i_b<const IMM8: u32>(a: v32i8) -> v32i8 {
3688 static_assert_uimm_bits!(IMM8, 8);3688 static_assert_uimm_bits!(IMM8, 8);
3689 __lasx_xvshuf4i_b(a, IMM8)3689 unsafe { __lasx_xvshuf4i_b(a, IMM8) }
3690}3690}
36913691
3692#[inline]3692#[inline]
3693#[target_feature(enable = "lasx")]3693#[target_feature(enable = "lasx")]
3694#[rustc_legacy_const_generics(1)]3694#[rustc_legacy_const_generics(1)]
3695#[unstable(feature = "stdarch_loongarch", issue = "117427")]3695#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3696pub unsafe fn lasx_xvshuf4i_h<const IMM8: u32>(a: v16i16) -> v16i16 {3696pub fn lasx_xvshuf4i_h<const IMM8: u32>(a: v16i16) -> v16i16 {
3697 static_assert_uimm_bits!(IMM8, 8);3697 static_assert_uimm_bits!(IMM8, 8);
3698 __lasx_xvshuf4i_h(a, IMM8)3698 unsafe { __lasx_xvshuf4i_h(a, IMM8) }
3699}3699}
37003700
3701#[inline]3701#[inline]
3702#[target_feature(enable = "lasx")]3702#[target_feature(enable = "lasx")]
3703#[rustc_legacy_const_generics(1)]3703#[rustc_legacy_const_generics(1)]
3704#[unstable(feature = "stdarch_loongarch", issue = "117427")]3704#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3705pub unsafe fn lasx_xvshuf4i_w<const IMM8: u32>(a: v8i32) -> v8i32 {3705pub fn lasx_xvshuf4i_w<const IMM8: u32>(a: v8i32) -> v8i32 {
3706 static_assert_uimm_bits!(IMM8, 8);3706 static_assert_uimm_bits!(IMM8, 8);
3707 __lasx_xvshuf4i_w(a, IMM8)3707 unsafe { __lasx_xvshuf4i_w(a, IMM8) }
3708}3708}
37093709
3710#[inline]3710#[inline]
3711#[target_feature(enable = "lasx")]3711#[target_feature(enable = "lasx")]
3712#[unstable(feature = "stdarch_loongarch", issue = "117427")]3712#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3713pub unsafe fn lasx_xvreplgr2vr_b(a: i32) -> v32i8 {3713pub fn lasx_xvreplgr2vr_b(a: i32) -> v32i8 {
3714 __lasx_xvreplgr2vr_b(a)3714 unsafe { __lasx_xvreplgr2vr_b(a) }
3715}3715}
37163716
3717#[inline]3717#[inline]
3718#[target_feature(enable = "lasx")]3718#[target_feature(enable = "lasx")]
3719#[unstable(feature = "stdarch_loongarch", issue = "117427")]3719#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3720pub unsafe fn lasx_xvreplgr2vr_h(a: i32) -> v16i16 {3720pub fn lasx_xvreplgr2vr_h(a: i32) -> v16i16 {
3721 __lasx_xvreplgr2vr_h(a)3721 unsafe { __lasx_xvreplgr2vr_h(a) }
3722}3722}
37233723
3724#[inline]3724#[inline]
3725#[target_feature(enable = "lasx")]3725#[target_feature(enable = "lasx")]
3726#[unstable(feature = "stdarch_loongarch", issue = "117427")]3726#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3727pub unsafe fn lasx_xvreplgr2vr_w(a: i32) -> v8i32 {3727pub fn lasx_xvreplgr2vr_w(a: i32) -> v8i32 {
3728 __lasx_xvreplgr2vr_w(a)3728 unsafe { __lasx_xvreplgr2vr_w(a) }
3729}3729}
37303730
3731#[inline]3731#[inline]
3732#[target_feature(enable = "lasx")]3732#[target_feature(enable = "lasx")]
3733#[unstable(feature = "stdarch_loongarch", issue = "117427")]3733#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3734pub unsafe fn lasx_xvreplgr2vr_d(a: i64) -> v4i64 {3734pub fn lasx_xvreplgr2vr_d(a: i64) -> v4i64 {
3735 __lasx_xvreplgr2vr_d(a)3735 unsafe { __lasx_xvreplgr2vr_d(a) }
3736}3736}
37373737
3738#[inline]3738#[inline]
3739#[target_feature(enable = "lasx")]3739#[target_feature(enable = "lasx")]
3740#[unstable(feature = "stdarch_loongarch", issue = "117427")]3740#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3741pub unsafe fn lasx_xvpcnt_b(a: v32i8) -> v32i8 {3741pub fn lasx_xvpcnt_b(a: v32i8) -> v32i8 {
3742 __lasx_xvpcnt_b(a)3742 unsafe { __lasx_xvpcnt_b(a) }
3743}3743}
37443744
3745#[inline]3745#[inline]
3746#[target_feature(enable = "lasx")]3746#[target_feature(enable = "lasx")]
3747#[unstable(feature = "stdarch_loongarch", issue = "117427")]3747#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3748pub unsafe fn lasx_xvpcnt_h(a: v16i16) -> v16i16 {3748pub fn lasx_xvpcnt_h(a: v16i16) -> v16i16 {
3749 __lasx_xvpcnt_h(a)3749 unsafe { __lasx_xvpcnt_h(a) }
3750}3750}
37513751
3752#[inline]3752#[inline]
3753#[target_feature(enable = "lasx")]3753#[target_feature(enable = "lasx")]
3754#[unstable(feature = "stdarch_loongarch", issue = "117427")]3754#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3755pub unsafe fn lasx_xvpcnt_w(a: v8i32) -> v8i32 {3755pub fn lasx_xvpcnt_w(a: v8i32) -> v8i32 {
3756 __lasx_xvpcnt_w(a)3756 unsafe { __lasx_xvpcnt_w(a) }
3757}3757}
37583758
3759#[inline]3759#[inline]
3760#[target_feature(enable = "lasx")]3760#[target_feature(enable = "lasx")]
3761#[unstable(feature = "stdarch_loongarch", issue = "117427")]3761#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3762pub unsafe fn lasx_xvpcnt_d(a: v4i64) -> v4i64 {3762pub fn lasx_xvpcnt_d(a: v4i64) -> v4i64 {
3763 __lasx_xvpcnt_d(a)3763 unsafe { __lasx_xvpcnt_d(a) }
3764}3764}
37653765
3766#[inline]3766#[inline]
3767#[target_feature(enable = "lasx")]3767#[target_feature(enable = "lasx")]
3768#[unstable(feature = "stdarch_loongarch", issue = "117427")]3768#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3769pub unsafe fn lasx_xvclo_b(a: v32i8) -> v32i8 {3769pub fn lasx_xvclo_b(a: v32i8) -> v32i8 {
3770 __lasx_xvclo_b(a)3770 unsafe { __lasx_xvclo_b(a) }
3771}3771}
37723772
3773#[inline]3773#[inline]
3774#[target_feature(enable = "lasx")]3774#[target_feature(enable = "lasx")]
3775#[unstable(feature = "stdarch_loongarch", issue = "117427")]3775#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3776pub unsafe fn lasx_xvclo_h(a: v16i16) -> v16i16 {3776pub fn lasx_xvclo_h(a: v16i16) -> v16i16 {
3777 __lasx_xvclo_h(a)3777 unsafe { __lasx_xvclo_h(a) }
3778}3778}
37793779
3780#[inline]3780#[inline]
3781#[target_feature(enable = "lasx")]3781#[target_feature(enable = "lasx")]
3782#[unstable(feature = "stdarch_loongarch", issue = "117427")]3782#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3783pub unsafe fn lasx_xvclo_w(a: v8i32) -> v8i32 {3783pub fn lasx_xvclo_w(a: v8i32) -> v8i32 {
3784 __lasx_xvclo_w(a)3784 unsafe { __lasx_xvclo_w(a) }
3785}3785}
37863786
3787#[inline]3787#[inline]
3788#[target_feature(enable = "lasx")]3788#[target_feature(enable = "lasx")]
3789#[unstable(feature = "stdarch_loongarch", issue = "117427")]3789#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3790pub unsafe fn lasx_xvclo_d(a: v4i64) -> v4i64 {3790pub fn lasx_xvclo_d(a: v4i64) -> v4i64 {
3791 __lasx_xvclo_d(a)3791 unsafe { __lasx_xvclo_d(a) }
3792}3792}
37933793
3794#[inline]3794#[inline]
3795#[target_feature(enable = "lasx")]3795#[target_feature(enable = "lasx")]
3796#[unstable(feature = "stdarch_loongarch", issue = "117427")]3796#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3797pub unsafe fn lasx_xvclz_b(a: v32i8) -> v32i8 {3797pub fn lasx_xvclz_b(a: v32i8) -> v32i8 {
3798 __lasx_xvclz_b(a)3798 unsafe { __lasx_xvclz_b(a) }
3799}3799}
38003800
3801#[inline]3801#[inline]
3802#[target_feature(enable = "lasx")]3802#[target_feature(enable = "lasx")]
3803#[unstable(feature = "stdarch_loongarch", issue = "117427")]3803#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3804pub unsafe fn lasx_xvclz_h(a: v16i16) -> v16i16 {3804pub fn lasx_xvclz_h(a: v16i16) -> v16i16 {
3805 __lasx_xvclz_h(a)3805 unsafe { __lasx_xvclz_h(a) }
3806}3806}
38073807
3808#[inline]3808#[inline]
3809#[target_feature(enable = "lasx")]3809#[target_feature(enable = "lasx")]
3810#[unstable(feature = "stdarch_loongarch", issue = "117427")]3810#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3811pub unsafe fn lasx_xvclz_w(a: v8i32) -> v8i32 {3811pub fn lasx_xvclz_w(a: v8i32) -> v8i32 {
3812 __lasx_xvclz_w(a)3812 unsafe { __lasx_xvclz_w(a) }
3813}3813}
38143814
3815#[inline]3815#[inline]
3816#[target_feature(enable = "lasx")]3816#[target_feature(enable = "lasx")]
3817#[unstable(feature = "stdarch_loongarch", issue = "117427")]3817#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3818pub unsafe fn lasx_xvclz_d(a: v4i64) -> v4i64 {3818pub fn lasx_xvclz_d(a: v4i64) -> v4i64 {
3819 __lasx_xvclz_d(a)3819 unsafe { __lasx_xvclz_d(a) }
3820}3820}
38213821
3822#[inline]3822#[inline]
3823#[target_feature(enable = "lasx")]3823#[target_feature(enable = "lasx")]
3824#[unstable(feature = "stdarch_loongarch", issue = "117427")]3824#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3825pub unsafe fn lasx_xvfadd_s(a: v8f32, b: v8f32) -> v8f32 {3825pub fn lasx_xvfadd_s(a: v8f32, b: v8f32) -> v8f32 {
3826 __lasx_xvfadd_s(a, b)3826 unsafe { __lasx_xvfadd_s(a, b) }
3827}3827}
38283828
3829#[inline]3829#[inline]
3830#[target_feature(enable = "lasx")]3830#[target_feature(enable = "lasx")]
3831#[unstable(feature = "stdarch_loongarch", issue = "117427")]3831#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3832pub unsafe fn lasx_xvfadd_d(a: v4f64, b: v4f64) -> v4f64 {3832pub fn lasx_xvfadd_d(a: v4f64, b: v4f64) -> v4f64 {
3833 __lasx_xvfadd_d(a, b)3833 unsafe { __lasx_xvfadd_d(a, b) }
3834}3834}
38353835
3836#[inline]3836#[inline]
3837#[target_feature(enable = "lasx")]3837#[target_feature(enable = "lasx")]
3838#[unstable(feature = "stdarch_loongarch", issue = "117427")]3838#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3839pub unsafe fn lasx_xvfsub_s(a: v8f32, b: v8f32) -> v8f32 {3839pub fn lasx_xvfsub_s(a: v8f32, b: v8f32) -> v8f32 {
3840 __lasx_xvfsub_s(a, b)3840 unsafe { __lasx_xvfsub_s(a, b) }
3841}3841}
38423842
3843#[inline]3843#[inline]
3844#[target_feature(enable = "lasx")]3844#[target_feature(enable = "lasx")]
3845#[unstable(feature = "stdarch_loongarch", issue = "117427")]3845#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3846pub unsafe fn lasx_xvfsub_d(a: v4f64, b: v4f64) -> v4f64 {3846pub fn lasx_xvfsub_d(a: v4f64, b: v4f64) -> v4f64 {
3847 __lasx_xvfsub_d(a, b)3847 unsafe { __lasx_xvfsub_d(a, b) }
3848}3848}
38493849
3850#[inline]3850#[inline]
3851#[target_feature(enable = "lasx")]3851#[target_feature(enable = "lasx")]
3852#[unstable(feature = "stdarch_loongarch", issue = "117427")]3852#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3853pub unsafe fn lasx_xvfmul_s(a: v8f32, b: v8f32) -> v8f32 {3853pub fn lasx_xvfmul_s(a: v8f32, b: v8f32) -> v8f32 {
3854 __lasx_xvfmul_s(a, b)3854 unsafe { __lasx_xvfmul_s(a, b) }
3855}3855}
38563856
3857#[inline]3857#[inline]
3858#[target_feature(enable = "lasx")]3858#[target_feature(enable = "lasx")]
3859#[unstable(feature = "stdarch_loongarch", issue = "117427")]3859#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3860pub unsafe fn lasx_xvfmul_d(a: v4f64, b: v4f64) -> v4f64 {3860pub fn lasx_xvfmul_d(a: v4f64, b: v4f64) -> v4f64 {
3861 __lasx_xvfmul_d(a, b)3861 unsafe { __lasx_xvfmul_d(a, b) }
3862}3862}
38633863
3864#[inline]3864#[inline]
3865#[target_feature(enable = "lasx")]3865#[target_feature(enable = "lasx")]
3866#[unstable(feature = "stdarch_loongarch", issue = "117427")]3866#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3867pub unsafe fn lasx_xvfdiv_s(a: v8f32, b: v8f32) -> v8f32 {3867pub fn lasx_xvfdiv_s(a: v8f32, b: v8f32) -> v8f32 {
3868 __lasx_xvfdiv_s(a, b)3868 unsafe { __lasx_xvfdiv_s(a, b) }
3869}3869}
38703870
3871#[inline]3871#[inline]
3872#[target_feature(enable = "lasx")]3872#[target_feature(enable = "lasx")]
3873#[unstable(feature = "stdarch_loongarch", issue = "117427")]3873#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3874pub unsafe fn lasx_xvfdiv_d(a: v4f64, b: v4f64) -> v4f64 {3874pub fn lasx_xvfdiv_d(a: v4f64, b: v4f64) -> v4f64 {
3875 __lasx_xvfdiv_d(a, b)3875 unsafe { __lasx_xvfdiv_d(a, b) }
3876}3876}
38773877
3878#[inline]3878#[inline]
3879#[target_feature(enable = "lasx")]3879#[target_feature(enable = "lasx")]
3880#[unstable(feature = "stdarch_loongarch", issue = "117427")]3880#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3881pub unsafe fn lasx_xvfcvt_h_s(a: v8f32, b: v8f32) -> v16i16 {3881pub fn lasx_xvfcvt_h_s(a: v8f32, b: v8f32) -> v16i16 {
3882 __lasx_xvfcvt_h_s(a, b)3882 unsafe { __lasx_xvfcvt_h_s(a, b) }
3883}3883}
38843884
3885#[inline]3885#[inline]
3886#[target_feature(enable = "lasx")]3886#[target_feature(enable = "lasx")]
3887#[unstable(feature = "stdarch_loongarch", issue = "117427")]3887#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3888pub unsafe fn lasx_xvfcvt_s_d(a: v4f64, b: v4f64) -> v8f32 {3888pub fn lasx_xvfcvt_s_d(a: v4f64, b: v4f64) -> v8f32 {
3889 __lasx_xvfcvt_s_d(a, b)3889 unsafe { __lasx_xvfcvt_s_d(a, b) }
3890}3890}
38913891
3892#[inline]3892#[inline]
3893#[target_feature(enable = "lasx")]3893#[target_feature(enable = "lasx")]
3894#[unstable(feature = "stdarch_loongarch", issue = "117427")]3894#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3895pub unsafe fn lasx_xvfmin_s(a: v8f32, b: v8f32) -> v8f32 {3895pub fn lasx_xvfmin_s(a: v8f32, b: v8f32) -> v8f32 {
3896 __lasx_xvfmin_s(a, b)3896 unsafe { __lasx_xvfmin_s(a, b) }
3897}3897}
38983898
3899#[inline]3899#[inline]
3900#[target_feature(enable = "lasx")]3900#[target_feature(enable = "lasx")]
3901#[unstable(feature = "stdarch_loongarch", issue = "117427")]3901#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3902pub unsafe fn lasx_xvfmin_d(a: v4f64, b: v4f64) -> v4f64 {3902pub fn lasx_xvfmin_d(a: v4f64, b: v4f64) -> v4f64 {
3903 __lasx_xvfmin_d(a, b)3903 unsafe { __lasx_xvfmin_d(a, b) }
3904}3904}
39053905
3906#[inline]3906#[inline]
3907#[target_feature(enable = "lasx")]3907#[target_feature(enable = "lasx")]
3908#[unstable(feature = "stdarch_loongarch", issue = "117427")]3908#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3909pub unsafe fn lasx_xvfmina_s(a: v8f32, b: v8f32) -> v8f32 {3909pub fn lasx_xvfmina_s(a: v8f32, b: v8f32) -> v8f32 {
3910 __lasx_xvfmina_s(a, b)3910 unsafe { __lasx_xvfmina_s(a, b) }
3911}3911}
39123912
3913#[inline]3913#[inline]
3914#[target_feature(enable = "lasx")]3914#[target_feature(enable = "lasx")]
3915#[unstable(feature = "stdarch_loongarch", issue = "117427")]3915#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3916pub unsafe fn lasx_xvfmina_d(a: v4f64, b: v4f64) -> v4f64 {3916pub fn lasx_xvfmina_d(a: v4f64, b: v4f64) -> v4f64 {
3917 __lasx_xvfmina_d(a, b)3917 unsafe { __lasx_xvfmina_d(a, b) }
3918}3918}
39193919
3920#[inline]3920#[inline]
3921#[target_feature(enable = "lasx")]3921#[target_feature(enable = "lasx")]
3922#[unstable(feature = "stdarch_loongarch", issue = "117427")]3922#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3923pub unsafe fn lasx_xvfmax_s(a: v8f32, b: v8f32) -> v8f32 {3923pub fn lasx_xvfmax_s(a: v8f32, b: v8f32) -> v8f32 {
3924 __lasx_xvfmax_s(a, b)3924 unsafe { __lasx_xvfmax_s(a, b) }
3925}3925}
39263926
3927#[inline]3927#[inline]
3928#[target_feature(enable = "lasx")]3928#[target_feature(enable = "lasx")]
3929#[unstable(feature = "stdarch_loongarch", issue = "117427")]3929#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3930pub unsafe fn lasx_xvfmax_d(a: v4f64, b: v4f64) -> v4f64 {3930pub fn lasx_xvfmax_d(a: v4f64, b: v4f64) -> v4f64 {
3931 __lasx_xvfmax_d(a, b)3931 unsafe { __lasx_xvfmax_d(a, b) }
3932}3932}
39333933
3934#[inline]3934#[inline]
3935#[target_feature(enable = "lasx")]3935#[target_feature(enable = "lasx")]
3936#[unstable(feature = "stdarch_loongarch", issue = "117427")]3936#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3937pub unsafe fn lasx_xvfmaxa_s(a: v8f32, b: v8f32) -> v8f32 {3937pub fn lasx_xvfmaxa_s(a: v8f32, b: v8f32) -> v8f32 {
3938 __lasx_xvfmaxa_s(a, b)3938 unsafe { __lasx_xvfmaxa_s(a, b) }
3939}3939}
39403940
3941#[inline]3941#[inline]
3942#[target_feature(enable = "lasx")]3942#[target_feature(enable = "lasx")]
3943#[unstable(feature = "stdarch_loongarch", issue = "117427")]3943#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3944pub unsafe fn lasx_xvfmaxa_d(a: v4f64, b: v4f64) -> v4f64 {3944pub fn lasx_xvfmaxa_d(a: v4f64, b: v4f64) -> v4f64 {
3945 __lasx_xvfmaxa_d(a, b)3945 unsafe { __lasx_xvfmaxa_d(a, b) }
3946}3946}
39473947
3948#[inline]3948#[inline]
3949#[target_feature(enable = "lasx")]3949#[target_feature(enable = "lasx")]
3950#[unstable(feature = "stdarch_loongarch", issue = "117427")]3950#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3951pub unsafe fn lasx_xvfclass_s(a: v8f32) -> v8i32 {3951pub fn lasx_xvfclass_s(a: v8f32) -> v8i32 {
3952 __lasx_xvfclass_s(a)3952 unsafe { __lasx_xvfclass_s(a) }
3953}3953}
39543954
3955#[inline]3955#[inline]
3956#[target_feature(enable = "lasx")]3956#[target_feature(enable = "lasx")]
3957#[unstable(feature = "stdarch_loongarch", issue = "117427")]3957#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3958pub unsafe fn lasx_xvfclass_d(a: v4f64) -> v4i64 {3958pub fn lasx_xvfclass_d(a: v4f64) -> v4i64 {
3959 __lasx_xvfclass_d(a)3959 unsafe { __lasx_xvfclass_d(a) }
3960}3960}
39613961
3962#[inline]3962#[inline]
3963#[target_feature(enable = "lasx")]3963#[target_feature(enable = "lasx")]
3964#[unstable(feature = "stdarch_loongarch", issue = "117427")]3964#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3965pub unsafe fn lasx_xvfsqrt_s(a: v8f32) -> v8f32 {3965pub fn lasx_xvfsqrt_s(a: v8f32) -> v8f32 {
3966 __lasx_xvfsqrt_s(a)3966 unsafe { __lasx_xvfsqrt_s(a) }
3967}3967}
39683968
3969#[inline]3969#[inline]
3970#[target_feature(enable = "lasx")]3970#[target_feature(enable = "lasx")]
3971#[unstable(feature = "stdarch_loongarch", issue = "117427")]3971#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3972pub unsafe fn lasx_xvfsqrt_d(a: v4f64) -> v4f64 {3972pub fn lasx_xvfsqrt_d(a: v4f64) -> v4f64 {
3973 __lasx_xvfsqrt_d(a)3973 unsafe { __lasx_xvfsqrt_d(a) }
3974}3974}
39753975
3976#[inline]3976#[inline]
3977#[target_feature(enable = "lasx")]3977#[target_feature(enable = "lasx")]
3978#[unstable(feature = "stdarch_loongarch", issue = "117427")]3978#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3979pub unsafe fn lasx_xvfrecip_s(a: v8f32) -> v8f32 {3979pub fn lasx_xvfrecip_s(a: v8f32) -> v8f32 {
3980 __lasx_xvfrecip_s(a)3980 unsafe { __lasx_xvfrecip_s(a) }
3981}3981}
39823982
3983#[inline]3983#[inline]
3984#[target_feature(enable = "lasx")]3984#[target_feature(enable = "lasx")]
3985#[unstable(feature = "stdarch_loongarch", issue = "117427")]3985#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3986pub unsafe fn lasx_xvfrecip_d(a: v4f64) -> v4f64 {3986pub fn lasx_xvfrecip_d(a: v4f64) -> v4f64 {
3987 __lasx_xvfrecip_d(a)3987 unsafe { __lasx_xvfrecip_d(a) }
3988}3988}
39893989
3990#[inline]3990#[inline]
3991#[target_feature(enable = "lasx,frecipe")]3991#[target_feature(enable = "lasx,frecipe")]
3992#[unstable(feature = "stdarch_loongarch", issue = "117427")]3992#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3993pub unsafe fn lasx_xvfrecipe_s(a: v8f32) -> v8f32 {3993pub fn lasx_xvfrecipe_s(a: v8f32) -> v8f32 {
3994 __lasx_xvfrecipe_s(a)3994 unsafe { __lasx_xvfrecipe_s(a) }
3995}3995}
39963996
3997#[inline]3997#[inline]
3998#[target_feature(enable = "lasx,frecipe")]3998#[target_feature(enable = "lasx,frecipe")]
3999#[unstable(feature = "stdarch_loongarch", issue = "117427")]3999#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4000pub unsafe fn lasx_xvfrecipe_d(a: v4f64) -> v4f64 {4000pub fn lasx_xvfrecipe_d(a: v4f64) -> v4f64 {
4001 __lasx_xvfrecipe_d(a)4001 unsafe { __lasx_xvfrecipe_d(a) }
4002}4002}
40034003
4004#[inline]4004#[inline]
4005#[target_feature(enable = "lasx,frecipe")]4005#[target_feature(enable = "lasx,frecipe")]
4006#[unstable(feature = "stdarch_loongarch", issue = "117427")]4006#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4007pub unsafe fn lasx_xvfrsqrte_s(a: v8f32) -> v8f32 {4007pub fn lasx_xvfrsqrte_s(a: v8f32) -> v8f32 {
4008 __lasx_xvfrsqrte_s(a)4008 unsafe { __lasx_xvfrsqrte_s(a) }
4009}4009}
40104010
4011#[inline]4011#[inline]
4012#[target_feature(enable = "lasx,frecipe")]4012#[target_feature(enable = "lasx,frecipe")]
4013#[unstable(feature = "stdarch_loongarch", issue = "117427")]4013#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4014pub unsafe fn lasx_xvfrsqrte_d(a: v4f64) -> v4f64 {4014pub fn lasx_xvfrsqrte_d(a: v4f64) -> v4f64 {
4015 __lasx_xvfrsqrte_d(a)4015 unsafe { __lasx_xvfrsqrte_d(a) }
4016}4016}
40174017
4018#[inline]4018#[inline]
4019#[target_feature(enable = "lasx")]4019#[target_feature(enable = "lasx")]
4020#[unstable(feature = "stdarch_loongarch", issue = "117427")]4020#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4021pub unsafe fn lasx_xvfrint_s(a: v8f32) -> v8f32 {4021pub fn lasx_xvfrint_s(a: v8f32) -> v8f32 {
4022 __lasx_xvfrint_s(a)4022 unsafe { __lasx_xvfrint_s(a) }
4023}4023}
40244024
4025#[inline]4025#[inline]
4026#[target_feature(enable = "lasx")]4026#[target_feature(enable = "lasx")]
4027#[unstable(feature = "stdarch_loongarch", issue = "117427")]4027#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4028pub unsafe fn lasx_xvfrint_d(a: v4f64) -> v4f64 {4028pub fn lasx_xvfrint_d(a: v4f64) -> v4f64 {
4029 __lasx_xvfrint_d(a)4029 unsafe { __lasx_xvfrint_d(a) }
4030}4030}
40314031
4032#[inline]4032#[inline]
4033#[target_feature(enable = "lasx")]4033#[target_feature(enable = "lasx")]
4034#[unstable(feature = "stdarch_loongarch", issue = "117427")]4034#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4035pub unsafe fn lasx_xvfrsqrt_s(a: v8f32) -> v8f32 {4035pub fn lasx_xvfrsqrt_s(a: v8f32) -> v8f32 {
4036 __lasx_xvfrsqrt_s(a)4036 unsafe { __lasx_xvfrsqrt_s(a) }
4037}4037}
40384038
4039#[inline]4039#[inline]
4040#[target_feature(enable = "lasx")]4040#[target_feature(enable = "lasx")]
4041#[unstable(feature = "stdarch_loongarch", issue = "117427")]4041#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4042pub unsafe fn lasx_xvfrsqrt_d(a: v4f64) -> v4f64 {4042pub fn lasx_xvfrsqrt_d(a: v4f64) -> v4f64 {
4043 __lasx_xvfrsqrt_d(a)4043 unsafe { __lasx_xvfrsqrt_d(a) }
4044}4044}
40454045
4046#[inline]4046#[inline]
4047#[target_feature(enable = "lasx")]4047#[target_feature(enable = "lasx")]
4048#[unstable(feature = "stdarch_loongarch", issue = "117427")]4048#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4049pub unsafe fn lasx_xvflogb_s(a: v8f32) -> v8f32 {4049pub fn lasx_xvflogb_s(a: v8f32) -> v8f32 {
4050 __lasx_xvflogb_s(a)4050 unsafe { __lasx_xvflogb_s(a) }
4051}4051}
40524052
4053#[inline]4053#[inline]
4054#[target_feature(enable = "lasx")]4054#[target_feature(enable = "lasx")]
4055#[unstable(feature = "stdarch_loongarch", issue = "117427")]4055#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4056pub unsafe fn lasx_xvflogb_d(a: v4f64) -> v4f64 {4056pub fn lasx_xvflogb_d(a: v4f64) -> v4f64 {
4057 __lasx_xvflogb_d(a)4057 unsafe { __lasx_xvflogb_d(a) }
4058}4058}
40594059
4060#[inline]4060#[inline]
4061#[target_feature(enable = "lasx")]4061#[target_feature(enable = "lasx")]
4062#[unstable(feature = "stdarch_loongarch", issue = "117427")]4062#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4063pub unsafe fn lasx_xvfcvth_s_h(a: v16i16) -> v8f32 {4063pub fn lasx_xvfcvth_s_h(a: v16i16) -> v8f32 {
4064 __lasx_xvfcvth_s_h(a)4064 unsafe { __lasx_xvfcvth_s_h(a) }
4065}4065}
40664066
4067#[inline]4067#[inline]
4068#[target_feature(enable = "lasx")]4068#[target_feature(enable = "lasx")]
4069#[unstable(feature = "stdarch_loongarch", issue = "117427")]4069#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4070pub unsafe fn lasx_xvfcvth_d_s(a: v8f32) -> v4f64 {4070pub fn lasx_xvfcvth_d_s(a: v8f32) -> v4f64 {
4071 __lasx_xvfcvth_d_s(a)4071 unsafe { __lasx_xvfcvth_d_s(a) }
4072}4072}
40734073
4074#[inline]4074#[inline]
4075#[target_feature(enable = "lasx")]4075#[target_feature(enable = "lasx")]
4076#[unstable(feature = "stdarch_loongarch", issue = "117427")]4076#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4077pub unsafe fn lasx_xvfcvtl_s_h(a: v16i16) -> v8f32 {4077pub fn lasx_xvfcvtl_s_h(a: v16i16) -> v8f32 {
4078 __lasx_xvfcvtl_s_h(a)4078 unsafe { __lasx_xvfcvtl_s_h(a) }
4079}4079}
40804080
4081#[inline]4081#[inline]
4082#[target_feature(enable = "lasx")]4082#[target_feature(enable = "lasx")]
4083#[unstable(feature = "stdarch_loongarch", issue = "117427")]4083#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4084pub unsafe fn lasx_xvfcvtl_d_s(a: v8f32) -> v4f64 {4084pub fn lasx_xvfcvtl_d_s(a: v8f32) -> v4f64 {
4085 __lasx_xvfcvtl_d_s(a)4085 unsafe { __lasx_xvfcvtl_d_s(a) }
4086}4086}
40874087
4088#[inline]4088#[inline]
4089#[target_feature(enable = "lasx")]4089#[target_feature(enable = "lasx")]
4090#[unstable(feature = "stdarch_loongarch", issue = "117427")]4090#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4091pub unsafe fn lasx_xvftint_w_s(a: v8f32) -> v8i32 {4091pub fn lasx_xvftint_w_s(a: v8f32) -> v8i32 {
4092 __lasx_xvftint_w_s(a)4092 unsafe { __lasx_xvftint_w_s(a) }
4093}4093}
40944094
4095#[inline]4095#[inline]
4096#[target_feature(enable = "lasx")]4096#[target_feature(enable = "lasx")]
4097#[unstable(feature = "stdarch_loongarch", issue = "117427")]4097#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4098pub unsafe fn lasx_xvftint_l_d(a: v4f64) -> v4i64 {4098pub fn lasx_xvftint_l_d(a: v4f64) -> v4i64 {
4099 __lasx_xvftint_l_d(a)4099 unsafe { __lasx_xvftint_l_d(a) }
4100}4100}
41014101
4102#[inline]4102#[inline]
4103#[target_feature(enable = "lasx")]4103#[target_feature(enable = "lasx")]
4104#[unstable(feature = "stdarch_loongarch", issue = "117427")]4104#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4105pub unsafe fn lasx_xvftint_wu_s(a: v8f32) -> v8u32 {4105pub fn lasx_xvftint_wu_s(a: v8f32) -> v8u32 {
4106 __lasx_xvftint_wu_s(a)4106 unsafe { __lasx_xvftint_wu_s(a) }
4107}4107}
41084108
4109#[inline]4109#[inline]
4110#[target_feature(enable = "lasx")]4110#[target_feature(enable = "lasx")]
4111#[unstable(feature = "stdarch_loongarch", issue = "117427")]4111#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4112pub unsafe fn lasx_xvftint_lu_d(a: v4f64) -> v4u64 {4112pub fn lasx_xvftint_lu_d(a: v4f64) -> v4u64 {
4113 __lasx_xvftint_lu_d(a)4113 unsafe { __lasx_xvftint_lu_d(a) }
4114}4114}
41154115
4116#[inline]4116#[inline]
4117#[target_feature(enable = "lasx")]4117#[target_feature(enable = "lasx")]
4118#[unstable(feature = "stdarch_loongarch", issue = "117427")]4118#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4119pub unsafe fn lasx_xvftintrz_w_s(a: v8f32) -> v8i32 {4119pub fn lasx_xvftintrz_w_s(a: v8f32) -> v8i32 {
4120 __lasx_xvftintrz_w_s(a)4120 unsafe { __lasx_xvftintrz_w_s(a) }
4121}4121}
41224122
4123#[inline]4123#[inline]
4124#[target_feature(enable = "lasx")]4124#[target_feature(enable = "lasx")]
4125#[unstable(feature = "stdarch_loongarch", issue = "117427")]4125#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4126pub unsafe fn lasx_xvftintrz_l_d(a: v4f64) -> v4i64 {4126pub fn lasx_xvftintrz_l_d(a: v4f64) -> v4i64 {
4127 __lasx_xvftintrz_l_d(a)4127 unsafe { __lasx_xvftintrz_l_d(a) }
4128}4128}
41294129
4130#[inline]4130#[inline]
4131#[target_feature(enable = "lasx")]4131#[target_feature(enable = "lasx")]
4132#[unstable(feature = "stdarch_loongarch", issue = "117427")]4132#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4133pub unsafe fn lasx_xvftintrz_wu_s(a: v8f32) -> v8u32 {4133pub fn lasx_xvftintrz_wu_s(a: v8f32) -> v8u32 {
4134 __lasx_xvftintrz_wu_s(a)4134 unsafe { __lasx_xvftintrz_wu_s(a) }
4135}4135}
41364136
4137#[inline]4137#[inline]
4138#[target_feature(enable = "lasx")]4138#[target_feature(enable = "lasx")]
4139#[unstable(feature = "stdarch_loongarch", issue = "117427")]4139#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4140pub unsafe fn lasx_xvftintrz_lu_d(a: v4f64) -> v4u64 {4140pub fn lasx_xvftintrz_lu_d(a: v4f64) -> v4u64 {
4141 __lasx_xvftintrz_lu_d(a)4141 unsafe { __lasx_xvftintrz_lu_d(a) }
4142}4142}
41434143
4144#[inline]4144#[inline]
4145#[target_feature(enable = "lasx")]4145#[target_feature(enable = "lasx")]
4146#[unstable(feature = "stdarch_loongarch", issue = "117427")]4146#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4147pub unsafe fn lasx_xvffint_s_w(a: v8i32) -> v8f32 {4147pub fn lasx_xvffint_s_w(a: v8i32) -> v8f32 {
4148 __lasx_xvffint_s_w(a)4148 unsafe { __lasx_xvffint_s_w(a) }
4149}4149}
41504150
4151#[inline]4151#[inline]
4152#[target_feature(enable = "lasx")]4152#[target_feature(enable = "lasx")]
4153#[unstable(feature = "stdarch_loongarch", issue = "117427")]4153#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4154pub unsafe fn lasx_xvffint_d_l(a: v4i64) -> v4f64 {4154pub fn lasx_xvffint_d_l(a: v4i64) -> v4f64 {
4155 __lasx_xvffint_d_l(a)4155 unsafe { __lasx_xvffint_d_l(a) }
4156}4156}
41574157
4158#[inline]4158#[inline]
4159#[target_feature(enable = "lasx")]4159#[target_feature(enable = "lasx")]
4160#[unstable(feature = "stdarch_loongarch", issue = "117427")]4160#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4161pub unsafe fn lasx_xvffint_s_wu(a: v8u32) -> v8f32 {4161pub fn lasx_xvffint_s_wu(a: v8u32) -> v8f32 {
4162 __lasx_xvffint_s_wu(a)4162 unsafe { __lasx_xvffint_s_wu(a) }
4163}4163}
41644164
4165#[inline]4165#[inline]
4166#[target_feature(enable = "lasx")]4166#[target_feature(enable = "lasx")]
4167#[unstable(feature = "stdarch_loongarch", issue = "117427")]4167#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4168pub unsafe fn lasx_xvffint_d_lu(a: v4u64) -> v4f64 {4168pub fn lasx_xvffint_d_lu(a: v4u64) -> v4f64 {
4169 __lasx_xvffint_d_lu(a)4169 unsafe { __lasx_xvffint_d_lu(a) }
4170}4170}
41714171
4172#[inline]4172#[inline]
4173#[target_feature(enable = "lasx")]4173#[target_feature(enable = "lasx")]
4174#[unstable(feature = "stdarch_loongarch", issue = "117427")]4174#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4175pub unsafe fn lasx_xvreplve_b(a: v32i8, b: i32) -> v32i8 {4175pub fn lasx_xvreplve_b(a: v32i8, b: i32) -> v32i8 {
4176 __lasx_xvreplve_b(a, b)4176 unsafe { __lasx_xvreplve_b(a, b) }
4177}4177}
41784178
4179#[inline]4179#[inline]
4180#[target_feature(enable = "lasx")]4180#[target_feature(enable = "lasx")]
4181#[unstable(feature = "stdarch_loongarch", issue = "117427")]4181#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4182pub unsafe fn lasx_xvreplve_h(a: v16i16, b: i32) -> v16i16 {4182pub fn lasx_xvreplve_h(a: v16i16, b: i32) -> v16i16 {
4183 __lasx_xvreplve_h(a, b)4183 unsafe { __lasx_xvreplve_h(a, b) }
4184}4184}
41854185
4186#[inline]4186#[inline]
4187#[target_feature(enable = "lasx")]4187#[target_feature(enable = "lasx")]
4188#[unstable(feature = "stdarch_loongarch", issue = "117427")]4188#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4189pub unsafe fn lasx_xvreplve_w(a: v8i32, b: i32) -> v8i32 {4189pub fn lasx_xvreplve_w(a: v8i32, b: i32) -> v8i32 {
4190 __lasx_xvreplve_w(a, b)4190 unsafe { __lasx_xvreplve_w(a, b) }
4191}4191}
41924192
4193#[inline]4193#[inline]
4194#[target_feature(enable = "lasx")]4194#[target_feature(enable = "lasx")]
4195#[unstable(feature = "stdarch_loongarch", issue = "117427")]4195#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4196pub unsafe fn lasx_xvreplve_d(a: v4i64, b: i32) -> v4i64 {4196pub fn lasx_xvreplve_d(a: v4i64, b: i32) -> v4i64 {
4197 __lasx_xvreplve_d(a, b)4197 unsafe { __lasx_xvreplve_d(a, b) }
4198}4198}
41994199
4200#[inline]4200#[inline]
4201#[target_feature(enable = "lasx")]4201#[target_feature(enable = "lasx")]
4202#[rustc_legacy_const_generics(2)]4202#[rustc_legacy_const_generics(2)]
4203#[unstable(feature = "stdarch_loongarch", issue = "117427")]4203#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4204pub unsafe fn lasx_xvpermi_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {4204pub fn lasx_xvpermi_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {
4205 static_assert_uimm_bits!(IMM8, 8);4205 static_assert_uimm_bits!(IMM8, 8);
4206 __lasx_xvpermi_w(a, b, IMM8)4206 unsafe { __lasx_xvpermi_w(a, b, IMM8) }
4207}4207}
42084208
4209#[inline]4209#[inline]
4210#[target_feature(enable = "lasx")]4210#[target_feature(enable = "lasx")]
4211#[unstable(feature = "stdarch_loongarch", issue = "117427")]4211#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4212pub unsafe fn lasx_xvandn_v(a: v32u8, b: v32u8) -> v32u8 {4212pub fn lasx_xvandn_v(a: v32u8, b: v32u8) -> v32u8 {
4213 __lasx_xvandn_v(a, b)4213 unsafe { __lasx_xvandn_v(a, b) }
4214}4214}
42154215
4216#[inline]4216#[inline]
4217#[target_feature(enable = "lasx")]4217#[target_feature(enable = "lasx")]
4218#[unstable(feature = "stdarch_loongarch", issue = "117427")]4218#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4219pub unsafe fn lasx_xvneg_b(a: v32i8) -> v32i8 {4219pub fn lasx_xvneg_b(a: v32i8) -> v32i8 {
4220 __lasx_xvneg_b(a)4220 unsafe { __lasx_xvneg_b(a) }
4221}4221}
42224222
4223#[inline]4223#[inline]
4224#[target_feature(enable = "lasx")]4224#[target_feature(enable = "lasx")]
4225#[unstable(feature = "stdarch_loongarch", issue = "117427")]4225#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4226pub unsafe fn lasx_xvneg_h(a: v16i16) -> v16i16 {4226pub fn lasx_xvneg_h(a: v16i16) -> v16i16 {
4227 __lasx_xvneg_h(a)4227 unsafe { __lasx_xvneg_h(a) }
4228}4228}
42294229
4230#[inline]4230#[inline]
4231#[target_feature(enable = "lasx")]4231#[target_feature(enable = "lasx")]
4232#[unstable(feature = "stdarch_loongarch", issue = "117427")]4232#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4233pub unsafe fn lasx_xvneg_w(a: v8i32) -> v8i32 {4233pub fn lasx_xvneg_w(a: v8i32) -> v8i32 {
4234 __lasx_xvneg_w(a)4234 unsafe { __lasx_xvneg_w(a) }
4235}4235}
42364236
4237#[inline]4237#[inline]
4238#[target_feature(enable = "lasx")]4238#[target_feature(enable = "lasx")]
4239#[unstable(feature = "stdarch_loongarch", issue = "117427")]4239#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4240pub unsafe fn lasx_xvneg_d(a: v4i64) -> v4i64 {4240pub fn lasx_xvneg_d(a: v4i64) -> v4i64 {
4241 __lasx_xvneg_d(a)4241 unsafe { __lasx_xvneg_d(a) }
4242}4242}
42434243
4244#[inline]4244#[inline]
4245#[target_feature(enable = "lasx")]4245#[target_feature(enable = "lasx")]
4246#[unstable(feature = "stdarch_loongarch", issue = "117427")]4246#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4247pub unsafe fn lasx_xvmuh_b(a: v32i8, b: v32i8) -> v32i8 {4247pub fn lasx_xvmuh_b(a: v32i8, b: v32i8) -> v32i8 {
4248 __lasx_xvmuh_b(a, b)4248 unsafe { __lasx_xvmuh_b(a, b) }
4249}4249}
42504250
4251#[inline]4251#[inline]
4252#[target_feature(enable = "lasx")]4252#[target_feature(enable = "lasx")]
4253#[unstable(feature = "stdarch_loongarch", issue = "117427")]4253#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4254pub unsafe fn lasx_xvmuh_h(a: v16i16, b: v16i16) -> v16i16 {4254pub fn lasx_xvmuh_h(a: v16i16, b: v16i16) -> v16i16 {
4255 __lasx_xvmuh_h(a, b)4255 unsafe { __lasx_xvmuh_h(a, b) }
4256}4256}
42574257
4258#[inline]4258#[inline]
4259#[target_feature(enable = "lasx")]4259#[target_feature(enable = "lasx")]
4260#[unstable(feature = "stdarch_loongarch", issue = "117427")]4260#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4261pub unsafe fn lasx_xvmuh_w(a: v8i32, b: v8i32) -> v8i32 {4261pub fn lasx_xvmuh_w(a: v8i32, b: v8i32) -> v8i32 {
4262 __lasx_xvmuh_w(a, b)4262 unsafe { __lasx_xvmuh_w(a, b) }
4263}4263}
42644264
4265#[inline]4265#[inline]
4266#[target_feature(enable = "lasx")]4266#[target_feature(enable = "lasx")]
4267#[unstable(feature = "stdarch_loongarch", issue = "117427")]4267#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4268pub unsafe fn lasx_xvmuh_d(a: v4i64, b: v4i64) -> v4i64 {4268pub fn lasx_xvmuh_d(a: v4i64, b: v4i64) -> v4i64 {
4269 __lasx_xvmuh_d(a, b)4269 unsafe { __lasx_xvmuh_d(a, b) }
4270}4270}
42714271
4272#[inline]4272#[inline]
4273#[target_feature(enable = "lasx")]4273#[target_feature(enable = "lasx")]
4274#[unstable(feature = "stdarch_loongarch", issue = "117427")]4274#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4275pub unsafe fn lasx_xvmuh_bu(a: v32u8, b: v32u8) -> v32u8 {4275pub fn lasx_xvmuh_bu(a: v32u8, b: v32u8) -> v32u8 {
4276 __lasx_xvmuh_bu(a, b)4276 unsafe { __lasx_xvmuh_bu(a, b) }
4277}4277}
42784278
4279#[inline]4279#[inline]
4280#[target_feature(enable = "lasx")]4280#[target_feature(enable = "lasx")]
4281#[unstable(feature = "stdarch_loongarch", issue = "117427")]4281#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4282pub unsafe fn lasx_xvmuh_hu(a: v16u16, b: v16u16) -> v16u16 {4282pub fn lasx_xvmuh_hu(a: v16u16, b: v16u16) -> v16u16 {
4283 __lasx_xvmuh_hu(a, b)4283 unsafe { __lasx_xvmuh_hu(a, b) }
4284}4284}
42854285
4286#[inline]4286#[inline]
4287#[target_feature(enable = "lasx")]4287#[target_feature(enable = "lasx")]
4288#[unstable(feature = "stdarch_loongarch", issue = "117427")]4288#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4289pub unsafe fn lasx_xvmuh_wu(a: v8u32, b: v8u32) -> v8u32 {4289pub fn lasx_xvmuh_wu(a: v8u32, b: v8u32) -> v8u32 {
4290 __lasx_xvmuh_wu(a, b)4290 unsafe { __lasx_xvmuh_wu(a, b) }
4291}4291}
42924292
4293#[inline]4293#[inline]
4294#[target_feature(enable = "lasx")]4294#[target_feature(enable = "lasx")]
4295#[unstable(feature = "stdarch_loongarch", issue = "117427")]4295#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4296pub unsafe fn lasx_xvmuh_du(a: v4u64, b: v4u64) -> v4u64 {4296pub fn lasx_xvmuh_du(a: v4u64, b: v4u64) -> v4u64 {
4297 __lasx_xvmuh_du(a, b)4297 unsafe { __lasx_xvmuh_du(a, b) }
4298}4298}
42994299
4300#[inline]4300#[inline]
4301#[target_feature(enable = "lasx")]4301#[target_feature(enable = "lasx")]
4302#[rustc_legacy_const_generics(1)]4302#[rustc_legacy_const_generics(1)]
4303#[unstable(feature = "stdarch_loongarch", issue = "117427")]4303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4304pub unsafe fn lasx_xvsllwil_h_b<const IMM3: u32>(a: v32i8) -> v16i16 {4304pub fn lasx_xvsllwil_h_b<const IMM3: u32>(a: v32i8) -> v16i16 {
4305 static_assert_uimm_bits!(IMM3, 3);4305 static_assert_uimm_bits!(IMM3, 3);
4306 __lasx_xvsllwil_h_b(a, IMM3)4306 unsafe { __lasx_xvsllwil_h_b(a, IMM3) }
4307}4307}
43084308
4309#[inline]4309#[inline]
4310#[target_feature(enable = "lasx")]4310#[target_feature(enable = "lasx")]
4311#[rustc_legacy_const_generics(1)]4311#[rustc_legacy_const_generics(1)]
4312#[unstable(feature = "stdarch_loongarch", issue = "117427")]4312#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4313pub unsafe fn lasx_xvsllwil_w_h<const IMM4: u32>(a: v16i16) -> v8i32 {4313pub fn lasx_xvsllwil_w_h<const IMM4: u32>(a: v16i16) -> v8i32 {
4314 static_assert_uimm_bits!(IMM4, 4);4314 static_assert_uimm_bits!(IMM4, 4);
4315 __lasx_xvsllwil_w_h(a, IMM4)4315 unsafe { __lasx_xvsllwil_w_h(a, IMM4) }
4316}4316}
43174317
4318#[inline]4318#[inline]
4319#[target_feature(enable = "lasx")]4319#[target_feature(enable = "lasx")]
4320#[rustc_legacy_const_generics(1)]4320#[rustc_legacy_const_generics(1)]
4321#[unstable(feature = "stdarch_loongarch", issue = "117427")]4321#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4322pub unsafe fn lasx_xvsllwil_d_w<const IMM5: u32>(a: v8i32) -> v4i64 {4322pub fn lasx_xvsllwil_d_w<const IMM5: u32>(a: v8i32) -> v4i64 {
4323 static_assert_uimm_bits!(IMM5, 5);4323 static_assert_uimm_bits!(IMM5, 5);
4324 __lasx_xvsllwil_d_w(a, IMM5)4324 unsafe { __lasx_xvsllwil_d_w(a, IMM5) }
4325}4325}
43264326
4327#[inline]4327#[inline]
4328#[target_feature(enable = "lasx")]4328#[target_feature(enable = "lasx")]
4329#[rustc_legacy_const_generics(1)]4329#[rustc_legacy_const_generics(1)]
4330#[unstable(feature = "stdarch_loongarch", issue = "117427")]4330#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4331pub unsafe fn lasx_xvsllwil_hu_bu<const IMM3: u32>(a: v32u8) -> v16u16 {4331pub fn lasx_xvsllwil_hu_bu<const IMM3: u32>(a: v32u8) -> v16u16 {
4332 static_assert_uimm_bits!(IMM3, 3);4332 static_assert_uimm_bits!(IMM3, 3);
4333 __lasx_xvsllwil_hu_bu(a, IMM3)4333 unsafe { __lasx_xvsllwil_hu_bu(a, IMM3) }
4334}4334}
43354335
4336#[inline]4336#[inline]
4337#[target_feature(enable = "lasx")]4337#[target_feature(enable = "lasx")]
4338#[rustc_legacy_const_generics(1)]4338#[rustc_legacy_const_generics(1)]
4339#[unstable(feature = "stdarch_loongarch", issue = "117427")]4339#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4340pub unsafe fn lasx_xvsllwil_wu_hu<const IMM4: u32>(a: v16u16) -> v8u32 {4340pub fn lasx_xvsllwil_wu_hu<const IMM4: u32>(a: v16u16) -> v8u32 {
4341 static_assert_uimm_bits!(IMM4, 4);4341 static_assert_uimm_bits!(IMM4, 4);
4342 __lasx_xvsllwil_wu_hu(a, IMM4)4342 unsafe { __lasx_xvsllwil_wu_hu(a, IMM4) }
4343}4343}
43444344
4345#[inline]4345#[inline]
4346#[target_feature(enable = "lasx")]4346#[target_feature(enable = "lasx")]
4347#[rustc_legacy_const_generics(1)]4347#[rustc_legacy_const_generics(1)]
4348#[unstable(feature = "stdarch_loongarch", issue = "117427")]4348#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4349pub unsafe fn lasx_xvsllwil_du_wu<const IMM5: u32>(a: v8u32) -> v4u64 {4349pub fn lasx_xvsllwil_du_wu<const IMM5: u32>(a: v8u32) -> v4u64 {
4350 static_assert_uimm_bits!(IMM5, 5);4350 static_assert_uimm_bits!(IMM5, 5);
4351 __lasx_xvsllwil_du_wu(a, IMM5)4351 unsafe { __lasx_xvsllwil_du_wu(a, IMM5) }
4352}4352}
43534353
4354#[inline]4354#[inline]
4355#[target_feature(enable = "lasx")]4355#[target_feature(enable = "lasx")]
4356#[unstable(feature = "stdarch_loongarch", issue = "117427")]4356#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4357pub unsafe fn lasx_xvsran_b_h(a: v16i16, b: v16i16) -> v32i8 {4357pub fn lasx_xvsran_b_h(a: v16i16, b: v16i16) -> v32i8 {
4358 __lasx_xvsran_b_h(a, b)4358 unsafe { __lasx_xvsran_b_h(a, b) }
4359}4359}
43604360
4361#[inline]4361#[inline]
4362#[target_feature(enable = "lasx")]4362#[target_feature(enable = "lasx")]
4363#[unstable(feature = "stdarch_loongarch", issue = "117427")]4363#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4364pub unsafe fn lasx_xvsran_h_w(a: v8i32, b: v8i32) -> v16i16 {4364pub fn lasx_xvsran_h_w(a: v8i32, b: v8i32) -> v16i16 {
4365 __lasx_xvsran_h_w(a, b)4365 unsafe { __lasx_xvsran_h_w(a, b) }
4366}4366}
43674367
4368#[inline]4368#[inline]
4369#[target_feature(enable = "lasx")]4369#[target_feature(enable = "lasx")]
4370#[unstable(feature = "stdarch_loongarch", issue = "117427")]4370#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4371pub unsafe fn lasx_xvsran_w_d(a: v4i64, b: v4i64) -> v8i32 {4371pub fn lasx_xvsran_w_d(a: v4i64, b: v4i64) -> v8i32 {
4372 __lasx_xvsran_w_d(a, b)4372 unsafe { __lasx_xvsran_w_d(a, b) }
4373}4373}
43744374
4375#[inline]4375#[inline]
4376#[target_feature(enable = "lasx")]4376#[target_feature(enable = "lasx")]
4377#[unstable(feature = "stdarch_loongarch", issue = "117427")]4377#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4378pub unsafe fn lasx_xvssran_b_h(a: v16i16, b: v16i16) -> v32i8 {4378pub fn lasx_xvssran_b_h(a: v16i16, b: v16i16) -> v32i8 {
4379 __lasx_xvssran_b_h(a, b)4379 unsafe { __lasx_xvssran_b_h(a, b) }
4380}4380}
43814381
4382#[inline]4382#[inline]
4383#[target_feature(enable = "lasx")]4383#[target_feature(enable = "lasx")]
4384#[unstable(feature = "stdarch_loongarch", issue = "117427")]4384#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4385pub unsafe fn lasx_xvssran_h_w(a: v8i32, b: v8i32) -> v16i16 {4385pub fn lasx_xvssran_h_w(a: v8i32, b: v8i32) -> v16i16 {
4386 __lasx_xvssran_h_w(a, b)4386 unsafe { __lasx_xvssran_h_w(a, b) }
4387}4387}
43884388
4389#[inline]4389#[inline]
4390#[target_feature(enable = "lasx")]4390#[target_feature(enable = "lasx")]
4391#[unstable(feature = "stdarch_loongarch", issue = "117427")]4391#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4392pub unsafe fn lasx_xvssran_w_d(a: v4i64, b: v4i64) -> v8i32 {4392pub fn lasx_xvssran_w_d(a: v4i64, b: v4i64) -> v8i32 {
4393 __lasx_xvssran_w_d(a, b)4393 unsafe { __lasx_xvssran_w_d(a, b) }
4394}4394}
43954395
4396#[inline]4396#[inline]
4397#[target_feature(enable = "lasx")]4397#[target_feature(enable = "lasx")]
4398#[unstable(feature = "stdarch_loongarch", issue = "117427")]4398#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4399pub unsafe fn lasx_xvssran_bu_h(a: v16u16, b: v16u16) -> v32u8 {4399pub fn lasx_xvssran_bu_h(a: v16u16, b: v16u16) -> v32u8 {
4400 __lasx_xvssran_bu_h(a, b)4400 unsafe { __lasx_xvssran_bu_h(a, b) }
4401}4401}
44024402
4403#[inline]4403#[inline]
4404#[target_feature(enable = "lasx")]4404#[target_feature(enable = "lasx")]
4405#[unstable(feature = "stdarch_loongarch", issue = "117427")]4405#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4406pub unsafe fn lasx_xvssran_hu_w(a: v8u32, b: v8u32) -> v16u16 {4406pub fn lasx_xvssran_hu_w(a: v8u32, b: v8u32) -> v16u16 {
4407 __lasx_xvssran_hu_w(a, b)4407 unsafe { __lasx_xvssran_hu_w(a, b) }
4408}4408}
44094409
4410#[inline]4410#[inline]
4411#[target_feature(enable = "lasx")]4411#[target_feature(enable = "lasx")]
4412#[unstable(feature = "stdarch_loongarch", issue = "117427")]4412#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4413pub unsafe fn lasx_xvssran_wu_d(a: v4u64, b: v4u64) -> v8u32 {4413pub fn lasx_xvssran_wu_d(a: v4u64, b: v4u64) -> v8u32 {
4414 __lasx_xvssran_wu_d(a, b)4414 unsafe { __lasx_xvssran_wu_d(a, b) }
4415}4415}
44164416
4417#[inline]4417#[inline]
4418#[target_feature(enable = "lasx")]4418#[target_feature(enable = "lasx")]
4419#[unstable(feature = "stdarch_loongarch", issue = "117427")]4419#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4420pub unsafe fn lasx_xvsrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {4420pub fn lasx_xvsrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {
4421 __lasx_xvsrarn_b_h(a, b)4421 unsafe { __lasx_xvsrarn_b_h(a, b) }
4422}4422}
44234423
4424#[inline]4424#[inline]
4425#[target_feature(enable = "lasx")]4425#[target_feature(enable = "lasx")]
4426#[unstable(feature = "stdarch_loongarch", issue = "117427")]4426#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4427pub unsafe fn lasx_xvsrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {4427pub fn lasx_xvsrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {
4428 __lasx_xvsrarn_h_w(a, b)4428 unsafe { __lasx_xvsrarn_h_w(a, b) }
4429}4429}
44304430
4431#[inline]4431#[inline]
4432#[target_feature(enable = "lasx")]4432#[target_feature(enable = "lasx")]
4433#[unstable(feature = "stdarch_loongarch", issue = "117427")]4433#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4434pub unsafe fn lasx_xvsrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {4434pub fn lasx_xvsrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {
4435 __lasx_xvsrarn_w_d(a, b)4435 unsafe { __lasx_xvsrarn_w_d(a, b) }
4436}4436}
44374437
4438#[inline]4438#[inline]
4439#[target_feature(enable = "lasx")]4439#[target_feature(enable = "lasx")]
4440#[unstable(feature = "stdarch_loongarch", issue = "117427")]4440#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4441pub unsafe fn lasx_xvssrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {4441pub fn lasx_xvssrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {
4442 __lasx_xvssrarn_b_h(a, b)4442 unsafe { __lasx_xvssrarn_b_h(a, b) }
4443}4443}
44444444
4445#[inline]4445#[inline]
4446#[target_feature(enable = "lasx")]4446#[target_feature(enable = "lasx")]
4447#[unstable(feature = "stdarch_loongarch", issue = "117427")]4447#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4448pub unsafe fn lasx_xvssrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {4448pub fn lasx_xvssrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {
4449 __lasx_xvssrarn_h_w(a, b)4449 unsafe { __lasx_xvssrarn_h_w(a, b) }
4450}4450}
44514451
4452#[inline]4452#[inline]
4453#[target_feature(enable = "lasx")]4453#[target_feature(enable = "lasx")]
4454#[unstable(feature = "stdarch_loongarch", issue = "117427")]4454#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4455pub unsafe fn lasx_xvssrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {4455pub fn lasx_xvssrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {
4456 __lasx_xvssrarn_w_d(a, b)4456 unsafe { __lasx_xvssrarn_w_d(a, b) }
4457}4457}
44584458
4459#[inline]4459#[inline]
4460#[target_feature(enable = "lasx")]4460#[target_feature(enable = "lasx")]
4461#[unstable(feature = "stdarch_loongarch", issue = "117427")]4461#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4462pub unsafe fn lasx_xvssrarn_bu_h(a: v16u16, b: v16u16) -> v32u8 {4462pub fn lasx_xvssrarn_bu_h(a: v16u16, b: v16u16) -> v32u8 {
4463 __lasx_xvssrarn_bu_h(a, b)4463 unsafe { __lasx_xvssrarn_bu_h(a, b) }
4464}4464}
44654465
4466#[inline]4466#[inline]
4467#[target_feature(enable = "lasx")]4467#[target_feature(enable = "lasx")]
4468#[unstable(feature = "stdarch_loongarch", issue = "117427")]4468#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4469pub unsafe fn lasx_xvssrarn_hu_w(a: v8u32, b: v8u32) -> v16u16 {4469pub fn lasx_xvssrarn_hu_w(a: v8u32, b: v8u32) -> v16u16 {
4470 __lasx_xvssrarn_hu_w(a, b)4470 unsafe { __lasx_xvssrarn_hu_w(a, b) }
4471}4471}
44724472
4473#[inline]4473#[inline]
4474#[target_feature(enable = "lasx")]4474#[target_feature(enable = "lasx")]
4475#[unstable(feature = "stdarch_loongarch", issue = "117427")]4475#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4476pub unsafe fn lasx_xvssrarn_wu_d(a: v4u64, b: v4u64) -> v8u32 {4476pub fn lasx_xvssrarn_wu_d(a: v4u64, b: v4u64) -> v8u32 {
4477 __lasx_xvssrarn_wu_d(a, b)4477 unsafe { __lasx_xvssrarn_wu_d(a, b) }
4478}4478}
44794479
4480#[inline]4480#[inline]
4481#[target_feature(enable = "lasx")]4481#[target_feature(enable = "lasx")]
4482#[unstable(feature = "stdarch_loongarch", issue = "117427")]4482#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4483pub unsafe fn lasx_xvsrln_b_h(a: v16i16, b: v16i16) -> v32i8 {4483pub fn lasx_xvsrln_b_h(a: v16i16, b: v16i16) -> v32i8 {
4484 __lasx_xvsrln_b_h(a, b)4484 unsafe { __lasx_xvsrln_b_h(a, b) }
4485}4485}
44864486
4487#[inline]4487#[inline]
4488#[target_feature(enable = "lasx")]4488#[target_feature(enable = "lasx")]
4489#[unstable(feature = "stdarch_loongarch", issue = "117427")]4489#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4490pub unsafe fn lasx_xvsrln_h_w(a: v8i32, b: v8i32) -> v16i16 {4490pub fn lasx_xvsrln_h_w(a: v8i32, b: v8i32) -> v16i16 {
4491 __lasx_xvsrln_h_w(a, b)4491 unsafe { __lasx_xvsrln_h_w(a, b) }
4492}4492}
44934493
4494#[inline]4494#[inline]
4495#[target_feature(enable = "lasx")]4495#[target_feature(enable = "lasx")]
4496#[unstable(feature = "stdarch_loongarch", issue = "117427")]4496#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4497pub unsafe fn lasx_xvsrln_w_d(a: v4i64, b: v4i64) -> v8i32 {4497pub fn lasx_xvsrln_w_d(a: v4i64, b: v4i64) -> v8i32 {
4498 __lasx_xvsrln_w_d(a, b)4498 unsafe { __lasx_xvsrln_w_d(a, b) }
4499}4499}
45004500
4501#[inline]4501#[inline]
4502#[target_feature(enable = "lasx")]4502#[target_feature(enable = "lasx")]
4503#[unstable(feature = "stdarch_loongarch", issue = "117427")]4503#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4504pub unsafe fn lasx_xvssrln_bu_h(a: v16u16, b: v16u16) -> v32u8 {4504pub fn lasx_xvssrln_bu_h(a: v16u16, b: v16u16) -> v32u8 {
4505 __lasx_xvssrln_bu_h(a, b)4505 unsafe { __lasx_xvssrln_bu_h(a, b) }
4506}4506}
45074507
4508#[inline]4508#[inline]
4509#[target_feature(enable = "lasx")]4509#[target_feature(enable = "lasx")]
4510#[unstable(feature = "stdarch_loongarch", issue = "117427")]4510#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4511pub unsafe fn lasx_xvssrln_hu_w(a: v8u32, b: v8u32) -> v16u16 {4511pub fn lasx_xvssrln_hu_w(a: v8u32, b: v8u32) -> v16u16 {
4512 __lasx_xvssrln_hu_w(a, b)4512 unsafe { __lasx_xvssrln_hu_w(a, b) }
4513}4513}
45144514
4515#[inline]4515#[inline]
4516#[target_feature(enable = "lasx")]4516#[target_feature(enable = "lasx")]
4517#[unstable(feature = "stdarch_loongarch", issue = "117427")]4517#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4518pub unsafe fn lasx_xvssrln_wu_d(a: v4u64, b: v4u64) -> v8u32 {4518pub fn lasx_xvssrln_wu_d(a: v4u64, b: v4u64) -> v8u32 {
4519 __lasx_xvssrln_wu_d(a, b)4519 unsafe { __lasx_xvssrln_wu_d(a, b) }
4520}4520}
45214521
4522#[inline]4522#[inline]
4523#[target_feature(enable = "lasx")]4523#[target_feature(enable = "lasx")]
4524#[unstable(feature = "stdarch_loongarch", issue = "117427")]4524#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4525pub unsafe fn lasx_xvsrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {4525pub fn lasx_xvsrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {
4526 __lasx_xvsrlrn_b_h(a, b)4526 unsafe { __lasx_xvsrlrn_b_h(a, b) }
4527}4527}
45284528
4529#[inline]4529#[inline]
4530#[target_feature(enable = "lasx")]4530#[target_feature(enable = "lasx")]
4531#[unstable(feature = "stdarch_loongarch", issue = "117427")]4531#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4532pub unsafe fn lasx_xvsrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {4532pub fn lasx_xvsrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {
4533 __lasx_xvsrlrn_h_w(a, b)4533 unsafe { __lasx_xvsrlrn_h_w(a, b) }
4534}4534}
45354535
4536#[inline]4536#[inline]
4537#[target_feature(enable = "lasx")]4537#[target_feature(enable = "lasx")]
4538#[unstable(feature = "stdarch_loongarch", issue = "117427")]4538#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4539pub unsafe fn lasx_xvsrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {4539pub fn lasx_xvsrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {
4540 __lasx_xvsrlrn_w_d(a, b)4540 unsafe { __lasx_xvsrlrn_w_d(a, b) }
4541}4541}
45424542
4543#[inline]4543#[inline]
4544#[target_feature(enable = "lasx")]4544#[target_feature(enable = "lasx")]
4545#[unstable(feature = "stdarch_loongarch", issue = "117427")]4545#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4546pub unsafe fn lasx_xvssrlrn_bu_h(a: v16u16, b: v16u16) -> v32u8 {4546pub fn lasx_xvssrlrn_bu_h(a: v16u16, b: v16u16) -> v32u8 {
4547 __lasx_xvssrlrn_bu_h(a, b)4547 unsafe { __lasx_xvssrlrn_bu_h(a, b) }
4548}4548}
45494549
4550#[inline]4550#[inline]
4551#[target_feature(enable = "lasx")]4551#[target_feature(enable = "lasx")]
4552#[unstable(feature = "stdarch_loongarch", issue = "117427")]4552#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4553pub unsafe fn lasx_xvssrlrn_hu_w(a: v8u32, b: v8u32) -> v16u16 {4553pub fn lasx_xvssrlrn_hu_w(a: v8u32, b: v8u32) -> v16u16 {
4554 __lasx_xvssrlrn_hu_w(a, b)4554 unsafe { __lasx_xvssrlrn_hu_w(a, b) }
4555}4555}
45564556
4557#[inline]4557#[inline]
4558#[target_feature(enable = "lasx")]4558#[target_feature(enable = "lasx")]
4559#[unstable(feature = "stdarch_loongarch", issue = "117427")]4559#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4560pub unsafe fn lasx_xvssrlrn_wu_d(a: v4u64, b: v4u64) -> v8u32 {4560pub fn lasx_xvssrlrn_wu_d(a: v4u64, b: v4u64) -> v8u32 {
4561 __lasx_xvssrlrn_wu_d(a, b)4561 unsafe { __lasx_xvssrlrn_wu_d(a, b) }
4562}4562}
45634563
4564#[inline]4564#[inline]
4565#[target_feature(enable = "lasx")]4565#[target_feature(enable = "lasx")]
4566#[rustc_legacy_const_generics(2)]4566#[rustc_legacy_const_generics(2)]
4567#[unstable(feature = "stdarch_loongarch", issue = "117427")]4567#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4568pub unsafe fn lasx_xvfrstpi_b<const IMM5: u32>(a: v32i8, b: v32i8) -> v32i8 {4568pub fn lasx_xvfrstpi_b<const IMM5: u32>(a: v32i8, b: v32i8) -> v32i8 {
4569 static_assert_uimm_bits!(IMM5, 5);4569 static_assert_uimm_bits!(IMM5, 5);
4570 __lasx_xvfrstpi_b(a, b, IMM5)4570 unsafe { __lasx_xvfrstpi_b(a, b, IMM5) }
4571}4571}
45724572
4573#[inline]4573#[inline]
4574#[target_feature(enable = "lasx")]4574#[target_feature(enable = "lasx")]
4575#[rustc_legacy_const_generics(2)]4575#[rustc_legacy_const_generics(2)]
4576#[unstable(feature = "stdarch_loongarch", issue = "117427")]4576#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4577pub unsafe fn lasx_xvfrstpi_h<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {4577pub fn lasx_xvfrstpi_h<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
4578 static_assert_uimm_bits!(IMM5, 5);4578 static_assert_uimm_bits!(IMM5, 5);
4579 __lasx_xvfrstpi_h(a, b, IMM5)4579 unsafe { __lasx_xvfrstpi_h(a, b, IMM5) }
4580}4580}
45814581
4582#[inline]4582#[inline]
4583#[target_feature(enable = "lasx")]4583#[target_feature(enable = "lasx")]
4584#[unstable(feature = "stdarch_loongarch", issue = "117427")]4584#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4585pub unsafe fn lasx_xvfrstp_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {4585pub fn lasx_xvfrstp_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
4586 __lasx_xvfrstp_b(a, b, c)4586 unsafe { __lasx_xvfrstp_b(a, b, c) }
4587}4587}
45884588
4589#[inline]4589#[inline]
4590#[target_feature(enable = "lasx")]4590#[target_feature(enable = "lasx")]
4591#[unstable(feature = "stdarch_loongarch", issue = "117427")]4591#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4592pub unsafe fn lasx_xvfrstp_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {4592pub fn lasx_xvfrstp_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
4593 __lasx_xvfrstp_h(a, b, c)4593 unsafe { __lasx_xvfrstp_h(a, b, c) }
4594}4594}
45954595
4596#[inline]4596#[inline]
4597#[target_feature(enable = "lasx")]4597#[target_feature(enable = "lasx")]
4598#[rustc_legacy_const_generics(2)]4598#[rustc_legacy_const_generics(2)]
4599#[unstable(feature = "stdarch_loongarch", issue = "117427")]4599#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4600pub unsafe fn lasx_xvshuf4i_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {4600pub fn lasx_xvshuf4i_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {
4601 static_assert_uimm_bits!(IMM8, 8);4601 static_assert_uimm_bits!(IMM8, 8);
4602 __lasx_xvshuf4i_d(a, b, IMM8)4602 unsafe { __lasx_xvshuf4i_d(a, b, IMM8) }
4603}4603}
46044604
4605#[inline]4605#[inline]
4606#[target_feature(enable = "lasx")]4606#[target_feature(enable = "lasx")]
4607#[rustc_legacy_const_generics(1)]4607#[rustc_legacy_const_generics(1)]
4608#[unstable(feature = "stdarch_loongarch", issue = "117427")]4608#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4609pub unsafe fn lasx_xvbsrl_v<const IMM5: u32>(a: v32i8) -> v32i8 {4609pub fn lasx_xvbsrl_v<const IMM5: u32>(a: v32i8) -> v32i8 {
4610 static_assert_uimm_bits!(IMM5, 5);4610 static_assert_uimm_bits!(IMM5, 5);
4611 __lasx_xvbsrl_v(a, IMM5)4611 unsafe { __lasx_xvbsrl_v(a, IMM5) }
4612}4612}
46134613
4614#[inline]4614#[inline]
4615#[target_feature(enable = "lasx")]4615#[target_feature(enable = "lasx")]
4616#[rustc_legacy_const_generics(1)]4616#[rustc_legacy_const_generics(1)]
4617#[unstable(feature = "stdarch_loongarch", issue = "117427")]4617#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4618pub unsafe fn lasx_xvbsll_v<const IMM5: u32>(a: v32i8) -> v32i8 {4618pub fn lasx_xvbsll_v<const IMM5: u32>(a: v32i8) -> v32i8 {
4619 static_assert_uimm_bits!(IMM5, 5);4619 static_assert_uimm_bits!(IMM5, 5);
4620 __lasx_xvbsll_v(a, IMM5)4620 unsafe { __lasx_xvbsll_v(a, IMM5) }
4621}4621}
46224622
4623#[inline]4623#[inline]
4624#[target_feature(enable = "lasx")]4624#[target_feature(enable = "lasx")]
4625#[rustc_legacy_const_generics(2)]4625#[rustc_legacy_const_generics(2)]
4626#[unstable(feature = "stdarch_loongarch", issue = "117427")]4626#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4627pub unsafe fn lasx_xvextrins_b<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {4627pub fn lasx_xvextrins_b<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {
4628 static_assert_uimm_bits!(IMM8, 8);4628 static_assert_uimm_bits!(IMM8, 8);
4629 __lasx_xvextrins_b(a, b, IMM8)4629 unsafe { __lasx_xvextrins_b(a, b, IMM8) }
4630}4630}
46314631
4632#[inline]4632#[inline]
4633#[target_feature(enable = "lasx")]4633#[target_feature(enable = "lasx")]
4634#[rustc_legacy_const_generics(2)]4634#[rustc_legacy_const_generics(2)]
4635#[unstable(feature = "stdarch_loongarch", issue = "117427")]4635#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4636pub unsafe fn lasx_xvextrins_h<const IMM8: u32>(a: v16i16, b: v16i16) -> v16i16 {4636pub fn lasx_xvextrins_h<const IMM8: u32>(a: v16i16, b: v16i16) -> v16i16 {
4637 static_assert_uimm_bits!(IMM8, 8);4637 static_assert_uimm_bits!(IMM8, 8);
4638 __lasx_xvextrins_h(a, b, IMM8)4638 unsafe { __lasx_xvextrins_h(a, b, IMM8) }
4639}4639}
46404640
4641#[inline]4641#[inline]
4642#[target_feature(enable = "lasx")]4642#[target_feature(enable = "lasx")]
4643#[rustc_legacy_const_generics(2)]4643#[rustc_legacy_const_generics(2)]
4644#[unstable(feature = "stdarch_loongarch", issue = "117427")]4644#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4645pub unsafe fn lasx_xvextrins_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {4645pub fn lasx_xvextrins_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {
4646 static_assert_uimm_bits!(IMM8, 8);4646 static_assert_uimm_bits!(IMM8, 8);
4647 __lasx_xvextrins_w(a, b, IMM8)4647 unsafe { __lasx_xvextrins_w(a, b, IMM8) }
4648}4648}
46494649
4650#[inline]4650#[inline]
4651#[target_feature(enable = "lasx")]4651#[target_feature(enable = "lasx")]
4652#[rustc_legacy_const_generics(2)]4652#[rustc_legacy_const_generics(2)]
4653#[unstable(feature = "stdarch_loongarch", issue = "117427")]4653#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4654pub unsafe fn lasx_xvextrins_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {4654pub fn lasx_xvextrins_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {
4655 static_assert_uimm_bits!(IMM8, 8);4655 static_assert_uimm_bits!(IMM8, 8);
4656 __lasx_xvextrins_d(a, b, IMM8)4656 unsafe { __lasx_xvextrins_d(a, b, IMM8) }
4657}4657}
46584658
4659#[inline]4659#[inline]
4660#[target_feature(enable = "lasx")]4660#[target_feature(enable = "lasx")]
4661#[unstable(feature = "stdarch_loongarch", issue = "117427")]4661#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4662pub unsafe fn lasx_xvmskltz_b(a: v32i8) -> v32i8 {4662pub fn lasx_xvmskltz_b(a: v32i8) -> v32i8 {
4663 __lasx_xvmskltz_b(a)4663 unsafe { __lasx_xvmskltz_b(a) }
4664}4664}
46654665
4666#[inline]4666#[inline]
4667#[target_feature(enable = "lasx")]4667#[target_feature(enable = "lasx")]
4668#[unstable(feature = "stdarch_loongarch", issue = "117427")]4668#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4669pub unsafe fn lasx_xvmskltz_h(a: v16i16) -> v16i16 {4669pub fn lasx_xvmskltz_h(a: v16i16) -> v16i16 {
4670 __lasx_xvmskltz_h(a)4670 unsafe { __lasx_xvmskltz_h(a) }
4671}4671}
46724672
4673#[inline]4673#[inline]
4674#[target_feature(enable = "lasx")]4674#[target_feature(enable = "lasx")]
4675#[unstable(feature = "stdarch_loongarch", issue = "117427")]4675#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4676pub unsafe fn lasx_xvmskltz_w(a: v8i32) -> v8i32 {4676pub fn lasx_xvmskltz_w(a: v8i32) -> v8i32 {
4677 __lasx_xvmskltz_w(a)4677 unsafe { __lasx_xvmskltz_w(a) }
4678}4678}
46794679
4680#[inline]4680#[inline]
4681#[target_feature(enable = "lasx")]4681#[target_feature(enable = "lasx")]
4682#[unstable(feature = "stdarch_loongarch", issue = "117427")]4682#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4683pub unsafe fn lasx_xvmskltz_d(a: v4i64) -> v4i64 {4683pub fn lasx_xvmskltz_d(a: v4i64) -> v4i64 {
4684 __lasx_xvmskltz_d(a)4684 unsafe { __lasx_xvmskltz_d(a) }
4685}4685}
46864686
4687#[inline]4687#[inline]
4688#[target_feature(enable = "lasx")]4688#[target_feature(enable = "lasx")]
4689#[unstable(feature = "stdarch_loongarch", issue = "117427")]4689#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4690pub unsafe fn lasx_xvsigncov_b(a: v32i8, b: v32i8) -> v32i8 {4690pub fn lasx_xvsigncov_b(a: v32i8, b: v32i8) -> v32i8 {
4691 __lasx_xvsigncov_b(a, b)4691 unsafe { __lasx_xvsigncov_b(a, b) }
4692}4692}
46934693
4694#[inline]4694#[inline]
4695#[target_feature(enable = "lasx")]4695#[target_feature(enable = "lasx")]
4696#[unstable(feature = "stdarch_loongarch", issue = "117427")]4696#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4697pub unsafe fn lasx_xvsigncov_h(a: v16i16, b: v16i16) -> v16i16 {4697pub fn lasx_xvsigncov_h(a: v16i16, b: v16i16) -> v16i16 {
4698 __lasx_xvsigncov_h(a, b)4698 unsafe { __lasx_xvsigncov_h(a, b) }
4699}4699}
47004700
4701#[inline]4701#[inline]
4702#[target_feature(enable = "lasx")]4702#[target_feature(enable = "lasx")]
4703#[unstable(feature = "stdarch_loongarch", issue = "117427")]4703#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4704pub unsafe fn lasx_xvsigncov_w(a: v8i32, b: v8i32) -> v8i32 {4704pub fn lasx_xvsigncov_w(a: v8i32, b: v8i32) -> v8i32 {
4705 __lasx_xvsigncov_w(a, b)4705 unsafe { __lasx_xvsigncov_w(a, b) }
4706}4706}
47074707
4708#[inline]4708#[inline]
4709#[target_feature(enable = "lasx")]4709#[target_feature(enable = "lasx")]
4710#[unstable(feature = "stdarch_loongarch", issue = "117427")]4710#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4711pub unsafe fn lasx_xvsigncov_d(a: v4i64, b: v4i64) -> v4i64 {4711pub fn lasx_xvsigncov_d(a: v4i64, b: v4i64) -> v4i64 {
4712 __lasx_xvsigncov_d(a, b)4712 unsafe { __lasx_xvsigncov_d(a, b) }
4713}4713}
47144714
4715#[inline]4715#[inline]
4716#[target_feature(enable = "lasx")]4716#[target_feature(enable = "lasx")]
4717#[unstable(feature = "stdarch_loongarch", issue = "117427")]4717#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4718pub unsafe fn lasx_xvfmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {4718pub fn lasx_xvfmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
4719 __lasx_xvfmadd_s(a, b, c)4719 unsafe { __lasx_xvfmadd_s(a, b, c) }
4720}4720}
47214721
4722#[inline]4722#[inline]
4723#[target_feature(enable = "lasx")]4723#[target_feature(enable = "lasx")]
4724#[unstable(feature = "stdarch_loongarch", issue = "117427")]4724#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4725pub unsafe fn lasx_xvfmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {4725pub fn lasx_xvfmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
4726 __lasx_xvfmadd_d(a, b, c)4726 unsafe { __lasx_xvfmadd_d(a, b, c) }
4727}4727}
47284728
4729#[inline]4729#[inline]
4730#[target_feature(enable = "lasx")]4730#[target_feature(enable = "lasx")]
4731#[unstable(feature = "stdarch_loongarch", issue = "117427")]4731#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4732pub unsafe fn lasx_xvfmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {4732pub fn lasx_xvfmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
4733 __lasx_xvfmsub_s(a, b, c)4733 unsafe { __lasx_xvfmsub_s(a, b, c) }
4734}4734}
47354735
4736#[inline]4736#[inline]
4737#[target_feature(enable = "lasx")]4737#[target_feature(enable = "lasx")]
4738#[unstable(feature = "stdarch_loongarch", issue = "117427")]4738#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4739pub unsafe fn lasx_xvfmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {4739pub fn lasx_xvfmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
4740 __lasx_xvfmsub_d(a, b, c)4740 unsafe { __lasx_xvfmsub_d(a, b, c) }
4741}4741}
47424742
4743#[inline]4743#[inline]
4744#[target_feature(enable = "lasx")]4744#[target_feature(enable = "lasx")]
4745#[unstable(feature = "stdarch_loongarch", issue = "117427")]4745#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4746pub unsafe fn lasx_xvfnmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {4746pub fn lasx_xvfnmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
4747 __lasx_xvfnmadd_s(a, b, c)4747 unsafe { __lasx_xvfnmadd_s(a, b, c) }
4748}4748}
47494749
4750#[inline]4750#[inline]
4751#[target_feature(enable = "lasx")]4751#[target_feature(enable = "lasx")]
4752#[unstable(feature = "stdarch_loongarch", issue = "117427")]4752#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4753pub unsafe fn lasx_xvfnmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {4753pub fn lasx_xvfnmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
4754 __lasx_xvfnmadd_d(a, b, c)4754 unsafe { __lasx_xvfnmadd_d(a, b, c) }
4755}4755}
47564756
4757#[inline]4757#[inline]
4758#[target_feature(enable = "lasx")]4758#[target_feature(enable = "lasx")]
4759#[unstable(feature = "stdarch_loongarch", issue = "117427")]4759#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4760pub unsafe fn lasx_xvfnmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {4760pub fn lasx_xvfnmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
4761 __lasx_xvfnmsub_s(a, b, c)4761 unsafe { __lasx_xvfnmsub_s(a, b, c) }
4762}4762}
47634763
4764#[inline]4764#[inline]
4765#[target_feature(enable = "lasx")]4765#[target_feature(enable = "lasx")]
4766#[unstable(feature = "stdarch_loongarch", issue = "117427")]4766#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4767pub unsafe fn lasx_xvfnmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {4767pub fn lasx_xvfnmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
4768 __lasx_xvfnmsub_d(a, b, c)4768 unsafe { __lasx_xvfnmsub_d(a, b, c) }
4769}4769}
47704770
4771#[inline]4771#[inline]
4772#[target_feature(enable = "lasx")]4772#[target_feature(enable = "lasx")]
4773#[unstable(feature = "stdarch_loongarch", issue = "117427")]4773#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4774pub unsafe fn lasx_xvftintrne_w_s(a: v8f32) -> v8i32 {4774pub fn lasx_xvftintrne_w_s(a: v8f32) -> v8i32 {
4775 __lasx_xvftintrne_w_s(a)4775 unsafe { __lasx_xvftintrne_w_s(a) }
4776}4776}
47774777
4778#[inline]4778#[inline]
4779#[target_feature(enable = "lasx")]4779#[target_feature(enable = "lasx")]
4780#[unstable(feature = "stdarch_loongarch", issue = "117427")]4780#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4781pub unsafe fn lasx_xvftintrne_l_d(a: v4f64) -> v4i64 {4781pub fn lasx_xvftintrne_l_d(a: v4f64) -> v4i64 {
4782 __lasx_xvftintrne_l_d(a)4782 unsafe { __lasx_xvftintrne_l_d(a) }
4783}4783}
47844784
4785#[inline]4785#[inline]
4786#[target_feature(enable = "lasx")]4786#[target_feature(enable = "lasx")]
4787#[unstable(feature = "stdarch_loongarch", issue = "117427")]4787#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4788pub unsafe fn lasx_xvftintrp_w_s(a: v8f32) -> v8i32 {4788pub fn lasx_xvftintrp_w_s(a: v8f32) -> v8i32 {
4789 __lasx_xvftintrp_w_s(a)4789 unsafe { __lasx_xvftintrp_w_s(a) }
4790}4790}
47914791
4792#[inline]4792#[inline]
4793#[target_feature(enable = "lasx")]4793#[target_feature(enable = "lasx")]
4794#[unstable(feature = "stdarch_loongarch", issue = "117427")]4794#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4795pub unsafe fn lasx_xvftintrp_l_d(a: v4f64) -> v4i64 {4795pub fn lasx_xvftintrp_l_d(a: v4f64) -> v4i64 {
4796 __lasx_xvftintrp_l_d(a)4796 unsafe { __lasx_xvftintrp_l_d(a) }
4797}4797}
47984798
4799#[inline]4799#[inline]
4800#[target_feature(enable = "lasx")]4800#[target_feature(enable = "lasx")]
4801#[unstable(feature = "stdarch_loongarch", issue = "117427")]4801#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4802pub unsafe fn lasx_xvftintrm_w_s(a: v8f32) -> v8i32 {4802pub fn lasx_xvftintrm_w_s(a: v8f32) -> v8i32 {
4803 __lasx_xvftintrm_w_s(a)4803 unsafe { __lasx_xvftintrm_w_s(a) }
4804}4804}
48054805
4806#[inline]4806#[inline]
4807#[target_feature(enable = "lasx")]4807#[target_feature(enable = "lasx")]
4808#[unstable(feature = "stdarch_loongarch", issue = "117427")]4808#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4809pub unsafe fn lasx_xvftintrm_l_d(a: v4f64) -> v4i64 {4809pub fn lasx_xvftintrm_l_d(a: v4f64) -> v4i64 {
4810 __lasx_xvftintrm_l_d(a)4810 unsafe { __lasx_xvftintrm_l_d(a) }
4811}4811}
48124812
4813#[inline]4813#[inline]
4814#[target_feature(enable = "lasx")]4814#[target_feature(enable = "lasx")]
4815#[unstable(feature = "stdarch_loongarch", issue = "117427")]4815#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4816pub unsafe fn lasx_xvftint_w_d(a: v4f64, b: v4f64) -> v8i32 {4816pub fn lasx_xvftint_w_d(a: v4f64, b: v4f64) -> v8i32 {
4817 __lasx_xvftint_w_d(a, b)4817 unsafe { __lasx_xvftint_w_d(a, b) }
4818}4818}
48194819
4820#[inline]4820#[inline]
4821#[target_feature(enable = "lasx")]4821#[target_feature(enable = "lasx")]
4822#[unstable(feature = "stdarch_loongarch", issue = "117427")]4822#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4823pub unsafe fn lasx_xvffint_s_l(a: v4i64, b: v4i64) -> v8f32 {4823pub fn lasx_xvffint_s_l(a: v4i64, b: v4i64) -> v8f32 {
4824 __lasx_xvffint_s_l(a, b)4824 unsafe { __lasx_xvffint_s_l(a, b) }
4825}4825}
48264826
4827#[inline]4827#[inline]
4828#[target_feature(enable = "lasx")]4828#[target_feature(enable = "lasx")]
4829#[unstable(feature = "stdarch_loongarch", issue = "117427")]4829#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4830pub unsafe fn lasx_xvftintrz_w_d(a: v4f64, b: v4f64) -> v8i32 {4830pub fn lasx_xvftintrz_w_d(a: v4f64, b: v4f64) -> v8i32 {
4831 __lasx_xvftintrz_w_d(a, b)4831 unsafe { __lasx_xvftintrz_w_d(a, b) }
4832}4832}
48334833
4834#[inline]4834#[inline]
4835#[target_feature(enable = "lasx")]4835#[target_feature(enable = "lasx")]
4836#[unstable(feature = "stdarch_loongarch", issue = "117427")]4836#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4837pub unsafe fn lasx_xvftintrp_w_d(a: v4f64, b: v4f64) -> v8i32 {4837pub fn lasx_xvftintrp_w_d(a: v4f64, b: v4f64) -> v8i32 {
4838 __lasx_xvftintrp_w_d(a, b)4838 unsafe { __lasx_xvftintrp_w_d(a, b) }
4839}4839}
48404840
4841#[inline]4841#[inline]
4842#[target_feature(enable = "lasx")]4842#[target_feature(enable = "lasx")]
4843#[unstable(feature = "stdarch_loongarch", issue = "117427")]4843#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4844pub unsafe fn lasx_xvftintrm_w_d(a: v4f64, b: v4f64) -> v8i32 {4844pub fn lasx_xvftintrm_w_d(a: v4f64, b: v4f64) -> v8i32 {
4845 __lasx_xvftintrm_w_d(a, b)4845 unsafe { __lasx_xvftintrm_w_d(a, b) }
4846}4846}
48474847
4848#[inline]4848#[inline]
4849#[target_feature(enable = "lasx")]4849#[target_feature(enable = "lasx")]
4850#[unstable(feature = "stdarch_loongarch", issue = "117427")]4850#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4851pub unsafe fn lasx_xvftintrne_w_d(a: v4f64, b: v4f64) -> v8i32 {4851pub fn lasx_xvftintrne_w_d(a: v4f64, b: v4f64) -> v8i32 {
4852 __lasx_xvftintrne_w_d(a, b)4852 unsafe { __lasx_xvftintrne_w_d(a, b) }
4853}4853}
48544854
4855#[inline]4855#[inline]
4856#[target_feature(enable = "lasx")]4856#[target_feature(enable = "lasx")]
4857#[unstable(feature = "stdarch_loongarch", issue = "117427")]4857#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4858pub unsafe fn lasx_xvftinth_l_s(a: v8f32) -> v4i64 {4858pub fn lasx_xvftinth_l_s(a: v8f32) -> v4i64 {
4859 __lasx_xvftinth_l_s(a)4859 unsafe { __lasx_xvftinth_l_s(a) }
4860}4860}
48614861
4862#[inline]4862#[inline]
4863#[target_feature(enable = "lasx")]4863#[target_feature(enable = "lasx")]
4864#[unstable(feature = "stdarch_loongarch", issue = "117427")]4864#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4865pub unsafe fn lasx_xvftintl_l_s(a: v8f32) -> v4i64 {4865pub fn lasx_xvftintl_l_s(a: v8f32) -> v4i64 {
4866 __lasx_xvftintl_l_s(a)4866 unsafe { __lasx_xvftintl_l_s(a) }
4867}4867}
48684868
4869#[inline]4869#[inline]
4870#[target_feature(enable = "lasx")]4870#[target_feature(enable = "lasx")]
4871#[unstable(feature = "stdarch_loongarch", issue = "117427")]4871#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4872pub unsafe fn lasx_xvffinth_d_w(a: v8i32) -> v4f64 {4872pub fn lasx_xvffinth_d_w(a: v8i32) -> v4f64 {
4873 __lasx_xvffinth_d_w(a)4873 unsafe { __lasx_xvffinth_d_w(a) }
4874}4874}
48754875
4876#[inline]4876#[inline]
4877#[target_feature(enable = "lasx")]4877#[target_feature(enable = "lasx")]
4878#[unstable(feature = "stdarch_loongarch", issue = "117427")]4878#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4879pub unsafe fn lasx_xvffintl_d_w(a: v8i32) -> v4f64 {4879pub fn lasx_xvffintl_d_w(a: v8i32) -> v4f64 {
4880 __lasx_xvffintl_d_w(a)4880 unsafe { __lasx_xvffintl_d_w(a) }
4881}4881}
48824882
4883#[inline]4883#[inline]
4884#[target_feature(enable = "lasx")]4884#[target_feature(enable = "lasx")]
4885#[unstable(feature = "stdarch_loongarch", issue = "117427")]4885#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4886pub unsafe fn lasx_xvftintrzh_l_s(a: v8f32) -> v4i64 {4886pub fn lasx_xvftintrzh_l_s(a: v8f32) -> v4i64 {
4887 __lasx_xvftintrzh_l_s(a)4887 unsafe { __lasx_xvftintrzh_l_s(a) }
4888}4888}
48894889
4890#[inline]4890#[inline]
4891#[target_feature(enable = "lasx")]4891#[target_feature(enable = "lasx")]
4892#[unstable(feature = "stdarch_loongarch", issue = "117427")]4892#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4893pub unsafe fn lasx_xvftintrzl_l_s(a: v8f32) -> v4i64 {4893pub fn lasx_xvftintrzl_l_s(a: v8f32) -> v4i64 {
4894 __lasx_xvftintrzl_l_s(a)4894 unsafe { __lasx_xvftintrzl_l_s(a) }
4895}4895}
48964896
4897#[inline]4897#[inline]
4898#[target_feature(enable = "lasx")]4898#[target_feature(enable = "lasx")]
4899#[unstable(feature = "stdarch_loongarch", issue = "117427")]4899#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4900pub unsafe fn lasx_xvftintrph_l_s(a: v8f32) -> v4i64 {4900pub fn lasx_xvftintrph_l_s(a: v8f32) -> v4i64 {
4901 __lasx_xvftintrph_l_s(a)4901 unsafe { __lasx_xvftintrph_l_s(a) }
4902}4902}
49034903
4904#[inline]4904#[inline]
4905#[target_feature(enable = "lasx")]4905#[target_feature(enable = "lasx")]
4906#[unstable(feature = "stdarch_loongarch", issue = "117427")]4906#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4907pub unsafe fn lasx_xvftintrpl_l_s(a: v8f32) -> v4i64 {4907pub fn lasx_xvftintrpl_l_s(a: v8f32) -> v4i64 {
4908 __lasx_xvftintrpl_l_s(a)4908 unsafe { __lasx_xvftintrpl_l_s(a) }
4909}4909}
49104910
4911#[inline]4911#[inline]
4912#[target_feature(enable = "lasx")]4912#[target_feature(enable = "lasx")]
4913#[unstable(feature = "stdarch_loongarch", issue = "117427")]4913#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4914pub unsafe fn lasx_xvftintrmh_l_s(a: v8f32) -> v4i64 {4914pub fn lasx_xvftintrmh_l_s(a: v8f32) -> v4i64 {
4915 __lasx_xvftintrmh_l_s(a)4915 unsafe { __lasx_xvftintrmh_l_s(a) }
4916}4916}
49174917
4918#[inline]4918#[inline]
4919#[target_feature(enable = "lasx")]4919#[target_feature(enable = "lasx")]
4920#[unstable(feature = "stdarch_loongarch", issue = "117427")]4920#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4921pub unsafe fn lasx_xvftintrml_l_s(a: v8f32) -> v4i64 {4921pub fn lasx_xvftintrml_l_s(a: v8f32) -> v4i64 {
4922 __lasx_xvftintrml_l_s(a)4922 unsafe { __lasx_xvftintrml_l_s(a) }
4923}4923}
49244924
4925#[inline]4925#[inline]
4926#[target_feature(enable = "lasx")]4926#[target_feature(enable = "lasx")]
4927#[unstable(feature = "stdarch_loongarch", issue = "117427")]4927#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4928pub unsafe fn lasx_xvftintrneh_l_s(a: v8f32) -> v4i64 {4928pub fn lasx_xvftintrneh_l_s(a: v8f32) -> v4i64 {
4929 __lasx_xvftintrneh_l_s(a)4929 unsafe { __lasx_xvftintrneh_l_s(a) }
4930}4930}
49314931
4932#[inline]4932#[inline]
4933#[target_feature(enable = "lasx")]4933#[target_feature(enable = "lasx")]
4934#[unstable(feature = "stdarch_loongarch", issue = "117427")]4934#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4935pub unsafe fn lasx_xvftintrnel_l_s(a: v8f32) -> v4i64 {4935pub fn lasx_xvftintrnel_l_s(a: v8f32) -> v4i64 {
4936 __lasx_xvftintrnel_l_s(a)4936 unsafe { __lasx_xvftintrnel_l_s(a) }
4937}4937}
49384938
4939#[inline]4939#[inline]
4940#[target_feature(enable = "lasx")]4940#[target_feature(enable = "lasx")]
4941#[unstable(feature = "stdarch_loongarch", issue = "117427")]4941#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4942pub unsafe fn lasx_xvfrintrne_s(a: v8f32) -> v8f32 {4942pub fn lasx_xvfrintrne_s(a: v8f32) -> v8f32 {
4943 __lasx_xvfrintrne_s(a)4943 unsafe { __lasx_xvfrintrne_s(a) }
4944}4944}
49454945
4946#[inline]4946#[inline]
4947#[target_feature(enable = "lasx")]4947#[target_feature(enable = "lasx")]
4948#[unstable(feature = "stdarch_loongarch", issue = "117427")]4948#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4949pub unsafe fn lasx_xvfrintrne_d(a: v4f64) -> v4f64 {4949pub fn lasx_xvfrintrne_d(a: v4f64) -> v4f64 {
4950 __lasx_xvfrintrne_d(a)4950 unsafe { __lasx_xvfrintrne_d(a) }
4951}4951}
49524952
4953#[inline]4953#[inline]
4954#[target_feature(enable = "lasx")]4954#[target_feature(enable = "lasx")]
4955#[unstable(feature = "stdarch_loongarch", issue = "117427")]4955#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4956pub unsafe fn lasx_xvfrintrz_s(a: v8f32) -> v8f32 {4956pub fn lasx_xvfrintrz_s(a: v8f32) -> v8f32 {
4957 __lasx_xvfrintrz_s(a)4957 unsafe { __lasx_xvfrintrz_s(a) }
4958}4958}
49594959
4960#[inline]4960#[inline]
4961#[target_feature(enable = "lasx")]4961#[target_feature(enable = "lasx")]
4962#[unstable(feature = "stdarch_loongarch", issue = "117427")]4962#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4963pub unsafe fn lasx_xvfrintrz_d(a: v4f64) -> v4f64 {4963pub fn lasx_xvfrintrz_d(a: v4f64) -> v4f64 {
4964 __lasx_xvfrintrz_d(a)4964 unsafe { __lasx_xvfrintrz_d(a) }
4965}4965}
49664966
4967#[inline]4967#[inline]
4968#[target_feature(enable = "lasx")]4968#[target_feature(enable = "lasx")]
4969#[unstable(feature = "stdarch_loongarch", issue = "117427")]4969#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4970pub unsafe fn lasx_xvfrintrp_s(a: v8f32) -> v8f32 {4970pub fn lasx_xvfrintrp_s(a: v8f32) -> v8f32 {
4971 __lasx_xvfrintrp_s(a)4971 unsafe { __lasx_xvfrintrp_s(a) }
4972}4972}
49734973
4974#[inline]4974#[inline]
4975#[target_feature(enable = "lasx")]4975#[target_feature(enable = "lasx")]
4976#[unstable(feature = "stdarch_loongarch", issue = "117427")]4976#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4977pub unsafe fn lasx_xvfrintrp_d(a: v4f64) -> v4f64 {4977pub fn lasx_xvfrintrp_d(a: v4f64) -> v4f64 {
4978 __lasx_xvfrintrp_d(a)4978 unsafe { __lasx_xvfrintrp_d(a) }
4979}4979}
49804980
4981#[inline]4981#[inline]
4982#[target_feature(enable = "lasx")]4982#[target_feature(enable = "lasx")]
4983#[unstable(feature = "stdarch_loongarch", issue = "117427")]4983#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4984pub unsafe fn lasx_xvfrintrm_s(a: v8f32) -> v8f32 {4984pub fn lasx_xvfrintrm_s(a: v8f32) -> v8f32 {
4985 __lasx_xvfrintrm_s(a)4985 unsafe { __lasx_xvfrintrm_s(a) }
4986}4986}
49874987
4988#[inline]4988#[inline]
4989#[target_feature(enable = "lasx")]4989#[target_feature(enable = "lasx")]
4990#[unstable(feature = "stdarch_loongarch", issue = "117427")]4990#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4991pub unsafe fn lasx_xvfrintrm_d(a: v4f64) -> v4f64 {4991pub fn lasx_xvfrintrm_d(a: v4f64) -> v4f64 {
4992 __lasx_xvfrintrm_d(a)4992 unsafe { __lasx_xvfrintrm_d(a) }
4993}4993}
49944994
4995#[inline]4995#[inline]
...@@ -5054,94 +5054,94 @@ pub unsafe fn lasx_xvstelm_d<const IMM_S8: i32, const IMM1: u32>(a: v4i64, mem_a...@@ -5054,94 +5054,94 @@ pub unsafe fn lasx_xvstelm_d<const IMM_S8: i32, const IMM1: u32>(a: v4i64, mem_a
5054#[target_feature(enable = "lasx")]5054#[target_feature(enable = "lasx")]
5055#[rustc_legacy_const_generics(2)]5055#[rustc_legacy_const_generics(2)]
5056#[unstable(feature = "stdarch_loongarch", issue = "117427")]5056#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5057pub unsafe fn lasx_xvinsve0_w<const IMM3: u32>(a: v8i32, b: v8i32) -> v8i32 {5057pub fn lasx_xvinsve0_w<const IMM3: u32>(a: v8i32, b: v8i32) -> v8i32 {
5058 static_assert_uimm_bits!(IMM3, 3);5058 static_assert_uimm_bits!(IMM3, 3);
5059 __lasx_xvinsve0_w(a, b, IMM3)5059 unsafe { __lasx_xvinsve0_w(a, b, IMM3) }
5060}5060}
50615061
5062#[inline]5062#[inline]
5063#[target_feature(enable = "lasx")]5063#[target_feature(enable = "lasx")]
5064#[rustc_legacy_const_generics(2)]5064#[rustc_legacy_const_generics(2)]
5065#[unstable(feature = "stdarch_loongarch", issue = "117427")]5065#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5066pub unsafe fn lasx_xvinsve0_d<const IMM2: u32>(a: v4i64, b: v4i64) -> v4i64 {5066pub fn lasx_xvinsve0_d<const IMM2: u32>(a: v4i64, b: v4i64) -> v4i64 {
5067 static_assert_uimm_bits!(IMM2, 2);5067 static_assert_uimm_bits!(IMM2, 2);
5068 __lasx_xvinsve0_d(a, b, IMM2)5068 unsafe { __lasx_xvinsve0_d(a, b, IMM2) }
5069}5069}
50705070
5071#[inline]5071#[inline]
5072#[target_feature(enable = "lasx")]5072#[target_feature(enable = "lasx")]
5073#[rustc_legacy_const_generics(1)]5073#[rustc_legacy_const_generics(1)]
5074#[unstable(feature = "stdarch_loongarch", issue = "117427")]5074#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5075pub unsafe fn lasx_xvpickve_w<const IMM3: u32>(a: v8i32) -> v8i32 {5075pub fn lasx_xvpickve_w<const IMM3: u32>(a: v8i32) -> v8i32 {
5076 static_assert_uimm_bits!(IMM3, 3);5076 static_assert_uimm_bits!(IMM3, 3);
5077 __lasx_xvpickve_w(a, IMM3)5077 unsafe { __lasx_xvpickve_w(a, IMM3) }
5078}5078}
50795079
5080#[inline]5080#[inline]
5081#[target_feature(enable = "lasx")]5081#[target_feature(enable = "lasx")]
5082#[rustc_legacy_const_generics(1)]5082#[rustc_legacy_const_generics(1)]
5083#[unstable(feature = "stdarch_loongarch", issue = "117427")]5083#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5084pub unsafe fn lasx_xvpickve_d<const IMM2: u32>(a: v4i64) -> v4i64 {5084pub fn lasx_xvpickve_d<const IMM2: u32>(a: v4i64) -> v4i64 {
5085 static_assert_uimm_bits!(IMM2, 2);5085 static_assert_uimm_bits!(IMM2, 2);
5086 __lasx_xvpickve_d(a, IMM2)5086 unsafe { __lasx_xvpickve_d(a, IMM2) }
5087}5087}
50885088
5089#[inline]5089#[inline]
5090#[target_feature(enable = "lasx")]5090#[target_feature(enable = "lasx")]
5091#[unstable(feature = "stdarch_loongarch", issue = "117427")]5091#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5092pub unsafe fn lasx_xvssrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {5092pub fn lasx_xvssrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {
5093 __lasx_xvssrlrn_b_h(a, b)5093 unsafe { __lasx_xvssrlrn_b_h(a, b) }
5094}5094}
50955095
5096#[inline]5096#[inline]
5097#[target_feature(enable = "lasx")]5097#[target_feature(enable = "lasx")]
5098#[unstable(feature = "stdarch_loongarch", issue = "117427")]5098#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5099pub unsafe fn lasx_xvssrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {5099pub fn lasx_xvssrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {
5100 __lasx_xvssrlrn_h_w(a, b)5100 unsafe { __lasx_xvssrlrn_h_w(a, b) }
5101}5101}
51025102
5103#[inline]5103#[inline]
5104#[target_feature(enable = "lasx")]5104#[target_feature(enable = "lasx")]
5105#[unstable(feature = "stdarch_loongarch", issue = "117427")]5105#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5106pub unsafe fn lasx_xvssrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {5106pub fn lasx_xvssrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {
5107 __lasx_xvssrlrn_w_d(a, b)5107 unsafe { __lasx_xvssrlrn_w_d(a, b) }
5108}5108}
51095109
5110#[inline]5110#[inline]
5111#[target_feature(enable = "lasx")]5111#[target_feature(enable = "lasx")]
5112#[unstable(feature = "stdarch_loongarch", issue = "117427")]5112#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5113pub unsafe fn lasx_xvssrln_b_h(a: v16i16, b: v16i16) -> v32i8 {5113pub fn lasx_xvssrln_b_h(a: v16i16, b: v16i16) -> v32i8 {
5114 __lasx_xvssrln_b_h(a, b)5114 unsafe { __lasx_xvssrln_b_h(a, b) }
5115}5115}
51165116
5117#[inline]5117#[inline]
5118#[target_feature(enable = "lasx")]5118#[target_feature(enable = "lasx")]
5119#[unstable(feature = "stdarch_loongarch", issue = "117427")]5119#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5120pub unsafe fn lasx_xvssrln_h_w(a: v8i32, b: v8i32) -> v16i16 {5120pub fn lasx_xvssrln_h_w(a: v8i32, b: v8i32) -> v16i16 {
5121 __lasx_xvssrln_h_w(a, b)5121 unsafe { __lasx_xvssrln_h_w(a, b) }
5122}5122}
51235123
5124#[inline]5124#[inline]
5125#[target_feature(enable = "lasx")]5125#[target_feature(enable = "lasx")]
5126#[unstable(feature = "stdarch_loongarch", issue = "117427")]5126#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5127pub unsafe fn lasx_xvssrln_w_d(a: v4i64, b: v4i64) -> v8i32 {5127pub fn lasx_xvssrln_w_d(a: v4i64, b: v4i64) -> v8i32 {
5128 __lasx_xvssrln_w_d(a, b)5128 unsafe { __lasx_xvssrln_w_d(a, b) }
5129}5129}
51305130
5131#[inline]5131#[inline]
5132#[target_feature(enable = "lasx")]5132#[target_feature(enable = "lasx")]
5133#[unstable(feature = "stdarch_loongarch", issue = "117427")]5133#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5134pub unsafe fn lasx_xvorn_v(a: v32i8, b: v32i8) -> v32i8 {5134pub fn lasx_xvorn_v(a: v32i8, b: v32i8) -> v32i8 {
5135 __lasx_xvorn_v(a, b)5135 unsafe { __lasx_xvorn_v(a, b) }
5136}5136}
51375137
5138#[inline]5138#[inline]
5139#[target_feature(enable = "lasx")]5139#[target_feature(enable = "lasx")]
5140#[rustc_legacy_const_generics(0)]5140#[rustc_legacy_const_generics(0)]
5141#[unstable(feature = "stdarch_loongarch", issue = "117427")]5141#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5142pub unsafe fn lasx_xvldi<const IMM_S13: i32>() -> v4i64 {5142pub fn lasx_xvldi<const IMM_S13: i32>() -> v4i64 {
5143 static_assert_simm_bits!(IMM_S13, 13);5143 static_assert_simm_bits!(IMM_S13, 13);
5144 __lasx_xvldi(IMM_S13)5144 unsafe { __lasx_xvldi(IMM_S13) }
5145}5145}
51465146
5147#[inline]5147#[inline]
...@@ -5161,170 +5161,170 @@ pub unsafe fn lasx_xvstx(a: v32i8, mem_addr: *mut i8, b: i64) {...@@ -5161,170 +5161,170 @@ pub unsafe fn lasx_xvstx(a: v32i8, mem_addr: *mut i8, b: i64) {
5161#[inline]5161#[inline]
5162#[target_feature(enable = "lasx")]5162#[target_feature(enable = "lasx")]
5163#[unstable(feature = "stdarch_loongarch", issue = "117427")]5163#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5164pub unsafe fn lasx_xvextl_qu_du(a: v4u64) -> v4u64 {5164pub fn lasx_xvextl_qu_du(a: v4u64) -> v4u64 {
5165 __lasx_xvextl_qu_du(a)5165 unsafe { __lasx_xvextl_qu_du(a) }
5166}5166}
51675167
5168#[inline]5168#[inline]
5169#[target_feature(enable = "lasx")]5169#[target_feature(enable = "lasx")]
5170#[rustc_legacy_const_generics(2)]5170#[rustc_legacy_const_generics(2)]
5171#[unstable(feature = "stdarch_loongarch", issue = "117427")]5171#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5172pub unsafe fn lasx_xvinsgr2vr_w<const IMM3: u32>(a: v8i32, b: i32) -> v8i32 {5172pub fn lasx_xvinsgr2vr_w<const IMM3: u32>(a: v8i32, b: i32) -> v8i32 {
5173 static_assert_uimm_bits!(IMM3, 3);5173 static_assert_uimm_bits!(IMM3, 3);
5174 __lasx_xvinsgr2vr_w(a, b, IMM3)5174 unsafe { __lasx_xvinsgr2vr_w(a, b, IMM3) }
5175}5175}
51765176
5177#[inline]5177#[inline]
5178#[target_feature(enable = "lasx")]5178#[target_feature(enable = "lasx")]
5179#[rustc_legacy_const_generics(2)]5179#[rustc_legacy_const_generics(2)]
5180#[unstable(feature = "stdarch_loongarch", issue = "117427")]5180#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5181pub unsafe fn lasx_xvinsgr2vr_d<const IMM2: u32>(a: v4i64, b: i64) -> v4i64 {5181pub fn lasx_xvinsgr2vr_d<const IMM2: u32>(a: v4i64, b: i64) -> v4i64 {
5182 static_assert_uimm_bits!(IMM2, 2);5182 static_assert_uimm_bits!(IMM2, 2);
5183 __lasx_xvinsgr2vr_d(a, b, IMM2)5183 unsafe { __lasx_xvinsgr2vr_d(a, b, IMM2) }
5184}5184}
51855185
5186#[inline]5186#[inline]
5187#[target_feature(enable = "lasx")]5187#[target_feature(enable = "lasx")]
5188#[unstable(feature = "stdarch_loongarch", issue = "117427")]5188#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5189pub unsafe fn lasx_xvreplve0_b(a: v32i8) -> v32i8 {5189pub fn lasx_xvreplve0_b(a: v32i8) -> v32i8 {
5190 __lasx_xvreplve0_b(a)5190 unsafe { __lasx_xvreplve0_b(a) }
5191}5191}
51925192
5193#[inline]5193#[inline]
5194#[target_feature(enable = "lasx")]5194#[target_feature(enable = "lasx")]
5195#[unstable(feature = "stdarch_loongarch", issue = "117427")]5195#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5196pub unsafe fn lasx_xvreplve0_h(a: v16i16) -> v16i16 {5196pub fn lasx_xvreplve0_h(a: v16i16) -> v16i16 {
5197 __lasx_xvreplve0_h(a)5197 unsafe { __lasx_xvreplve0_h(a) }
5198}5198}
51995199
5200#[inline]5200#[inline]
5201#[target_feature(enable = "lasx")]5201#[target_feature(enable = "lasx")]
5202#[unstable(feature = "stdarch_loongarch", issue = "117427")]5202#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5203pub unsafe fn lasx_xvreplve0_w(a: v8i32) -> v8i32 {5203pub fn lasx_xvreplve0_w(a: v8i32) -> v8i32 {
5204 __lasx_xvreplve0_w(a)5204 unsafe { __lasx_xvreplve0_w(a) }
5205}5205}
52065206
5207#[inline]5207#[inline]
5208#[target_feature(enable = "lasx")]5208#[target_feature(enable = "lasx")]
5209#[unstable(feature = "stdarch_loongarch", issue = "117427")]5209#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5210pub unsafe fn lasx_xvreplve0_d(a: v4i64) -> v4i64 {5210pub fn lasx_xvreplve0_d(a: v4i64) -> v4i64 {
5211 __lasx_xvreplve0_d(a)5211 unsafe { __lasx_xvreplve0_d(a) }
5212}5212}
52135213
5214#[inline]5214#[inline]
5215#[target_feature(enable = "lasx")]5215#[target_feature(enable = "lasx")]
5216#[unstable(feature = "stdarch_loongarch", issue = "117427")]5216#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5217pub unsafe fn lasx_xvreplve0_q(a: v32i8) -> v32i8 {5217pub fn lasx_xvreplve0_q(a: v32i8) -> v32i8 {
5218 __lasx_xvreplve0_q(a)5218 unsafe { __lasx_xvreplve0_q(a) }
5219}5219}
52205220
5221#[inline]5221#[inline]
5222#[target_feature(enable = "lasx")]5222#[target_feature(enable = "lasx")]
5223#[unstable(feature = "stdarch_loongarch", issue = "117427")]5223#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5224pub unsafe fn lasx_vext2xv_h_b(a: v32i8) -> v16i16 {5224pub fn lasx_vext2xv_h_b(a: v32i8) -> v16i16 {
5225 __lasx_vext2xv_h_b(a)5225 unsafe { __lasx_vext2xv_h_b(a) }
5226}5226}
52275227
5228#[inline]5228#[inline]
5229#[target_feature(enable = "lasx")]5229#[target_feature(enable = "lasx")]
5230#[unstable(feature = "stdarch_loongarch", issue = "117427")]5230#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5231pub unsafe fn lasx_vext2xv_w_h(a: v16i16) -> v8i32 {5231pub fn lasx_vext2xv_w_h(a: v16i16) -> v8i32 {
5232 __lasx_vext2xv_w_h(a)5232 unsafe { __lasx_vext2xv_w_h(a) }
5233}5233}
52345234
5235#[inline]5235#[inline]
5236#[target_feature(enable = "lasx")]5236#[target_feature(enable = "lasx")]
5237#[unstable(feature = "stdarch_loongarch", issue = "117427")]5237#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5238pub unsafe fn lasx_vext2xv_d_w(a: v8i32) -> v4i64 {5238pub fn lasx_vext2xv_d_w(a: v8i32) -> v4i64 {
5239 __lasx_vext2xv_d_w(a)5239 unsafe { __lasx_vext2xv_d_w(a) }
5240}5240}
52415241
5242#[inline]5242#[inline]
5243#[target_feature(enable = "lasx")]5243#[target_feature(enable = "lasx")]
5244#[unstable(feature = "stdarch_loongarch", issue = "117427")]5244#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5245pub unsafe fn lasx_vext2xv_w_b(a: v32i8) -> v8i32 {5245pub fn lasx_vext2xv_w_b(a: v32i8) -> v8i32 {
5246 __lasx_vext2xv_w_b(a)5246 unsafe { __lasx_vext2xv_w_b(a) }
5247}5247}
52485248
5249#[inline]5249#[inline]
5250#[target_feature(enable = "lasx")]5250#[target_feature(enable = "lasx")]
5251#[unstable(feature = "stdarch_loongarch", issue = "117427")]5251#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5252pub unsafe fn lasx_vext2xv_d_h(a: v16i16) -> v4i64 {5252pub fn lasx_vext2xv_d_h(a: v16i16) -> v4i64 {
5253 __lasx_vext2xv_d_h(a)5253 unsafe { __lasx_vext2xv_d_h(a) }
5254}5254}
52555255
5256#[inline]5256#[inline]
5257#[target_feature(enable = "lasx")]5257#[target_feature(enable = "lasx")]
5258#[unstable(feature = "stdarch_loongarch", issue = "117427")]5258#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5259pub unsafe fn lasx_vext2xv_d_b(a: v32i8) -> v4i64 {5259pub fn lasx_vext2xv_d_b(a: v32i8) -> v4i64 {
5260 __lasx_vext2xv_d_b(a)5260 unsafe { __lasx_vext2xv_d_b(a) }
5261}5261}
52625262
5263#[inline]5263#[inline]
5264#[target_feature(enable = "lasx")]5264#[target_feature(enable = "lasx")]
5265#[unstable(feature = "stdarch_loongarch", issue = "117427")]5265#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5266pub unsafe fn lasx_vext2xv_hu_bu(a: v32i8) -> v16i16 {5266pub fn lasx_vext2xv_hu_bu(a: v32i8) -> v16i16 {
5267 __lasx_vext2xv_hu_bu(a)5267 unsafe { __lasx_vext2xv_hu_bu(a) }
5268}5268}
52695269
5270#[inline]5270#[inline]
5271#[target_feature(enable = "lasx")]5271#[target_feature(enable = "lasx")]
5272#[unstable(feature = "stdarch_loongarch", issue = "117427")]5272#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5273pub unsafe fn lasx_vext2xv_wu_hu(a: v16i16) -> v8i32 {5273pub fn lasx_vext2xv_wu_hu(a: v16i16) -> v8i32 {
5274 __lasx_vext2xv_wu_hu(a)5274 unsafe { __lasx_vext2xv_wu_hu(a) }
5275}5275}
52765276
5277#[inline]5277#[inline]
5278#[target_feature(enable = "lasx")]5278#[target_feature(enable = "lasx")]
5279#[unstable(feature = "stdarch_loongarch", issue = "117427")]5279#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5280pub unsafe fn lasx_vext2xv_du_wu(a: v8i32) -> v4i64 {5280pub fn lasx_vext2xv_du_wu(a: v8i32) -> v4i64 {
5281 __lasx_vext2xv_du_wu(a)5281 unsafe { __lasx_vext2xv_du_wu(a) }
5282}5282}
52835283
5284#[inline]5284#[inline]
5285#[target_feature(enable = "lasx")]5285#[target_feature(enable = "lasx")]
5286#[unstable(feature = "stdarch_loongarch", issue = "117427")]5286#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5287pub unsafe fn lasx_vext2xv_wu_bu(a: v32i8) -> v8i32 {5287pub fn lasx_vext2xv_wu_bu(a: v32i8) -> v8i32 {
5288 __lasx_vext2xv_wu_bu(a)5288 unsafe { __lasx_vext2xv_wu_bu(a) }
5289}5289}
52905290
5291#[inline]5291#[inline]
5292#[target_feature(enable = "lasx")]5292#[target_feature(enable = "lasx")]
5293#[unstable(feature = "stdarch_loongarch", issue = "117427")]5293#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5294pub unsafe fn lasx_vext2xv_du_hu(a: v16i16) -> v4i64 {5294pub fn lasx_vext2xv_du_hu(a: v16i16) -> v4i64 {
5295 __lasx_vext2xv_du_hu(a)5295 unsafe { __lasx_vext2xv_du_hu(a) }
5296}5296}
52975297
5298#[inline]5298#[inline]
5299#[target_feature(enable = "lasx")]5299#[target_feature(enable = "lasx")]
5300#[unstable(feature = "stdarch_loongarch", issue = "117427")]5300#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5301pub unsafe fn lasx_vext2xv_du_bu(a: v32i8) -> v4i64 {5301pub fn lasx_vext2xv_du_bu(a: v32i8) -> v4i64 {
5302 __lasx_vext2xv_du_bu(a)5302 unsafe { __lasx_vext2xv_du_bu(a) }
5303}5303}
53045304
5305#[inline]5305#[inline]
5306#[target_feature(enable = "lasx")]5306#[target_feature(enable = "lasx")]
5307#[rustc_legacy_const_generics(2)]5307#[rustc_legacy_const_generics(2)]
5308#[unstable(feature = "stdarch_loongarch", issue = "117427")]5308#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5309pub unsafe fn lasx_xvpermi_q<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {5309pub fn lasx_xvpermi_q<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {
5310 static_assert_uimm_bits!(IMM8, 8);5310 static_assert_uimm_bits!(IMM8, 8);
5311 __lasx_xvpermi_q(a, b, IMM8)5311 unsafe { __lasx_xvpermi_q(a, b, IMM8) }
5312}5312}
53135313
5314#[inline]5314#[inline]
5315#[target_feature(enable = "lasx")]5315#[target_feature(enable = "lasx")]
5316#[rustc_legacy_const_generics(1)]5316#[rustc_legacy_const_generics(1)]
5317#[unstable(feature = "stdarch_loongarch", issue = "117427")]5317#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5318pub unsafe fn lasx_xvpermi_d<const IMM8: u32>(a: v4i64) -> v4i64 {5318pub fn lasx_xvpermi_d<const IMM8: u32>(a: v4i64) -> v4i64 {
5319 static_assert_uimm_bits!(IMM8, 8);5319 static_assert_uimm_bits!(IMM8, 8);
5320 __lasx_xvpermi_d(a, IMM8)5320 unsafe { __lasx_xvpermi_d(a, IMM8) }
5321}5321}
53225322
5323#[inline]5323#[inline]
5324#[target_feature(enable = "lasx")]5324#[target_feature(enable = "lasx")]
5325#[unstable(feature = "stdarch_loongarch", issue = "117427")]5325#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5326pub unsafe fn lasx_xvperm_w(a: v8i32, b: v8i32) -> v8i32 {5326pub fn lasx_xvperm_w(a: v8i32, b: v8i32) -> v8i32 {
5327 __lasx_xvperm_w(a, b)5327 unsafe { __lasx_xvperm_w(a, b) }
5328}5328}
53295329
5330#[inline]5330#[inline]
...@@ -5367,1697 +5367,1697 @@ pub unsafe fn lasx_xvldrepl_d<const IMM_S9: i32>(mem_addr: *const i8) -> v4i64 {...@@ -5367,1697 +5367,1697 @@ pub unsafe fn lasx_xvldrepl_d<const IMM_S9: i32>(mem_addr: *const i8) -> v4i64 {
5367#[target_feature(enable = "lasx")]5367#[target_feature(enable = "lasx")]
5368#[rustc_legacy_const_generics(1)]5368#[rustc_legacy_const_generics(1)]
5369#[unstable(feature = "stdarch_loongarch", issue = "117427")]5369#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5370pub unsafe fn lasx_xvpickve2gr_w<const IMM3: u32>(a: v8i32) -> i32 {5370pub fn lasx_xvpickve2gr_w<const IMM3: u32>(a: v8i32) -> i32 {
5371 static_assert_uimm_bits!(IMM3, 3);5371 static_assert_uimm_bits!(IMM3, 3);
5372 __lasx_xvpickve2gr_w(a, IMM3)5372 unsafe { __lasx_xvpickve2gr_w(a, IMM3) }
5373}5373}
53745374
5375#[inline]5375#[inline]
5376#[target_feature(enable = "lasx")]5376#[target_feature(enable = "lasx")]
5377#[rustc_legacy_const_generics(1)]5377#[rustc_legacy_const_generics(1)]
5378#[unstable(feature = "stdarch_loongarch", issue = "117427")]5378#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5379pub unsafe fn lasx_xvpickve2gr_wu<const IMM3: u32>(a: v8i32) -> u32 {5379pub fn lasx_xvpickve2gr_wu<const IMM3: u32>(a: v8i32) -> u32 {
5380 static_assert_uimm_bits!(IMM3, 3);5380 static_assert_uimm_bits!(IMM3, 3);
5381 __lasx_xvpickve2gr_wu(a, IMM3)5381 unsafe { __lasx_xvpickve2gr_wu(a, IMM3) }
5382}5382}
53835383
5384#[inline]5384#[inline]
5385#[target_feature(enable = "lasx")]5385#[target_feature(enable = "lasx")]
5386#[rustc_legacy_const_generics(1)]5386#[rustc_legacy_const_generics(1)]
5387#[unstable(feature = "stdarch_loongarch", issue = "117427")]5387#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5388pub unsafe fn lasx_xvpickve2gr_d<const IMM2: u32>(a: v4i64) -> i64 {5388pub fn lasx_xvpickve2gr_d<const IMM2: u32>(a: v4i64) -> i64 {
5389 static_assert_uimm_bits!(IMM2, 2);5389 static_assert_uimm_bits!(IMM2, 2);
5390 __lasx_xvpickve2gr_d(a, IMM2)5390 unsafe { __lasx_xvpickve2gr_d(a, IMM2) }
5391}5391}
53925392
5393#[inline]5393#[inline]
5394#[target_feature(enable = "lasx")]5394#[target_feature(enable = "lasx")]
5395#[rustc_legacy_const_generics(1)]5395#[rustc_legacy_const_generics(1)]
5396#[unstable(feature = "stdarch_loongarch", issue = "117427")]5396#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5397pub unsafe fn lasx_xvpickve2gr_du<const IMM2: u32>(a: v4i64) -> u64 {5397pub fn lasx_xvpickve2gr_du<const IMM2: u32>(a: v4i64) -> u64 {
5398 static_assert_uimm_bits!(IMM2, 2);5398 static_assert_uimm_bits!(IMM2, 2);
5399 __lasx_xvpickve2gr_du(a, IMM2)5399 unsafe { __lasx_xvpickve2gr_du(a, IMM2) }
5400}5400}
54015401
5402#[inline]5402#[inline]
5403#[target_feature(enable = "lasx")]5403#[target_feature(enable = "lasx")]
5404#[unstable(feature = "stdarch_loongarch", issue = "117427")]5404#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5405pub unsafe fn lasx_xvaddwev_q_d(a: v4i64, b: v4i64) -> v4i64 {5405pub fn lasx_xvaddwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
5406 __lasx_xvaddwev_q_d(a, b)5406 unsafe { __lasx_xvaddwev_q_d(a, b) }
5407}5407}
54085408
5409#[inline]5409#[inline]
5410#[target_feature(enable = "lasx")]5410#[target_feature(enable = "lasx")]
5411#[unstable(feature = "stdarch_loongarch", issue = "117427")]5411#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5412pub unsafe fn lasx_xvaddwev_d_w(a: v8i32, b: v8i32) -> v4i64 {5412pub fn lasx_xvaddwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
5413 __lasx_xvaddwev_d_w(a, b)5413 unsafe { __lasx_xvaddwev_d_w(a, b) }
5414}5414}
54155415
5416#[inline]5416#[inline]
5417#[target_feature(enable = "lasx")]5417#[target_feature(enable = "lasx")]
5418#[unstable(feature = "stdarch_loongarch", issue = "117427")]5418#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5419pub unsafe fn lasx_xvaddwev_w_h(a: v16i16, b: v16i16) -> v8i32 {5419pub fn lasx_xvaddwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
5420 __lasx_xvaddwev_w_h(a, b)5420 unsafe { __lasx_xvaddwev_w_h(a, b) }
5421}5421}
54225422
5423#[inline]5423#[inline]
5424#[target_feature(enable = "lasx")]5424#[target_feature(enable = "lasx")]
5425#[unstable(feature = "stdarch_loongarch", issue = "117427")]5425#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5426pub unsafe fn lasx_xvaddwev_h_b(a: v32i8, b: v32i8) -> v16i16 {5426pub fn lasx_xvaddwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
5427 __lasx_xvaddwev_h_b(a, b)5427 unsafe { __lasx_xvaddwev_h_b(a, b) }
5428}5428}
54295429
5430#[inline]5430#[inline]
5431#[target_feature(enable = "lasx")]5431#[target_feature(enable = "lasx")]
5432#[unstable(feature = "stdarch_loongarch", issue = "117427")]5432#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5433pub unsafe fn lasx_xvaddwev_q_du(a: v4u64, b: v4u64) -> v4i64 {5433pub fn lasx_xvaddwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
5434 __lasx_xvaddwev_q_du(a, b)5434 unsafe { __lasx_xvaddwev_q_du(a, b) }
5435}5435}
54365436
5437#[inline]5437#[inline]
5438#[target_feature(enable = "lasx")]5438#[target_feature(enable = "lasx")]
5439#[unstable(feature = "stdarch_loongarch", issue = "117427")]5439#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5440pub unsafe fn lasx_xvaddwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {5440pub fn lasx_xvaddwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
5441 __lasx_xvaddwev_d_wu(a, b)5441 unsafe { __lasx_xvaddwev_d_wu(a, b) }
5442}5442}
54435443
5444#[inline]5444#[inline]
5445#[target_feature(enable = "lasx")]5445#[target_feature(enable = "lasx")]
5446#[unstable(feature = "stdarch_loongarch", issue = "117427")]5446#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5447pub unsafe fn lasx_xvaddwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {5447pub fn lasx_xvaddwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
5448 __lasx_xvaddwev_w_hu(a, b)5448 unsafe { __lasx_xvaddwev_w_hu(a, b) }
5449}5449}
54505450
5451#[inline]5451#[inline]
5452#[target_feature(enable = "lasx")]5452#[target_feature(enable = "lasx")]
5453#[unstable(feature = "stdarch_loongarch", issue = "117427")]5453#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5454pub unsafe fn lasx_xvaddwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {5454pub fn lasx_xvaddwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
5455 __lasx_xvaddwev_h_bu(a, b)5455 unsafe { __lasx_xvaddwev_h_bu(a, b) }
5456}5456}
54575457
5458#[inline]5458#[inline]
5459#[target_feature(enable = "lasx")]5459#[target_feature(enable = "lasx")]
5460#[unstable(feature = "stdarch_loongarch", issue = "117427")]5460#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5461pub unsafe fn lasx_xvsubwev_q_d(a: v4i64, b: v4i64) -> v4i64 {5461pub fn lasx_xvsubwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
5462 __lasx_xvsubwev_q_d(a, b)5462 unsafe { __lasx_xvsubwev_q_d(a, b) }
5463}5463}
54645464
5465#[inline]5465#[inline]
5466#[target_feature(enable = "lasx")]5466#[target_feature(enable = "lasx")]
5467#[unstable(feature = "stdarch_loongarch", issue = "117427")]5467#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5468pub unsafe fn lasx_xvsubwev_d_w(a: v8i32, b: v8i32) -> v4i64 {5468pub fn lasx_xvsubwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
5469 __lasx_xvsubwev_d_w(a, b)5469 unsafe { __lasx_xvsubwev_d_w(a, b) }
5470}5470}
54715471
5472#[inline]5472#[inline]
5473#[target_feature(enable = "lasx")]5473#[target_feature(enable = "lasx")]
5474#[unstable(feature = "stdarch_loongarch", issue = "117427")]5474#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5475pub unsafe fn lasx_xvsubwev_w_h(a: v16i16, b: v16i16) -> v8i32 {5475pub fn lasx_xvsubwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
5476 __lasx_xvsubwev_w_h(a, b)5476 unsafe { __lasx_xvsubwev_w_h(a, b) }
5477}5477}
54785478
5479#[inline]5479#[inline]
5480#[target_feature(enable = "lasx")]5480#[target_feature(enable = "lasx")]
5481#[unstable(feature = "stdarch_loongarch", issue = "117427")]5481#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5482pub unsafe fn lasx_xvsubwev_h_b(a: v32i8, b: v32i8) -> v16i16 {5482pub fn lasx_xvsubwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
5483 __lasx_xvsubwev_h_b(a, b)5483 unsafe { __lasx_xvsubwev_h_b(a, b) }
5484}5484}
54855485
5486#[inline]5486#[inline]
5487#[target_feature(enable = "lasx")]5487#[target_feature(enable = "lasx")]
5488#[unstable(feature = "stdarch_loongarch", issue = "117427")]5488#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5489pub unsafe fn lasx_xvsubwev_q_du(a: v4u64, b: v4u64) -> v4i64 {5489pub fn lasx_xvsubwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
5490 __lasx_xvsubwev_q_du(a, b)5490 unsafe { __lasx_xvsubwev_q_du(a, b) }
5491}5491}
54925492
5493#[inline]5493#[inline]
5494#[target_feature(enable = "lasx")]5494#[target_feature(enable = "lasx")]
5495#[unstable(feature = "stdarch_loongarch", issue = "117427")]5495#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5496pub unsafe fn lasx_xvsubwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {5496pub fn lasx_xvsubwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
5497 __lasx_xvsubwev_d_wu(a, b)5497 unsafe { __lasx_xvsubwev_d_wu(a, b) }
5498}5498}
54995499
5500#[inline]5500#[inline]
5501#[target_feature(enable = "lasx")]5501#[target_feature(enable = "lasx")]
5502#[unstable(feature = "stdarch_loongarch", issue = "117427")]5502#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5503pub unsafe fn lasx_xvsubwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {5503pub fn lasx_xvsubwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
5504 __lasx_xvsubwev_w_hu(a, b)5504 unsafe { __lasx_xvsubwev_w_hu(a, b) }
5505}5505}
55065506
5507#[inline]5507#[inline]
5508#[target_feature(enable = "lasx")]5508#[target_feature(enable = "lasx")]
5509#[unstable(feature = "stdarch_loongarch", issue = "117427")]5509#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5510pub unsafe fn lasx_xvsubwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {5510pub fn lasx_xvsubwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
5511 __lasx_xvsubwev_h_bu(a, b)5511 unsafe { __lasx_xvsubwev_h_bu(a, b) }
5512}5512}
55135513
5514#[inline]5514#[inline]
5515#[target_feature(enable = "lasx")]5515#[target_feature(enable = "lasx")]
5516#[unstable(feature = "stdarch_loongarch", issue = "117427")]5516#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5517pub unsafe fn lasx_xvmulwev_q_d(a: v4i64, b: v4i64) -> v4i64 {5517pub fn lasx_xvmulwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
5518 __lasx_xvmulwev_q_d(a, b)5518 unsafe { __lasx_xvmulwev_q_d(a, b) }
5519}5519}
55205520
5521#[inline]5521#[inline]
5522#[target_feature(enable = "lasx")]5522#[target_feature(enable = "lasx")]
5523#[unstable(feature = "stdarch_loongarch", issue = "117427")]5523#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5524pub unsafe fn lasx_xvmulwev_d_w(a: v8i32, b: v8i32) -> v4i64 {5524pub fn lasx_xvmulwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
5525 __lasx_xvmulwev_d_w(a, b)5525 unsafe { __lasx_xvmulwev_d_w(a, b) }
5526}5526}
55275527
5528#[inline]5528#[inline]
5529#[target_feature(enable = "lasx")]5529#[target_feature(enable = "lasx")]
5530#[unstable(feature = "stdarch_loongarch", issue = "117427")]5530#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5531pub unsafe fn lasx_xvmulwev_w_h(a: v16i16, b: v16i16) -> v8i32 {5531pub fn lasx_xvmulwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
5532 __lasx_xvmulwev_w_h(a, b)5532 unsafe { __lasx_xvmulwev_w_h(a, b) }
5533}5533}
55345534
5535#[inline]5535#[inline]
5536#[target_feature(enable = "lasx")]5536#[target_feature(enable = "lasx")]
5537#[unstable(feature = "stdarch_loongarch", issue = "117427")]5537#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5538pub unsafe fn lasx_xvmulwev_h_b(a: v32i8, b: v32i8) -> v16i16 {5538pub fn lasx_xvmulwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
5539 __lasx_xvmulwev_h_b(a, b)5539 unsafe { __lasx_xvmulwev_h_b(a, b) }
5540}5540}
55415541
5542#[inline]5542#[inline]
5543#[target_feature(enable = "lasx")]5543#[target_feature(enable = "lasx")]
5544#[unstable(feature = "stdarch_loongarch", issue = "117427")]5544#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5545pub unsafe fn lasx_xvmulwev_q_du(a: v4u64, b: v4u64) -> v4i64 {5545pub fn lasx_xvmulwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
5546 __lasx_xvmulwev_q_du(a, b)5546 unsafe { __lasx_xvmulwev_q_du(a, b) }
5547}5547}
55485548
5549#[inline]5549#[inline]
5550#[target_feature(enable = "lasx")]5550#[target_feature(enable = "lasx")]
5551#[unstable(feature = "stdarch_loongarch", issue = "117427")]5551#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5552pub unsafe fn lasx_xvmulwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {5552pub fn lasx_xvmulwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
5553 __lasx_xvmulwev_d_wu(a, b)5553 unsafe { __lasx_xvmulwev_d_wu(a, b) }
5554}5554}
55555555
5556#[inline]5556#[inline]
5557#[target_feature(enable = "lasx")]5557#[target_feature(enable = "lasx")]
5558#[unstable(feature = "stdarch_loongarch", issue = "117427")]5558#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5559pub unsafe fn lasx_xvmulwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {5559pub fn lasx_xvmulwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
5560 __lasx_xvmulwev_w_hu(a, b)5560 unsafe { __lasx_xvmulwev_w_hu(a, b) }
5561}5561}
55625562
5563#[inline]5563#[inline]
5564#[target_feature(enable = "lasx")]5564#[target_feature(enable = "lasx")]
5565#[unstable(feature = "stdarch_loongarch", issue = "117427")]5565#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5566pub unsafe fn lasx_xvmulwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {5566pub fn lasx_xvmulwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
5567 __lasx_xvmulwev_h_bu(a, b)5567 unsafe { __lasx_xvmulwev_h_bu(a, b) }
5568}5568}
55695569
5570#[inline]5570#[inline]
5571#[target_feature(enable = "lasx")]5571#[target_feature(enable = "lasx")]
5572#[unstable(feature = "stdarch_loongarch", issue = "117427")]5572#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5573pub unsafe fn lasx_xvaddwod_q_d(a: v4i64, b: v4i64) -> v4i64 {5573pub fn lasx_xvaddwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
5574 __lasx_xvaddwod_q_d(a, b)5574 unsafe { __lasx_xvaddwod_q_d(a, b) }
5575}5575}
55765576
5577#[inline]5577#[inline]
5578#[target_feature(enable = "lasx")]5578#[target_feature(enable = "lasx")]
5579#[unstable(feature = "stdarch_loongarch", issue = "117427")]5579#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5580pub unsafe fn lasx_xvaddwod_d_w(a: v8i32, b: v8i32) -> v4i64 {5580pub fn lasx_xvaddwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
5581 __lasx_xvaddwod_d_w(a, b)5581 unsafe { __lasx_xvaddwod_d_w(a, b) }
5582}5582}
55835583
5584#[inline]5584#[inline]
5585#[target_feature(enable = "lasx")]5585#[target_feature(enable = "lasx")]
5586#[unstable(feature = "stdarch_loongarch", issue = "117427")]5586#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5587pub unsafe fn lasx_xvaddwod_w_h(a: v16i16, b: v16i16) -> v8i32 {5587pub fn lasx_xvaddwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
5588 __lasx_xvaddwod_w_h(a, b)5588 unsafe { __lasx_xvaddwod_w_h(a, b) }
5589}5589}
55905590
5591#[inline]5591#[inline]
5592#[target_feature(enable = "lasx")]5592#[target_feature(enable = "lasx")]
5593#[unstable(feature = "stdarch_loongarch", issue = "117427")]5593#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5594pub unsafe fn lasx_xvaddwod_h_b(a: v32i8, b: v32i8) -> v16i16 {5594pub fn lasx_xvaddwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
5595 __lasx_xvaddwod_h_b(a, b)5595 unsafe { __lasx_xvaddwod_h_b(a, b) }
5596}5596}
55975597
5598#[inline]5598#[inline]
5599#[target_feature(enable = "lasx")]5599#[target_feature(enable = "lasx")]
5600#[unstable(feature = "stdarch_loongarch", issue = "117427")]5600#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5601pub unsafe fn lasx_xvaddwod_q_du(a: v4u64, b: v4u64) -> v4i64 {5601pub fn lasx_xvaddwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
5602 __lasx_xvaddwod_q_du(a, b)5602 unsafe { __lasx_xvaddwod_q_du(a, b) }
5603}5603}
56045604
5605#[inline]5605#[inline]
5606#[target_feature(enable = "lasx")]5606#[target_feature(enable = "lasx")]
5607#[unstable(feature = "stdarch_loongarch", issue = "117427")]5607#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5608pub unsafe fn lasx_xvaddwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {5608pub fn lasx_xvaddwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
5609 __lasx_xvaddwod_d_wu(a, b)5609 unsafe { __lasx_xvaddwod_d_wu(a, b) }
5610}5610}
56115611
5612#[inline]5612#[inline]
5613#[target_feature(enable = "lasx")]5613#[target_feature(enable = "lasx")]
5614#[unstable(feature = "stdarch_loongarch", issue = "117427")]5614#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5615pub unsafe fn lasx_xvaddwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {5615pub fn lasx_xvaddwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
5616 __lasx_xvaddwod_w_hu(a, b)5616 unsafe { __lasx_xvaddwod_w_hu(a, b) }
5617}5617}
56185618
5619#[inline]5619#[inline]
5620#[target_feature(enable = "lasx")]5620#[target_feature(enable = "lasx")]
5621#[unstable(feature = "stdarch_loongarch", issue = "117427")]5621#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5622pub unsafe fn lasx_xvaddwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {5622pub fn lasx_xvaddwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
5623 __lasx_xvaddwod_h_bu(a, b)5623 unsafe { __lasx_xvaddwod_h_bu(a, b) }
5624}5624}
56255625
5626#[inline]5626#[inline]
5627#[target_feature(enable = "lasx")]5627#[target_feature(enable = "lasx")]
5628#[unstable(feature = "stdarch_loongarch", issue = "117427")]5628#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5629pub unsafe fn lasx_xvsubwod_q_d(a: v4i64, b: v4i64) -> v4i64 {5629pub fn lasx_xvsubwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
5630 __lasx_xvsubwod_q_d(a, b)5630 unsafe { __lasx_xvsubwod_q_d(a, b) }
5631}5631}
56325632
5633#[inline]5633#[inline]
5634#[target_feature(enable = "lasx")]5634#[target_feature(enable = "lasx")]
5635#[unstable(feature = "stdarch_loongarch", issue = "117427")]5635#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5636pub unsafe fn lasx_xvsubwod_d_w(a: v8i32, b: v8i32) -> v4i64 {5636pub fn lasx_xvsubwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
5637 __lasx_xvsubwod_d_w(a, b)5637 unsafe { __lasx_xvsubwod_d_w(a, b) }
5638}5638}
56395639
5640#[inline]5640#[inline]
5641#[target_feature(enable = "lasx")]5641#[target_feature(enable = "lasx")]
5642#[unstable(feature = "stdarch_loongarch", issue = "117427")]5642#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5643pub unsafe fn lasx_xvsubwod_w_h(a: v16i16, b: v16i16) -> v8i32 {5643pub fn lasx_xvsubwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
5644 __lasx_xvsubwod_w_h(a, b)5644 unsafe { __lasx_xvsubwod_w_h(a, b) }
5645}5645}
56465646
5647#[inline]5647#[inline]
5648#[target_feature(enable = "lasx")]5648#[target_feature(enable = "lasx")]
5649#[unstable(feature = "stdarch_loongarch", issue = "117427")]5649#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5650pub unsafe fn lasx_xvsubwod_h_b(a: v32i8, b: v32i8) -> v16i16 {5650pub fn lasx_xvsubwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
5651 __lasx_xvsubwod_h_b(a, b)5651 unsafe { __lasx_xvsubwod_h_b(a, b) }
5652}5652}
56535653
5654#[inline]5654#[inline]
5655#[target_feature(enable = "lasx")]5655#[target_feature(enable = "lasx")]
5656#[unstable(feature = "stdarch_loongarch", issue = "117427")]5656#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5657pub unsafe fn lasx_xvsubwod_q_du(a: v4u64, b: v4u64) -> v4i64 {5657pub fn lasx_xvsubwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
5658 __lasx_xvsubwod_q_du(a, b)5658 unsafe { __lasx_xvsubwod_q_du(a, b) }
5659}5659}
56605660
5661#[inline]5661#[inline]
5662#[target_feature(enable = "lasx")]5662#[target_feature(enable = "lasx")]
5663#[unstable(feature = "stdarch_loongarch", issue = "117427")]5663#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5664pub unsafe fn lasx_xvsubwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {5664pub fn lasx_xvsubwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
5665 __lasx_xvsubwod_d_wu(a, b)5665 unsafe { __lasx_xvsubwod_d_wu(a, b) }
5666}5666}
56675667
5668#[inline]5668#[inline]
5669#[target_feature(enable = "lasx")]5669#[target_feature(enable = "lasx")]
5670#[unstable(feature = "stdarch_loongarch", issue = "117427")]5670#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5671pub unsafe fn lasx_xvsubwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {5671pub fn lasx_xvsubwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
5672 __lasx_xvsubwod_w_hu(a, b)5672 unsafe { __lasx_xvsubwod_w_hu(a, b) }
5673}5673}
56745674
5675#[inline]5675#[inline]
5676#[target_feature(enable = "lasx")]5676#[target_feature(enable = "lasx")]
5677#[unstable(feature = "stdarch_loongarch", issue = "117427")]5677#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5678pub unsafe fn lasx_xvsubwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {5678pub fn lasx_xvsubwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
5679 __lasx_xvsubwod_h_bu(a, b)5679 unsafe { __lasx_xvsubwod_h_bu(a, b) }
5680}5680}
56815681
5682#[inline]5682#[inline]
5683#[target_feature(enable = "lasx")]5683#[target_feature(enable = "lasx")]
5684#[unstable(feature = "stdarch_loongarch", issue = "117427")]5684#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5685pub unsafe fn lasx_xvmulwod_q_d(a: v4i64, b: v4i64) -> v4i64 {5685pub fn lasx_xvmulwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
5686 __lasx_xvmulwod_q_d(a, b)5686 unsafe { __lasx_xvmulwod_q_d(a, b) }
5687}5687}
56885688
5689#[inline]5689#[inline]
5690#[target_feature(enable = "lasx")]5690#[target_feature(enable = "lasx")]
5691#[unstable(feature = "stdarch_loongarch", issue = "117427")]5691#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5692pub unsafe fn lasx_xvmulwod_d_w(a: v8i32, b: v8i32) -> v4i64 {5692pub fn lasx_xvmulwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
5693 __lasx_xvmulwod_d_w(a, b)5693 unsafe { __lasx_xvmulwod_d_w(a, b) }
5694}5694}
56955695
5696#[inline]5696#[inline]
5697#[target_feature(enable = "lasx")]5697#[target_feature(enable = "lasx")]
5698#[unstable(feature = "stdarch_loongarch", issue = "117427")]5698#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5699pub unsafe fn lasx_xvmulwod_w_h(a: v16i16, b: v16i16) -> v8i32 {5699pub fn lasx_xvmulwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
5700 __lasx_xvmulwod_w_h(a, b)5700 unsafe { __lasx_xvmulwod_w_h(a, b) }
5701}5701}
57025702
5703#[inline]5703#[inline]
5704#[target_feature(enable = "lasx")]5704#[target_feature(enable = "lasx")]
5705#[unstable(feature = "stdarch_loongarch", issue = "117427")]5705#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5706pub unsafe fn lasx_xvmulwod_h_b(a: v32i8, b: v32i8) -> v16i16 {5706pub fn lasx_xvmulwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
5707 __lasx_xvmulwod_h_b(a, b)5707 unsafe { __lasx_xvmulwod_h_b(a, b) }
5708}5708}
57095709
5710#[inline]5710#[inline]
5711#[target_feature(enable = "lasx")]5711#[target_feature(enable = "lasx")]
5712#[unstable(feature = "stdarch_loongarch", issue = "117427")]5712#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5713pub unsafe fn lasx_xvmulwod_q_du(a: v4u64, b: v4u64) -> v4i64 {5713pub fn lasx_xvmulwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
5714 __lasx_xvmulwod_q_du(a, b)5714 unsafe { __lasx_xvmulwod_q_du(a, b) }
5715}5715}
57165716
5717#[inline]5717#[inline]
5718#[target_feature(enable = "lasx")]5718#[target_feature(enable = "lasx")]
5719#[unstable(feature = "stdarch_loongarch", issue = "117427")]5719#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5720pub unsafe fn lasx_xvmulwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {5720pub fn lasx_xvmulwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
5721 __lasx_xvmulwod_d_wu(a, b)5721 unsafe { __lasx_xvmulwod_d_wu(a, b) }
5722}5722}
57235723
5724#[inline]5724#[inline]
5725#[target_feature(enable = "lasx")]5725#[target_feature(enable = "lasx")]
5726#[unstable(feature = "stdarch_loongarch", issue = "117427")]5726#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5727pub unsafe fn lasx_xvmulwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {5727pub fn lasx_xvmulwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
5728 __lasx_xvmulwod_w_hu(a, b)5728 unsafe { __lasx_xvmulwod_w_hu(a, b) }
5729}5729}
57305730
5731#[inline]5731#[inline]
5732#[target_feature(enable = "lasx")]5732#[target_feature(enable = "lasx")]
5733#[unstable(feature = "stdarch_loongarch", issue = "117427")]5733#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5734pub unsafe fn lasx_xvmulwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {5734pub fn lasx_xvmulwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
5735 __lasx_xvmulwod_h_bu(a, b)5735 unsafe { __lasx_xvmulwod_h_bu(a, b) }
5736}5736}
57375737
5738#[inline]5738#[inline]
5739#[target_feature(enable = "lasx")]5739#[target_feature(enable = "lasx")]
5740#[unstable(feature = "stdarch_loongarch", issue = "117427")]5740#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5741pub unsafe fn lasx_xvaddwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {5741pub fn lasx_xvaddwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
5742 __lasx_xvaddwev_d_wu_w(a, b)5742 unsafe { __lasx_xvaddwev_d_wu_w(a, b) }
5743}5743}
57445744
5745#[inline]5745#[inline]
5746#[target_feature(enable = "lasx")]5746#[target_feature(enable = "lasx")]
5747#[unstable(feature = "stdarch_loongarch", issue = "117427")]5747#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5748pub unsafe fn lasx_xvaddwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {5748pub fn lasx_xvaddwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
5749 __lasx_xvaddwev_w_hu_h(a, b)5749 unsafe { __lasx_xvaddwev_w_hu_h(a, b) }
5750}5750}
57515751
5752#[inline]5752#[inline]
5753#[target_feature(enable = "lasx")]5753#[target_feature(enable = "lasx")]
5754#[unstable(feature = "stdarch_loongarch", issue = "117427")]5754#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5755pub unsafe fn lasx_xvaddwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {5755pub fn lasx_xvaddwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
5756 __lasx_xvaddwev_h_bu_b(a, b)5756 unsafe { __lasx_xvaddwev_h_bu_b(a, b) }
5757}5757}
57585758
5759#[inline]5759#[inline]
5760#[target_feature(enable = "lasx")]5760#[target_feature(enable = "lasx")]
5761#[unstable(feature = "stdarch_loongarch", issue = "117427")]5761#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5762pub unsafe fn lasx_xvmulwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {5762pub fn lasx_xvmulwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
5763 __lasx_xvmulwev_d_wu_w(a, b)5763 unsafe { __lasx_xvmulwev_d_wu_w(a, b) }
5764}5764}
57655765
5766#[inline]5766#[inline]
5767#[target_feature(enable = "lasx")]5767#[target_feature(enable = "lasx")]
5768#[unstable(feature = "stdarch_loongarch", issue = "117427")]5768#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5769pub unsafe fn lasx_xvmulwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {5769pub fn lasx_xvmulwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
5770 __lasx_xvmulwev_w_hu_h(a, b)5770 unsafe { __lasx_xvmulwev_w_hu_h(a, b) }
5771}5771}
57725772
5773#[inline]5773#[inline]
5774#[target_feature(enable = "lasx")]5774#[target_feature(enable = "lasx")]
5775#[unstable(feature = "stdarch_loongarch", issue = "117427")]5775#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5776pub unsafe fn lasx_xvmulwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {5776pub fn lasx_xvmulwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
5777 __lasx_xvmulwev_h_bu_b(a, b)5777 unsafe { __lasx_xvmulwev_h_bu_b(a, b) }
5778}5778}
57795779
5780#[inline]5780#[inline]
5781#[target_feature(enable = "lasx")]5781#[target_feature(enable = "lasx")]
5782#[unstable(feature = "stdarch_loongarch", issue = "117427")]5782#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5783pub unsafe fn lasx_xvaddwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {5783pub fn lasx_xvaddwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
5784 __lasx_xvaddwod_d_wu_w(a, b)5784 unsafe { __lasx_xvaddwod_d_wu_w(a, b) }
5785}5785}
57865786
5787#[inline]5787#[inline]
5788#[target_feature(enable = "lasx")]5788#[target_feature(enable = "lasx")]
5789#[unstable(feature = "stdarch_loongarch", issue = "117427")]5789#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5790pub unsafe fn lasx_xvaddwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {5790pub fn lasx_xvaddwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
5791 __lasx_xvaddwod_w_hu_h(a, b)5791 unsafe { __lasx_xvaddwod_w_hu_h(a, b) }
5792}5792}
57935793
5794#[inline]5794#[inline]
5795#[target_feature(enable = "lasx")]5795#[target_feature(enable = "lasx")]
5796#[unstable(feature = "stdarch_loongarch", issue = "117427")]5796#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5797pub unsafe fn lasx_xvaddwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {5797pub fn lasx_xvaddwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
5798 __lasx_xvaddwod_h_bu_b(a, b)5798 unsafe { __lasx_xvaddwod_h_bu_b(a, b) }
5799}5799}
58005800
5801#[inline]5801#[inline]
5802#[target_feature(enable = "lasx")]5802#[target_feature(enable = "lasx")]
5803#[unstable(feature = "stdarch_loongarch", issue = "117427")]5803#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5804pub unsafe fn lasx_xvmulwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {5804pub fn lasx_xvmulwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
5805 __lasx_xvmulwod_d_wu_w(a, b)5805 unsafe { __lasx_xvmulwod_d_wu_w(a, b) }
5806}5806}
58075807
5808#[inline]5808#[inline]
5809#[target_feature(enable = "lasx")]5809#[target_feature(enable = "lasx")]
5810#[unstable(feature = "stdarch_loongarch", issue = "117427")]5810#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5811pub unsafe fn lasx_xvmulwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {5811pub fn lasx_xvmulwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
5812 __lasx_xvmulwod_w_hu_h(a, b)5812 unsafe { __lasx_xvmulwod_w_hu_h(a, b) }
5813}5813}
58145814
5815#[inline]5815#[inline]
5816#[target_feature(enable = "lasx")]5816#[target_feature(enable = "lasx")]
5817#[unstable(feature = "stdarch_loongarch", issue = "117427")]5817#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5818pub unsafe fn lasx_xvmulwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {5818pub fn lasx_xvmulwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
5819 __lasx_xvmulwod_h_bu_b(a, b)5819 unsafe { __lasx_xvmulwod_h_bu_b(a, b) }
5820}5820}
58215821
5822#[inline]5822#[inline]
5823#[target_feature(enable = "lasx")]5823#[target_feature(enable = "lasx")]
5824#[unstable(feature = "stdarch_loongarch", issue = "117427")]5824#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5825pub unsafe fn lasx_xvhaddw_q_d(a: v4i64, b: v4i64) -> v4i64 {5825pub fn lasx_xvhaddw_q_d(a: v4i64, b: v4i64) -> v4i64 {
5826 __lasx_xvhaddw_q_d(a, b)5826 unsafe { __lasx_xvhaddw_q_d(a, b) }
5827}5827}
58285828
5829#[inline]5829#[inline]
5830#[target_feature(enable = "lasx")]5830#[target_feature(enable = "lasx")]
5831#[unstable(feature = "stdarch_loongarch", issue = "117427")]5831#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5832pub unsafe fn lasx_xvhaddw_qu_du(a: v4u64, b: v4u64) -> v4u64 {5832pub fn lasx_xvhaddw_qu_du(a: v4u64, b: v4u64) -> v4u64 {
5833 __lasx_xvhaddw_qu_du(a, b)5833 unsafe { __lasx_xvhaddw_qu_du(a, b) }
5834}5834}
58355835
5836#[inline]5836#[inline]
5837#[target_feature(enable = "lasx")]5837#[target_feature(enable = "lasx")]
5838#[unstable(feature = "stdarch_loongarch", issue = "117427")]5838#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5839pub unsafe fn lasx_xvhsubw_q_d(a: v4i64, b: v4i64) -> v4i64 {5839pub fn lasx_xvhsubw_q_d(a: v4i64, b: v4i64) -> v4i64 {
5840 __lasx_xvhsubw_q_d(a, b)5840 unsafe { __lasx_xvhsubw_q_d(a, b) }
5841}5841}
58425842
5843#[inline]5843#[inline]
5844#[target_feature(enable = "lasx")]5844#[target_feature(enable = "lasx")]
5845#[unstable(feature = "stdarch_loongarch", issue = "117427")]5845#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5846pub unsafe fn lasx_xvhsubw_qu_du(a: v4u64, b: v4u64) -> v4u64 {5846pub fn lasx_xvhsubw_qu_du(a: v4u64, b: v4u64) -> v4u64 {
5847 __lasx_xvhsubw_qu_du(a, b)5847 unsafe { __lasx_xvhsubw_qu_du(a, b) }
5848}5848}
58495849
5850#[inline]5850#[inline]
5851#[target_feature(enable = "lasx")]5851#[target_feature(enable = "lasx")]
5852#[unstable(feature = "stdarch_loongarch", issue = "117427")]5852#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5853pub unsafe fn lasx_xvmaddwev_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {5853pub fn lasx_xvmaddwev_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
5854 __lasx_xvmaddwev_q_d(a, b, c)5854 unsafe { __lasx_xvmaddwev_q_d(a, b, c) }
5855}5855}
58565856
5857#[inline]5857#[inline]
5858#[target_feature(enable = "lasx")]5858#[target_feature(enable = "lasx")]
5859#[unstable(feature = "stdarch_loongarch", issue = "117427")]5859#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5860pub unsafe fn lasx_xvmaddwev_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {5860pub fn lasx_xvmaddwev_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {
5861 __lasx_xvmaddwev_d_w(a, b, c)5861 unsafe { __lasx_xvmaddwev_d_w(a, b, c) }
5862}5862}
58635863
5864#[inline]5864#[inline]
5865#[target_feature(enable = "lasx")]5865#[target_feature(enable = "lasx")]
5866#[unstable(feature = "stdarch_loongarch", issue = "117427")]5866#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5867pub unsafe fn lasx_xvmaddwev_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {5867pub fn lasx_xvmaddwev_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {
5868 __lasx_xvmaddwev_w_h(a, b, c)5868 unsafe { __lasx_xvmaddwev_w_h(a, b, c) }
5869}5869}
58705870
5871#[inline]5871#[inline]
5872#[target_feature(enable = "lasx")]5872#[target_feature(enable = "lasx")]
5873#[unstable(feature = "stdarch_loongarch", issue = "117427")]5873#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5874pub unsafe fn lasx_xvmaddwev_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {5874pub fn lasx_xvmaddwev_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {
5875 __lasx_xvmaddwev_h_b(a, b, c)5875 unsafe { __lasx_xvmaddwev_h_b(a, b, c) }
5876}5876}
58775877
5878#[inline]5878#[inline]
5879#[target_feature(enable = "lasx")]5879#[target_feature(enable = "lasx")]
5880#[unstable(feature = "stdarch_loongarch", issue = "117427")]5880#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5881pub unsafe fn lasx_xvmaddwev_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {5881pub fn lasx_xvmaddwev_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {
5882 __lasx_xvmaddwev_q_du(a, b, c)5882 unsafe { __lasx_xvmaddwev_q_du(a, b, c) }
5883}5883}
58845884
5885#[inline]5885#[inline]
5886#[target_feature(enable = "lasx")]5886#[target_feature(enable = "lasx")]
5887#[unstable(feature = "stdarch_loongarch", issue = "117427")]5887#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5888pub unsafe fn lasx_xvmaddwev_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {5888pub fn lasx_xvmaddwev_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {
5889 __lasx_xvmaddwev_d_wu(a, b, c)5889 unsafe { __lasx_xvmaddwev_d_wu(a, b, c) }
5890}5890}
58915891
5892#[inline]5892#[inline]
5893#[target_feature(enable = "lasx")]5893#[target_feature(enable = "lasx")]
5894#[unstable(feature = "stdarch_loongarch", issue = "117427")]5894#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5895pub unsafe fn lasx_xvmaddwev_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {5895pub fn lasx_xvmaddwev_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {
5896 __lasx_xvmaddwev_w_hu(a, b, c)5896 unsafe { __lasx_xvmaddwev_w_hu(a, b, c) }
5897}5897}
58985898
5899#[inline]5899#[inline]
5900#[target_feature(enable = "lasx")]5900#[target_feature(enable = "lasx")]
5901#[unstable(feature = "stdarch_loongarch", issue = "117427")]5901#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5902pub unsafe fn lasx_xvmaddwev_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {5902pub fn lasx_xvmaddwev_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {
5903 __lasx_xvmaddwev_h_bu(a, b, c)5903 unsafe { __lasx_xvmaddwev_h_bu(a, b, c) }
5904}5904}
59055905
5906#[inline]5906#[inline]
5907#[target_feature(enable = "lasx")]5907#[target_feature(enable = "lasx")]
5908#[unstable(feature = "stdarch_loongarch", issue = "117427")]5908#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5909pub unsafe fn lasx_xvmaddwod_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {5909pub fn lasx_xvmaddwod_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
5910 __lasx_xvmaddwod_q_d(a, b, c)5910 unsafe { __lasx_xvmaddwod_q_d(a, b, c) }
5911}5911}
59125912
5913#[inline]5913#[inline]
5914#[target_feature(enable = "lasx")]5914#[target_feature(enable = "lasx")]
5915#[unstable(feature = "stdarch_loongarch", issue = "117427")]5915#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5916pub unsafe fn lasx_xvmaddwod_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {5916pub fn lasx_xvmaddwod_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {
5917 __lasx_xvmaddwod_d_w(a, b, c)5917 unsafe { __lasx_xvmaddwod_d_w(a, b, c) }
5918}5918}
59195919
5920#[inline]5920#[inline]
5921#[target_feature(enable = "lasx")]5921#[target_feature(enable = "lasx")]
5922#[unstable(feature = "stdarch_loongarch", issue = "117427")]5922#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5923pub unsafe fn lasx_xvmaddwod_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {5923pub fn lasx_xvmaddwod_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {
5924 __lasx_xvmaddwod_w_h(a, b, c)5924 unsafe { __lasx_xvmaddwod_w_h(a, b, c) }
5925}5925}
59265926
5927#[inline]5927#[inline]
5928#[target_feature(enable = "lasx")]5928#[target_feature(enable = "lasx")]
5929#[unstable(feature = "stdarch_loongarch", issue = "117427")]5929#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5930pub unsafe fn lasx_xvmaddwod_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {5930pub fn lasx_xvmaddwod_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {
5931 __lasx_xvmaddwod_h_b(a, b, c)5931 unsafe { __lasx_xvmaddwod_h_b(a, b, c) }
5932}5932}
59335933
5934#[inline]5934#[inline]
5935#[target_feature(enable = "lasx")]5935#[target_feature(enable = "lasx")]
5936#[unstable(feature = "stdarch_loongarch", issue = "117427")]5936#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5937pub unsafe fn lasx_xvmaddwod_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {5937pub fn lasx_xvmaddwod_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {
5938 __lasx_xvmaddwod_q_du(a, b, c)5938 unsafe { __lasx_xvmaddwod_q_du(a, b, c) }
5939}5939}
59405940
5941#[inline]5941#[inline]
5942#[target_feature(enable = "lasx")]5942#[target_feature(enable = "lasx")]
5943#[unstable(feature = "stdarch_loongarch", issue = "117427")]5943#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5944pub unsafe fn lasx_xvmaddwod_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {5944pub fn lasx_xvmaddwod_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {
5945 __lasx_xvmaddwod_d_wu(a, b, c)5945 unsafe { __lasx_xvmaddwod_d_wu(a, b, c) }
5946}5946}
59475947
5948#[inline]5948#[inline]
5949#[target_feature(enable = "lasx")]5949#[target_feature(enable = "lasx")]
5950#[unstable(feature = "stdarch_loongarch", issue = "117427")]5950#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5951pub unsafe fn lasx_xvmaddwod_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {5951pub fn lasx_xvmaddwod_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {
5952 __lasx_xvmaddwod_w_hu(a, b, c)5952 unsafe { __lasx_xvmaddwod_w_hu(a, b, c) }
5953}5953}
59545954
5955#[inline]5955#[inline]
5956#[target_feature(enable = "lasx")]5956#[target_feature(enable = "lasx")]
5957#[unstable(feature = "stdarch_loongarch", issue = "117427")]5957#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5958pub unsafe fn lasx_xvmaddwod_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {5958pub fn lasx_xvmaddwod_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {
5959 __lasx_xvmaddwod_h_bu(a, b, c)5959 unsafe { __lasx_xvmaddwod_h_bu(a, b, c) }
5960}5960}
59615961
5962#[inline]5962#[inline]
5963#[target_feature(enable = "lasx")]5963#[target_feature(enable = "lasx")]
5964#[unstable(feature = "stdarch_loongarch", issue = "117427")]5964#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5965pub unsafe fn lasx_xvmaddwev_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {5965pub fn lasx_xvmaddwev_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {
5966 __lasx_xvmaddwev_q_du_d(a, b, c)5966 unsafe { __lasx_xvmaddwev_q_du_d(a, b, c) }
5967}5967}
59685968
5969#[inline]5969#[inline]
5970#[target_feature(enable = "lasx")]5970#[target_feature(enable = "lasx")]
5971#[unstable(feature = "stdarch_loongarch", issue = "117427")]5971#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5972pub unsafe fn lasx_xvmaddwev_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {5972pub fn lasx_xvmaddwev_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {
5973 __lasx_xvmaddwev_d_wu_w(a, b, c)5973 unsafe { __lasx_xvmaddwev_d_wu_w(a, b, c) }
5974}5974}
59755975
5976#[inline]5976#[inline]
5977#[target_feature(enable = "lasx")]5977#[target_feature(enable = "lasx")]
5978#[unstable(feature = "stdarch_loongarch", issue = "117427")]5978#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5979pub unsafe fn lasx_xvmaddwev_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {5979pub fn lasx_xvmaddwev_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {
5980 __lasx_xvmaddwev_w_hu_h(a, b, c)5980 unsafe { __lasx_xvmaddwev_w_hu_h(a, b, c) }
5981}5981}
59825982
5983#[inline]5983#[inline]
5984#[target_feature(enable = "lasx")]5984#[target_feature(enable = "lasx")]
5985#[unstable(feature = "stdarch_loongarch", issue = "117427")]5985#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5986pub unsafe fn lasx_xvmaddwev_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {5986pub fn lasx_xvmaddwev_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {
5987 __lasx_xvmaddwev_h_bu_b(a, b, c)5987 unsafe { __lasx_xvmaddwev_h_bu_b(a, b, c) }
5988}5988}
59895989
5990#[inline]5990#[inline]
5991#[target_feature(enable = "lasx")]5991#[target_feature(enable = "lasx")]
5992#[unstable(feature = "stdarch_loongarch", issue = "117427")]5992#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5993pub unsafe fn lasx_xvmaddwod_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {5993pub fn lasx_xvmaddwod_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {
5994 __lasx_xvmaddwod_q_du_d(a, b, c)5994 unsafe { __lasx_xvmaddwod_q_du_d(a, b, c) }
5995}5995}
59965996
5997#[inline]5997#[inline]
5998#[target_feature(enable = "lasx")]5998#[target_feature(enable = "lasx")]
5999#[unstable(feature = "stdarch_loongarch", issue = "117427")]5999#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6000pub unsafe fn lasx_xvmaddwod_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {6000pub fn lasx_xvmaddwod_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {
6001 __lasx_xvmaddwod_d_wu_w(a, b, c)6001 unsafe { __lasx_xvmaddwod_d_wu_w(a, b, c) }
6002}6002}
60036003
6004#[inline]6004#[inline]
6005#[target_feature(enable = "lasx")]6005#[target_feature(enable = "lasx")]
6006#[unstable(feature = "stdarch_loongarch", issue = "117427")]6006#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6007pub unsafe fn lasx_xvmaddwod_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {6007pub fn lasx_xvmaddwod_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {
6008 __lasx_xvmaddwod_w_hu_h(a, b, c)6008 unsafe { __lasx_xvmaddwod_w_hu_h(a, b, c) }
6009}6009}
60106010
6011#[inline]6011#[inline]
6012#[target_feature(enable = "lasx")]6012#[target_feature(enable = "lasx")]
6013#[unstable(feature = "stdarch_loongarch", issue = "117427")]6013#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6014pub unsafe fn lasx_xvmaddwod_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {6014pub fn lasx_xvmaddwod_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {
6015 __lasx_xvmaddwod_h_bu_b(a, b, c)6015 unsafe { __lasx_xvmaddwod_h_bu_b(a, b, c) }
6016}6016}
60176017
6018#[inline]6018#[inline]
6019#[target_feature(enable = "lasx")]6019#[target_feature(enable = "lasx")]
6020#[unstable(feature = "stdarch_loongarch", issue = "117427")]6020#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6021pub unsafe fn lasx_xvrotr_b(a: v32i8, b: v32i8) -> v32i8 {6021pub fn lasx_xvrotr_b(a: v32i8, b: v32i8) -> v32i8 {
6022 __lasx_xvrotr_b(a, b)6022 unsafe { __lasx_xvrotr_b(a, b) }
6023}6023}
60246024
6025#[inline]6025#[inline]
6026#[target_feature(enable = "lasx")]6026#[target_feature(enable = "lasx")]
6027#[unstable(feature = "stdarch_loongarch", issue = "117427")]6027#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6028pub unsafe fn lasx_xvrotr_h(a: v16i16, b: v16i16) -> v16i16 {6028pub fn lasx_xvrotr_h(a: v16i16, b: v16i16) -> v16i16 {
6029 __lasx_xvrotr_h(a, b)6029 unsafe { __lasx_xvrotr_h(a, b) }
6030}6030}
60316031
6032#[inline]6032#[inline]
6033#[target_feature(enable = "lasx")]6033#[target_feature(enable = "lasx")]
6034#[unstable(feature = "stdarch_loongarch", issue = "117427")]6034#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6035pub unsafe fn lasx_xvrotr_w(a: v8i32, b: v8i32) -> v8i32 {6035pub fn lasx_xvrotr_w(a: v8i32, b: v8i32) -> v8i32 {
6036 __lasx_xvrotr_w(a, b)6036 unsafe { __lasx_xvrotr_w(a, b) }
6037}6037}
60386038
6039#[inline]6039#[inline]
6040#[target_feature(enable = "lasx")]6040#[target_feature(enable = "lasx")]
6041#[unstable(feature = "stdarch_loongarch", issue = "117427")]6041#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6042pub unsafe fn lasx_xvrotr_d(a: v4i64, b: v4i64) -> v4i64 {6042pub fn lasx_xvrotr_d(a: v4i64, b: v4i64) -> v4i64 {
6043 __lasx_xvrotr_d(a, b)6043 unsafe { __lasx_xvrotr_d(a, b) }
6044}6044}
60456045
6046#[inline]6046#[inline]
6047#[target_feature(enable = "lasx")]6047#[target_feature(enable = "lasx")]
6048#[unstable(feature = "stdarch_loongarch", issue = "117427")]6048#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6049pub unsafe fn lasx_xvadd_q(a: v4i64, b: v4i64) -> v4i64 {6049pub fn lasx_xvadd_q(a: v4i64, b: v4i64) -> v4i64 {
6050 __lasx_xvadd_q(a, b)6050 unsafe { __lasx_xvadd_q(a, b) }
6051}6051}
60526052
6053#[inline]6053#[inline]
6054#[target_feature(enable = "lasx")]6054#[target_feature(enable = "lasx")]
6055#[unstable(feature = "stdarch_loongarch", issue = "117427")]6055#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6056pub unsafe fn lasx_xvsub_q(a: v4i64, b: v4i64) -> v4i64 {6056pub fn lasx_xvsub_q(a: v4i64, b: v4i64) -> v4i64 {
6057 __lasx_xvsub_q(a, b)6057 unsafe { __lasx_xvsub_q(a, b) }
6058}6058}
60596059
6060#[inline]6060#[inline]
6061#[target_feature(enable = "lasx")]6061#[target_feature(enable = "lasx")]
6062#[unstable(feature = "stdarch_loongarch", issue = "117427")]6062#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6063pub unsafe fn lasx_xvaddwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {6063pub fn lasx_xvaddwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
6064 __lasx_xvaddwev_q_du_d(a, b)6064 unsafe { __lasx_xvaddwev_q_du_d(a, b) }
6065}6065}
60666066
6067#[inline]6067#[inline]
6068#[target_feature(enable = "lasx")]6068#[target_feature(enable = "lasx")]
6069#[unstable(feature = "stdarch_loongarch", issue = "117427")]6069#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6070pub unsafe fn lasx_xvaddwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {6070pub fn lasx_xvaddwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
6071 __lasx_xvaddwod_q_du_d(a, b)6071 unsafe { __lasx_xvaddwod_q_du_d(a, b) }
6072}6072}
60736073
6074#[inline]6074#[inline]
6075#[target_feature(enable = "lasx")]6075#[target_feature(enable = "lasx")]
6076#[unstable(feature = "stdarch_loongarch", issue = "117427")]6076#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6077pub unsafe fn lasx_xvmulwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {6077pub fn lasx_xvmulwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
6078 __lasx_xvmulwev_q_du_d(a, b)6078 unsafe { __lasx_xvmulwev_q_du_d(a, b) }
6079}6079}
60806080
6081#[inline]6081#[inline]
6082#[target_feature(enable = "lasx")]6082#[target_feature(enable = "lasx")]
6083#[unstable(feature = "stdarch_loongarch", issue = "117427")]6083#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6084pub unsafe fn lasx_xvmulwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {6084pub fn lasx_xvmulwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
6085 __lasx_xvmulwod_q_du_d(a, b)6085 unsafe { __lasx_xvmulwod_q_du_d(a, b) }
6086}6086}
60876087
6088#[inline]6088#[inline]
6089#[target_feature(enable = "lasx")]6089#[target_feature(enable = "lasx")]
6090#[unstable(feature = "stdarch_loongarch", issue = "117427")]6090#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6091pub unsafe fn lasx_xvmskgez_b(a: v32i8) -> v32i8 {6091pub fn lasx_xvmskgez_b(a: v32i8) -> v32i8 {
6092 __lasx_xvmskgez_b(a)6092 unsafe { __lasx_xvmskgez_b(a) }
6093}6093}
60946094
6095#[inline]6095#[inline]
6096#[target_feature(enable = "lasx")]6096#[target_feature(enable = "lasx")]
6097#[unstable(feature = "stdarch_loongarch", issue = "117427")]6097#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6098pub unsafe fn lasx_xvmsknz_b(a: v32i8) -> v32i8 {6098pub fn lasx_xvmsknz_b(a: v32i8) -> v32i8 {
6099 __lasx_xvmsknz_b(a)6099 unsafe { __lasx_xvmsknz_b(a) }
6100}6100}
61016101
6102#[inline]6102#[inline]
6103#[target_feature(enable = "lasx")]6103#[target_feature(enable = "lasx")]
6104#[unstable(feature = "stdarch_loongarch", issue = "117427")]6104#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6105pub unsafe fn lasx_xvexth_h_b(a: v32i8) -> v16i16 {6105pub fn lasx_xvexth_h_b(a: v32i8) -> v16i16 {
6106 __lasx_xvexth_h_b(a)6106 unsafe { __lasx_xvexth_h_b(a) }
6107}6107}
61086108
6109#[inline]6109#[inline]
6110#[target_feature(enable = "lasx")]6110#[target_feature(enable = "lasx")]
6111#[unstable(feature = "stdarch_loongarch", issue = "117427")]6111#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6112pub unsafe fn lasx_xvexth_w_h(a: v16i16) -> v8i32 {6112pub fn lasx_xvexth_w_h(a: v16i16) -> v8i32 {
6113 __lasx_xvexth_w_h(a)6113 unsafe { __lasx_xvexth_w_h(a) }
6114}6114}
61156115
6116#[inline]6116#[inline]
6117#[target_feature(enable = "lasx")]6117#[target_feature(enable = "lasx")]
6118#[unstable(feature = "stdarch_loongarch", issue = "117427")]6118#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6119pub unsafe fn lasx_xvexth_d_w(a: v8i32) -> v4i64 {6119pub fn lasx_xvexth_d_w(a: v8i32) -> v4i64 {
6120 __lasx_xvexth_d_w(a)6120 unsafe { __lasx_xvexth_d_w(a) }
6121}6121}
61226122
6123#[inline]6123#[inline]
6124#[target_feature(enable = "lasx")]6124#[target_feature(enable = "lasx")]
6125#[unstable(feature = "stdarch_loongarch", issue = "117427")]6125#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6126pub unsafe fn lasx_xvexth_q_d(a: v4i64) -> v4i64 {6126pub fn lasx_xvexth_q_d(a: v4i64) -> v4i64 {
6127 __lasx_xvexth_q_d(a)6127 unsafe { __lasx_xvexth_q_d(a) }
6128}6128}
61296129
6130#[inline]6130#[inline]
6131#[target_feature(enable = "lasx")]6131#[target_feature(enable = "lasx")]
6132#[unstable(feature = "stdarch_loongarch", issue = "117427")]6132#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6133pub unsafe fn lasx_xvexth_hu_bu(a: v32u8) -> v16u16 {6133pub fn lasx_xvexth_hu_bu(a: v32u8) -> v16u16 {
6134 __lasx_xvexth_hu_bu(a)6134 unsafe { __lasx_xvexth_hu_bu(a) }
6135}6135}
61366136
6137#[inline]6137#[inline]
6138#[target_feature(enable = "lasx")]6138#[target_feature(enable = "lasx")]
6139#[unstable(feature = "stdarch_loongarch", issue = "117427")]6139#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6140pub unsafe fn lasx_xvexth_wu_hu(a: v16u16) -> v8u32 {6140pub fn lasx_xvexth_wu_hu(a: v16u16) -> v8u32 {
6141 __lasx_xvexth_wu_hu(a)6141 unsafe { __lasx_xvexth_wu_hu(a) }
6142}6142}
61436143
6144#[inline]6144#[inline]
6145#[target_feature(enable = "lasx")]6145#[target_feature(enable = "lasx")]
6146#[unstable(feature = "stdarch_loongarch", issue = "117427")]6146#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6147pub unsafe fn lasx_xvexth_du_wu(a: v8u32) -> v4u64 {6147pub fn lasx_xvexth_du_wu(a: v8u32) -> v4u64 {
6148 __lasx_xvexth_du_wu(a)6148 unsafe { __lasx_xvexth_du_wu(a) }
6149}6149}
61506150
6151#[inline]6151#[inline]
6152#[target_feature(enable = "lasx")]6152#[target_feature(enable = "lasx")]
6153#[unstable(feature = "stdarch_loongarch", issue = "117427")]6153#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6154pub unsafe fn lasx_xvexth_qu_du(a: v4u64) -> v4u64 {6154pub fn lasx_xvexth_qu_du(a: v4u64) -> v4u64 {
6155 __lasx_xvexth_qu_du(a)6155 unsafe { __lasx_xvexth_qu_du(a) }
6156}6156}
61576157
6158#[inline]6158#[inline]
6159#[target_feature(enable = "lasx")]6159#[target_feature(enable = "lasx")]
6160#[rustc_legacy_const_generics(1)]6160#[rustc_legacy_const_generics(1)]
6161#[unstable(feature = "stdarch_loongarch", issue = "117427")]6161#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6162pub unsafe fn lasx_xvrotri_b<const IMM3: u32>(a: v32i8) -> v32i8 {6162pub fn lasx_xvrotri_b<const IMM3: u32>(a: v32i8) -> v32i8 {
6163 static_assert_uimm_bits!(IMM3, 3);6163 static_assert_uimm_bits!(IMM3, 3);
6164 __lasx_xvrotri_b(a, IMM3)6164 unsafe { __lasx_xvrotri_b(a, IMM3) }
6165}6165}
61666166
6167#[inline]6167#[inline]
6168#[target_feature(enable = "lasx")]6168#[target_feature(enable = "lasx")]
6169#[rustc_legacy_const_generics(1)]6169#[rustc_legacy_const_generics(1)]
6170#[unstable(feature = "stdarch_loongarch", issue = "117427")]6170#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6171pub unsafe fn lasx_xvrotri_h<const IMM4: u32>(a: v16i16) -> v16i16 {6171pub fn lasx_xvrotri_h<const IMM4: u32>(a: v16i16) -> v16i16 {
6172 static_assert_uimm_bits!(IMM4, 4);6172 static_assert_uimm_bits!(IMM4, 4);
6173 __lasx_xvrotri_h(a, IMM4)6173 unsafe { __lasx_xvrotri_h(a, IMM4) }
6174}6174}
61756175
6176#[inline]6176#[inline]
6177#[target_feature(enable = "lasx")]6177#[target_feature(enable = "lasx")]
6178#[rustc_legacy_const_generics(1)]6178#[rustc_legacy_const_generics(1)]
6179#[unstable(feature = "stdarch_loongarch", issue = "117427")]6179#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6180pub unsafe fn lasx_xvrotri_w<const IMM5: u32>(a: v8i32) -> v8i32 {6180pub fn lasx_xvrotri_w<const IMM5: u32>(a: v8i32) -> v8i32 {
6181 static_assert_uimm_bits!(IMM5, 5);6181 static_assert_uimm_bits!(IMM5, 5);
6182 __lasx_xvrotri_w(a, IMM5)6182 unsafe { __lasx_xvrotri_w(a, IMM5) }
6183}6183}
61846184
6185#[inline]6185#[inline]
6186#[target_feature(enable = "lasx")]6186#[target_feature(enable = "lasx")]
6187#[rustc_legacy_const_generics(1)]6187#[rustc_legacy_const_generics(1)]
6188#[unstable(feature = "stdarch_loongarch", issue = "117427")]6188#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6189pub unsafe fn lasx_xvrotri_d<const IMM6: u32>(a: v4i64) -> v4i64 {6189pub fn lasx_xvrotri_d<const IMM6: u32>(a: v4i64) -> v4i64 {
6190 static_assert_uimm_bits!(IMM6, 6);6190 static_assert_uimm_bits!(IMM6, 6);
6191 __lasx_xvrotri_d(a, IMM6)6191 unsafe { __lasx_xvrotri_d(a, IMM6) }
6192}6192}
61936193
6194#[inline]6194#[inline]
6195#[target_feature(enable = "lasx")]6195#[target_feature(enable = "lasx")]
6196#[unstable(feature = "stdarch_loongarch", issue = "117427")]6196#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6197pub unsafe fn lasx_xvextl_q_d(a: v4i64) -> v4i64 {6197pub fn lasx_xvextl_q_d(a: v4i64) -> v4i64 {
6198 __lasx_xvextl_q_d(a)6198 unsafe { __lasx_xvextl_q_d(a) }
6199}6199}
62006200
6201#[inline]6201#[inline]
6202#[target_feature(enable = "lasx")]6202#[target_feature(enable = "lasx")]
6203#[rustc_legacy_const_generics(2)]6203#[rustc_legacy_const_generics(2)]
6204#[unstable(feature = "stdarch_loongarch", issue = "117427")]6204#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6205pub unsafe fn lasx_xvsrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6205pub fn lasx_xvsrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6206 static_assert_uimm_bits!(IMM4, 4);6206 static_assert_uimm_bits!(IMM4, 4);
6207 __lasx_xvsrlni_b_h(a, b, IMM4)6207 unsafe { __lasx_xvsrlni_b_h(a, b, IMM4) }
6208}6208}
62096209
6210#[inline]6210#[inline]
6211#[target_feature(enable = "lasx")]6211#[target_feature(enable = "lasx")]
6212#[rustc_legacy_const_generics(2)]6212#[rustc_legacy_const_generics(2)]
6213#[unstable(feature = "stdarch_loongarch", issue = "117427")]6213#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6214pub unsafe fn lasx_xvsrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6214pub fn lasx_xvsrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6215 static_assert_uimm_bits!(IMM5, 5);6215 static_assert_uimm_bits!(IMM5, 5);
6216 __lasx_xvsrlni_h_w(a, b, IMM5)6216 unsafe { __lasx_xvsrlni_h_w(a, b, IMM5) }
6217}6217}
62186218
6219#[inline]6219#[inline]
6220#[target_feature(enable = "lasx")]6220#[target_feature(enable = "lasx")]
6221#[rustc_legacy_const_generics(2)]6221#[rustc_legacy_const_generics(2)]
6222#[unstable(feature = "stdarch_loongarch", issue = "117427")]6222#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6223pub unsafe fn lasx_xvsrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6223pub fn lasx_xvsrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6224 static_assert_uimm_bits!(IMM6, 6);6224 static_assert_uimm_bits!(IMM6, 6);
6225 __lasx_xvsrlni_w_d(a, b, IMM6)6225 unsafe { __lasx_xvsrlni_w_d(a, b, IMM6) }
6226}6226}
62276227
6228#[inline]6228#[inline]
6229#[target_feature(enable = "lasx")]6229#[target_feature(enable = "lasx")]
6230#[rustc_legacy_const_generics(2)]6230#[rustc_legacy_const_generics(2)]
6231#[unstable(feature = "stdarch_loongarch", issue = "117427")]6231#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6232pub unsafe fn lasx_xvsrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6232pub fn lasx_xvsrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6233 static_assert_uimm_bits!(IMM7, 7);6233 static_assert_uimm_bits!(IMM7, 7);
6234 __lasx_xvsrlni_d_q(a, b, IMM7)6234 unsafe { __lasx_xvsrlni_d_q(a, b, IMM7) }
6235}6235}
62366236
6237#[inline]6237#[inline]
6238#[target_feature(enable = "lasx")]6238#[target_feature(enable = "lasx")]
6239#[rustc_legacy_const_generics(2)]6239#[rustc_legacy_const_generics(2)]
6240#[unstable(feature = "stdarch_loongarch", issue = "117427")]6240#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6241pub unsafe fn lasx_xvsrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6241pub fn lasx_xvsrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6242 static_assert_uimm_bits!(IMM4, 4);6242 static_assert_uimm_bits!(IMM4, 4);
6243 __lasx_xvsrlrni_b_h(a, b, IMM4)6243 unsafe { __lasx_xvsrlrni_b_h(a, b, IMM4) }
6244}6244}
62456245
6246#[inline]6246#[inline]
6247#[target_feature(enable = "lasx")]6247#[target_feature(enable = "lasx")]
6248#[rustc_legacy_const_generics(2)]6248#[rustc_legacy_const_generics(2)]
6249#[unstable(feature = "stdarch_loongarch", issue = "117427")]6249#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6250pub unsafe fn lasx_xvsrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6250pub fn lasx_xvsrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6251 static_assert_uimm_bits!(IMM5, 5);6251 static_assert_uimm_bits!(IMM5, 5);
6252 __lasx_xvsrlrni_h_w(a, b, IMM5)6252 unsafe { __lasx_xvsrlrni_h_w(a, b, IMM5) }
6253}6253}
62546254
6255#[inline]6255#[inline]
6256#[target_feature(enable = "lasx")]6256#[target_feature(enable = "lasx")]
6257#[rustc_legacy_const_generics(2)]6257#[rustc_legacy_const_generics(2)]
6258#[unstable(feature = "stdarch_loongarch", issue = "117427")]6258#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6259pub unsafe fn lasx_xvsrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6259pub fn lasx_xvsrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6260 static_assert_uimm_bits!(IMM6, 6);6260 static_assert_uimm_bits!(IMM6, 6);
6261 __lasx_xvsrlrni_w_d(a, b, IMM6)6261 unsafe { __lasx_xvsrlrni_w_d(a, b, IMM6) }
6262}6262}
62636263
6264#[inline]6264#[inline]
6265#[target_feature(enable = "lasx")]6265#[target_feature(enable = "lasx")]
6266#[rustc_legacy_const_generics(2)]6266#[rustc_legacy_const_generics(2)]
6267#[unstable(feature = "stdarch_loongarch", issue = "117427")]6267#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6268pub unsafe fn lasx_xvsrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6268pub fn lasx_xvsrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6269 static_assert_uimm_bits!(IMM7, 7);6269 static_assert_uimm_bits!(IMM7, 7);
6270 __lasx_xvsrlrni_d_q(a, b, IMM7)6270 unsafe { __lasx_xvsrlrni_d_q(a, b, IMM7) }
6271}6271}
62726272
6273#[inline]6273#[inline]
6274#[target_feature(enable = "lasx")]6274#[target_feature(enable = "lasx")]
6275#[rustc_legacy_const_generics(2)]6275#[rustc_legacy_const_generics(2)]
6276#[unstable(feature = "stdarch_loongarch", issue = "117427")]6276#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6277pub unsafe fn lasx_xvssrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6277pub fn lasx_xvssrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6278 static_assert_uimm_bits!(IMM4, 4);6278 static_assert_uimm_bits!(IMM4, 4);
6279 __lasx_xvssrlni_b_h(a, b, IMM4)6279 unsafe { __lasx_xvssrlni_b_h(a, b, IMM4) }
6280}6280}
62816281
6282#[inline]6282#[inline]
6283#[target_feature(enable = "lasx")]6283#[target_feature(enable = "lasx")]
6284#[rustc_legacy_const_generics(2)]6284#[rustc_legacy_const_generics(2)]
6285#[unstable(feature = "stdarch_loongarch", issue = "117427")]6285#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6286pub unsafe fn lasx_xvssrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6286pub fn lasx_xvssrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6287 static_assert_uimm_bits!(IMM5, 5);6287 static_assert_uimm_bits!(IMM5, 5);
6288 __lasx_xvssrlni_h_w(a, b, IMM5)6288 unsafe { __lasx_xvssrlni_h_w(a, b, IMM5) }
6289}6289}
62906290
6291#[inline]6291#[inline]
6292#[target_feature(enable = "lasx")]6292#[target_feature(enable = "lasx")]
6293#[rustc_legacy_const_generics(2)]6293#[rustc_legacy_const_generics(2)]
6294#[unstable(feature = "stdarch_loongarch", issue = "117427")]6294#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6295pub unsafe fn lasx_xvssrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6295pub fn lasx_xvssrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6296 static_assert_uimm_bits!(IMM6, 6);6296 static_assert_uimm_bits!(IMM6, 6);
6297 __lasx_xvssrlni_w_d(a, b, IMM6)6297 unsafe { __lasx_xvssrlni_w_d(a, b, IMM6) }
6298}6298}
62996299
6300#[inline]6300#[inline]
6301#[target_feature(enable = "lasx")]6301#[target_feature(enable = "lasx")]
6302#[rustc_legacy_const_generics(2)]6302#[rustc_legacy_const_generics(2)]
6303#[unstable(feature = "stdarch_loongarch", issue = "117427")]6303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6304pub unsafe fn lasx_xvssrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6304pub fn lasx_xvssrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6305 static_assert_uimm_bits!(IMM7, 7);6305 static_assert_uimm_bits!(IMM7, 7);
6306 __lasx_xvssrlni_d_q(a, b, IMM7)6306 unsafe { __lasx_xvssrlni_d_q(a, b, IMM7) }
6307}6307}
63086308
6309#[inline]6309#[inline]
6310#[target_feature(enable = "lasx")]6310#[target_feature(enable = "lasx")]
6311#[rustc_legacy_const_generics(2)]6311#[rustc_legacy_const_generics(2)]
6312#[unstable(feature = "stdarch_loongarch", issue = "117427")]6312#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6313pub unsafe fn lasx_xvssrlni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {6313pub fn lasx_xvssrlni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
6314 static_assert_uimm_bits!(IMM4, 4);6314 static_assert_uimm_bits!(IMM4, 4);
6315 __lasx_xvssrlni_bu_h(a, b, IMM4)6315 unsafe { __lasx_xvssrlni_bu_h(a, b, IMM4) }
6316}6316}
63176317
6318#[inline]6318#[inline]
6319#[target_feature(enable = "lasx")]6319#[target_feature(enable = "lasx")]
6320#[rustc_legacy_const_generics(2)]6320#[rustc_legacy_const_generics(2)]
6321#[unstable(feature = "stdarch_loongarch", issue = "117427")]6321#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6322pub unsafe fn lasx_xvssrlni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {6322pub fn lasx_xvssrlni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
6323 static_assert_uimm_bits!(IMM5, 5);6323 static_assert_uimm_bits!(IMM5, 5);
6324 __lasx_xvssrlni_hu_w(a, b, IMM5)6324 unsafe { __lasx_xvssrlni_hu_w(a, b, IMM5) }
6325}6325}
63266326
6327#[inline]6327#[inline]
6328#[target_feature(enable = "lasx")]6328#[target_feature(enable = "lasx")]
6329#[rustc_legacy_const_generics(2)]6329#[rustc_legacy_const_generics(2)]
6330#[unstable(feature = "stdarch_loongarch", issue = "117427")]6330#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6331pub unsafe fn lasx_xvssrlni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {6331pub fn lasx_xvssrlni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
6332 static_assert_uimm_bits!(IMM6, 6);6332 static_assert_uimm_bits!(IMM6, 6);
6333 __lasx_xvssrlni_wu_d(a, b, IMM6)6333 unsafe { __lasx_xvssrlni_wu_d(a, b, IMM6) }
6334}6334}
63356335
6336#[inline]6336#[inline]
6337#[target_feature(enable = "lasx")]6337#[target_feature(enable = "lasx")]
6338#[rustc_legacy_const_generics(2)]6338#[rustc_legacy_const_generics(2)]
6339#[unstable(feature = "stdarch_loongarch", issue = "117427")]6339#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6340pub unsafe fn lasx_xvssrlni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {6340pub fn lasx_xvssrlni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
6341 static_assert_uimm_bits!(IMM7, 7);6341 static_assert_uimm_bits!(IMM7, 7);
6342 __lasx_xvssrlni_du_q(a, b, IMM7)6342 unsafe { __lasx_xvssrlni_du_q(a, b, IMM7) }
6343}6343}
63446344
6345#[inline]6345#[inline]
6346#[target_feature(enable = "lasx")]6346#[target_feature(enable = "lasx")]
6347#[rustc_legacy_const_generics(2)]6347#[rustc_legacy_const_generics(2)]
6348#[unstable(feature = "stdarch_loongarch", issue = "117427")]6348#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6349pub unsafe fn lasx_xvssrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6349pub fn lasx_xvssrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6350 static_assert_uimm_bits!(IMM4, 4);6350 static_assert_uimm_bits!(IMM4, 4);
6351 __lasx_xvssrlrni_b_h(a, b, IMM4)6351 unsafe { __lasx_xvssrlrni_b_h(a, b, IMM4) }
6352}6352}
63536353
6354#[inline]6354#[inline]
6355#[target_feature(enable = "lasx")]6355#[target_feature(enable = "lasx")]
6356#[rustc_legacy_const_generics(2)]6356#[rustc_legacy_const_generics(2)]
6357#[unstable(feature = "stdarch_loongarch", issue = "117427")]6357#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6358pub unsafe fn lasx_xvssrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6358pub fn lasx_xvssrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6359 static_assert_uimm_bits!(IMM5, 5);6359 static_assert_uimm_bits!(IMM5, 5);
6360 __lasx_xvssrlrni_h_w(a, b, IMM5)6360 unsafe { __lasx_xvssrlrni_h_w(a, b, IMM5) }
6361}6361}
63626362
6363#[inline]6363#[inline]
6364#[target_feature(enable = "lasx")]6364#[target_feature(enable = "lasx")]
6365#[rustc_legacy_const_generics(2)]6365#[rustc_legacy_const_generics(2)]
6366#[unstable(feature = "stdarch_loongarch", issue = "117427")]6366#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6367pub unsafe fn lasx_xvssrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6367pub fn lasx_xvssrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6368 static_assert_uimm_bits!(IMM6, 6);6368 static_assert_uimm_bits!(IMM6, 6);
6369 __lasx_xvssrlrni_w_d(a, b, IMM6)6369 unsafe { __lasx_xvssrlrni_w_d(a, b, IMM6) }
6370}6370}
63716371
6372#[inline]6372#[inline]
6373#[target_feature(enable = "lasx")]6373#[target_feature(enable = "lasx")]
6374#[rustc_legacy_const_generics(2)]6374#[rustc_legacy_const_generics(2)]
6375#[unstable(feature = "stdarch_loongarch", issue = "117427")]6375#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6376pub unsafe fn lasx_xvssrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6376pub fn lasx_xvssrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6377 static_assert_uimm_bits!(IMM7, 7);6377 static_assert_uimm_bits!(IMM7, 7);
6378 __lasx_xvssrlrni_d_q(a, b, IMM7)6378 unsafe { __lasx_xvssrlrni_d_q(a, b, IMM7) }
6379}6379}
63806380
6381#[inline]6381#[inline]
6382#[target_feature(enable = "lasx")]6382#[target_feature(enable = "lasx")]
6383#[rustc_legacy_const_generics(2)]6383#[rustc_legacy_const_generics(2)]
6384#[unstable(feature = "stdarch_loongarch", issue = "117427")]6384#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6385pub unsafe fn lasx_xvssrlrni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {6385pub fn lasx_xvssrlrni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
6386 static_assert_uimm_bits!(IMM4, 4);6386 static_assert_uimm_bits!(IMM4, 4);
6387 __lasx_xvssrlrni_bu_h(a, b, IMM4)6387 unsafe { __lasx_xvssrlrni_bu_h(a, b, IMM4) }
6388}6388}
63896389
6390#[inline]6390#[inline]
6391#[target_feature(enable = "lasx")]6391#[target_feature(enable = "lasx")]
6392#[rustc_legacy_const_generics(2)]6392#[rustc_legacy_const_generics(2)]
6393#[unstable(feature = "stdarch_loongarch", issue = "117427")]6393#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6394pub unsafe fn lasx_xvssrlrni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {6394pub fn lasx_xvssrlrni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
6395 static_assert_uimm_bits!(IMM5, 5);6395 static_assert_uimm_bits!(IMM5, 5);
6396 __lasx_xvssrlrni_hu_w(a, b, IMM5)6396 unsafe { __lasx_xvssrlrni_hu_w(a, b, IMM5) }
6397}6397}
63986398
6399#[inline]6399#[inline]
6400#[target_feature(enable = "lasx")]6400#[target_feature(enable = "lasx")]
6401#[rustc_legacy_const_generics(2)]6401#[rustc_legacy_const_generics(2)]
6402#[unstable(feature = "stdarch_loongarch", issue = "117427")]6402#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6403pub unsafe fn lasx_xvssrlrni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {6403pub fn lasx_xvssrlrni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
6404 static_assert_uimm_bits!(IMM6, 6);6404 static_assert_uimm_bits!(IMM6, 6);
6405 __lasx_xvssrlrni_wu_d(a, b, IMM6)6405 unsafe { __lasx_xvssrlrni_wu_d(a, b, IMM6) }
6406}6406}
64076407
6408#[inline]6408#[inline]
6409#[target_feature(enable = "lasx")]6409#[target_feature(enable = "lasx")]
6410#[rustc_legacy_const_generics(2)]6410#[rustc_legacy_const_generics(2)]
6411#[unstable(feature = "stdarch_loongarch", issue = "117427")]6411#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6412pub unsafe fn lasx_xvssrlrni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {6412pub fn lasx_xvssrlrni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
6413 static_assert_uimm_bits!(IMM7, 7);6413 static_assert_uimm_bits!(IMM7, 7);
6414 __lasx_xvssrlrni_du_q(a, b, IMM7)6414 unsafe { __lasx_xvssrlrni_du_q(a, b, IMM7) }
6415}6415}
64166416
6417#[inline]6417#[inline]
6418#[target_feature(enable = "lasx")]6418#[target_feature(enable = "lasx")]
6419#[rustc_legacy_const_generics(2)]6419#[rustc_legacy_const_generics(2)]
6420#[unstable(feature = "stdarch_loongarch", issue = "117427")]6420#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6421pub unsafe fn lasx_xvsrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6421pub fn lasx_xvsrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6422 static_assert_uimm_bits!(IMM4, 4);6422 static_assert_uimm_bits!(IMM4, 4);
6423 __lasx_xvsrani_b_h(a, b, IMM4)6423 unsafe { __lasx_xvsrani_b_h(a, b, IMM4) }
6424}6424}
64256425
6426#[inline]6426#[inline]
6427#[target_feature(enable = "lasx")]6427#[target_feature(enable = "lasx")]
6428#[rustc_legacy_const_generics(2)]6428#[rustc_legacy_const_generics(2)]
6429#[unstable(feature = "stdarch_loongarch", issue = "117427")]6429#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6430pub unsafe fn lasx_xvsrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6430pub fn lasx_xvsrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6431 static_assert_uimm_bits!(IMM5, 5);6431 static_assert_uimm_bits!(IMM5, 5);
6432 __lasx_xvsrani_h_w(a, b, IMM5)6432 unsafe { __lasx_xvsrani_h_w(a, b, IMM5) }
6433}6433}
64346434
6435#[inline]6435#[inline]
6436#[target_feature(enable = "lasx")]6436#[target_feature(enable = "lasx")]
6437#[rustc_legacy_const_generics(2)]6437#[rustc_legacy_const_generics(2)]
6438#[unstable(feature = "stdarch_loongarch", issue = "117427")]6438#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6439pub unsafe fn lasx_xvsrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6439pub fn lasx_xvsrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6440 static_assert_uimm_bits!(IMM6, 6);6440 static_assert_uimm_bits!(IMM6, 6);
6441 __lasx_xvsrani_w_d(a, b, IMM6)6441 unsafe { __lasx_xvsrani_w_d(a, b, IMM6) }
6442}6442}
64436443
6444#[inline]6444#[inline]
6445#[target_feature(enable = "lasx")]6445#[target_feature(enable = "lasx")]
6446#[rustc_legacy_const_generics(2)]6446#[rustc_legacy_const_generics(2)]
6447#[unstable(feature = "stdarch_loongarch", issue = "117427")]6447#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6448pub unsafe fn lasx_xvsrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6448pub fn lasx_xvsrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6449 static_assert_uimm_bits!(IMM7, 7);6449 static_assert_uimm_bits!(IMM7, 7);
6450 __lasx_xvsrani_d_q(a, b, IMM7)6450 unsafe { __lasx_xvsrani_d_q(a, b, IMM7) }
6451}6451}
64526452
6453#[inline]6453#[inline]
6454#[target_feature(enable = "lasx")]6454#[target_feature(enable = "lasx")]
6455#[rustc_legacy_const_generics(2)]6455#[rustc_legacy_const_generics(2)]
6456#[unstable(feature = "stdarch_loongarch", issue = "117427")]6456#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6457pub unsafe fn lasx_xvsrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6457pub fn lasx_xvsrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6458 static_assert_uimm_bits!(IMM4, 4);6458 static_assert_uimm_bits!(IMM4, 4);
6459 __lasx_xvsrarni_b_h(a, b, IMM4)6459 unsafe { __lasx_xvsrarni_b_h(a, b, IMM4) }
6460}6460}
64616461
6462#[inline]6462#[inline]
6463#[target_feature(enable = "lasx")]6463#[target_feature(enable = "lasx")]
6464#[rustc_legacy_const_generics(2)]6464#[rustc_legacy_const_generics(2)]
6465#[unstable(feature = "stdarch_loongarch", issue = "117427")]6465#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6466pub unsafe fn lasx_xvsrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6466pub fn lasx_xvsrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6467 static_assert_uimm_bits!(IMM5, 5);6467 static_assert_uimm_bits!(IMM5, 5);
6468 __lasx_xvsrarni_h_w(a, b, IMM5)6468 unsafe { __lasx_xvsrarni_h_w(a, b, IMM5) }
6469}6469}
64706470
6471#[inline]6471#[inline]
6472#[target_feature(enable = "lasx")]6472#[target_feature(enable = "lasx")]
6473#[rustc_legacy_const_generics(2)]6473#[rustc_legacy_const_generics(2)]
6474#[unstable(feature = "stdarch_loongarch", issue = "117427")]6474#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6475pub unsafe fn lasx_xvsrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6475pub fn lasx_xvsrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6476 static_assert_uimm_bits!(IMM6, 6);6476 static_assert_uimm_bits!(IMM6, 6);
6477 __lasx_xvsrarni_w_d(a, b, IMM6)6477 unsafe { __lasx_xvsrarni_w_d(a, b, IMM6) }
6478}6478}
64796479
6480#[inline]6480#[inline]
6481#[target_feature(enable = "lasx")]6481#[target_feature(enable = "lasx")]
6482#[rustc_legacy_const_generics(2)]6482#[rustc_legacy_const_generics(2)]
6483#[unstable(feature = "stdarch_loongarch", issue = "117427")]6483#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6484pub unsafe fn lasx_xvsrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6484pub fn lasx_xvsrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6485 static_assert_uimm_bits!(IMM7, 7);6485 static_assert_uimm_bits!(IMM7, 7);
6486 __lasx_xvsrarni_d_q(a, b, IMM7)6486 unsafe { __lasx_xvsrarni_d_q(a, b, IMM7) }
6487}6487}
64886488
6489#[inline]6489#[inline]
6490#[target_feature(enable = "lasx")]6490#[target_feature(enable = "lasx")]
6491#[rustc_legacy_const_generics(2)]6491#[rustc_legacy_const_generics(2)]
6492#[unstable(feature = "stdarch_loongarch", issue = "117427")]6492#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6493pub unsafe fn lasx_xvssrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6493pub fn lasx_xvssrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6494 static_assert_uimm_bits!(IMM4, 4);6494 static_assert_uimm_bits!(IMM4, 4);
6495 __lasx_xvssrani_b_h(a, b, IMM4)6495 unsafe { __lasx_xvssrani_b_h(a, b, IMM4) }
6496}6496}
64976497
6498#[inline]6498#[inline]
6499#[target_feature(enable = "lasx")]6499#[target_feature(enable = "lasx")]
6500#[rustc_legacy_const_generics(2)]6500#[rustc_legacy_const_generics(2)]
6501#[unstable(feature = "stdarch_loongarch", issue = "117427")]6501#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6502pub unsafe fn lasx_xvssrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6502pub fn lasx_xvssrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6503 static_assert_uimm_bits!(IMM5, 5);6503 static_assert_uimm_bits!(IMM5, 5);
6504 __lasx_xvssrani_h_w(a, b, IMM5)6504 unsafe { __lasx_xvssrani_h_w(a, b, IMM5) }
6505}6505}
65066506
6507#[inline]6507#[inline]
6508#[target_feature(enable = "lasx")]6508#[target_feature(enable = "lasx")]
6509#[rustc_legacy_const_generics(2)]6509#[rustc_legacy_const_generics(2)]
6510#[unstable(feature = "stdarch_loongarch", issue = "117427")]6510#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6511pub unsafe fn lasx_xvssrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6511pub fn lasx_xvssrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6512 static_assert_uimm_bits!(IMM6, 6);6512 static_assert_uimm_bits!(IMM6, 6);
6513 __lasx_xvssrani_w_d(a, b, IMM6)6513 unsafe { __lasx_xvssrani_w_d(a, b, IMM6) }
6514}6514}
65156515
6516#[inline]6516#[inline]
6517#[target_feature(enable = "lasx")]6517#[target_feature(enable = "lasx")]
6518#[rustc_legacy_const_generics(2)]6518#[rustc_legacy_const_generics(2)]
6519#[unstable(feature = "stdarch_loongarch", issue = "117427")]6519#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6520pub unsafe fn lasx_xvssrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6520pub fn lasx_xvssrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6521 static_assert_uimm_bits!(IMM7, 7);6521 static_assert_uimm_bits!(IMM7, 7);
6522 __lasx_xvssrani_d_q(a, b, IMM7)6522 unsafe { __lasx_xvssrani_d_q(a, b, IMM7) }
6523}6523}
65246524
6525#[inline]6525#[inline]
6526#[target_feature(enable = "lasx")]6526#[target_feature(enable = "lasx")]
6527#[rustc_legacy_const_generics(2)]6527#[rustc_legacy_const_generics(2)]
6528#[unstable(feature = "stdarch_loongarch", issue = "117427")]6528#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6529pub unsafe fn lasx_xvssrani_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {6529pub fn lasx_xvssrani_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
6530 static_assert_uimm_bits!(IMM4, 4);6530 static_assert_uimm_bits!(IMM4, 4);
6531 __lasx_xvssrani_bu_h(a, b, IMM4)6531 unsafe { __lasx_xvssrani_bu_h(a, b, IMM4) }
6532}6532}
65336533
6534#[inline]6534#[inline]
6535#[target_feature(enable = "lasx")]6535#[target_feature(enable = "lasx")]
6536#[rustc_legacy_const_generics(2)]6536#[rustc_legacy_const_generics(2)]
6537#[unstable(feature = "stdarch_loongarch", issue = "117427")]6537#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6538pub unsafe fn lasx_xvssrani_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {6538pub fn lasx_xvssrani_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
6539 static_assert_uimm_bits!(IMM5, 5);6539 static_assert_uimm_bits!(IMM5, 5);
6540 __lasx_xvssrani_hu_w(a, b, IMM5)6540 unsafe { __lasx_xvssrani_hu_w(a, b, IMM5) }
6541}6541}
65426542
6543#[inline]6543#[inline]
6544#[target_feature(enable = "lasx")]6544#[target_feature(enable = "lasx")]
6545#[rustc_legacy_const_generics(2)]6545#[rustc_legacy_const_generics(2)]
6546#[unstable(feature = "stdarch_loongarch", issue = "117427")]6546#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6547pub unsafe fn lasx_xvssrani_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {6547pub fn lasx_xvssrani_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
6548 static_assert_uimm_bits!(IMM6, 6);6548 static_assert_uimm_bits!(IMM6, 6);
6549 __lasx_xvssrani_wu_d(a, b, IMM6)6549 unsafe { __lasx_xvssrani_wu_d(a, b, IMM6) }
6550}6550}
65516551
6552#[inline]6552#[inline]
6553#[target_feature(enable = "lasx")]6553#[target_feature(enable = "lasx")]
6554#[rustc_legacy_const_generics(2)]6554#[rustc_legacy_const_generics(2)]
6555#[unstable(feature = "stdarch_loongarch", issue = "117427")]6555#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6556pub unsafe fn lasx_xvssrani_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {6556pub fn lasx_xvssrani_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
6557 static_assert_uimm_bits!(IMM7, 7);6557 static_assert_uimm_bits!(IMM7, 7);
6558 __lasx_xvssrani_du_q(a, b, IMM7)6558 unsafe { __lasx_xvssrani_du_q(a, b, IMM7) }
6559}6559}
65606560
6561#[inline]6561#[inline]
6562#[target_feature(enable = "lasx")]6562#[target_feature(enable = "lasx")]
6563#[rustc_legacy_const_generics(2)]6563#[rustc_legacy_const_generics(2)]
6564#[unstable(feature = "stdarch_loongarch", issue = "117427")]6564#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6565pub unsafe fn lasx_xvssrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {6565pub fn lasx_xvssrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
6566 static_assert_uimm_bits!(IMM4, 4);6566 static_assert_uimm_bits!(IMM4, 4);
6567 __lasx_xvssrarni_b_h(a, b, IMM4)6567 unsafe { __lasx_xvssrarni_b_h(a, b, IMM4) }
6568}6568}
65696569
6570#[inline]6570#[inline]
6571#[target_feature(enable = "lasx")]6571#[target_feature(enable = "lasx")]
6572#[rustc_legacy_const_generics(2)]6572#[rustc_legacy_const_generics(2)]
6573#[unstable(feature = "stdarch_loongarch", issue = "117427")]6573#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6574pub unsafe fn lasx_xvssrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {6574pub fn lasx_xvssrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
6575 static_assert_uimm_bits!(IMM5, 5);6575 static_assert_uimm_bits!(IMM5, 5);
6576 __lasx_xvssrarni_h_w(a, b, IMM5)6576 unsafe { __lasx_xvssrarni_h_w(a, b, IMM5) }
6577}6577}
65786578
6579#[inline]6579#[inline]
6580#[target_feature(enable = "lasx")]6580#[target_feature(enable = "lasx")]
6581#[rustc_legacy_const_generics(2)]6581#[rustc_legacy_const_generics(2)]
6582#[unstable(feature = "stdarch_loongarch", issue = "117427")]6582#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6583pub unsafe fn lasx_xvssrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {6583pub fn lasx_xvssrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
6584 static_assert_uimm_bits!(IMM6, 6);6584 static_assert_uimm_bits!(IMM6, 6);
6585 __lasx_xvssrarni_w_d(a, b, IMM6)6585 unsafe { __lasx_xvssrarni_w_d(a, b, IMM6) }
6586}6586}
65876587
6588#[inline]6588#[inline]
6589#[target_feature(enable = "lasx")]6589#[target_feature(enable = "lasx")]
6590#[rustc_legacy_const_generics(2)]6590#[rustc_legacy_const_generics(2)]
6591#[unstable(feature = "stdarch_loongarch", issue = "117427")]6591#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6592pub unsafe fn lasx_xvssrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {6592pub fn lasx_xvssrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
6593 static_assert_uimm_bits!(IMM7, 7);6593 static_assert_uimm_bits!(IMM7, 7);
6594 __lasx_xvssrarni_d_q(a, b, IMM7)6594 unsafe { __lasx_xvssrarni_d_q(a, b, IMM7) }
6595}6595}
65966596
6597#[inline]6597#[inline]
6598#[target_feature(enable = "lasx")]6598#[target_feature(enable = "lasx")]
6599#[rustc_legacy_const_generics(2)]6599#[rustc_legacy_const_generics(2)]
6600#[unstable(feature = "stdarch_loongarch", issue = "117427")]6600#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6601pub unsafe fn lasx_xvssrarni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {6601pub fn lasx_xvssrarni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
6602 static_assert_uimm_bits!(IMM4, 4);6602 static_assert_uimm_bits!(IMM4, 4);
6603 __lasx_xvssrarni_bu_h(a, b, IMM4)6603 unsafe { __lasx_xvssrarni_bu_h(a, b, IMM4) }
6604}6604}
66056605
6606#[inline]6606#[inline]
6607#[target_feature(enable = "lasx")]6607#[target_feature(enable = "lasx")]
6608#[rustc_legacy_const_generics(2)]6608#[rustc_legacy_const_generics(2)]
6609#[unstable(feature = "stdarch_loongarch", issue = "117427")]6609#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6610pub unsafe fn lasx_xvssrarni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {6610pub fn lasx_xvssrarni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
6611 static_assert_uimm_bits!(IMM5, 5);6611 static_assert_uimm_bits!(IMM5, 5);
6612 __lasx_xvssrarni_hu_w(a, b, IMM5)6612 unsafe { __lasx_xvssrarni_hu_w(a, b, IMM5) }
6613}6613}
66146614
6615#[inline]6615#[inline]
6616#[target_feature(enable = "lasx")]6616#[target_feature(enable = "lasx")]
6617#[rustc_legacy_const_generics(2)]6617#[rustc_legacy_const_generics(2)]
6618#[unstable(feature = "stdarch_loongarch", issue = "117427")]6618#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6619pub unsafe fn lasx_xvssrarni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {6619pub fn lasx_xvssrarni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
6620 static_assert_uimm_bits!(IMM6, 6);6620 static_assert_uimm_bits!(IMM6, 6);
6621 __lasx_xvssrarni_wu_d(a, b, IMM6)6621 unsafe { __lasx_xvssrarni_wu_d(a, b, IMM6) }
6622}6622}
66236623
6624#[inline]6624#[inline]
6625#[target_feature(enable = "lasx")]6625#[target_feature(enable = "lasx")]
6626#[rustc_legacy_const_generics(2)]6626#[rustc_legacy_const_generics(2)]
6627#[unstable(feature = "stdarch_loongarch", issue = "117427")]6627#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6628pub unsafe fn lasx_xvssrarni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {6628pub fn lasx_xvssrarni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
6629 static_assert_uimm_bits!(IMM7, 7);6629 static_assert_uimm_bits!(IMM7, 7);
6630 __lasx_xvssrarni_du_q(a, b, IMM7)6630 unsafe { __lasx_xvssrarni_du_q(a, b, IMM7) }
6631}6631}
66326632
6633#[inline]6633#[inline]
6634#[target_feature(enable = "lasx")]6634#[target_feature(enable = "lasx")]
6635#[unstable(feature = "stdarch_loongarch", issue = "117427")]6635#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6636pub unsafe fn lasx_xbnz_b(a: v32u8) -> i32 {6636pub fn lasx_xbnz_b(a: v32u8) -> i32 {
6637 __lasx_xbnz_b(a)6637 unsafe { __lasx_xbnz_b(a) }
6638}6638}
66396639
6640#[inline]6640#[inline]
6641#[target_feature(enable = "lasx")]6641#[target_feature(enable = "lasx")]
6642#[unstable(feature = "stdarch_loongarch", issue = "117427")]6642#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6643pub unsafe fn lasx_xbnz_d(a: v4u64) -> i32 {6643pub fn lasx_xbnz_d(a: v4u64) -> i32 {
6644 __lasx_xbnz_d(a)6644 unsafe { __lasx_xbnz_d(a) }
6645}6645}
66466646
6647#[inline]6647#[inline]
6648#[target_feature(enable = "lasx")]6648#[target_feature(enable = "lasx")]
6649#[unstable(feature = "stdarch_loongarch", issue = "117427")]6649#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6650pub unsafe fn lasx_xbnz_h(a: v16u16) -> i32 {6650pub fn lasx_xbnz_h(a: v16u16) -> i32 {
6651 __lasx_xbnz_h(a)6651 unsafe { __lasx_xbnz_h(a) }
6652}6652}
66536653
6654#[inline]6654#[inline]
6655#[target_feature(enable = "lasx")]6655#[target_feature(enable = "lasx")]
6656#[unstable(feature = "stdarch_loongarch", issue = "117427")]6656#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6657pub unsafe fn lasx_xbnz_v(a: v32u8) -> i32 {6657pub fn lasx_xbnz_v(a: v32u8) -> i32 {
6658 __lasx_xbnz_v(a)6658 unsafe { __lasx_xbnz_v(a) }
6659}6659}
66606660
6661#[inline]6661#[inline]
6662#[target_feature(enable = "lasx")]6662#[target_feature(enable = "lasx")]
6663#[unstable(feature = "stdarch_loongarch", issue = "117427")]6663#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6664pub unsafe fn lasx_xbnz_w(a: v8u32) -> i32 {6664pub fn lasx_xbnz_w(a: v8u32) -> i32 {
6665 __lasx_xbnz_w(a)6665 unsafe { __lasx_xbnz_w(a) }
6666}6666}
66676667
6668#[inline]6668#[inline]
6669#[target_feature(enable = "lasx")]6669#[target_feature(enable = "lasx")]
6670#[unstable(feature = "stdarch_loongarch", issue = "117427")]6670#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6671pub unsafe fn lasx_xbz_b(a: v32u8) -> i32 {6671pub fn lasx_xbz_b(a: v32u8) -> i32 {
6672 __lasx_xbz_b(a)6672 unsafe { __lasx_xbz_b(a) }
6673}6673}
66746674
6675#[inline]6675#[inline]
6676#[target_feature(enable = "lasx")]6676#[target_feature(enable = "lasx")]
6677#[unstable(feature = "stdarch_loongarch", issue = "117427")]6677#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6678pub unsafe fn lasx_xbz_d(a: v4u64) -> i32 {6678pub fn lasx_xbz_d(a: v4u64) -> i32 {
6679 __lasx_xbz_d(a)6679 unsafe { __lasx_xbz_d(a) }
6680}6680}
66816681
6682#[inline]6682#[inline]
6683#[target_feature(enable = "lasx")]6683#[target_feature(enable = "lasx")]
6684#[unstable(feature = "stdarch_loongarch", issue = "117427")]6684#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6685pub unsafe fn lasx_xbz_h(a: v16u16) -> i32 {6685pub fn lasx_xbz_h(a: v16u16) -> i32 {
6686 __lasx_xbz_h(a)6686 unsafe { __lasx_xbz_h(a) }
6687}6687}
66886688
6689#[inline]6689#[inline]
6690#[target_feature(enable = "lasx")]6690#[target_feature(enable = "lasx")]
6691#[unstable(feature = "stdarch_loongarch", issue = "117427")]6691#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6692pub unsafe fn lasx_xbz_v(a: v32u8) -> i32 {6692pub fn lasx_xbz_v(a: v32u8) -> i32 {
6693 __lasx_xbz_v(a)6693 unsafe { __lasx_xbz_v(a) }
6694}6694}
66956695
6696#[inline]6696#[inline]
6697#[target_feature(enable = "lasx")]6697#[target_feature(enable = "lasx")]
6698#[unstable(feature = "stdarch_loongarch", issue = "117427")]6698#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6699pub unsafe fn lasx_xbz_w(a: v8u32) -> i32 {6699pub fn lasx_xbz_w(a: v8u32) -> i32 {
6700 __lasx_xbz_w(a)6700 unsafe { __lasx_xbz_w(a) }
6701}6701}
67026702
6703#[inline]6703#[inline]
6704#[target_feature(enable = "lasx")]6704#[target_feature(enable = "lasx")]
6705#[unstable(feature = "stdarch_loongarch", issue = "117427")]6705#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6706pub unsafe fn lasx_xvfcmp_caf_d(a: v4f64, b: v4f64) -> v4i64 {6706pub fn lasx_xvfcmp_caf_d(a: v4f64, b: v4f64) -> v4i64 {
6707 __lasx_xvfcmp_caf_d(a, b)6707 unsafe { __lasx_xvfcmp_caf_d(a, b) }
6708}6708}
67096709
6710#[inline]6710#[inline]
6711#[target_feature(enable = "lasx")]6711#[target_feature(enable = "lasx")]
6712#[unstable(feature = "stdarch_loongarch", issue = "117427")]6712#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6713pub unsafe fn lasx_xvfcmp_caf_s(a: v8f32, b: v8f32) -> v8i32 {6713pub fn lasx_xvfcmp_caf_s(a: v8f32, b: v8f32) -> v8i32 {
6714 __lasx_xvfcmp_caf_s(a, b)6714 unsafe { __lasx_xvfcmp_caf_s(a, b) }
6715}6715}
67166716
6717#[inline]6717#[inline]
6718#[target_feature(enable = "lasx")]6718#[target_feature(enable = "lasx")]
6719#[unstable(feature = "stdarch_loongarch", issue = "117427")]6719#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6720pub unsafe fn lasx_xvfcmp_ceq_d(a: v4f64, b: v4f64) -> v4i64 {6720pub fn lasx_xvfcmp_ceq_d(a: v4f64, b: v4f64) -> v4i64 {
6721 __lasx_xvfcmp_ceq_d(a, b)6721 unsafe { __lasx_xvfcmp_ceq_d(a, b) }
6722}6722}
67236723
6724#[inline]6724#[inline]
6725#[target_feature(enable = "lasx")]6725#[target_feature(enable = "lasx")]
6726#[unstable(feature = "stdarch_loongarch", issue = "117427")]6726#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6727pub unsafe fn lasx_xvfcmp_ceq_s(a: v8f32, b: v8f32) -> v8i32 {6727pub fn lasx_xvfcmp_ceq_s(a: v8f32, b: v8f32) -> v8i32 {
6728 __lasx_xvfcmp_ceq_s(a, b)6728 unsafe { __lasx_xvfcmp_ceq_s(a, b) }
6729}6729}
67306730
6731#[inline]6731#[inline]
6732#[target_feature(enable = "lasx")]6732#[target_feature(enable = "lasx")]
6733#[unstable(feature = "stdarch_loongarch", issue = "117427")]6733#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6734pub unsafe fn lasx_xvfcmp_cle_d(a: v4f64, b: v4f64) -> v4i64 {6734pub fn lasx_xvfcmp_cle_d(a: v4f64, b: v4f64) -> v4i64 {
6735 __lasx_xvfcmp_cle_d(a, b)6735 unsafe { __lasx_xvfcmp_cle_d(a, b) }
6736}6736}
67376737
6738#[inline]6738#[inline]
6739#[target_feature(enable = "lasx")]6739#[target_feature(enable = "lasx")]
6740#[unstable(feature = "stdarch_loongarch", issue = "117427")]6740#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6741pub unsafe fn lasx_xvfcmp_cle_s(a: v8f32, b: v8f32) -> v8i32 {6741pub fn lasx_xvfcmp_cle_s(a: v8f32, b: v8f32) -> v8i32 {
6742 __lasx_xvfcmp_cle_s(a, b)6742 unsafe { __lasx_xvfcmp_cle_s(a, b) }
6743}6743}
67446744
6745#[inline]6745#[inline]
6746#[target_feature(enable = "lasx")]6746#[target_feature(enable = "lasx")]
6747#[unstable(feature = "stdarch_loongarch", issue = "117427")]6747#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6748pub unsafe fn lasx_xvfcmp_clt_d(a: v4f64, b: v4f64) -> v4i64 {6748pub fn lasx_xvfcmp_clt_d(a: v4f64, b: v4f64) -> v4i64 {
6749 __lasx_xvfcmp_clt_d(a, b)6749 unsafe { __lasx_xvfcmp_clt_d(a, b) }
6750}6750}
67516751
6752#[inline]6752#[inline]
6753#[target_feature(enable = "lasx")]6753#[target_feature(enable = "lasx")]
6754#[unstable(feature = "stdarch_loongarch", issue = "117427")]6754#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6755pub unsafe fn lasx_xvfcmp_clt_s(a: v8f32, b: v8f32) -> v8i32 {6755pub fn lasx_xvfcmp_clt_s(a: v8f32, b: v8f32) -> v8i32 {
6756 __lasx_xvfcmp_clt_s(a, b)6756 unsafe { __lasx_xvfcmp_clt_s(a, b) }
6757}6757}
67586758
6759#[inline]6759#[inline]
6760#[target_feature(enable = "lasx")]6760#[target_feature(enable = "lasx")]
6761#[unstable(feature = "stdarch_loongarch", issue = "117427")]6761#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6762pub unsafe fn lasx_xvfcmp_cne_d(a: v4f64, b: v4f64) -> v4i64 {6762pub fn lasx_xvfcmp_cne_d(a: v4f64, b: v4f64) -> v4i64 {
6763 __lasx_xvfcmp_cne_d(a, b)6763 unsafe { __lasx_xvfcmp_cne_d(a, b) }
6764}6764}
67656765
6766#[inline]6766#[inline]
6767#[target_feature(enable = "lasx")]6767#[target_feature(enable = "lasx")]
6768#[unstable(feature = "stdarch_loongarch", issue = "117427")]6768#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6769pub unsafe fn lasx_xvfcmp_cne_s(a: v8f32, b: v8f32) -> v8i32 {6769pub fn lasx_xvfcmp_cne_s(a: v8f32, b: v8f32) -> v8i32 {
6770 __lasx_xvfcmp_cne_s(a, b)6770 unsafe { __lasx_xvfcmp_cne_s(a, b) }
6771}6771}
67726772
6773#[inline]6773#[inline]
6774#[target_feature(enable = "lasx")]6774#[target_feature(enable = "lasx")]
6775#[unstable(feature = "stdarch_loongarch", issue = "117427")]6775#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6776pub unsafe fn lasx_xvfcmp_cor_d(a: v4f64, b: v4f64) -> v4i64 {6776pub fn lasx_xvfcmp_cor_d(a: v4f64, b: v4f64) -> v4i64 {
6777 __lasx_xvfcmp_cor_d(a, b)6777 unsafe { __lasx_xvfcmp_cor_d(a, b) }
6778}6778}
67796779
6780#[inline]6780#[inline]
6781#[target_feature(enable = "lasx")]6781#[target_feature(enable = "lasx")]
6782#[unstable(feature = "stdarch_loongarch", issue = "117427")]6782#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6783pub unsafe fn lasx_xvfcmp_cor_s(a: v8f32, b: v8f32) -> v8i32 {6783pub fn lasx_xvfcmp_cor_s(a: v8f32, b: v8f32) -> v8i32 {
6784 __lasx_xvfcmp_cor_s(a, b)6784 unsafe { __lasx_xvfcmp_cor_s(a, b) }
6785}6785}
67866786
6787#[inline]6787#[inline]
6788#[target_feature(enable = "lasx")]6788#[target_feature(enable = "lasx")]
6789#[unstable(feature = "stdarch_loongarch", issue = "117427")]6789#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6790pub unsafe fn lasx_xvfcmp_cueq_d(a: v4f64, b: v4f64) -> v4i64 {6790pub fn lasx_xvfcmp_cueq_d(a: v4f64, b: v4f64) -> v4i64 {
6791 __lasx_xvfcmp_cueq_d(a, b)6791 unsafe { __lasx_xvfcmp_cueq_d(a, b) }
6792}6792}
67936793
6794#[inline]6794#[inline]
6795#[target_feature(enable = "lasx")]6795#[target_feature(enable = "lasx")]
6796#[unstable(feature = "stdarch_loongarch", issue = "117427")]6796#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6797pub unsafe fn lasx_xvfcmp_cueq_s(a: v8f32, b: v8f32) -> v8i32 {6797pub fn lasx_xvfcmp_cueq_s(a: v8f32, b: v8f32) -> v8i32 {
6798 __lasx_xvfcmp_cueq_s(a, b)6798 unsafe { __lasx_xvfcmp_cueq_s(a, b) }
6799}6799}
68006800
6801#[inline]6801#[inline]
6802#[target_feature(enable = "lasx")]6802#[target_feature(enable = "lasx")]
6803#[unstable(feature = "stdarch_loongarch", issue = "117427")]6803#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6804pub unsafe fn lasx_xvfcmp_cule_d(a: v4f64, b: v4f64) -> v4i64 {6804pub fn lasx_xvfcmp_cule_d(a: v4f64, b: v4f64) -> v4i64 {
6805 __lasx_xvfcmp_cule_d(a, b)6805 unsafe { __lasx_xvfcmp_cule_d(a, b) }
6806}6806}
68076807
6808#[inline]6808#[inline]
6809#[target_feature(enable = "lasx")]6809#[target_feature(enable = "lasx")]
6810#[unstable(feature = "stdarch_loongarch", issue = "117427")]6810#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6811pub unsafe fn lasx_xvfcmp_cule_s(a: v8f32, b: v8f32) -> v8i32 {6811pub fn lasx_xvfcmp_cule_s(a: v8f32, b: v8f32) -> v8i32 {
6812 __lasx_xvfcmp_cule_s(a, b)6812 unsafe { __lasx_xvfcmp_cule_s(a, b) }
6813}6813}
68146814
6815#[inline]6815#[inline]
6816#[target_feature(enable = "lasx")]6816#[target_feature(enable = "lasx")]
6817#[unstable(feature = "stdarch_loongarch", issue = "117427")]6817#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6818pub unsafe fn lasx_xvfcmp_cult_d(a: v4f64, b: v4f64) -> v4i64 {6818pub fn lasx_xvfcmp_cult_d(a: v4f64, b: v4f64) -> v4i64 {
6819 __lasx_xvfcmp_cult_d(a, b)6819 unsafe { __lasx_xvfcmp_cult_d(a, b) }
6820}6820}
68216821
6822#[inline]6822#[inline]
6823#[target_feature(enable = "lasx")]6823#[target_feature(enable = "lasx")]
6824#[unstable(feature = "stdarch_loongarch", issue = "117427")]6824#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6825pub unsafe fn lasx_xvfcmp_cult_s(a: v8f32, b: v8f32) -> v8i32 {6825pub fn lasx_xvfcmp_cult_s(a: v8f32, b: v8f32) -> v8i32 {
6826 __lasx_xvfcmp_cult_s(a, b)6826 unsafe { __lasx_xvfcmp_cult_s(a, b) }
6827}6827}
68286828
6829#[inline]6829#[inline]
6830#[target_feature(enable = "lasx")]6830#[target_feature(enable = "lasx")]
6831#[unstable(feature = "stdarch_loongarch", issue = "117427")]6831#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6832pub unsafe fn lasx_xvfcmp_cun_d(a: v4f64, b: v4f64) -> v4i64 {6832pub fn lasx_xvfcmp_cun_d(a: v4f64, b: v4f64) -> v4i64 {
6833 __lasx_xvfcmp_cun_d(a, b)6833 unsafe { __lasx_xvfcmp_cun_d(a, b) }
6834}6834}
68356835
6836#[inline]6836#[inline]
6837#[target_feature(enable = "lasx")]6837#[target_feature(enable = "lasx")]
6838#[unstable(feature = "stdarch_loongarch", issue = "117427")]6838#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6839pub unsafe fn lasx_xvfcmp_cune_d(a: v4f64, b: v4f64) -> v4i64 {6839pub fn lasx_xvfcmp_cune_d(a: v4f64, b: v4f64) -> v4i64 {
6840 __lasx_xvfcmp_cune_d(a, b)6840 unsafe { __lasx_xvfcmp_cune_d(a, b) }
6841}6841}
68426842
6843#[inline]6843#[inline]
6844#[target_feature(enable = "lasx")]6844#[target_feature(enable = "lasx")]
6845#[unstable(feature = "stdarch_loongarch", issue = "117427")]6845#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6846pub unsafe fn lasx_xvfcmp_cune_s(a: v8f32, b: v8f32) -> v8i32 {6846pub fn lasx_xvfcmp_cune_s(a: v8f32, b: v8f32) -> v8i32 {
6847 __lasx_xvfcmp_cune_s(a, b)6847 unsafe { __lasx_xvfcmp_cune_s(a, b) }
6848}6848}
68496849
6850#[inline]6850#[inline]
6851#[target_feature(enable = "lasx")]6851#[target_feature(enable = "lasx")]
6852#[unstable(feature = "stdarch_loongarch", issue = "117427")]6852#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6853pub unsafe fn lasx_xvfcmp_cun_s(a: v8f32, b: v8f32) -> v8i32 {6853pub fn lasx_xvfcmp_cun_s(a: v8f32, b: v8f32) -> v8i32 {
6854 __lasx_xvfcmp_cun_s(a, b)6854 unsafe { __lasx_xvfcmp_cun_s(a, b) }
6855}6855}
68566856
6857#[inline]6857#[inline]
6858#[target_feature(enable = "lasx")]6858#[target_feature(enable = "lasx")]
6859#[unstable(feature = "stdarch_loongarch", issue = "117427")]6859#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6860pub unsafe fn lasx_xvfcmp_saf_d(a: v4f64, b: v4f64) -> v4i64 {6860pub fn lasx_xvfcmp_saf_d(a: v4f64, b: v4f64) -> v4i64 {
6861 __lasx_xvfcmp_saf_d(a, b)6861 unsafe { __lasx_xvfcmp_saf_d(a, b) }
6862}6862}
68636863
6864#[inline]6864#[inline]
6865#[target_feature(enable = "lasx")]6865#[target_feature(enable = "lasx")]
6866#[unstable(feature = "stdarch_loongarch", issue = "117427")]6866#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6867pub unsafe fn lasx_xvfcmp_saf_s(a: v8f32, b: v8f32) -> v8i32 {6867pub fn lasx_xvfcmp_saf_s(a: v8f32, b: v8f32) -> v8i32 {
6868 __lasx_xvfcmp_saf_s(a, b)6868 unsafe { __lasx_xvfcmp_saf_s(a, b) }
6869}6869}
68706870
6871#[inline]6871#[inline]
6872#[target_feature(enable = "lasx")]6872#[target_feature(enable = "lasx")]
6873#[unstable(feature = "stdarch_loongarch", issue = "117427")]6873#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6874pub unsafe fn lasx_xvfcmp_seq_d(a: v4f64, b: v4f64) -> v4i64 {6874pub fn lasx_xvfcmp_seq_d(a: v4f64, b: v4f64) -> v4i64 {
6875 __lasx_xvfcmp_seq_d(a, b)6875 unsafe { __lasx_xvfcmp_seq_d(a, b) }
6876}6876}
68776877
6878#[inline]6878#[inline]
6879#[target_feature(enable = "lasx")]6879#[target_feature(enable = "lasx")]
6880#[unstable(feature = "stdarch_loongarch", issue = "117427")]6880#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6881pub unsafe fn lasx_xvfcmp_seq_s(a: v8f32, b: v8f32) -> v8i32 {6881pub fn lasx_xvfcmp_seq_s(a: v8f32, b: v8f32) -> v8i32 {
6882 __lasx_xvfcmp_seq_s(a, b)6882 unsafe { __lasx_xvfcmp_seq_s(a, b) }
6883}6883}
68846884
6885#[inline]6885#[inline]
6886#[target_feature(enable = "lasx")]6886#[target_feature(enable = "lasx")]
6887#[unstable(feature = "stdarch_loongarch", issue = "117427")]6887#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6888pub unsafe fn lasx_xvfcmp_sle_d(a: v4f64, b: v4f64) -> v4i64 {6888pub fn lasx_xvfcmp_sle_d(a: v4f64, b: v4f64) -> v4i64 {
6889 __lasx_xvfcmp_sle_d(a, b)6889 unsafe { __lasx_xvfcmp_sle_d(a, b) }
6890}6890}
68916891
6892#[inline]6892#[inline]
6893#[target_feature(enable = "lasx")]6893#[target_feature(enable = "lasx")]
6894#[unstable(feature = "stdarch_loongarch", issue = "117427")]6894#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6895pub unsafe fn lasx_xvfcmp_sle_s(a: v8f32, b: v8f32) -> v8i32 {6895pub fn lasx_xvfcmp_sle_s(a: v8f32, b: v8f32) -> v8i32 {
6896 __lasx_xvfcmp_sle_s(a, b)6896 unsafe { __lasx_xvfcmp_sle_s(a, b) }
6897}6897}
68986898
6899#[inline]6899#[inline]
6900#[target_feature(enable = "lasx")]6900#[target_feature(enable = "lasx")]
6901#[unstable(feature = "stdarch_loongarch", issue = "117427")]6901#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6902pub unsafe fn lasx_xvfcmp_slt_d(a: v4f64, b: v4f64) -> v4i64 {6902pub fn lasx_xvfcmp_slt_d(a: v4f64, b: v4f64) -> v4i64 {
6903 __lasx_xvfcmp_slt_d(a, b)6903 unsafe { __lasx_xvfcmp_slt_d(a, b) }
6904}6904}
69056905
6906#[inline]6906#[inline]
6907#[target_feature(enable = "lasx")]6907#[target_feature(enable = "lasx")]
6908#[unstable(feature = "stdarch_loongarch", issue = "117427")]6908#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6909pub unsafe fn lasx_xvfcmp_slt_s(a: v8f32, b: v8f32) -> v8i32 {6909pub fn lasx_xvfcmp_slt_s(a: v8f32, b: v8f32) -> v8i32 {
6910 __lasx_xvfcmp_slt_s(a, b)6910 unsafe { __lasx_xvfcmp_slt_s(a, b) }
6911}6911}
69126912
6913#[inline]6913#[inline]
6914#[target_feature(enable = "lasx")]6914#[target_feature(enable = "lasx")]
6915#[unstable(feature = "stdarch_loongarch", issue = "117427")]6915#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6916pub unsafe fn lasx_xvfcmp_sne_d(a: v4f64, b: v4f64) -> v4i64 {6916pub fn lasx_xvfcmp_sne_d(a: v4f64, b: v4f64) -> v4i64 {
6917 __lasx_xvfcmp_sne_d(a, b)6917 unsafe { __lasx_xvfcmp_sne_d(a, b) }
6918}6918}
69196919
6920#[inline]6920#[inline]
6921#[target_feature(enable = "lasx")]6921#[target_feature(enable = "lasx")]
6922#[unstable(feature = "stdarch_loongarch", issue = "117427")]6922#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6923pub unsafe fn lasx_xvfcmp_sne_s(a: v8f32, b: v8f32) -> v8i32 {6923pub fn lasx_xvfcmp_sne_s(a: v8f32, b: v8f32) -> v8i32 {
6924 __lasx_xvfcmp_sne_s(a, b)6924 unsafe { __lasx_xvfcmp_sne_s(a, b) }
6925}6925}
69266926
6927#[inline]6927#[inline]
6928#[target_feature(enable = "lasx")]6928#[target_feature(enable = "lasx")]
6929#[unstable(feature = "stdarch_loongarch", issue = "117427")]6929#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6930pub unsafe fn lasx_xvfcmp_sor_d(a: v4f64, b: v4f64) -> v4i64 {6930pub fn lasx_xvfcmp_sor_d(a: v4f64, b: v4f64) -> v4i64 {
6931 __lasx_xvfcmp_sor_d(a, b)6931 unsafe { __lasx_xvfcmp_sor_d(a, b) }
6932}6932}
69336933
6934#[inline]6934#[inline]
6935#[target_feature(enable = "lasx")]6935#[target_feature(enable = "lasx")]
6936#[unstable(feature = "stdarch_loongarch", issue = "117427")]6936#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6937pub unsafe fn lasx_xvfcmp_sor_s(a: v8f32, b: v8f32) -> v8i32 {6937pub fn lasx_xvfcmp_sor_s(a: v8f32, b: v8f32) -> v8i32 {
6938 __lasx_xvfcmp_sor_s(a, b)6938 unsafe { __lasx_xvfcmp_sor_s(a, b) }
6939}6939}
69406940
6941#[inline]6941#[inline]
6942#[target_feature(enable = "lasx")]6942#[target_feature(enable = "lasx")]
6943#[unstable(feature = "stdarch_loongarch", issue = "117427")]6943#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6944pub unsafe fn lasx_xvfcmp_sueq_d(a: v4f64, b: v4f64) -> v4i64 {6944pub fn lasx_xvfcmp_sueq_d(a: v4f64, b: v4f64) -> v4i64 {
6945 __lasx_xvfcmp_sueq_d(a, b)6945 unsafe { __lasx_xvfcmp_sueq_d(a, b) }
6946}6946}
69476947
6948#[inline]6948#[inline]
6949#[target_feature(enable = "lasx")]6949#[target_feature(enable = "lasx")]
6950#[unstable(feature = "stdarch_loongarch", issue = "117427")]6950#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6951pub unsafe fn lasx_xvfcmp_sueq_s(a: v8f32, b: v8f32) -> v8i32 {6951pub fn lasx_xvfcmp_sueq_s(a: v8f32, b: v8f32) -> v8i32 {
6952 __lasx_xvfcmp_sueq_s(a, b)6952 unsafe { __lasx_xvfcmp_sueq_s(a, b) }
6953}6953}
69546954
6955#[inline]6955#[inline]
6956#[target_feature(enable = "lasx")]6956#[target_feature(enable = "lasx")]
6957#[unstable(feature = "stdarch_loongarch", issue = "117427")]6957#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6958pub unsafe fn lasx_xvfcmp_sule_d(a: v4f64, b: v4f64) -> v4i64 {6958pub fn lasx_xvfcmp_sule_d(a: v4f64, b: v4f64) -> v4i64 {
6959 __lasx_xvfcmp_sule_d(a, b)6959 unsafe { __lasx_xvfcmp_sule_d(a, b) }
6960}6960}
69616961
6962#[inline]6962#[inline]
6963#[target_feature(enable = "lasx")]6963#[target_feature(enable = "lasx")]
6964#[unstable(feature = "stdarch_loongarch", issue = "117427")]6964#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6965pub unsafe fn lasx_xvfcmp_sule_s(a: v8f32, b: v8f32) -> v8i32 {6965pub fn lasx_xvfcmp_sule_s(a: v8f32, b: v8f32) -> v8i32 {
6966 __lasx_xvfcmp_sule_s(a, b)6966 unsafe { __lasx_xvfcmp_sule_s(a, b) }
6967}6967}
69686968
6969#[inline]6969#[inline]
6970#[target_feature(enable = "lasx")]6970#[target_feature(enable = "lasx")]
6971#[unstable(feature = "stdarch_loongarch", issue = "117427")]6971#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6972pub unsafe fn lasx_xvfcmp_sult_d(a: v4f64, b: v4f64) -> v4i64 {6972pub fn lasx_xvfcmp_sult_d(a: v4f64, b: v4f64) -> v4i64 {
6973 __lasx_xvfcmp_sult_d(a, b)6973 unsafe { __lasx_xvfcmp_sult_d(a, b) }
6974}6974}
69756975
6976#[inline]6976#[inline]
6977#[target_feature(enable = "lasx")]6977#[target_feature(enable = "lasx")]
6978#[unstable(feature = "stdarch_loongarch", issue = "117427")]6978#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6979pub unsafe fn lasx_xvfcmp_sult_s(a: v8f32, b: v8f32) -> v8i32 {6979pub fn lasx_xvfcmp_sult_s(a: v8f32, b: v8f32) -> v8i32 {
6980 __lasx_xvfcmp_sult_s(a, b)6980 unsafe { __lasx_xvfcmp_sult_s(a, b) }
6981}6981}
69826982
6983#[inline]6983#[inline]
6984#[target_feature(enable = "lasx")]6984#[target_feature(enable = "lasx")]
6985#[unstable(feature = "stdarch_loongarch", issue = "117427")]6985#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6986pub unsafe fn lasx_xvfcmp_sun_d(a: v4f64, b: v4f64) -> v4i64 {6986pub fn lasx_xvfcmp_sun_d(a: v4f64, b: v4f64) -> v4i64 {
6987 __lasx_xvfcmp_sun_d(a, b)6987 unsafe { __lasx_xvfcmp_sun_d(a, b) }
6988}6988}
69896989
6990#[inline]6990#[inline]
6991#[target_feature(enable = "lasx")]6991#[target_feature(enable = "lasx")]
6992#[unstable(feature = "stdarch_loongarch", issue = "117427")]6992#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6993pub unsafe fn lasx_xvfcmp_sune_d(a: v4f64, b: v4f64) -> v4i64 {6993pub fn lasx_xvfcmp_sune_d(a: v4f64, b: v4f64) -> v4i64 {
6994 __lasx_xvfcmp_sune_d(a, b)6994 unsafe { __lasx_xvfcmp_sune_d(a, b) }
6995}6995}
69966996
6997#[inline]6997#[inline]
6998#[target_feature(enable = "lasx")]6998#[target_feature(enable = "lasx")]
6999#[unstable(feature = "stdarch_loongarch", issue = "117427")]6999#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7000pub unsafe fn lasx_xvfcmp_sune_s(a: v8f32, b: v8f32) -> v8i32 {7000pub fn lasx_xvfcmp_sune_s(a: v8f32, b: v8f32) -> v8i32 {
7001 __lasx_xvfcmp_sune_s(a, b)7001 unsafe { __lasx_xvfcmp_sune_s(a, b) }
7002}7002}
70037003
7004#[inline]7004#[inline]
7005#[target_feature(enable = "lasx")]7005#[target_feature(enable = "lasx")]
7006#[unstable(feature = "stdarch_loongarch", issue = "117427")]7006#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7007pub unsafe fn lasx_xvfcmp_sun_s(a: v8f32, b: v8f32) -> v8i32 {7007pub fn lasx_xvfcmp_sun_s(a: v8f32, b: v8f32) -> v8i32 {
7008 __lasx_xvfcmp_sun_s(a, b)7008 unsafe { __lasx_xvfcmp_sun_s(a, b) }
7009}7009}
70107010
7011#[inline]7011#[inline]
7012#[target_feature(enable = "lasx")]7012#[target_feature(enable = "lasx")]
7013#[rustc_legacy_const_generics(1)]7013#[rustc_legacy_const_generics(1)]
7014#[unstable(feature = "stdarch_loongarch", issue = "117427")]7014#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7015pub unsafe fn lasx_xvpickve_d_f<const IMM2: u32>(a: v4f64) -> v4f64 {7015pub fn lasx_xvpickve_d_f<const IMM2: u32>(a: v4f64) -> v4f64 {
7016 static_assert_uimm_bits!(IMM2, 2);7016 static_assert_uimm_bits!(IMM2, 2);
7017 __lasx_xvpickve_d_f(a, IMM2)7017 unsafe { __lasx_xvpickve_d_f(a, IMM2) }
7018}7018}
70197019
7020#[inline]7020#[inline]
7021#[target_feature(enable = "lasx")]7021#[target_feature(enable = "lasx")]
7022#[rustc_legacy_const_generics(1)]7022#[rustc_legacy_const_generics(1)]
7023#[unstable(feature = "stdarch_loongarch", issue = "117427")]7023#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7024pub unsafe fn lasx_xvpickve_w_f<const IMM3: u32>(a: v8f32) -> v8f32 {7024pub fn lasx_xvpickve_w_f<const IMM3: u32>(a: v8f32) -> v8f32 {
7025 static_assert_uimm_bits!(IMM3, 3);7025 static_assert_uimm_bits!(IMM3, 3);
7026 __lasx_xvpickve_w_f(a, IMM3)7026 unsafe { __lasx_xvpickve_w_f(a, IMM3) }
7027}7027}
70287028
7029#[inline]7029#[inline]
7030#[target_feature(enable = "lasx")]7030#[target_feature(enable = "lasx")]
7031#[rustc_legacy_const_generics(0)]7031#[rustc_legacy_const_generics(0)]
7032#[unstable(feature = "stdarch_loongarch", issue = "117427")]7032#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7033pub unsafe fn lasx_xvrepli_b<const IMM_S10: i32>() -> v32i8 {7033pub fn lasx_xvrepli_b<const IMM_S10: i32>() -> v32i8 {
7034 static_assert_simm_bits!(IMM_S10, 10);7034 static_assert_simm_bits!(IMM_S10, 10);
7035 __lasx_xvrepli_b(IMM_S10)7035 unsafe { __lasx_xvrepli_b(IMM_S10) }
7036}7036}
70377037
7038#[inline]7038#[inline]
7039#[target_feature(enable = "lasx")]7039#[target_feature(enable = "lasx")]
7040#[rustc_legacy_const_generics(0)]7040#[rustc_legacy_const_generics(0)]
7041#[unstable(feature = "stdarch_loongarch", issue = "117427")]7041#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7042pub unsafe fn lasx_xvrepli_d<const IMM_S10: i32>() -> v4i64 {7042pub fn lasx_xvrepli_d<const IMM_S10: i32>() -> v4i64 {
7043 static_assert_simm_bits!(IMM_S10, 10);7043 static_assert_simm_bits!(IMM_S10, 10);
7044 __lasx_xvrepli_d(IMM_S10)7044 unsafe { __lasx_xvrepli_d(IMM_S10) }
7045}7045}
70467046
7047#[inline]7047#[inline]
7048#[target_feature(enable = "lasx")]7048#[target_feature(enable = "lasx")]
7049#[rustc_legacy_const_generics(0)]7049#[rustc_legacy_const_generics(0)]
7050#[unstable(feature = "stdarch_loongarch", issue = "117427")]7050#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7051pub unsafe fn lasx_xvrepli_h<const IMM_S10: i32>() -> v16i16 {7051pub fn lasx_xvrepli_h<const IMM_S10: i32>() -> v16i16 {
7052 static_assert_simm_bits!(IMM_S10, 10);7052 static_assert_simm_bits!(IMM_S10, 10);
7053 __lasx_xvrepli_h(IMM_S10)7053 unsafe { __lasx_xvrepli_h(IMM_S10) }
7054}7054}
70557055
7056#[inline]7056#[inline]
7057#[target_feature(enable = "lasx")]7057#[target_feature(enable = "lasx")]
7058#[rustc_legacy_const_generics(0)]7058#[rustc_legacy_const_generics(0)]
7059#[unstable(feature = "stdarch_loongarch", issue = "117427")]7059#[unstable(feature = "stdarch_loongarch", issue = "117427")]
7060pub unsafe fn lasx_xvrepli_w<const IMM_S10: i32>() -> v8i32 {7060pub fn lasx_xvrepli_w<const IMM_S10: i32>() -> v8i32 {
7061 static_assert_simm_bits!(IMM_S10, 10);7061 static_assert_simm_bits!(IMM_S10, 10);
7062 __lasx_xvrepli_w(IMM_S10)7062 unsafe { __lasx_xvrepli_w(IMM_S10) }
7063}7063}
library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs+1416-1416
...@@ -1455,3593 +1455,3593 @@ unsafe extern "unadjusted" {...@@ -1455,3593 +1455,3593 @@ unsafe extern "unadjusted" {
1455#[inline]1455#[inline]
1456#[target_feature(enable = "lsx")]1456#[target_feature(enable = "lsx")]
1457#[unstable(feature = "stdarch_loongarch", issue = "117427")]1457#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1458pub unsafe fn lsx_vsll_b(a: v16i8, b: v16i8) -> v16i8 {1458pub fn lsx_vsll_b(a: v16i8, b: v16i8) -> v16i8 {
1459 __lsx_vsll_b(a, b)1459 unsafe { __lsx_vsll_b(a, b) }
1460}1460}
14611461
1462#[inline]1462#[inline]
1463#[target_feature(enable = "lsx")]1463#[target_feature(enable = "lsx")]
1464#[unstable(feature = "stdarch_loongarch", issue = "117427")]1464#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1465pub unsafe fn lsx_vsll_h(a: v8i16, b: v8i16) -> v8i16 {1465pub fn lsx_vsll_h(a: v8i16, b: v8i16) -> v8i16 {
1466 __lsx_vsll_h(a, b)1466 unsafe { __lsx_vsll_h(a, b) }
1467}1467}
14681468
1469#[inline]1469#[inline]
1470#[target_feature(enable = "lsx")]1470#[target_feature(enable = "lsx")]
1471#[unstable(feature = "stdarch_loongarch", issue = "117427")]1471#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1472pub unsafe fn lsx_vsll_w(a: v4i32, b: v4i32) -> v4i32 {1472pub fn lsx_vsll_w(a: v4i32, b: v4i32) -> v4i32 {
1473 __lsx_vsll_w(a, b)1473 unsafe { __lsx_vsll_w(a, b) }
1474}1474}
14751475
1476#[inline]1476#[inline]
1477#[target_feature(enable = "lsx")]1477#[target_feature(enable = "lsx")]
1478#[unstable(feature = "stdarch_loongarch", issue = "117427")]1478#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1479pub unsafe fn lsx_vsll_d(a: v2i64, b: v2i64) -> v2i64 {1479pub fn lsx_vsll_d(a: v2i64, b: v2i64) -> v2i64 {
1480 __lsx_vsll_d(a, b)1480 unsafe { __lsx_vsll_d(a, b) }
1481}1481}
14821482
1483#[inline]1483#[inline]
1484#[target_feature(enable = "lsx")]1484#[target_feature(enable = "lsx")]
1485#[rustc_legacy_const_generics(1)]1485#[rustc_legacy_const_generics(1)]
1486#[unstable(feature = "stdarch_loongarch", issue = "117427")]1486#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1487pub unsafe fn lsx_vslli_b<const IMM3: u32>(a: v16i8) -> v16i8 {1487pub fn lsx_vslli_b<const IMM3: u32>(a: v16i8) -> v16i8 {
1488 static_assert_uimm_bits!(IMM3, 3);1488 static_assert_uimm_bits!(IMM3, 3);
1489 __lsx_vslli_b(a, IMM3)1489 unsafe { __lsx_vslli_b(a, IMM3) }
1490}1490}
14911491
1492#[inline]1492#[inline]
1493#[target_feature(enable = "lsx")]1493#[target_feature(enable = "lsx")]
1494#[rustc_legacy_const_generics(1)]1494#[rustc_legacy_const_generics(1)]
1495#[unstable(feature = "stdarch_loongarch", issue = "117427")]1495#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1496pub unsafe fn lsx_vslli_h<const IMM4: u32>(a: v8i16) -> v8i16 {1496pub fn lsx_vslli_h<const IMM4: u32>(a: v8i16) -> v8i16 {
1497 static_assert_uimm_bits!(IMM4, 4);1497 static_assert_uimm_bits!(IMM4, 4);
1498 __lsx_vslli_h(a, IMM4)1498 unsafe { __lsx_vslli_h(a, IMM4) }
1499}1499}
15001500
1501#[inline]1501#[inline]
1502#[target_feature(enable = "lsx")]1502#[target_feature(enable = "lsx")]
1503#[rustc_legacy_const_generics(1)]1503#[rustc_legacy_const_generics(1)]
1504#[unstable(feature = "stdarch_loongarch", issue = "117427")]1504#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1505pub unsafe fn lsx_vslli_w<const IMM5: u32>(a: v4i32) -> v4i32 {1505pub fn lsx_vslli_w<const IMM5: u32>(a: v4i32) -> v4i32 {
1506 static_assert_uimm_bits!(IMM5, 5);1506 static_assert_uimm_bits!(IMM5, 5);
1507 __lsx_vslli_w(a, IMM5)1507 unsafe { __lsx_vslli_w(a, IMM5) }
1508}1508}
15091509
1510#[inline]1510#[inline]
1511#[target_feature(enable = "lsx")]1511#[target_feature(enable = "lsx")]
1512#[rustc_legacy_const_generics(1)]1512#[rustc_legacy_const_generics(1)]
1513#[unstable(feature = "stdarch_loongarch", issue = "117427")]1513#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1514pub unsafe fn lsx_vslli_d<const IMM6: u32>(a: v2i64) -> v2i64 {1514pub fn lsx_vslli_d<const IMM6: u32>(a: v2i64) -> v2i64 {
1515 static_assert_uimm_bits!(IMM6, 6);1515 static_assert_uimm_bits!(IMM6, 6);
1516 __lsx_vslli_d(a, IMM6)1516 unsafe { __lsx_vslli_d(a, IMM6) }
1517}1517}
15181518
1519#[inline]1519#[inline]
1520#[target_feature(enable = "lsx")]1520#[target_feature(enable = "lsx")]
1521#[unstable(feature = "stdarch_loongarch", issue = "117427")]1521#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1522pub unsafe fn lsx_vsra_b(a: v16i8, b: v16i8) -> v16i8 {1522pub fn lsx_vsra_b(a: v16i8, b: v16i8) -> v16i8 {
1523 __lsx_vsra_b(a, b)1523 unsafe { __lsx_vsra_b(a, b) }
1524}1524}
15251525
1526#[inline]1526#[inline]
1527#[target_feature(enable = "lsx")]1527#[target_feature(enable = "lsx")]
1528#[unstable(feature = "stdarch_loongarch", issue = "117427")]1528#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1529pub unsafe fn lsx_vsra_h(a: v8i16, b: v8i16) -> v8i16 {1529pub fn lsx_vsra_h(a: v8i16, b: v8i16) -> v8i16 {
1530 __lsx_vsra_h(a, b)1530 unsafe { __lsx_vsra_h(a, b) }
1531}1531}
15321532
1533#[inline]1533#[inline]
1534#[target_feature(enable = "lsx")]1534#[target_feature(enable = "lsx")]
1535#[unstable(feature = "stdarch_loongarch", issue = "117427")]1535#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1536pub unsafe fn lsx_vsra_w(a: v4i32, b: v4i32) -> v4i32 {1536pub fn lsx_vsra_w(a: v4i32, b: v4i32) -> v4i32 {
1537 __lsx_vsra_w(a, b)1537 unsafe { __lsx_vsra_w(a, b) }
1538}1538}
15391539
1540#[inline]1540#[inline]
1541#[target_feature(enable = "lsx")]1541#[target_feature(enable = "lsx")]
1542#[unstable(feature = "stdarch_loongarch", issue = "117427")]1542#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1543pub unsafe fn lsx_vsra_d(a: v2i64, b: v2i64) -> v2i64 {1543pub fn lsx_vsra_d(a: v2i64, b: v2i64) -> v2i64 {
1544 __lsx_vsra_d(a, b)1544 unsafe { __lsx_vsra_d(a, b) }
1545}1545}
15461546
1547#[inline]1547#[inline]
1548#[target_feature(enable = "lsx")]1548#[target_feature(enable = "lsx")]
1549#[rustc_legacy_const_generics(1)]1549#[rustc_legacy_const_generics(1)]
1550#[unstable(feature = "stdarch_loongarch", issue = "117427")]1550#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1551pub unsafe fn lsx_vsrai_b<const IMM3: u32>(a: v16i8) -> v16i8 {1551pub fn lsx_vsrai_b<const IMM3: u32>(a: v16i8) -> v16i8 {
1552 static_assert_uimm_bits!(IMM3, 3);1552 static_assert_uimm_bits!(IMM3, 3);
1553 __lsx_vsrai_b(a, IMM3)1553 unsafe { __lsx_vsrai_b(a, IMM3) }
1554}1554}
15551555
1556#[inline]1556#[inline]
1557#[target_feature(enable = "lsx")]1557#[target_feature(enable = "lsx")]
1558#[rustc_legacy_const_generics(1)]1558#[rustc_legacy_const_generics(1)]
1559#[unstable(feature = "stdarch_loongarch", issue = "117427")]1559#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1560pub unsafe fn lsx_vsrai_h<const IMM4: u32>(a: v8i16) -> v8i16 {1560pub fn lsx_vsrai_h<const IMM4: u32>(a: v8i16) -> v8i16 {
1561 static_assert_uimm_bits!(IMM4, 4);1561 static_assert_uimm_bits!(IMM4, 4);
1562 __lsx_vsrai_h(a, IMM4)1562 unsafe { __lsx_vsrai_h(a, IMM4) }
1563}1563}
15641564
1565#[inline]1565#[inline]
1566#[target_feature(enable = "lsx")]1566#[target_feature(enable = "lsx")]
1567#[rustc_legacy_const_generics(1)]1567#[rustc_legacy_const_generics(1)]
1568#[unstable(feature = "stdarch_loongarch", issue = "117427")]1568#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1569pub unsafe fn lsx_vsrai_w<const IMM5: u32>(a: v4i32) -> v4i32 {1569pub fn lsx_vsrai_w<const IMM5: u32>(a: v4i32) -> v4i32 {
1570 static_assert_uimm_bits!(IMM5, 5);1570 static_assert_uimm_bits!(IMM5, 5);
1571 __lsx_vsrai_w(a, IMM5)1571 unsafe { __lsx_vsrai_w(a, IMM5) }
1572}1572}
15731573
1574#[inline]1574#[inline]
1575#[target_feature(enable = "lsx")]1575#[target_feature(enable = "lsx")]
1576#[rustc_legacy_const_generics(1)]1576#[rustc_legacy_const_generics(1)]
1577#[unstable(feature = "stdarch_loongarch", issue = "117427")]1577#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1578pub unsafe fn lsx_vsrai_d<const IMM6: u32>(a: v2i64) -> v2i64 {1578pub fn lsx_vsrai_d<const IMM6: u32>(a: v2i64) -> v2i64 {
1579 static_assert_uimm_bits!(IMM6, 6);1579 static_assert_uimm_bits!(IMM6, 6);
1580 __lsx_vsrai_d(a, IMM6)1580 unsafe { __lsx_vsrai_d(a, IMM6) }
1581}1581}
15821582
1583#[inline]1583#[inline]
1584#[target_feature(enable = "lsx")]1584#[target_feature(enable = "lsx")]
1585#[unstable(feature = "stdarch_loongarch", issue = "117427")]1585#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1586pub unsafe fn lsx_vsrar_b(a: v16i8, b: v16i8) -> v16i8 {1586pub fn lsx_vsrar_b(a: v16i8, b: v16i8) -> v16i8 {
1587 __lsx_vsrar_b(a, b)1587 unsafe { __lsx_vsrar_b(a, b) }
1588}1588}
15891589
1590#[inline]1590#[inline]
1591#[target_feature(enable = "lsx")]1591#[target_feature(enable = "lsx")]
1592#[unstable(feature = "stdarch_loongarch", issue = "117427")]1592#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1593pub unsafe fn lsx_vsrar_h(a: v8i16, b: v8i16) -> v8i16 {1593pub fn lsx_vsrar_h(a: v8i16, b: v8i16) -> v8i16 {
1594 __lsx_vsrar_h(a, b)1594 unsafe { __lsx_vsrar_h(a, b) }
1595}1595}
15961596
1597#[inline]1597#[inline]
1598#[target_feature(enable = "lsx")]1598#[target_feature(enable = "lsx")]
1599#[unstable(feature = "stdarch_loongarch", issue = "117427")]1599#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1600pub unsafe fn lsx_vsrar_w(a: v4i32, b: v4i32) -> v4i32 {1600pub fn lsx_vsrar_w(a: v4i32, b: v4i32) -> v4i32 {
1601 __lsx_vsrar_w(a, b)1601 unsafe { __lsx_vsrar_w(a, b) }
1602}1602}
16031603
1604#[inline]1604#[inline]
1605#[target_feature(enable = "lsx")]1605#[target_feature(enable = "lsx")]
1606#[unstable(feature = "stdarch_loongarch", issue = "117427")]1606#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1607pub unsafe fn lsx_vsrar_d(a: v2i64, b: v2i64) -> v2i64 {1607pub fn lsx_vsrar_d(a: v2i64, b: v2i64) -> v2i64 {
1608 __lsx_vsrar_d(a, b)1608 unsafe { __lsx_vsrar_d(a, b) }
1609}1609}
16101610
1611#[inline]1611#[inline]
1612#[target_feature(enable = "lsx")]1612#[target_feature(enable = "lsx")]
1613#[rustc_legacy_const_generics(1)]1613#[rustc_legacy_const_generics(1)]
1614#[unstable(feature = "stdarch_loongarch", issue = "117427")]1614#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1615pub unsafe fn lsx_vsrari_b<const IMM3: u32>(a: v16i8) -> v16i8 {1615pub fn lsx_vsrari_b<const IMM3: u32>(a: v16i8) -> v16i8 {
1616 static_assert_uimm_bits!(IMM3, 3);1616 static_assert_uimm_bits!(IMM3, 3);
1617 __lsx_vsrari_b(a, IMM3)1617 unsafe { __lsx_vsrari_b(a, IMM3) }
1618}1618}
16191619
1620#[inline]1620#[inline]
1621#[target_feature(enable = "lsx")]1621#[target_feature(enable = "lsx")]
1622#[rustc_legacy_const_generics(1)]1622#[rustc_legacy_const_generics(1)]
1623#[unstable(feature = "stdarch_loongarch", issue = "117427")]1623#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1624pub unsafe fn lsx_vsrari_h<const IMM4: u32>(a: v8i16) -> v8i16 {1624pub fn lsx_vsrari_h<const IMM4: u32>(a: v8i16) -> v8i16 {
1625 static_assert_uimm_bits!(IMM4, 4);1625 static_assert_uimm_bits!(IMM4, 4);
1626 __lsx_vsrari_h(a, IMM4)1626 unsafe { __lsx_vsrari_h(a, IMM4) }
1627}1627}
16281628
1629#[inline]1629#[inline]
1630#[target_feature(enable = "lsx")]1630#[target_feature(enable = "lsx")]
1631#[rustc_legacy_const_generics(1)]1631#[rustc_legacy_const_generics(1)]
1632#[unstable(feature = "stdarch_loongarch", issue = "117427")]1632#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1633pub unsafe fn lsx_vsrari_w<const IMM5: u32>(a: v4i32) -> v4i32 {1633pub fn lsx_vsrari_w<const IMM5: u32>(a: v4i32) -> v4i32 {
1634 static_assert_uimm_bits!(IMM5, 5);1634 static_assert_uimm_bits!(IMM5, 5);
1635 __lsx_vsrari_w(a, IMM5)1635 unsafe { __lsx_vsrari_w(a, IMM5) }
1636}1636}
16371637
1638#[inline]1638#[inline]
1639#[target_feature(enable = "lsx")]1639#[target_feature(enable = "lsx")]
1640#[rustc_legacy_const_generics(1)]1640#[rustc_legacy_const_generics(1)]
1641#[unstable(feature = "stdarch_loongarch", issue = "117427")]1641#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1642pub unsafe fn lsx_vsrari_d<const IMM6: u32>(a: v2i64) -> v2i64 {1642pub fn lsx_vsrari_d<const IMM6: u32>(a: v2i64) -> v2i64 {
1643 static_assert_uimm_bits!(IMM6, 6);1643 static_assert_uimm_bits!(IMM6, 6);
1644 __lsx_vsrari_d(a, IMM6)1644 unsafe { __lsx_vsrari_d(a, IMM6) }
1645}1645}
16461646
1647#[inline]1647#[inline]
1648#[target_feature(enable = "lsx")]1648#[target_feature(enable = "lsx")]
1649#[unstable(feature = "stdarch_loongarch", issue = "117427")]1649#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1650pub unsafe fn lsx_vsrl_b(a: v16i8, b: v16i8) -> v16i8 {1650pub fn lsx_vsrl_b(a: v16i8, b: v16i8) -> v16i8 {
1651 __lsx_vsrl_b(a, b)1651 unsafe { __lsx_vsrl_b(a, b) }
1652}1652}
16531653
1654#[inline]1654#[inline]
1655#[target_feature(enable = "lsx")]1655#[target_feature(enable = "lsx")]
1656#[unstable(feature = "stdarch_loongarch", issue = "117427")]1656#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1657pub unsafe fn lsx_vsrl_h(a: v8i16, b: v8i16) -> v8i16 {1657pub fn lsx_vsrl_h(a: v8i16, b: v8i16) -> v8i16 {
1658 __lsx_vsrl_h(a, b)1658 unsafe { __lsx_vsrl_h(a, b) }
1659}1659}
16601660
1661#[inline]1661#[inline]
1662#[target_feature(enable = "lsx")]1662#[target_feature(enable = "lsx")]
1663#[unstable(feature = "stdarch_loongarch", issue = "117427")]1663#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1664pub unsafe fn lsx_vsrl_w(a: v4i32, b: v4i32) -> v4i32 {1664pub fn lsx_vsrl_w(a: v4i32, b: v4i32) -> v4i32 {
1665 __lsx_vsrl_w(a, b)1665 unsafe { __lsx_vsrl_w(a, b) }
1666}1666}
16671667
1668#[inline]1668#[inline]
1669#[target_feature(enable = "lsx")]1669#[target_feature(enable = "lsx")]
1670#[unstable(feature = "stdarch_loongarch", issue = "117427")]1670#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1671pub unsafe fn lsx_vsrl_d(a: v2i64, b: v2i64) -> v2i64 {1671pub fn lsx_vsrl_d(a: v2i64, b: v2i64) -> v2i64 {
1672 __lsx_vsrl_d(a, b)1672 unsafe { __lsx_vsrl_d(a, b) }
1673}1673}
16741674
1675#[inline]1675#[inline]
1676#[target_feature(enable = "lsx")]1676#[target_feature(enable = "lsx")]
1677#[rustc_legacy_const_generics(1)]1677#[rustc_legacy_const_generics(1)]
1678#[unstable(feature = "stdarch_loongarch", issue = "117427")]1678#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1679pub unsafe fn lsx_vsrli_b<const IMM3: u32>(a: v16i8) -> v16i8 {1679pub fn lsx_vsrli_b<const IMM3: u32>(a: v16i8) -> v16i8 {
1680 static_assert_uimm_bits!(IMM3, 3);1680 static_assert_uimm_bits!(IMM3, 3);
1681 __lsx_vsrli_b(a, IMM3)1681 unsafe { __lsx_vsrli_b(a, IMM3) }
1682}1682}
16831683
1684#[inline]1684#[inline]
1685#[target_feature(enable = "lsx")]1685#[target_feature(enable = "lsx")]
1686#[rustc_legacy_const_generics(1)]1686#[rustc_legacy_const_generics(1)]
1687#[unstable(feature = "stdarch_loongarch", issue = "117427")]1687#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1688pub unsafe fn lsx_vsrli_h<const IMM4: u32>(a: v8i16) -> v8i16 {1688pub fn lsx_vsrli_h<const IMM4: u32>(a: v8i16) -> v8i16 {
1689 static_assert_uimm_bits!(IMM4, 4);1689 static_assert_uimm_bits!(IMM4, 4);
1690 __lsx_vsrli_h(a, IMM4)1690 unsafe { __lsx_vsrli_h(a, IMM4) }
1691}1691}
16921692
1693#[inline]1693#[inline]
1694#[target_feature(enable = "lsx")]1694#[target_feature(enable = "lsx")]
1695#[rustc_legacy_const_generics(1)]1695#[rustc_legacy_const_generics(1)]
1696#[unstable(feature = "stdarch_loongarch", issue = "117427")]1696#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1697pub unsafe fn lsx_vsrli_w<const IMM5: u32>(a: v4i32) -> v4i32 {1697pub fn lsx_vsrli_w<const IMM5: u32>(a: v4i32) -> v4i32 {
1698 static_assert_uimm_bits!(IMM5, 5);1698 static_assert_uimm_bits!(IMM5, 5);
1699 __lsx_vsrli_w(a, IMM5)1699 unsafe { __lsx_vsrli_w(a, IMM5) }
1700}1700}
17011701
1702#[inline]1702#[inline]
1703#[target_feature(enable = "lsx")]1703#[target_feature(enable = "lsx")]
1704#[rustc_legacy_const_generics(1)]1704#[rustc_legacy_const_generics(1)]
1705#[unstable(feature = "stdarch_loongarch", issue = "117427")]1705#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1706pub unsafe fn lsx_vsrli_d<const IMM6: u32>(a: v2i64) -> v2i64 {1706pub fn lsx_vsrli_d<const IMM6: u32>(a: v2i64) -> v2i64 {
1707 static_assert_uimm_bits!(IMM6, 6);1707 static_assert_uimm_bits!(IMM6, 6);
1708 __lsx_vsrli_d(a, IMM6)1708 unsafe { __lsx_vsrli_d(a, IMM6) }
1709}1709}
17101710
1711#[inline]1711#[inline]
1712#[target_feature(enable = "lsx")]1712#[target_feature(enable = "lsx")]
1713#[unstable(feature = "stdarch_loongarch", issue = "117427")]1713#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1714pub unsafe fn lsx_vsrlr_b(a: v16i8, b: v16i8) -> v16i8 {1714pub fn lsx_vsrlr_b(a: v16i8, b: v16i8) -> v16i8 {
1715 __lsx_vsrlr_b(a, b)1715 unsafe { __lsx_vsrlr_b(a, b) }
1716}1716}
17171717
1718#[inline]1718#[inline]
1719#[target_feature(enable = "lsx")]1719#[target_feature(enable = "lsx")]
1720#[unstable(feature = "stdarch_loongarch", issue = "117427")]1720#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1721pub unsafe fn lsx_vsrlr_h(a: v8i16, b: v8i16) -> v8i16 {1721pub fn lsx_vsrlr_h(a: v8i16, b: v8i16) -> v8i16 {
1722 __lsx_vsrlr_h(a, b)1722 unsafe { __lsx_vsrlr_h(a, b) }
1723}1723}
17241724
1725#[inline]1725#[inline]
1726#[target_feature(enable = "lsx")]1726#[target_feature(enable = "lsx")]
1727#[unstable(feature = "stdarch_loongarch", issue = "117427")]1727#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1728pub unsafe fn lsx_vsrlr_w(a: v4i32, b: v4i32) -> v4i32 {1728pub fn lsx_vsrlr_w(a: v4i32, b: v4i32) -> v4i32 {
1729 __lsx_vsrlr_w(a, b)1729 unsafe { __lsx_vsrlr_w(a, b) }
1730}1730}
17311731
1732#[inline]1732#[inline]
1733#[target_feature(enable = "lsx")]1733#[target_feature(enable = "lsx")]
1734#[unstable(feature = "stdarch_loongarch", issue = "117427")]1734#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1735pub unsafe fn lsx_vsrlr_d(a: v2i64, b: v2i64) -> v2i64 {1735pub fn lsx_vsrlr_d(a: v2i64, b: v2i64) -> v2i64 {
1736 __lsx_vsrlr_d(a, b)1736 unsafe { __lsx_vsrlr_d(a, b) }
1737}1737}
17381738
1739#[inline]1739#[inline]
1740#[target_feature(enable = "lsx")]1740#[target_feature(enable = "lsx")]
1741#[rustc_legacy_const_generics(1)]1741#[rustc_legacy_const_generics(1)]
1742#[unstable(feature = "stdarch_loongarch", issue = "117427")]1742#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1743pub unsafe fn lsx_vsrlri_b<const IMM3: u32>(a: v16i8) -> v16i8 {1743pub fn lsx_vsrlri_b<const IMM3: u32>(a: v16i8) -> v16i8 {
1744 static_assert_uimm_bits!(IMM3, 3);1744 static_assert_uimm_bits!(IMM3, 3);
1745 __lsx_vsrlri_b(a, IMM3)1745 unsafe { __lsx_vsrlri_b(a, IMM3) }
1746}1746}
17471747
1748#[inline]1748#[inline]
1749#[target_feature(enable = "lsx")]1749#[target_feature(enable = "lsx")]
1750#[rustc_legacy_const_generics(1)]1750#[rustc_legacy_const_generics(1)]
1751#[unstable(feature = "stdarch_loongarch", issue = "117427")]1751#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1752pub unsafe fn lsx_vsrlri_h<const IMM4: u32>(a: v8i16) -> v8i16 {1752pub fn lsx_vsrlri_h<const IMM4: u32>(a: v8i16) -> v8i16 {
1753 static_assert_uimm_bits!(IMM4, 4);1753 static_assert_uimm_bits!(IMM4, 4);
1754 __lsx_vsrlri_h(a, IMM4)1754 unsafe { __lsx_vsrlri_h(a, IMM4) }
1755}1755}
17561756
1757#[inline]1757#[inline]
1758#[target_feature(enable = "lsx")]1758#[target_feature(enable = "lsx")]
1759#[rustc_legacy_const_generics(1)]1759#[rustc_legacy_const_generics(1)]
1760#[unstable(feature = "stdarch_loongarch", issue = "117427")]1760#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1761pub unsafe fn lsx_vsrlri_w<const IMM5: u32>(a: v4i32) -> v4i32 {1761pub fn lsx_vsrlri_w<const IMM5: u32>(a: v4i32) -> v4i32 {
1762 static_assert_uimm_bits!(IMM5, 5);1762 static_assert_uimm_bits!(IMM5, 5);
1763 __lsx_vsrlri_w(a, IMM5)1763 unsafe { __lsx_vsrlri_w(a, IMM5) }
1764}1764}
17651765
1766#[inline]1766#[inline]
1767#[target_feature(enable = "lsx")]1767#[target_feature(enable = "lsx")]
1768#[rustc_legacy_const_generics(1)]1768#[rustc_legacy_const_generics(1)]
1769#[unstable(feature = "stdarch_loongarch", issue = "117427")]1769#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1770pub unsafe fn lsx_vsrlri_d<const IMM6: u32>(a: v2i64) -> v2i64 {1770pub fn lsx_vsrlri_d<const IMM6: u32>(a: v2i64) -> v2i64 {
1771 static_assert_uimm_bits!(IMM6, 6);1771 static_assert_uimm_bits!(IMM6, 6);
1772 __lsx_vsrlri_d(a, IMM6)1772 unsafe { __lsx_vsrlri_d(a, IMM6) }
1773}1773}
17741774
1775#[inline]1775#[inline]
1776#[target_feature(enable = "lsx")]1776#[target_feature(enable = "lsx")]
1777#[unstable(feature = "stdarch_loongarch", issue = "117427")]1777#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1778pub unsafe fn lsx_vbitclr_b(a: v16u8, b: v16u8) -> v16u8 {1778pub fn lsx_vbitclr_b(a: v16u8, b: v16u8) -> v16u8 {
1779 __lsx_vbitclr_b(a, b)1779 unsafe { __lsx_vbitclr_b(a, b) }
1780}1780}
17811781
1782#[inline]1782#[inline]
1783#[target_feature(enable = "lsx")]1783#[target_feature(enable = "lsx")]
1784#[unstable(feature = "stdarch_loongarch", issue = "117427")]1784#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1785pub unsafe fn lsx_vbitclr_h(a: v8u16, b: v8u16) -> v8u16 {1785pub fn lsx_vbitclr_h(a: v8u16, b: v8u16) -> v8u16 {
1786 __lsx_vbitclr_h(a, b)1786 unsafe { __lsx_vbitclr_h(a, b) }
1787}1787}
17881788
1789#[inline]1789#[inline]
1790#[target_feature(enable = "lsx")]1790#[target_feature(enable = "lsx")]
1791#[unstable(feature = "stdarch_loongarch", issue = "117427")]1791#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1792pub unsafe fn lsx_vbitclr_w(a: v4u32, b: v4u32) -> v4u32 {1792pub fn lsx_vbitclr_w(a: v4u32, b: v4u32) -> v4u32 {
1793 __lsx_vbitclr_w(a, b)1793 unsafe { __lsx_vbitclr_w(a, b) }
1794}1794}
17951795
1796#[inline]1796#[inline]
1797#[target_feature(enable = "lsx")]1797#[target_feature(enable = "lsx")]
1798#[unstable(feature = "stdarch_loongarch", issue = "117427")]1798#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1799pub unsafe fn lsx_vbitclr_d(a: v2u64, b: v2u64) -> v2u64 {1799pub fn lsx_vbitclr_d(a: v2u64, b: v2u64) -> v2u64 {
1800 __lsx_vbitclr_d(a, b)1800 unsafe { __lsx_vbitclr_d(a, b) }
1801}1801}
18021802
1803#[inline]1803#[inline]
1804#[target_feature(enable = "lsx")]1804#[target_feature(enable = "lsx")]
1805#[rustc_legacy_const_generics(1)]1805#[rustc_legacy_const_generics(1)]
1806#[unstable(feature = "stdarch_loongarch", issue = "117427")]1806#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1807pub unsafe fn lsx_vbitclri_b<const IMM3: u32>(a: v16u8) -> v16u8 {1807pub fn lsx_vbitclri_b<const IMM3: u32>(a: v16u8) -> v16u8 {
1808 static_assert_uimm_bits!(IMM3, 3);1808 static_assert_uimm_bits!(IMM3, 3);
1809 __lsx_vbitclri_b(a, IMM3)1809 unsafe { __lsx_vbitclri_b(a, IMM3) }
1810}1810}
18111811
1812#[inline]1812#[inline]
1813#[target_feature(enable = "lsx")]1813#[target_feature(enable = "lsx")]
1814#[rustc_legacy_const_generics(1)]1814#[rustc_legacy_const_generics(1)]
1815#[unstable(feature = "stdarch_loongarch", issue = "117427")]1815#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1816pub unsafe fn lsx_vbitclri_h<const IMM4: u32>(a: v8u16) -> v8u16 {1816pub fn lsx_vbitclri_h<const IMM4: u32>(a: v8u16) -> v8u16 {
1817 static_assert_uimm_bits!(IMM4, 4);1817 static_assert_uimm_bits!(IMM4, 4);
1818 __lsx_vbitclri_h(a, IMM4)1818 unsafe { __lsx_vbitclri_h(a, IMM4) }
1819}1819}
18201820
1821#[inline]1821#[inline]
1822#[target_feature(enable = "lsx")]1822#[target_feature(enable = "lsx")]
1823#[rustc_legacy_const_generics(1)]1823#[rustc_legacy_const_generics(1)]
1824#[unstable(feature = "stdarch_loongarch", issue = "117427")]1824#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1825pub unsafe fn lsx_vbitclri_w<const IMM5: u32>(a: v4u32) -> v4u32 {1825pub fn lsx_vbitclri_w<const IMM5: u32>(a: v4u32) -> v4u32 {
1826 static_assert_uimm_bits!(IMM5, 5);1826 static_assert_uimm_bits!(IMM5, 5);
1827 __lsx_vbitclri_w(a, IMM5)1827 unsafe { __lsx_vbitclri_w(a, IMM5) }
1828}1828}
18291829
1830#[inline]1830#[inline]
1831#[target_feature(enable = "lsx")]1831#[target_feature(enable = "lsx")]
1832#[rustc_legacy_const_generics(1)]1832#[rustc_legacy_const_generics(1)]
1833#[unstable(feature = "stdarch_loongarch", issue = "117427")]1833#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1834pub unsafe fn lsx_vbitclri_d<const IMM6: u32>(a: v2u64) -> v2u64 {1834pub fn lsx_vbitclri_d<const IMM6: u32>(a: v2u64) -> v2u64 {
1835 static_assert_uimm_bits!(IMM6, 6);1835 static_assert_uimm_bits!(IMM6, 6);
1836 __lsx_vbitclri_d(a, IMM6)1836 unsafe { __lsx_vbitclri_d(a, IMM6) }
1837}1837}
18381838
1839#[inline]1839#[inline]
1840#[target_feature(enable = "lsx")]1840#[target_feature(enable = "lsx")]
1841#[unstable(feature = "stdarch_loongarch", issue = "117427")]1841#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1842pub unsafe fn lsx_vbitset_b(a: v16u8, b: v16u8) -> v16u8 {1842pub fn lsx_vbitset_b(a: v16u8, b: v16u8) -> v16u8 {
1843 __lsx_vbitset_b(a, b)1843 unsafe { __lsx_vbitset_b(a, b) }
1844}1844}
18451845
1846#[inline]1846#[inline]
1847#[target_feature(enable = "lsx")]1847#[target_feature(enable = "lsx")]
1848#[unstable(feature = "stdarch_loongarch", issue = "117427")]1848#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1849pub unsafe fn lsx_vbitset_h(a: v8u16, b: v8u16) -> v8u16 {1849pub fn lsx_vbitset_h(a: v8u16, b: v8u16) -> v8u16 {
1850 __lsx_vbitset_h(a, b)1850 unsafe { __lsx_vbitset_h(a, b) }
1851}1851}
18521852
1853#[inline]1853#[inline]
1854#[target_feature(enable = "lsx")]1854#[target_feature(enable = "lsx")]
1855#[unstable(feature = "stdarch_loongarch", issue = "117427")]1855#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1856pub unsafe fn lsx_vbitset_w(a: v4u32, b: v4u32) -> v4u32 {1856pub fn lsx_vbitset_w(a: v4u32, b: v4u32) -> v4u32 {
1857 __lsx_vbitset_w(a, b)1857 unsafe { __lsx_vbitset_w(a, b) }
1858}1858}
18591859
1860#[inline]1860#[inline]
1861#[target_feature(enable = "lsx")]1861#[target_feature(enable = "lsx")]
1862#[unstable(feature = "stdarch_loongarch", issue = "117427")]1862#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1863pub unsafe fn lsx_vbitset_d(a: v2u64, b: v2u64) -> v2u64 {1863pub fn lsx_vbitset_d(a: v2u64, b: v2u64) -> v2u64 {
1864 __lsx_vbitset_d(a, b)1864 unsafe { __lsx_vbitset_d(a, b) }
1865}1865}
18661866
1867#[inline]1867#[inline]
1868#[target_feature(enable = "lsx")]1868#[target_feature(enable = "lsx")]
1869#[rustc_legacy_const_generics(1)]1869#[rustc_legacy_const_generics(1)]
1870#[unstable(feature = "stdarch_loongarch", issue = "117427")]1870#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1871pub unsafe fn lsx_vbitseti_b<const IMM3: u32>(a: v16u8) -> v16u8 {1871pub fn lsx_vbitseti_b<const IMM3: u32>(a: v16u8) -> v16u8 {
1872 static_assert_uimm_bits!(IMM3, 3);1872 static_assert_uimm_bits!(IMM3, 3);
1873 __lsx_vbitseti_b(a, IMM3)1873 unsafe { __lsx_vbitseti_b(a, IMM3) }
1874}1874}
18751875
1876#[inline]1876#[inline]
1877#[target_feature(enable = "lsx")]1877#[target_feature(enable = "lsx")]
1878#[rustc_legacy_const_generics(1)]1878#[rustc_legacy_const_generics(1)]
1879#[unstable(feature = "stdarch_loongarch", issue = "117427")]1879#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1880pub unsafe fn lsx_vbitseti_h<const IMM4: u32>(a: v8u16) -> v8u16 {1880pub fn lsx_vbitseti_h<const IMM4: u32>(a: v8u16) -> v8u16 {
1881 static_assert_uimm_bits!(IMM4, 4);1881 static_assert_uimm_bits!(IMM4, 4);
1882 __lsx_vbitseti_h(a, IMM4)1882 unsafe { __lsx_vbitseti_h(a, IMM4) }
1883}1883}
18841884
1885#[inline]1885#[inline]
1886#[target_feature(enable = "lsx")]1886#[target_feature(enable = "lsx")]
1887#[rustc_legacy_const_generics(1)]1887#[rustc_legacy_const_generics(1)]
1888#[unstable(feature = "stdarch_loongarch", issue = "117427")]1888#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1889pub unsafe fn lsx_vbitseti_w<const IMM5: u32>(a: v4u32) -> v4u32 {1889pub fn lsx_vbitseti_w<const IMM5: u32>(a: v4u32) -> v4u32 {
1890 static_assert_uimm_bits!(IMM5, 5);1890 static_assert_uimm_bits!(IMM5, 5);
1891 __lsx_vbitseti_w(a, IMM5)1891 unsafe { __lsx_vbitseti_w(a, IMM5) }
1892}1892}
18931893
1894#[inline]1894#[inline]
1895#[target_feature(enable = "lsx")]1895#[target_feature(enable = "lsx")]
1896#[rustc_legacy_const_generics(1)]1896#[rustc_legacy_const_generics(1)]
1897#[unstable(feature = "stdarch_loongarch", issue = "117427")]1897#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1898pub unsafe fn lsx_vbitseti_d<const IMM6: u32>(a: v2u64) -> v2u64 {1898pub fn lsx_vbitseti_d<const IMM6: u32>(a: v2u64) -> v2u64 {
1899 static_assert_uimm_bits!(IMM6, 6);1899 static_assert_uimm_bits!(IMM6, 6);
1900 __lsx_vbitseti_d(a, IMM6)1900 unsafe { __lsx_vbitseti_d(a, IMM6) }
1901}1901}
19021902
1903#[inline]1903#[inline]
1904#[target_feature(enable = "lsx")]1904#[target_feature(enable = "lsx")]
1905#[unstable(feature = "stdarch_loongarch", issue = "117427")]1905#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1906pub unsafe fn lsx_vbitrev_b(a: v16u8, b: v16u8) -> v16u8 {1906pub fn lsx_vbitrev_b(a: v16u8, b: v16u8) -> v16u8 {
1907 __lsx_vbitrev_b(a, b)1907 unsafe { __lsx_vbitrev_b(a, b) }
1908}1908}
19091909
1910#[inline]1910#[inline]
1911#[target_feature(enable = "lsx")]1911#[target_feature(enable = "lsx")]
1912#[unstable(feature = "stdarch_loongarch", issue = "117427")]1912#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1913pub unsafe fn lsx_vbitrev_h(a: v8u16, b: v8u16) -> v8u16 {1913pub fn lsx_vbitrev_h(a: v8u16, b: v8u16) -> v8u16 {
1914 __lsx_vbitrev_h(a, b)1914 unsafe { __lsx_vbitrev_h(a, b) }
1915}1915}
19161916
1917#[inline]1917#[inline]
1918#[target_feature(enable = "lsx")]1918#[target_feature(enable = "lsx")]
1919#[unstable(feature = "stdarch_loongarch", issue = "117427")]1919#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1920pub unsafe fn lsx_vbitrev_w(a: v4u32, b: v4u32) -> v4u32 {1920pub fn lsx_vbitrev_w(a: v4u32, b: v4u32) -> v4u32 {
1921 __lsx_vbitrev_w(a, b)1921 unsafe { __lsx_vbitrev_w(a, b) }
1922}1922}
19231923
1924#[inline]1924#[inline]
1925#[target_feature(enable = "lsx")]1925#[target_feature(enable = "lsx")]
1926#[unstable(feature = "stdarch_loongarch", issue = "117427")]1926#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1927pub unsafe fn lsx_vbitrev_d(a: v2u64, b: v2u64) -> v2u64 {1927pub fn lsx_vbitrev_d(a: v2u64, b: v2u64) -> v2u64 {
1928 __lsx_vbitrev_d(a, b)1928 unsafe { __lsx_vbitrev_d(a, b) }
1929}1929}
19301930
1931#[inline]1931#[inline]
1932#[target_feature(enable = "lsx")]1932#[target_feature(enable = "lsx")]
1933#[rustc_legacy_const_generics(1)]1933#[rustc_legacy_const_generics(1)]
1934#[unstable(feature = "stdarch_loongarch", issue = "117427")]1934#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1935pub unsafe fn lsx_vbitrevi_b<const IMM3: u32>(a: v16u8) -> v16u8 {1935pub fn lsx_vbitrevi_b<const IMM3: u32>(a: v16u8) -> v16u8 {
1936 static_assert_uimm_bits!(IMM3, 3);1936 static_assert_uimm_bits!(IMM3, 3);
1937 __lsx_vbitrevi_b(a, IMM3)1937 unsafe { __lsx_vbitrevi_b(a, IMM3) }
1938}1938}
19391939
1940#[inline]1940#[inline]
1941#[target_feature(enable = "lsx")]1941#[target_feature(enable = "lsx")]
1942#[rustc_legacy_const_generics(1)]1942#[rustc_legacy_const_generics(1)]
1943#[unstable(feature = "stdarch_loongarch", issue = "117427")]1943#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1944pub unsafe fn lsx_vbitrevi_h<const IMM4: u32>(a: v8u16) -> v8u16 {1944pub fn lsx_vbitrevi_h<const IMM4: u32>(a: v8u16) -> v8u16 {
1945 static_assert_uimm_bits!(IMM4, 4);1945 static_assert_uimm_bits!(IMM4, 4);
1946 __lsx_vbitrevi_h(a, IMM4)1946 unsafe { __lsx_vbitrevi_h(a, IMM4) }
1947}1947}
19481948
1949#[inline]1949#[inline]
1950#[target_feature(enable = "lsx")]1950#[target_feature(enable = "lsx")]
1951#[rustc_legacy_const_generics(1)]1951#[rustc_legacy_const_generics(1)]
1952#[unstable(feature = "stdarch_loongarch", issue = "117427")]1952#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1953pub unsafe fn lsx_vbitrevi_w<const IMM5: u32>(a: v4u32) -> v4u32 {1953pub fn lsx_vbitrevi_w<const IMM5: u32>(a: v4u32) -> v4u32 {
1954 static_assert_uimm_bits!(IMM5, 5);1954 static_assert_uimm_bits!(IMM5, 5);
1955 __lsx_vbitrevi_w(a, IMM5)1955 unsafe { __lsx_vbitrevi_w(a, IMM5) }
1956}1956}
19571957
1958#[inline]1958#[inline]
1959#[target_feature(enable = "lsx")]1959#[target_feature(enable = "lsx")]
1960#[rustc_legacy_const_generics(1)]1960#[rustc_legacy_const_generics(1)]
1961#[unstable(feature = "stdarch_loongarch", issue = "117427")]1961#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1962pub unsafe fn lsx_vbitrevi_d<const IMM6: u32>(a: v2u64) -> v2u64 {1962pub fn lsx_vbitrevi_d<const IMM6: u32>(a: v2u64) -> v2u64 {
1963 static_assert_uimm_bits!(IMM6, 6);1963 static_assert_uimm_bits!(IMM6, 6);
1964 __lsx_vbitrevi_d(a, IMM6)1964 unsafe { __lsx_vbitrevi_d(a, IMM6) }
1965}1965}
19661966
1967#[inline]1967#[inline]
1968#[target_feature(enable = "lsx")]1968#[target_feature(enable = "lsx")]
1969#[unstable(feature = "stdarch_loongarch", issue = "117427")]1969#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1970pub unsafe fn lsx_vadd_b(a: v16i8, b: v16i8) -> v16i8 {1970pub fn lsx_vadd_b(a: v16i8, b: v16i8) -> v16i8 {
1971 __lsx_vadd_b(a, b)1971 unsafe { __lsx_vadd_b(a, b) }
1972}1972}
19731973
1974#[inline]1974#[inline]
1975#[target_feature(enable = "lsx")]1975#[target_feature(enable = "lsx")]
1976#[unstable(feature = "stdarch_loongarch", issue = "117427")]1976#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1977pub unsafe fn lsx_vadd_h(a: v8i16, b: v8i16) -> v8i16 {1977pub fn lsx_vadd_h(a: v8i16, b: v8i16) -> v8i16 {
1978 __lsx_vadd_h(a, b)1978 unsafe { __lsx_vadd_h(a, b) }
1979}1979}
19801980
1981#[inline]1981#[inline]
1982#[target_feature(enable = "lsx")]1982#[target_feature(enable = "lsx")]
1983#[unstable(feature = "stdarch_loongarch", issue = "117427")]1983#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1984pub unsafe fn lsx_vadd_w(a: v4i32, b: v4i32) -> v4i32 {1984pub fn lsx_vadd_w(a: v4i32, b: v4i32) -> v4i32 {
1985 __lsx_vadd_w(a, b)1985 unsafe { __lsx_vadd_w(a, b) }
1986}1986}
19871987
1988#[inline]1988#[inline]
1989#[target_feature(enable = "lsx")]1989#[target_feature(enable = "lsx")]
1990#[unstable(feature = "stdarch_loongarch", issue = "117427")]1990#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1991pub unsafe fn lsx_vadd_d(a: v2i64, b: v2i64) -> v2i64 {1991pub fn lsx_vadd_d(a: v2i64, b: v2i64) -> v2i64 {
1992 __lsx_vadd_d(a, b)1992 unsafe { __lsx_vadd_d(a, b) }
1993}1993}
19941994
1995#[inline]1995#[inline]
1996#[target_feature(enable = "lsx")]1996#[target_feature(enable = "lsx")]
1997#[rustc_legacy_const_generics(1)]1997#[rustc_legacy_const_generics(1)]
1998#[unstable(feature = "stdarch_loongarch", issue = "117427")]1998#[unstable(feature = "stdarch_loongarch", issue = "117427")]
1999pub unsafe fn lsx_vaddi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {1999pub fn lsx_vaddi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {
2000 static_assert_uimm_bits!(IMM5, 5);2000 static_assert_uimm_bits!(IMM5, 5);
2001 __lsx_vaddi_bu(a, IMM5)2001 unsafe { __lsx_vaddi_bu(a, IMM5) }
2002}2002}
20032003
2004#[inline]2004#[inline]
2005#[target_feature(enable = "lsx")]2005#[target_feature(enable = "lsx")]
2006#[rustc_legacy_const_generics(1)]2006#[rustc_legacy_const_generics(1)]
2007#[unstable(feature = "stdarch_loongarch", issue = "117427")]2007#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2008pub unsafe fn lsx_vaddi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {2008pub fn lsx_vaddi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {
2009 static_assert_uimm_bits!(IMM5, 5);2009 static_assert_uimm_bits!(IMM5, 5);
2010 __lsx_vaddi_hu(a, IMM5)2010 unsafe { __lsx_vaddi_hu(a, IMM5) }
2011}2011}
20122012
2013#[inline]2013#[inline]
2014#[target_feature(enable = "lsx")]2014#[target_feature(enable = "lsx")]
2015#[rustc_legacy_const_generics(1)]2015#[rustc_legacy_const_generics(1)]
2016#[unstable(feature = "stdarch_loongarch", issue = "117427")]2016#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2017pub unsafe fn lsx_vaddi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {2017pub fn lsx_vaddi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {
2018 static_assert_uimm_bits!(IMM5, 5);2018 static_assert_uimm_bits!(IMM5, 5);
2019 __lsx_vaddi_wu(a, IMM5)2019 unsafe { __lsx_vaddi_wu(a, IMM5) }
2020}2020}
20212021
2022#[inline]2022#[inline]
2023#[target_feature(enable = "lsx")]2023#[target_feature(enable = "lsx")]
2024#[rustc_legacy_const_generics(1)]2024#[rustc_legacy_const_generics(1)]
2025#[unstable(feature = "stdarch_loongarch", issue = "117427")]2025#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2026pub unsafe fn lsx_vaddi_du<const IMM5: u32>(a: v2i64) -> v2i64 {2026pub fn lsx_vaddi_du<const IMM5: u32>(a: v2i64) -> v2i64 {
2027 static_assert_uimm_bits!(IMM5, 5);2027 static_assert_uimm_bits!(IMM5, 5);
2028 __lsx_vaddi_du(a, IMM5)2028 unsafe { __lsx_vaddi_du(a, IMM5) }
2029}2029}
20302030
2031#[inline]2031#[inline]
2032#[target_feature(enable = "lsx")]2032#[target_feature(enable = "lsx")]
2033#[unstable(feature = "stdarch_loongarch", issue = "117427")]2033#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2034pub unsafe fn lsx_vsub_b(a: v16i8, b: v16i8) -> v16i8 {2034pub fn lsx_vsub_b(a: v16i8, b: v16i8) -> v16i8 {
2035 __lsx_vsub_b(a, b)2035 unsafe { __lsx_vsub_b(a, b) }
2036}2036}
20372037
2038#[inline]2038#[inline]
2039#[target_feature(enable = "lsx")]2039#[target_feature(enable = "lsx")]
2040#[unstable(feature = "stdarch_loongarch", issue = "117427")]2040#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2041pub unsafe fn lsx_vsub_h(a: v8i16, b: v8i16) -> v8i16 {2041pub fn lsx_vsub_h(a: v8i16, b: v8i16) -> v8i16 {
2042 __lsx_vsub_h(a, b)2042 unsafe { __lsx_vsub_h(a, b) }
2043}2043}
20442044
2045#[inline]2045#[inline]
2046#[target_feature(enable = "lsx")]2046#[target_feature(enable = "lsx")]
2047#[unstable(feature = "stdarch_loongarch", issue = "117427")]2047#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2048pub unsafe fn lsx_vsub_w(a: v4i32, b: v4i32) -> v4i32 {2048pub fn lsx_vsub_w(a: v4i32, b: v4i32) -> v4i32 {
2049 __lsx_vsub_w(a, b)2049 unsafe { __lsx_vsub_w(a, b) }
2050}2050}
20512051
2052#[inline]2052#[inline]
2053#[target_feature(enable = "lsx")]2053#[target_feature(enable = "lsx")]
2054#[unstable(feature = "stdarch_loongarch", issue = "117427")]2054#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2055pub unsafe fn lsx_vsub_d(a: v2i64, b: v2i64) -> v2i64 {2055pub fn lsx_vsub_d(a: v2i64, b: v2i64) -> v2i64 {
2056 __lsx_vsub_d(a, b)2056 unsafe { __lsx_vsub_d(a, b) }
2057}2057}
20582058
2059#[inline]2059#[inline]
2060#[target_feature(enable = "lsx")]2060#[target_feature(enable = "lsx")]
2061#[rustc_legacy_const_generics(1)]2061#[rustc_legacy_const_generics(1)]
2062#[unstable(feature = "stdarch_loongarch", issue = "117427")]2062#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2063pub unsafe fn lsx_vsubi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {2063pub fn lsx_vsubi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {
2064 static_assert_uimm_bits!(IMM5, 5);2064 static_assert_uimm_bits!(IMM5, 5);
2065 __lsx_vsubi_bu(a, IMM5)2065 unsafe { __lsx_vsubi_bu(a, IMM5) }
2066}2066}
20672067
2068#[inline]2068#[inline]
2069#[target_feature(enable = "lsx")]2069#[target_feature(enable = "lsx")]
2070#[rustc_legacy_const_generics(1)]2070#[rustc_legacy_const_generics(1)]
2071#[unstable(feature = "stdarch_loongarch", issue = "117427")]2071#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2072pub unsafe fn lsx_vsubi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {2072pub fn lsx_vsubi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {
2073 static_assert_uimm_bits!(IMM5, 5);2073 static_assert_uimm_bits!(IMM5, 5);
2074 __lsx_vsubi_hu(a, IMM5)2074 unsafe { __lsx_vsubi_hu(a, IMM5) }
2075}2075}
20762076
2077#[inline]2077#[inline]
2078#[target_feature(enable = "lsx")]2078#[target_feature(enable = "lsx")]
2079#[rustc_legacy_const_generics(1)]2079#[rustc_legacy_const_generics(1)]
2080#[unstable(feature = "stdarch_loongarch", issue = "117427")]2080#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2081pub unsafe fn lsx_vsubi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {2081pub fn lsx_vsubi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {
2082 static_assert_uimm_bits!(IMM5, 5);2082 static_assert_uimm_bits!(IMM5, 5);
2083 __lsx_vsubi_wu(a, IMM5)2083 unsafe { __lsx_vsubi_wu(a, IMM5) }
2084}2084}
20852085
2086#[inline]2086#[inline]
2087#[target_feature(enable = "lsx")]2087#[target_feature(enable = "lsx")]
2088#[rustc_legacy_const_generics(1)]2088#[rustc_legacy_const_generics(1)]
2089#[unstable(feature = "stdarch_loongarch", issue = "117427")]2089#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2090pub unsafe fn lsx_vsubi_du<const IMM5: u32>(a: v2i64) -> v2i64 {2090pub fn lsx_vsubi_du<const IMM5: u32>(a: v2i64) -> v2i64 {
2091 static_assert_uimm_bits!(IMM5, 5);2091 static_assert_uimm_bits!(IMM5, 5);
2092 __lsx_vsubi_du(a, IMM5)2092 unsafe { __lsx_vsubi_du(a, IMM5) }
2093}2093}
20942094
2095#[inline]2095#[inline]
2096#[target_feature(enable = "lsx")]2096#[target_feature(enable = "lsx")]
2097#[unstable(feature = "stdarch_loongarch", issue = "117427")]2097#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2098pub unsafe fn lsx_vmax_b(a: v16i8, b: v16i8) -> v16i8 {2098pub fn lsx_vmax_b(a: v16i8, b: v16i8) -> v16i8 {
2099 __lsx_vmax_b(a, b)2099 unsafe { __lsx_vmax_b(a, b) }
2100}2100}
21012101
2102#[inline]2102#[inline]
2103#[target_feature(enable = "lsx")]2103#[target_feature(enable = "lsx")]
2104#[unstable(feature = "stdarch_loongarch", issue = "117427")]2104#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2105pub unsafe fn lsx_vmax_h(a: v8i16, b: v8i16) -> v8i16 {2105pub fn lsx_vmax_h(a: v8i16, b: v8i16) -> v8i16 {
2106 __lsx_vmax_h(a, b)2106 unsafe { __lsx_vmax_h(a, b) }
2107}2107}
21082108
2109#[inline]2109#[inline]
2110#[target_feature(enable = "lsx")]2110#[target_feature(enable = "lsx")]
2111#[unstable(feature = "stdarch_loongarch", issue = "117427")]2111#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2112pub unsafe fn lsx_vmax_w(a: v4i32, b: v4i32) -> v4i32 {2112pub fn lsx_vmax_w(a: v4i32, b: v4i32) -> v4i32 {
2113 __lsx_vmax_w(a, b)2113 unsafe { __lsx_vmax_w(a, b) }
2114}2114}
21152115
2116#[inline]2116#[inline]
2117#[target_feature(enable = "lsx")]2117#[target_feature(enable = "lsx")]
2118#[unstable(feature = "stdarch_loongarch", issue = "117427")]2118#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2119pub unsafe fn lsx_vmax_d(a: v2i64, b: v2i64) -> v2i64 {2119pub fn lsx_vmax_d(a: v2i64, b: v2i64) -> v2i64 {
2120 __lsx_vmax_d(a, b)2120 unsafe { __lsx_vmax_d(a, b) }
2121}2121}
21222122
2123#[inline]2123#[inline]
2124#[target_feature(enable = "lsx")]2124#[target_feature(enable = "lsx")]
2125#[rustc_legacy_const_generics(1)]2125#[rustc_legacy_const_generics(1)]
2126#[unstable(feature = "stdarch_loongarch", issue = "117427")]2126#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2127pub unsafe fn lsx_vmaxi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {2127pub fn lsx_vmaxi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
2128 static_assert_simm_bits!(IMM_S5, 5);2128 static_assert_simm_bits!(IMM_S5, 5);
2129 __lsx_vmaxi_b(a, IMM_S5)2129 unsafe { __lsx_vmaxi_b(a, IMM_S5) }
2130}2130}
21312131
2132#[inline]2132#[inline]
2133#[target_feature(enable = "lsx")]2133#[target_feature(enable = "lsx")]
2134#[rustc_legacy_const_generics(1)]2134#[rustc_legacy_const_generics(1)]
2135#[unstable(feature = "stdarch_loongarch", issue = "117427")]2135#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2136pub unsafe fn lsx_vmaxi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {2136pub fn lsx_vmaxi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
2137 static_assert_simm_bits!(IMM_S5, 5);2137 static_assert_simm_bits!(IMM_S5, 5);
2138 __lsx_vmaxi_h(a, IMM_S5)2138 unsafe { __lsx_vmaxi_h(a, IMM_S5) }
2139}2139}
21402140
2141#[inline]2141#[inline]
2142#[target_feature(enable = "lsx")]2142#[target_feature(enable = "lsx")]
2143#[rustc_legacy_const_generics(1)]2143#[rustc_legacy_const_generics(1)]
2144#[unstable(feature = "stdarch_loongarch", issue = "117427")]2144#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2145pub unsafe fn lsx_vmaxi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {2145pub fn lsx_vmaxi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
2146 static_assert_simm_bits!(IMM_S5, 5);2146 static_assert_simm_bits!(IMM_S5, 5);
2147 __lsx_vmaxi_w(a, IMM_S5)2147 unsafe { __lsx_vmaxi_w(a, IMM_S5) }
2148}2148}
21492149
2150#[inline]2150#[inline]
2151#[target_feature(enable = "lsx")]2151#[target_feature(enable = "lsx")]
2152#[rustc_legacy_const_generics(1)]2152#[rustc_legacy_const_generics(1)]
2153#[unstable(feature = "stdarch_loongarch", issue = "117427")]2153#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2154pub unsafe fn lsx_vmaxi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {2154pub fn lsx_vmaxi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
2155 static_assert_simm_bits!(IMM_S5, 5);2155 static_assert_simm_bits!(IMM_S5, 5);
2156 __lsx_vmaxi_d(a, IMM_S5)2156 unsafe { __lsx_vmaxi_d(a, IMM_S5) }
2157}2157}
21582158
2159#[inline]2159#[inline]
2160#[target_feature(enable = "lsx")]2160#[target_feature(enable = "lsx")]
2161#[unstable(feature = "stdarch_loongarch", issue = "117427")]2161#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2162pub unsafe fn lsx_vmax_bu(a: v16u8, b: v16u8) -> v16u8 {2162pub fn lsx_vmax_bu(a: v16u8, b: v16u8) -> v16u8 {
2163 __lsx_vmax_bu(a, b)2163 unsafe { __lsx_vmax_bu(a, b) }
2164}2164}
21652165
2166#[inline]2166#[inline]
2167#[target_feature(enable = "lsx")]2167#[target_feature(enable = "lsx")]
2168#[unstable(feature = "stdarch_loongarch", issue = "117427")]2168#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2169pub unsafe fn lsx_vmax_hu(a: v8u16, b: v8u16) -> v8u16 {2169pub fn lsx_vmax_hu(a: v8u16, b: v8u16) -> v8u16 {
2170 __lsx_vmax_hu(a, b)2170 unsafe { __lsx_vmax_hu(a, b) }
2171}2171}
21722172
2173#[inline]2173#[inline]
2174#[target_feature(enable = "lsx")]2174#[target_feature(enable = "lsx")]
2175#[unstable(feature = "stdarch_loongarch", issue = "117427")]2175#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2176pub unsafe fn lsx_vmax_wu(a: v4u32, b: v4u32) -> v4u32 {2176pub fn lsx_vmax_wu(a: v4u32, b: v4u32) -> v4u32 {
2177 __lsx_vmax_wu(a, b)2177 unsafe { __lsx_vmax_wu(a, b) }
2178}2178}
21792179
2180#[inline]2180#[inline]
2181#[target_feature(enable = "lsx")]2181#[target_feature(enable = "lsx")]
2182#[unstable(feature = "stdarch_loongarch", issue = "117427")]2182#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2183pub unsafe fn lsx_vmax_du(a: v2u64, b: v2u64) -> v2u64 {2183pub fn lsx_vmax_du(a: v2u64, b: v2u64) -> v2u64 {
2184 __lsx_vmax_du(a, b)2184 unsafe { __lsx_vmax_du(a, b) }
2185}2185}
21862186
2187#[inline]2187#[inline]
2188#[target_feature(enable = "lsx")]2188#[target_feature(enable = "lsx")]
2189#[rustc_legacy_const_generics(1)]2189#[rustc_legacy_const_generics(1)]
2190#[unstable(feature = "stdarch_loongarch", issue = "117427")]2190#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2191pub unsafe fn lsx_vmaxi_bu<const IMM5: u32>(a: v16u8) -> v16u8 {2191pub fn lsx_vmaxi_bu<const IMM5: u32>(a: v16u8) -> v16u8 {
2192 static_assert_uimm_bits!(IMM5, 5);2192 static_assert_uimm_bits!(IMM5, 5);
2193 __lsx_vmaxi_bu(a, IMM5)2193 unsafe { __lsx_vmaxi_bu(a, IMM5) }
2194}2194}
21952195
2196#[inline]2196#[inline]
2197#[target_feature(enable = "lsx")]2197#[target_feature(enable = "lsx")]
2198#[rustc_legacy_const_generics(1)]2198#[rustc_legacy_const_generics(1)]
2199#[unstable(feature = "stdarch_loongarch", issue = "117427")]2199#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2200pub unsafe fn lsx_vmaxi_hu<const IMM5: u32>(a: v8u16) -> v8u16 {2200pub fn lsx_vmaxi_hu<const IMM5: u32>(a: v8u16) -> v8u16 {
2201 static_assert_uimm_bits!(IMM5, 5);2201 static_assert_uimm_bits!(IMM5, 5);
2202 __lsx_vmaxi_hu(a, IMM5)2202 unsafe { __lsx_vmaxi_hu(a, IMM5) }
2203}2203}
22042204
2205#[inline]2205#[inline]
2206#[target_feature(enable = "lsx")]2206#[target_feature(enable = "lsx")]
2207#[rustc_legacy_const_generics(1)]2207#[rustc_legacy_const_generics(1)]
2208#[unstable(feature = "stdarch_loongarch", issue = "117427")]2208#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2209pub unsafe fn lsx_vmaxi_wu<const IMM5: u32>(a: v4u32) -> v4u32 {2209pub fn lsx_vmaxi_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
2210 static_assert_uimm_bits!(IMM5, 5);2210 static_assert_uimm_bits!(IMM5, 5);
2211 __lsx_vmaxi_wu(a, IMM5)2211 unsafe { __lsx_vmaxi_wu(a, IMM5) }
2212}2212}
22132213
2214#[inline]2214#[inline]
2215#[target_feature(enable = "lsx")]2215#[target_feature(enable = "lsx")]
2216#[rustc_legacy_const_generics(1)]2216#[rustc_legacy_const_generics(1)]
2217#[unstable(feature = "stdarch_loongarch", issue = "117427")]2217#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2218pub unsafe fn lsx_vmaxi_du<const IMM5: u32>(a: v2u64) -> v2u64 {2218pub fn lsx_vmaxi_du<const IMM5: u32>(a: v2u64) -> v2u64 {
2219 static_assert_uimm_bits!(IMM5, 5);2219 static_assert_uimm_bits!(IMM5, 5);
2220 __lsx_vmaxi_du(a, IMM5)2220 unsafe { __lsx_vmaxi_du(a, IMM5) }
2221}2221}
22222222
2223#[inline]2223#[inline]
2224#[target_feature(enable = "lsx")]2224#[target_feature(enable = "lsx")]
2225#[unstable(feature = "stdarch_loongarch", issue = "117427")]2225#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2226pub unsafe fn lsx_vmin_b(a: v16i8, b: v16i8) -> v16i8 {2226pub fn lsx_vmin_b(a: v16i8, b: v16i8) -> v16i8 {
2227 __lsx_vmin_b(a, b)2227 unsafe { __lsx_vmin_b(a, b) }
2228}2228}
22292229
2230#[inline]2230#[inline]
2231#[target_feature(enable = "lsx")]2231#[target_feature(enable = "lsx")]
2232#[unstable(feature = "stdarch_loongarch", issue = "117427")]2232#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2233pub unsafe fn lsx_vmin_h(a: v8i16, b: v8i16) -> v8i16 {2233pub fn lsx_vmin_h(a: v8i16, b: v8i16) -> v8i16 {
2234 __lsx_vmin_h(a, b)2234 unsafe { __lsx_vmin_h(a, b) }
2235}2235}
22362236
2237#[inline]2237#[inline]
2238#[target_feature(enable = "lsx")]2238#[target_feature(enable = "lsx")]
2239#[unstable(feature = "stdarch_loongarch", issue = "117427")]2239#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2240pub unsafe fn lsx_vmin_w(a: v4i32, b: v4i32) -> v4i32 {2240pub fn lsx_vmin_w(a: v4i32, b: v4i32) -> v4i32 {
2241 __lsx_vmin_w(a, b)2241 unsafe { __lsx_vmin_w(a, b) }
2242}2242}
22432243
2244#[inline]2244#[inline]
2245#[target_feature(enable = "lsx")]2245#[target_feature(enable = "lsx")]
2246#[unstable(feature = "stdarch_loongarch", issue = "117427")]2246#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2247pub unsafe fn lsx_vmin_d(a: v2i64, b: v2i64) -> v2i64 {2247pub fn lsx_vmin_d(a: v2i64, b: v2i64) -> v2i64 {
2248 __lsx_vmin_d(a, b)2248 unsafe { __lsx_vmin_d(a, b) }
2249}2249}
22502250
2251#[inline]2251#[inline]
2252#[target_feature(enable = "lsx")]2252#[target_feature(enable = "lsx")]
2253#[rustc_legacy_const_generics(1)]2253#[rustc_legacy_const_generics(1)]
2254#[unstable(feature = "stdarch_loongarch", issue = "117427")]2254#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2255pub unsafe fn lsx_vmini_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {2255pub fn lsx_vmini_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
2256 static_assert_simm_bits!(IMM_S5, 5);2256 static_assert_simm_bits!(IMM_S5, 5);
2257 __lsx_vmini_b(a, IMM_S5)2257 unsafe { __lsx_vmini_b(a, IMM_S5) }
2258}2258}
22592259
2260#[inline]2260#[inline]
2261#[target_feature(enable = "lsx")]2261#[target_feature(enable = "lsx")]
2262#[rustc_legacy_const_generics(1)]2262#[rustc_legacy_const_generics(1)]
2263#[unstable(feature = "stdarch_loongarch", issue = "117427")]2263#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2264pub unsafe fn lsx_vmini_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {2264pub fn lsx_vmini_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
2265 static_assert_simm_bits!(IMM_S5, 5);2265 static_assert_simm_bits!(IMM_S5, 5);
2266 __lsx_vmini_h(a, IMM_S5)2266 unsafe { __lsx_vmini_h(a, IMM_S5) }
2267}2267}
22682268
2269#[inline]2269#[inline]
2270#[target_feature(enable = "lsx")]2270#[target_feature(enable = "lsx")]
2271#[rustc_legacy_const_generics(1)]2271#[rustc_legacy_const_generics(1)]
2272#[unstable(feature = "stdarch_loongarch", issue = "117427")]2272#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2273pub unsafe fn lsx_vmini_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {2273pub fn lsx_vmini_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
2274 static_assert_simm_bits!(IMM_S5, 5);2274 static_assert_simm_bits!(IMM_S5, 5);
2275 __lsx_vmini_w(a, IMM_S5)2275 unsafe { __lsx_vmini_w(a, IMM_S5) }
2276}2276}
22772277
2278#[inline]2278#[inline]
2279#[target_feature(enable = "lsx")]2279#[target_feature(enable = "lsx")]
2280#[rustc_legacy_const_generics(1)]2280#[rustc_legacy_const_generics(1)]
2281#[unstable(feature = "stdarch_loongarch", issue = "117427")]2281#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2282pub unsafe fn lsx_vmini_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {2282pub fn lsx_vmini_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
2283 static_assert_simm_bits!(IMM_S5, 5);2283 static_assert_simm_bits!(IMM_S5, 5);
2284 __lsx_vmini_d(a, IMM_S5)2284 unsafe { __lsx_vmini_d(a, IMM_S5) }
2285}2285}
22862286
2287#[inline]2287#[inline]
2288#[target_feature(enable = "lsx")]2288#[target_feature(enable = "lsx")]
2289#[unstable(feature = "stdarch_loongarch", issue = "117427")]2289#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2290pub unsafe fn lsx_vmin_bu(a: v16u8, b: v16u8) -> v16u8 {2290pub fn lsx_vmin_bu(a: v16u8, b: v16u8) -> v16u8 {
2291 __lsx_vmin_bu(a, b)2291 unsafe { __lsx_vmin_bu(a, b) }
2292}2292}
22932293
2294#[inline]2294#[inline]
2295#[target_feature(enable = "lsx")]2295#[target_feature(enable = "lsx")]
2296#[unstable(feature = "stdarch_loongarch", issue = "117427")]2296#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2297pub unsafe fn lsx_vmin_hu(a: v8u16, b: v8u16) -> v8u16 {2297pub fn lsx_vmin_hu(a: v8u16, b: v8u16) -> v8u16 {
2298 __lsx_vmin_hu(a, b)2298 unsafe { __lsx_vmin_hu(a, b) }
2299}2299}
23002300
2301#[inline]2301#[inline]
2302#[target_feature(enable = "lsx")]2302#[target_feature(enable = "lsx")]
2303#[unstable(feature = "stdarch_loongarch", issue = "117427")]2303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2304pub unsafe fn lsx_vmin_wu(a: v4u32, b: v4u32) -> v4u32 {2304pub fn lsx_vmin_wu(a: v4u32, b: v4u32) -> v4u32 {
2305 __lsx_vmin_wu(a, b)2305 unsafe { __lsx_vmin_wu(a, b) }
2306}2306}
23072307
2308#[inline]2308#[inline]
2309#[target_feature(enable = "lsx")]2309#[target_feature(enable = "lsx")]
2310#[unstable(feature = "stdarch_loongarch", issue = "117427")]2310#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2311pub unsafe fn lsx_vmin_du(a: v2u64, b: v2u64) -> v2u64 {2311pub fn lsx_vmin_du(a: v2u64, b: v2u64) -> v2u64 {
2312 __lsx_vmin_du(a, b)2312 unsafe { __lsx_vmin_du(a, b) }
2313}2313}
23142314
2315#[inline]2315#[inline]
2316#[target_feature(enable = "lsx")]2316#[target_feature(enable = "lsx")]
2317#[rustc_legacy_const_generics(1)]2317#[rustc_legacy_const_generics(1)]
2318#[unstable(feature = "stdarch_loongarch", issue = "117427")]2318#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2319pub unsafe fn lsx_vmini_bu<const IMM5: u32>(a: v16u8) -> v16u8 {2319pub fn lsx_vmini_bu<const IMM5: u32>(a: v16u8) -> v16u8 {
2320 static_assert_uimm_bits!(IMM5, 5);2320 static_assert_uimm_bits!(IMM5, 5);
2321 __lsx_vmini_bu(a, IMM5)2321 unsafe { __lsx_vmini_bu(a, IMM5) }
2322}2322}
23232323
2324#[inline]2324#[inline]
2325#[target_feature(enable = "lsx")]2325#[target_feature(enable = "lsx")]
2326#[rustc_legacy_const_generics(1)]2326#[rustc_legacy_const_generics(1)]
2327#[unstable(feature = "stdarch_loongarch", issue = "117427")]2327#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2328pub unsafe fn lsx_vmini_hu<const IMM5: u32>(a: v8u16) -> v8u16 {2328pub fn lsx_vmini_hu<const IMM5: u32>(a: v8u16) -> v8u16 {
2329 static_assert_uimm_bits!(IMM5, 5);2329 static_assert_uimm_bits!(IMM5, 5);
2330 __lsx_vmini_hu(a, IMM5)2330 unsafe { __lsx_vmini_hu(a, IMM5) }
2331}2331}
23322332
2333#[inline]2333#[inline]
2334#[target_feature(enable = "lsx")]2334#[target_feature(enable = "lsx")]
2335#[rustc_legacy_const_generics(1)]2335#[rustc_legacy_const_generics(1)]
2336#[unstable(feature = "stdarch_loongarch", issue = "117427")]2336#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2337pub unsafe fn lsx_vmini_wu<const IMM5: u32>(a: v4u32) -> v4u32 {2337pub fn lsx_vmini_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
2338 static_assert_uimm_bits!(IMM5, 5);2338 static_assert_uimm_bits!(IMM5, 5);
2339 __lsx_vmini_wu(a, IMM5)2339 unsafe { __lsx_vmini_wu(a, IMM5) }
2340}2340}
23412341
2342#[inline]2342#[inline]
2343#[target_feature(enable = "lsx")]2343#[target_feature(enable = "lsx")]
2344#[rustc_legacy_const_generics(1)]2344#[rustc_legacy_const_generics(1)]
2345#[unstable(feature = "stdarch_loongarch", issue = "117427")]2345#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2346pub unsafe fn lsx_vmini_du<const IMM5: u32>(a: v2u64) -> v2u64 {2346pub fn lsx_vmini_du<const IMM5: u32>(a: v2u64) -> v2u64 {
2347 static_assert_uimm_bits!(IMM5, 5);2347 static_assert_uimm_bits!(IMM5, 5);
2348 __lsx_vmini_du(a, IMM5)2348 unsafe { __lsx_vmini_du(a, IMM5) }
2349}2349}
23502350
2351#[inline]2351#[inline]
2352#[target_feature(enable = "lsx")]2352#[target_feature(enable = "lsx")]
2353#[unstable(feature = "stdarch_loongarch", issue = "117427")]2353#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2354pub unsafe fn lsx_vseq_b(a: v16i8, b: v16i8) -> v16i8 {2354pub fn lsx_vseq_b(a: v16i8, b: v16i8) -> v16i8 {
2355 __lsx_vseq_b(a, b)2355 unsafe { __lsx_vseq_b(a, b) }
2356}2356}
23572357
2358#[inline]2358#[inline]
2359#[target_feature(enable = "lsx")]2359#[target_feature(enable = "lsx")]
2360#[unstable(feature = "stdarch_loongarch", issue = "117427")]2360#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2361pub unsafe fn lsx_vseq_h(a: v8i16, b: v8i16) -> v8i16 {2361pub fn lsx_vseq_h(a: v8i16, b: v8i16) -> v8i16 {
2362 __lsx_vseq_h(a, b)2362 unsafe { __lsx_vseq_h(a, b) }
2363}2363}
23642364
2365#[inline]2365#[inline]
2366#[target_feature(enable = "lsx")]2366#[target_feature(enable = "lsx")]
2367#[unstable(feature = "stdarch_loongarch", issue = "117427")]2367#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2368pub unsafe fn lsx_vseq_w(a: v4i32, b: v4i32) -> v4i32 {2368pub fn lsx_vseq_w(a: v4i32, b: v4i32) -> v4i32 {
2369 __lsx_vseq_w(a, b)2369 unsafe { __lsx_vseq_w(a, b) }
2370}2370}
23712371
2372#[inline]2372#[inline]
2373#[target_feature(enable = "lsx")]2373#[target_feature(enable = "lsx")]
2374#[unstable(feature = "stdarch_loongarch", issue = "117427")]2374#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2375pub unsafe fn lsx_vseq_d(a: v2i64, b: v2i64) -> v2i64 {2375pub fn lsx_vseq_d(a: v2i64, b: v2i64) -> v2i64 {
2376 __lsx_vseq_d(a, b)2376 unsafe { __lsx_vseq_d(a, b) }
2377}2377}
23782378
2379#[inline]2379#[inline]
2380#[target_feature(enable = "lsx")]2380#[target_feature(enable = "lsx")]
2381#[rustc_legacy_const_generics(1)]2381#[rustc_legacy_const_generics(1)]
2382#[unstable(feature = "stdarch_loongarch", issue = "117427")]2382#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2383pub unsafe fn lsx_vseqi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {2383pub fn lsx_vseqi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
2384 static_assert_simm_bits!(IMM_S5, 5);2384 static_assert_simm_bits!(IMM_S5, 5);
2385 __lsx_vseqi_b(a, IMM_S5)2385 unsafe { __lsx_vseqi_b(a, IMM_S5) }
2386}2386}
23872387
2388#[inline]2388#[inline]
2389#[target_feature(enable = "lsx")]2389#[target_feature(enable = "lsx")]
2390#[rustc_legacy_const_generics(1)]2390#[rustc_legacy_const_generics(1)]
2391#[unstable(feature = "stdarch_loongarch", issue = "117427")]2391#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2392pub unsafe fn lsx_vseqi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {2392pub fn lsx_vseqi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
2393 static_assert_simm_bits!(IMM_S5, 5);2393 static_assert_simm_bits!(IMM_S5, 5);
2394 __lsx_vseqi_h(a, IMM_S5)2394 unsafe { __lsx_vseqi_h(a, IMM_S5) }
2395}2395}
23962396
2397#[inline]2397#[inline]
2398#[target_feature(enable = "lsx")]2398#[target_feature(enable = "lsx")]
2399#[rustc_legacy_const_generics(1)]2399#[rustc_legacy_const_generics(1)]
2400#[unstable(feature = "stdarch_loongarch", issue = "117427")]2400#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2401pub unsafe fn lsx_vseqi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {2401pub fn lsx_vseqi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
2402 static_assert_simm_bits!(IMM_S5, 5);2402 static_assert_simm_bits!(IMM_S5, 5);
2403 __lsx_vseqi_w(a, IMM_S5)2403 unsafe { __lsx_vseqi_w(a, IMM_S5) }
2404}2404}
24052405
2406#[inline]2406#[inline]
2407#[target_feature(enable = "lsx")]2407#[target_feature(enable = "lsx")]
2408#[rustc_legacy_const_generics(1)]2408#[rustc_legacy_const_generics(1)]
2409#[unstable(feature = "stdarch_loongarch", issue = "117427")]2409#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2410pub unsafe fn lsx_vseqi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {2410pub fn lsx_vseqi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
2411 static_assert_simm_bits!(IMM_S5, 5);2411 static_assert_simm_bits!(IMM_S5, 5);
2412 __lsx_vseqi_d(a, IMM_S5)2412 unsafe { __lsx_vseqi_d(a, IMM_S5) }
2413}2413}
24142414
2415#[inline]2415#[inline]
2416#[target_feature(enable = "lsx")]2416#[target_feature(enable = "lsx")]
2417#[rustc_legacy_const_generics(1)]2417#[rustc_legacy_const_generics(1)]
2418#[unstable(feature = "stdarch_loongarch", issue = "117427")]2418#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2419pub unsafe fn lsx_vslti_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {2419pub fn lsx_vslti_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
2420 static_assert_simm_bits!(IMM_S5, 5);2420 static_assert_simm_bits!(IMM_S5, 5);
2421 __lsx_vslti_b(a, IMM_S5)2421 unsafe { __lsx_vslti_b(a, IMM_S5) }
2422}2422}
24232423
2424#[inline]2424#[inline]
2425#[target_feature(enable = "lsx")]2425#[target_feature(enable = "lsx")]
2426#[unstable(feature = "stdarch_loongarch", issue = "117427")]2426#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2427pub unsafe fn lsx_vslt_b(a: v16i8, b: v16i8) -> v16i8 {2427pub fn lsx_vslt_b(a: v16i8, b: v16i8) -> v16i8 {
2428 __lsx_vslt_b(a, b)2428 unsafe { __lsx_vslt_b(a, b) }
2429}2429}
24302430
2431#[inline]2431#[inline]
2432#[target_feature(enable = "lsx")]2432#[target_feature(enable = "lsx")]
2433#[unstable(feature = "stdarch_loongarch", issue = "117427")]2433#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2434pub unsafe fn lsx_vslt_h(a: v8i16, b: v8i16) -> v8i16 {2434pub fn lsx_vslt_h(a: v8i16, b: v8i16) -> v8i16 {
2435 __lsx_vslt_h(a, b)2435 unsafe { __lsx_vslt_h(a, b) }
2436}2436}
24372437
2438#[inline]2438#[inline]
2439#[target_feature(enable = "lsx")]2439#[target_feature(enable = "lsx")]
2440#[unstable(feature = "stdarch_loongarch", issue = "117427")]2440#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2441pub unsafe fn lsx_vslt_w(a: v4i32, b: v4i32) -> v4i32 {2441pub fn lsx_vslt_w(a: v4i32, b: v4i32) -> v4i32 {
2442 __lsx_vslt_w(a, b)2442 unsafe { __lsx_vslt_w(a, b) }
2443}2443}
24442444
2445#[inline]2445#[inline]
2446#[target_feature(enable = "lsx")]2446#[target_feature(enable = "lsx")]
2447#[unstable(feature = "stdarch_loongarch", issue = "117427")]2447#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2448pub unsafe fn lsx_vslt_d(a: v2i64, b: v2i64) -> v2i64 {2448pub fn lsx_vslt_d(a: v2i64, b: v2i64) -> v2i64 {
2449 __lsx_vslt_d(a, b)2449 unsafe { __lsx_vslt_d(a, b) }
2450}2450}
24512451
2452#[inline]2452#[inline]
2453#[target_feature(enable = "lsx")]2453#[target_feature(enable = "lsx")]
2454#[rustc_legacy_const_generics(1)]2454#[rustc_legacy_const_generics(1)]
2455#[unstable(feature = "stdarch_loongarch", issue = "117427")]2455#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2456pub unsafe fn lsx_vslti_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {2456pub fn lsx_vslti_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
2457 static_assert_simm_bits!(IMM_S5, 5);2457 static_assert_simm_bits!(IMM_S5, 5);
2458 __lsx_vslti_h(a, IMM_S5)2458 unsafe { __lsx_vslti_h(a, IMM_S5) }
2459}2459}
24602460
2461#[inline]2461#[inline]
2462#[target_feature(enable = "lsx")]2462#[target_feature(enable = "lsx")]
2463#[rustc_legacy_const_generics(1)]2463#[rustc_legacy_const_generics(1)]
2464#[unstable(feature = "stdarch_loongarch", issue = "117427")]2464#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2465pub unsafe fn lsx_vslti_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {2465pub fn lsx_vslti_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
2466 static_assert_simm_bits!(IMM_S5, 5);2466 static_assert_simm_bits!(IMM_S5, 5);
2467 __lsx_vslti_w(a, IMM_S5)2467 unsafe { __lsx_vslti_w(a, IMM_S5) }
2468}2468}
24692469
2470#[inline]2470#[inline]
2471#[target_feature(enable = "lsx")]2471#[target_feature(enable = "lsx")]
2472#[rustc_legacy_const_generics(1)]2472#[rustc_legacy_const_generics(1)]
2473#[unstable(feature = "stdarch_loongarch", issue = "117427")]2473#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2474pub unsafe fn lsx_vslti_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {2474pub fn lsx_vslti_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
2475 static_assert_simm_bits!(IMM_S5, 5);2475 static_assert_simm_bits!(IMM_S5, 5);
2476 __lsx_vslti_d(a, IMM_S5)2476 unsafe { __lsx_vslti_d(a, IMM_S5) }
2477}2477}
24782478
2479#[inline]2479#[inline]
2480#[target_feature(enable = "lsx")]2480#[target_feature(enable = "lsx")]
2481#[unstable(feature = "stdarch_loongarch", issue = "117427")]2481#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2482pub unsafe fn lsx_vslt_bu(a: v16u8, b: v16u8) -> v16i8 {2482pub fn lsx_vslt_bu(a: v16u8, b: v16u8) -> v16i8 {
2483 __lsx_vslt_bu(a, b)2483 unsafe { __lsx_vslt_bu(a, b) }
2484}2484}
24852485
2486#[inline]2486#[inline]
2487#[target_feature(enable = "lsx")]2487#[target_feature(enable = "lsx")]
2488#[unstable(feature = "stdarch_loongarch", issue = "117427")]2488#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2489pub unsafe fn lsx_vslt_hu(a: v8u16, b: v8u16) -> v8i16 {2489pub fn lsx_vslt_hu(a: v8u16, b: v8u16) -> v8i16 {
2490 __lsx_vslt_hu(a, b)2490 unsafe { __lsx_vslt_hu(a, b) }
2491}2491}
24922492
2493#[inline]2493#[inline]
2494#[target_feature(enable = "lsx")]2494#[target_feature(enable = "lsx")]
2495#[unstable(feature = "stdarch_loongarch", issue = "117427")]2495#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2496pub unsafe fn lsx_vslt_wu(a: v4u32, b: v4u32) -> v4i32 {2496pub fn lsx_vslt_wu(a: v4u32, b: v4u32) -> v4i32 {
2497 __lsx_vslt_wu(a, b)2497 unsafe { __lsx_vslt_wu(a, b) }
2498}2498}
24992499
2500#[inline]2500#[inline]
2501#[target_feature(enable = "lsx")]2501#[target_feature(enable = "lsx")]
2502#[unstable(feature = "stdarch_loongarch", issue = "117427")]2502#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2503pub unsafe fn lsx_vslt_du(a: v2u64, b: v2u64) -> v2i64 {2503pub fn lsx_vslt_du(a: v2u64, b: v2u64) -> v2i64 {
2504 __lsx_vslt_du(a, b)2504 unsafe { __lsx_vslt_du(a, b) }
2505}2505}
25062506
2507#[inline]2507#[inline]
2508#[target_feature(enable = "lsx")]2508#[target_feature(enable = "lsx")]
2509#[rustc_legacy_const_generics(1)]2509#[rustc_legacy_const_generics(1)]
2510#[unstable(feature = "stdarch_loongarch", issue = "117427")]2510#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2511pub unsafe fn lsx_vslti_bu<const IMM5: u32>(a: v16u8) -> v16i8 {2511pub fn lsx_vslti_bu<const IMM5: u32>(a: v16u8) -> v16i8 {
2512 static_assert_uimm_bits!(IMM5, 5);2512 static_assert_uimm_bits!(IMM5, 5);
2513 __lsx_vslti_bu(a, IMM5)2513 unsafe { __lsx_vslti_bu(a, IMM5) }
2514}2514}
25152515
2516#[inline]2516#[inline]
2517#[target_feature(enable = "lsx")]2517#[target_feature(enable = "lsx")]
2518#[rustc_legacy_const_generics(1)]2518#[rustc_legacy_const_generics(1)]
2519#[unstable(feature = "stdarch_loongarch", issue = "117427")]2519#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2520pub unsafe fn lsx_vslti_hu<const IMM5: u32>(a: v8u16) -> v8i16 {2520pub fn lsx_vslti_hu<const IMM5: u32>(a: v8u16) -> v8i16 {
2521 static_assert_uimm_bits!(IMM5, 5);2521 static_assert_uimm_bits!(IMM5, 5);
2522 __lsx_vslti_hu(a, IMM5)2522 unsafe { __lsx_vslti_hu(a, IMM5) }
2523}2523}
25242524
2525#[inline]2525#[inline]
2526#[target_feature(enable = "lsx")]2526#[target_feature(enable = "lsx")]
2527#[rustc_legacy_const_generics(1)]2527#[rustc_legacy_const_generics(1)]
2528#[unstable(feature = "stdarch_loongarch", issue = "117427")]2528#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2529pub unsafe fn lsx_vslti_wu<const IMM5: u32>(a: v4u32) -> v4i32 {2529pub fn lsx_vslti_wu<const IMM5: u32>(a: v4u32) -> v4i32 {
2530 static_assert_uimm_bits!(IMM5, 5);2530 static_assert_uimm_bits!(IMM5, 5);
2531 __lsx_vslti_wu(a, IMM5)2531 unsafe { __lsx_vslti_wu(a, IMM5) }
2532}2532}
25332533
2534#[inline]2534#[inline]
2535#[target_feature(enable = "lsx")]2535#[target_feature(enable = "lsx")]
2536#[rustc_legacy_const_generics(1)]2536#[rustc_legacy_const_generics(1)]
2537#[unstable(feature = "stdarch_loongarch", issue = "117427")]2537#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2538pub unsafe fn lsx_vslti_du<const IMM5: u32>(a: v2u64) -> v2i64 {2538pub fn lsx_vslti_du<const IMM5: u32>(a: v2u64) -> v2i64 {
2539 static_assert_uimm_bits!(IMM5, 5);2539 static_assert_uimm_bits!(IMM5, 5);
2540 __lsx_vslti_du(a, IMM5)2540 unsafe { __lsx_vslti_du(a, IMM5) }
2541}2541}
25422542
2543#[inline]2543#[inline]
2544#[target_feature(enable = "lsx")]2544#[target_feature(enable = "lsx")]
2545#[unstable(feature = "stdarch_loongarch", issue = "117427")]2545#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2546pub unsafe fn lsx_vsle_b(a: v16i8, b: v16i8) -> v16i8 {2546pub fn lsx_vsle_b(a: v16i8, b: v16i8) -> v16i8 {
2547 __lsx_vsle_b(a, b)2547 unsafe { __lsx_vsle_b(a, b) }
2548}2548}
25492549
2550#[inline]2550#[inline]
2551#[target_feature(enable = "lsx")]2551#[target_feature(enable = "lsx")]
2552#[unstable(feature = "stdarch_loongarch", issue = "117427")]2552#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2553pub unsafe fn lsx_vsle_h(a: v8i16, b: v8i16) -> v8i16 {2553pub fn lsx_vsle_h(a: v8i16, b: v8i16) -> v8i16 {
2554 __lsx_vsle_h(a, b)2554 unsafe { __lsx_vsle_h(a, b) }
2555}2555}
25562556
2557#[inline]2557#[inline]
2558#[target_feature(enable = "lsx")]2558#[target_feature(enable = "lsx")]
2559#[unstable(feature = "stdarch_loongarch", issue = "117427")]2559#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2560pub unsafe fn lsx_vsle_w(a: v4i32, b: v4i32) -> v4i32 {2560pub fn lsx_vsle_w(a: v4i32, b: v4i32) -> v4i32 {
2561 __lsx_vsle_w(a, b)2561 unsafe { __lsx_vsle_w(a, b) }
2562}2562}
25632563
2564#[inline]2564#[inline]
2565#[target_feature(enable = "lsx")]2565#[target_feature(enable = "lsx")]
2566#[unstable(feature = "stdarch_loongarch", issue = "117427")]2566#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2567pub unsafe fn lsx_vsle_d(a: v2i64, b: v2i64) -> v2i64 {2567pub fn lsx_vsle_d(a: v2i64, b: v2i64) -> v2i64 {
2568 __lsx_vsle_d(a, b)2568 unsafe { __lsx_vsle_d(a, b) }
2569}2569}
25702570
2571#[inline]2571#[inline]
2572#[target_feature(enable = "lsx")]2572#[target_feature(enable = "lsx")]
2573#[rustc_legacy_const_generics(1)]2573#[rustc_legacy_const_generics(1)]
2574#[unstable(feature = "stdarch_loongarch", issue = "117427")]2574#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2575pub unsafe fn lsx_vslei_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {2575pub fn lsx_vslei_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
2576 static_assert_simm_bits!(IMM_S5, 5);2576 static_assert_simm_bits!(IMM_S5, 5);
2577 __lsx_vslei_b(a, IMM_S5)2577 unsafe { __lsx_vslei_b(a, IMM_S5) }
2578}2578}
25792579
2580#[inline]2580#[inline]
2581#[target_feature(enable = "lsx")]2581#[target_feature(enable = "lsx")]
2582#[rustc_legacy_const_generics(1)]2582#[rustc_legacy_const_generics(1)]
2583#[unstable(feature = "stdarch_loongarch", issue = "117427")]2583#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2584pub unsafe fn lsx_vslei_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {2584pub fn lsx_vslei_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
2585 static_assert_simm_bits!(IMM_S5, 5);2585 static_assert_simm_bits!(IMM_S5, 5);
2586 __lsx_vslei_h(a, IMM_S5)2586 unsafe { __lsx_vslei_h(a, IMM_S5) }
2587}2587}
25882588
2589#[inline]2589#[inline]
2590#[target_feature(enable = "lsx")]2590#[target_feature(enable = "lsx")]
2591#[rustc_legacy_const_generics(1)]2591#[rustc_legacy_const_generics(1)]
2592#[unstable(feature = "stdarch_loongarch", issue = "117427")]2592#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2593pub unsafe fn lsx_vslei_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {2593pub fn lsx_vslei_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
2594 static_assert_simm_bits!(IMM_S5, 5);2594 static_assert_simm_bits!(IMM_S5, 5);
2595 __lsx_vslei_w(a, IMM_S5)2595 unsafe { __lsx_vslei_w(a, IMM_S5) }
2596}2596}
25972597
2598#[inline]2598#[inline]
2599#[target_feature(enable = "lsx")]2599#[target_feature(enable = "lsx")]
2600#[rustc_legacy_const_generics(1)]2600#[rustc_legacy_const_generics(1)]
2601#[unstable(feature = "stdarch_loongarch", issue = "117427")]2601#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2602pub unsafe fn lsx_vslei_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {2602pub fn lsx_vslei_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
2603 static_assert_simm_bits!(IMM_S5, 5);2603 static_assert_simm_bits!(IMM_S5, 5);
2604 __lsx_vslei_d(a, IMM_S5)2604 unsafe { __lsx_vslei_d(a, IMM_S5) }
2605}2605}
26062606
2607#[inline]2607#[inline]
2608#[target_feature(enable = "lsx")]2608#[target_feature(enable = "lsx")]
2609#[unstable(feature = "stdarch_loongarch", issue = "117427")]2609#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2610pub unsafe fn lsx_vsle_bu(a: v16u8, b: v16u8) -> v16i8 {2610pub fn lsx_vsle_bu(a: v16u8, b: v16u8) -> v16i8 {
2611 __lsx_vsle_bu(a, b)2611 unsafe { __lsx_vsle_bu(a, b) }
2612}2612}
26132613
2614#[inline]2614#[inline]
2615#[target_feature(enable = "lsx")]2615#[target_feature(enable = "lsx")]
2616#[unstable(feature = "stdarch_loongarch", issue = "117427")]2616#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2617pub unsafe fn lsx_vsle_hu(a: v8u16, b: v8u16) -> v8i16 {2617pub fn lsx_vsle_hu(a: v8u16, b: v8u16) -> v8i16 {
2618 __lsx_vsle_hu(a, b)2618 unsafe { __lsx_vsle_hu(a, b) }
2619}2619}
26202620
2621#[inline]2621#[inline]
2622#[target_feature(enable = "lsx")]2622#[target_feature(enable = "lsx")]
2623#[unstable(feature = "stdarch_loongarch", issue = "117427")]2623#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2624pub unsafe fn lsx_vsle_wu(a: v4u32, b: v4u32) -> v4i32 {2624pub fn lsx_vsle_wu(a: v4u32, b: v4u32) -> v4i32 {
2625 __lsx_vsle_wu(a, b)2625 unsafe { __lsx_vsle_wu(a, b) }
2626}2626}
26272627
2628#[inline]2628#[inline]
2629#[target_feature(enable = "lsx")]2629#[target_feature(enable = "lsx")]
2630#[unstable(feature = "stdarch_loongarch", issue = "117427")]2630#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2631pub unsafe fn lsx_vsle_du(a: v2u64, b: v2u64) -> v2i64 {2631pub fn lsx_vsle_du(a: v2u64, b: v2u64) -> v2i64 {
2632 __lsx_vsle_du(a, b)2632 unsafe { __lsx_vsle_du(a, b) }
2633}2633}
26342634
2635#[inline]2635#[inline]
2636#[target_feature(enable = "lsx")]2636#[target_feature(enable = "lsx")]
2637#[rustc_legacy_const_generics(1)]2637#[rustc_legacy_const_generics(1)]
2638#[unstable(feature = "stdarch_loongarch", issue = "117427")]2638#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2639pub unsafe fn lsx_vslei_bu<const IMM5: u32>(a: v16u8) -> v16i8 {2639pub fn lsx_vslei_bu<const IMM5: u32>(a: v16u8) -> v16i8 {
2640 static_assert_uimm_bits!(IMM5, 5);2640 static_assert_uimm_bits!(IMM5, 5);
2641 __lsx_vslei_bu(a, IMM5)2641 unsafe { __lsx_vslei_bu(a, IMM5) }
2642}2642}
26432643
2644#[inline]2644#[inline]
2645#[target_feature(enable = "lsx")]2645#[target_feature(enable = "lsx")]
2646#[rustc_legacy_const_generics(1)]2646#[rustc_legacy_const_generics(1)]
2647#[unstable(feature = "stdarch_loongarch", issue = "117427")]2647#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2648pub unsafe fn lsx_vslei_hu<const IMM5: u32>(a: v8u16) -> v8i16 {2648pub fn lsx_vslei_hu<const IMM5: u32>(a: v8u16) -> v8i16 {
2649 static_assert_uimm_bits!(IMM5, 5);2649 static_assert_uimm_bits!(IMM5, 5);
2650 __lsx_vslei_hu(a, IMM5)2650 unsafe { __lsx_vslei_hu(a, IMM5) }
2651}2651}
26522652
2653#[inline]2653#[inline]
2654#[target_feature(enable = "lsx")]2654#[target_feature(enable = "lsx")]
2655#[rustc_legacy_const_generics(1)]2655#[rustc_legacy_const_generics(1)]
2656#[unstable(feature = "stdarch_loongarch", issue = "117427")]2656#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2657pub unsafe fn lsx_vslei_wu<const IMM5: u32>(a: v4u32) -> v4i32 {2657pub fn lsx_vslei_wu<const IMM5: u32>(a: v4u32) -> v4i32 {
2658 static_assert_uimm_bits!(IMM5, 5);2658 static_assert_uimm_bits!(IMM5, 5);
2659 __lsx_vslei_wu(a, IMM5)2659 unsafe { __lsx_vslei_wu(a, IMM5) }
2660}2660}
26612661
2662#[inline]2662#[inline]
2663#[target_feature(enable = "lsx")]2663#[target_feature(enable = "lsx")]
2664#[rustc_legacy_const_generics(1)]2664#[rustc_legacy_const_generics(1)]
2665#[unstable(feature = "stdarch_loongarch", issue = "117427")]2665#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2666pub unsafe fn lsx_vslei_du<const IMM5: u32>(a: v2u64) -> v2i64 {2666pub fn lsx_vslei_du<const IMM5: u32>(a: v2u64) -> v2i64 {
2667 static_assert_uimm_bits!(IMM5, 5);2667 static_assert_uimm_bits!(IMM5, 5);
2668 __lsx_vslei_du(a, IMM5)2668 unsafe { __lsx_vslei_du(a, IMM5) }
2669}2669}
26702670
2671#[inline]2671#[inline]
2672#[target_feature(enable = "lsx")]2672#[target_feature(enable = "lsx")]
2673#[rustc_legacy_const_generics(1)]2673#[rustc_legacy_const_generics(1)]
2674#[unstable(feature = "stdarch_loongarch", issue = "117427")]2674#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2675pub unsafe fn lsx_vsat_b<const IMM3: u32>(a: v16i8) -> v16i8 {2675pub fn lsx_vsat_b<const IMM3: u32>(a: v16i8) -> v16i8 {
2676 static_assert_uimm_bits!(IMM3, 3);2676 static_assert_uimm_bits!(IMM3, 3);
2677 __lsx_vsat_b(a, IMM3)2677 unsafe { __lsx_vsat_b(a, IMM3) }
2678}2678}
26792679
2680#[inline]2680#[inline]
2681#[target_feature(enable = "lsx")]2681#[target_feature(enable = "lsx")]
2682#[rustc_legacy_const_generics(1)]2682#[rustc_legacy_const_generics(1)]
2683#[unstable(feature = "stdarch_loongarch", issue = "117427")]2683#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2684pub unsafe fn lsx_vsat_h<const IMM4: u32>(a: v8i16) -> v8i16 {2684pub fn lsx_vsat_h<const IMM4: u32>(a: v8i16) -> v8i16 {
2685 static_assert_uimm_bits!(IMM4, 4);2685 static_assert_uimm_bits!(IMM4, 4);
2686 __lsx_vsat_h(a, IMM4)2686 unsafe { __lsx_vsat_h(a, IMM4) }
2687}2687}
26882688
2689#[inline]2689#[inline]
2690#[target_feature(enable = "lsx")]2690#[target_feature(enable = "lsx")]
2691#[rustc_legacy_const_generics(1)]2691#[rustc_legacy_const_generics(1)]
2692#[unstable(feature = "stdarch_loongarch", issue = "117427")]2692#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2693pub unsafe fn lsx_vsat_w<const IMM5: u32>(a: v4i32) -> v4i32 {2693pub fn lsx_vsat_w<const IMM5: u32>(a: v4i32) -> v4i32 {
2694 static_assert_uimm_bits!(IMM5, 5);2694 static_assert_uimm_bits!(IMM5, 5);
2695 __lsx_vsat_w(a, IMM5)2695 unsafe { __lsx_vsat_w(a, IMM5) }
2696}2696}
26972697
2698#[inline]2698#[inline]
2699#[target_feature(enable = "lsx")]2699#[target_feature(enable = "lsx")]
2700#[rustc_legacy_const_generics(1)]2700#[rustc_legacy_const_generics(1)]
2701#[unstable(feature = "stdarch_loongarch", issue = "117427")]2701#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2702pub unsafe fn lsx_vsat_d<const IMM6: u32>(a: v2i64) -> v2i64 {2702pub fn lsx_vsat_d<const IMM6: u32>(a: v2i64) -> v2i64 {
2703 static_assert_uimm_bits!(IMM6, 6);2703 static_assert_uimm_bits!(IMM6, 6);
2704 __lsx_vsat_d(a, IMM6)2704 unsafe { __lsx_vsat_d(a, IMM6) }
2705}2705}
27062706
2707#[inline]2707#[inline]
2708#[target_feature(enable = "lsx")]2708#[target_feature(enable = "lsx")]
2709#[rustc_legacy_const_generics(1)]2709#[rustc_legacy_const_generics(1)]
2710#[unstable(feature = "stdarch_loongarch", issue = "117427")]2710#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2711pub unsafe fn lsx_vsat_bu<const IMM3: u32>(a: v16u8) -> v16u8 {2711pub fn lsx_vsat_bu<const IMM3: u32>(a: v16u8) -> v16u8 {
2712 static_assert_uimm_bits!(IMM3, 3);2712 static_assert_uimm_bits!(IMM3, 3);
2713 __lsx_vsat_bu(a, IMM3)2713 unsafe { __lsx_vsat_bu(a, IMM3) }
2714}2714}
27152715
2716#[inline]2716#[inline]
2717#[target_feature(enable = "lsx")]2717#[target_feature(enable = "lsx")]
2718#[rustc_legacy_const_generics(1)]2718#[rustc_legacy_const_generics(1)]
2719#[unstable(feature = "stdarch_loongarch", issue = "117427")]2719#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2720pub unsafe fn lsx_vsat_hu<const IMM4: u32>(a: v8u16) -> v8u16 {2720pub fn lsx_vsat_hu<const IMM4: u32>(a: v8u16) -> v8u16 {
2721 static_assert_uimm_bits!(IMM4, 4);2721 static_assert_uimm_bits!(IMM4, 4);
2722 __lsx_vsat_hu(a, IMM4)2722 unsafe { __lsx_vsat_hu(a, IMM4) }
2723}2723}
27242724
2725#[inline]2725#[inline]
2726#[target_feature(enable = "lsx")]2726#[target_feature(enable = "lsx")]
2727#[rustc_legacy_const_generics(1)]2727#[rustc_legacy_const_generics(1)]
2728#[unstable(feature = "stdarch_loongarch", issue = "117427")]2728#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2729pub unsafe fn lsx_vsat_wu<const IMM5: u32>(a: v4u32) -> v4u32 {2729pub fn lsx_vsat_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
2730 static_assert_uimm_bits!(IMM5, 5);2730 static_assert_uimm_bits!(IMM5, 5);
2731 __lsx_vsat_wu(a, IMM5)2731 unsafe { __lsx_vsat_wu(a, IMM5) }
2732}2732}
27332733
2734#[inline]2734#[inline]
2735#[target_feature(enable = "lsx")]2735#[target_feature(enable = "lsx")]
2736#[rustc_legacy_const_generics(1)]2736#[rustc_legacy_const_generics(1)]
2737#[unstable(feature = "stdarch_loongarch", issue = "117427")]2737#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2738pub unsafe fn lsx_vsat_du<const IMM6: u32>(a: v2u64) -> v2u64 {2738pub fn lsx_vsat_du<const IMM6: u32>(a: v2u64) -> v2u64 {
2739 static_assert_uimm_bits!(IMM6, 6);2739 static_assert_uimm_bits!(IMM6, 6);
2740 __lsx_vsat_du(a, IMM6)2740 unsafe { __lsx_vsat_du(a, IMM6) }
2741}2741}
27422742
2743#[inline]2743#[inline]
2744#[target_feature(enable = "lsx")]2744#[target_feature(enable = "lsx")]
2745#[unstable(feature = "stdarch_loongarch", issue = "117427")]2745#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2746pub unsafe fn lsx_vadda_b(a: v16i8, b: v16i8) -> v16i8 {2746pub fn lsx_vadda_b(a: v16i8, b: v16i8) -> v16i8 {
2747 __lsx_vadda_b(a, b)2747 unsafe { __lsx_vadda_b(a, b) }
2748}2748}
27492749
2750#[inline]2750#[inline]
2751#[target_feature(enable = "lsx")]2751#[target_feature(enable = "lsx")]
2752#[unstable(feature = "stdarch_loongarch", issue = "117427")]2752#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2753pub unsafe fn lsx_vadda_h(a: v8i16, b: v8i16) -> v8i16 {2753pub fn lsx_vadda_h(a: v8i16, b: v8i16) -> v8i16 {
2754 __lsx_vadda_h(a, b)2754 unsafe { __lsx_vadda_h(a, b) }
2755}2755}
27562756
2757#[inline]2757#[inline]
2758#[target_feature(enable = "lsx")]2758#[target_feature(enable = "lsx")]
2759#[unstable(feature = "stdarch_loongarch", issue = "117427")]2759#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2760pub unsafe fn lsx_vadda_w(a: v4i32, b: v4i32) -> v4i32 {2760pub fn lsx_vadda_w(a: v4i32, b: v4i32) -> v4i32 {
2761 __lsx_vadda_w(a, b)2761 unsafe { __lsx_vadda_w(a, b) }
2762}2762}
27632763
2764#[inline]2764#[inline]
2765#[target_feature(enable = "lsx")]2765#[target_feature(enable = "lsx")]
2766#[unstable(feature = "stdarch_loongarch", issue = "117427")]2766#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2767pub unsafe fn lsx_vadda_d(a: v2i64, b: v2i64) -> v2i64 {2767pub fn lsx_vadda_d(a: v2i64, b: v2i64) -> v2i64 {
2768 __lsx_vadda_d(a, b)2768 unsafe { __lsx_vadda_d(a, b) }
2769}2769}
27702770
2771#[inline]2771#[inline]
2772#[target_feature(enable = "lsx")]2772#[target_feature(enable = "lsx")]
2773#[unstable(feature = "stdarch_loongarch", issue = "117427")]2773#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2774pub unsafe fn lsx_vsadd_b(a: v16i8, b: v16i8) -> v16i8 {2774pub fn lsx_vsadd_b(a: v16i8, b: v16i8) -> v16i8 {
2775 __lsx_vsadd_b(a, b)2775 unsafe { __lsx_vsadd_b(a, b) }
2776}2776}
27772777
2778#[inline]2778#[inline]
2779#[target_feature(enable = "lsx")]2779#[target_feature(enable = "lsx")]
2780#[unstable(feature = "stdarch_loongarch", issue = "117427")]2780#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2781pub unsafe fn lsx_vsadd_h(a: v8i16, b: v8i16) -> v8i16 {2781pub fn lsx_vsadd_h(a: v8i16, b: v8i16) -> v8i16 {
2782 __lsx_vsadd_h(a, b)2782 unsafe { __lsx_vsadd_h(a, b) }
2783}2783}
27842784
2785#[inline]2785#[inline]
2786#[target_feature(enable = "lsx")]2786#[target_feature(enable = "lsx")]
2787#[unstable(feature = "stdarch_loongarch", issue = "117427")]2787#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2788pub unsafe fn lsx_vsadd_w(a: v4i32, b: v4i32) -> v4i32 {2788pub fn lsx_vsadd_w(a: v4i32, b: v4i32) -> v4i32 {
2789 __lsx_vsadd_w(a, b)2789 unsafe { __lsx_vsadd_w(a, b) }
2790}2790}
27912791
2792#[inline]2792#[inline]
2793#[target_feature(enable = "lsx")]2793#[target_feature(enable = "lsx")]
2794#[unstable(feature = "stdarch_loongarch", issue = "117427")]2794#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2795pub unsafe fn lsx_vsadd_d(a: v2i64, b: v2i64) -> v2i64 {2795pub fn lsx_vsadd_d(a: v2i64, b: v2i64) -> v2i64 {
2796 __lsx_vsadd_d(a, b)2796 unsafe { __lsx_vsadd_d(a, b) }
2797}2797}
27982798
2799#[inline]2799#[inline]
2800#[target_feature(enable = "lsx")]2800#[target_feature(enable = "lsx")]
2801#[unstable(feature = "stdarch_loongarch", issue = "117427")]2801#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2802pub unsafe fn lsx_vsadd_bu(a: v16u8, b: v16u8) -> v16u8 {2802pub fn lsx_vsadd_bu(a: v16u8, b: v16u8) -> v16u8 {
2803 __lsx_vsadd_bu(a, b)2803 unsafe { __lsx_vsadd_bu(a, b) }
2804}2804}
28052805
2806#[inline]2806#[inline]
2807#[target_feature(enable = "lsx")]2807#[target_feature(enable = "lsx")]
2808#[unstable(feature = "stdarch_loongarch", issue = "117427")]2808#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2809pub unsafe fn lsx_vsadd_hu(a: v8u16, b: v8u16) -> v8u16 {2809pub fn lsx_vsadd_hu(a: v8u16, b: v8u16) -> v8u16 {
2810 __lsx_vsadd_hu(a, b)2810 unsafe { __lsx_vsadd_hu(a, b) }
2811}2811}
28122812
2813#[inline]2813#[inline]
2814#[target_feature(enable = "lsx")]2814#[target_feature(enable = "lsx")]
2815#[unstable(feature = "stdarch_loongarch", issue = "117427")]2815#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2816pub unsafe fn lsx_vsadd_wu(a: v4u32, b: v4u32) -> v4u32 {2816pub fn lsx_vsadd_wu(a: v4u32, b: v4u32) -> v4u32 {
2817 __lsx_vsadd_wu(a, b)2817 unsafe { __lsx_vsadd_wu(a, b) }
2818}2818}
28192819
2820#[inline]2820#[inline]
2821#[target_feature(enable = "lsx")]2821#[target_feature(enable = "lsx")]
2822#[unstable(feature = "stdarch_loongarch", issue = "117427")]2822#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2823pub unsafe fn lsx_vsadd_du(a: v2u64, b: v2u64) -> v2u64 {2823pub fn lsx_vsadd_du(a: v2u64, b: v2u64) -> v2u64 {
2824 __lsx_vsadd_du(a, b)2824 unsafe { __lsx_vsadd_du(a, b) }
2825}2825}
28262826
2827#[inline]2827#[inline]
2828#[target_feature(enable = "lsx")]2828#[target_feature(enable = "lsx")]
2829#[unstable(feature = "stdarch_loongarch", issue = "117427")]2829#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2830pub unsafe fn lsx_vavg_b(a: v16i8, b: v16i8) -> v16i8 {2830pub fn lsx_vavg_b(a: v16i8, b: v16i8) -> v16i8 {
2831 __lsx_vavg_b(a, b)2831 unsafe { __lsx_vavg_b(a, b) }
2832}2832}
28332833
2834#[inline]2834#[inline]
2835#[target_feature(enable = "lsx")]2835#[target_feature(enable = "lsx")]
2836#[unstable(feature = "stdarch_loongarch", issue = "117427")]2836#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2837pub unsafe fn lsx_vavg_h(a: v8i16, b: v8i16) -> v8i16 {2837pub fn lsx_vavg_h(a: v8i16, b: v8i16) -> v8i16 {
2838 __lsx_vavg_h(a, b)2838 unsafe { __lsx_vavg_h(a, b) }
2839}2839}
28402840
2841#[inline]2841#[inline]
2842#[target_feature(enable = "lsx")]2842#[target_feature(enable = "lsx")]
2843#[unstable(feature = "stdarch_loongarch", issue = "117427")]2843#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2844pub unsafe fn lsx_vavg_w(a: v4i32, b: v4i32) -> v4i32 {2844pub fn lsx_vavg_w(a: v4i32, b: v4i32) -> v4i32 {
2845 __lsx_vavg_w(a, b)2845 unsafe { __lsx_vavg_w(a, b) }
2846}2846}
28472847
2848#[inline]2848#[inline]
2849#[target_feature(enable = "lsx")]2849#[target_feature(enable = "lsx")]
2850#[unstable(feature = "stdarch_loongarch", issue = "117427")]2850#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2851pub unsafe fn lsx_vavg_d(a: v2i64, b: v2i64) -> v2i64 {2851pub fn lsx_vavg_d(a: v2i64, b: v2i64) -> v2i64 {
2852 __lsx_vavg_d(a, b)2852 unsafe { __lsx_vavg_d(a, b) }
2853}2853}
28542854
2855#[inline]2855#[inline]
2856#[target_feature(enable = "lsx")]2856#[target_feature(enable = "lsx")]
2857#[unstable(feature = "stdarch_loongarch", issue = "117427")]2857#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2858pub unsafe fn lsx_vavg_bu(a: v16u8, b: v16u8) -> v16u8 {2858pub fn lsx_vavg_bu(a: v16u8, b: v16u8) -> v16u8 {
2859 __lsx_vavg_bu(a, b)2859 unsafe { __lsx_vavg_bu(a, b) }
2860}2860}
28612861
2862#[inline]2862#[inline]
2863#[target_feature(enable = "lsx")]2863#[target_feature(enable = "lsx")]
2864#[unstable(feature = "stdarch_loongarch", issue = "117427")]2864#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2865pub unsafe fn lsx_vavg_hu(a: v8u16, b: v8u16) -> v8u16 {2865pub fn lsx_vavg_hu(a: v8u16, b: v8u16) -> v8u16 {
2866 __lsx_vavg_hu(a, b)2866 unsafe { __lsx_vavg_hu(a, b) }
2867}2867}
28682868
2869#[inline]2869#[inline]
2870#[target_feature(enable = "lsx")]2870#[target_feature(enable = "lsx")]
2871#[unstable(feature = "stdarch_loongarch", issue = "117427")]2871#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2872pub unsafe fn lsx_vavg_wu(a: v4u32, b: v4u32) -> v4u32 {2872pub fn lsx_vavg_wu(a: v4u32, b: v4u32) -> v4u32 {
2873 __lsx_vavg_wu(a, b)2873 unsafe { __lsx_vavg_wu(a, b) }
2874}2874}
28752875
2876#[inline]2876#[inline]
2877#[target_feature(enable = "lsx")]2877#[target_feature(enable = "lsx")]
2878#[unstable(feature = "stdarch_loongarch", issue = "117427")]2878#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2879pub unsafe fn lsx_vavg_du(a: v2u64, b: v2u64) -> v2u64 {2879pub fn lsx_vavg_du(a: v2u64, b: v2u64) -> v2u64 {
2880 __lsx_vavg_du(a, b)2880 unsafe { __lsx_vavg_du(a, b) }
2881}2881}
28822882
2883#[inline]2883#[inline]
2884#[target_feature(enable = "lsx")]2884#[target_feature(enable = "lsx")]
2885#[unstable(feature = "stdarch_loongarch", issue = "117427")]2885#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2886pub unsafe fn lsx_vavgr_b(a: v16i8, b: v16i8) -> v16i8 {2886pub fn lsx_vavgr_b(a: v16i8, b: v16i8) -> v16i8 {
2887 __lsx_vavgr_b(a, b)2887 unsafe { __lsx_vavgr_b(a, b) }
2888}2888}
28892889
2890#[inline]2890#[inline]
2891#[target_feature(enable = "lsx")]2891#[target_feature(enable = "lsx")]
2892#[unstable(feature = "stdarch_loongarch", issue = "117427")]2892#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2893pub unsafe fn lsx_vavgr_h(a: v8i16, b: v8i16) -> v8i16 {2893pub fn lsx_vavgr_h(a: v8i16, b: v8i16) -> v8i16 {
2894 __lsx_vavgr_h(a, b)2894 unsafe { __lsx_vavgr_h(a, b) }
2895}2895}
28962896
2897#[inline]2897#[inline]
2898#[target_feature(enable = "lsx")]2898#[target_feature(enable = "lsx")]
2899#[unstable(feature = "stdarch_loongarch", issue = "117427")]2899#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2900pub unsafe fn lsx_vavgr_w(a: v4i32, b: v4i32) -> v4i32 {2900pub fn lsx_vavgr_w(a: v4i32, b: v4i32) -> v4i32 {
2901 __lsx_vavgr_w(a, b)2901 unsafe { __lsx_vavgr_w(a, b) }
2902}2902}
29032903
2904#[inline]2904#[inline]
2905#[target_feature(enable = "lsx")]2905#[target_feature(enable = "lsx")]
2906#[unstable(feature = "stdarch_loongarch", issue = "117427")]2906#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2907pub unsafe fn lsx_vavgr_d(a: v2i64, b: v2i64) -> v2i64 {2907pub fn lsx_vavgr_d(a: v2i64, b: v2i64) -> v2i64 {
2908 __lsx_vavgr_d(a, b)2908 unsafe { __lsx_vavgr_d(a, b) }
2909}2909}
29102910
2911#[inline]2911#[inline]
2912#[target_feature(enable = "lsx")]2912#[target_feature(enable = "lsx")]
2913#[unstable(feature = "stdarch_loongarch", issue = "117427")]2913#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2914pub unsafe fn lsx_vavgr_bu(a: v16u8, b: v16u8) -> v16u8 {2914pub fn lsx_vavgr_bu(a: v16u8, b: v16u8) -> v16u8 {
2915 __lsx_vavgr_bu(a, b)2915 unsafe { __lsx_vavgr_bu(a, b) }
2916}2916}
29172917
2918#[inline]2918#[inline]
2919#[target_feature(enable = "lsx")]2919#[target_feature(enable = "lsx")]
2920#[unstable(feature = "stdarch_loongarch", issue = "117427")]2920#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2921pub unsafe fn lsx_vavgr_hu(a: v8u16, b: v8u16) -> v8u16 {2921pub fn lsx_vavgr_hu(a: v8u16, b: v8u16) -> v8u16 {
2922 __lsx_vavgr_hu(a, b)2922 unsafe { __lsx_vavgr_hu(a, b) }
2923}2923}
29242924
2925#[inline]2925#[inline]
2926#[target_feature(enable = "lsx")]2926#[target_feature(enable = "lsx")]
2927#[unstable(feature = "stdarch_loongarch", issue = "117427")]2927#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2928pub unsafe fn lsx_vavgr_wu(a: v4u32, b: v4u32) -> v4u32 {2928pub fn lsx_vavgr_wu(a: v4u32, b: v4u32) -> v4u32 {
2929 __lsx_vavgr_wu(a, b)2929 unsafe { __lsx_vavgr_wu(a, b) }
2930}2930}
29312931
2932#[inline]2932#[inline]
2933#[target_feature(enable = "lsx")]2933#[target_feature(enable = "lsx")]
2934#[unstable(feature = "stdarch_loongarch", issue = "117427")]2934#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2935pub unsafe fn lsx_vavgr_du(a: v2u64, b: v2u64) -> v2u64 {2935pub fn lsx_vavgr_du(a: v2u64, b: v2u64) -> v2u64 {
2936 __lsx_vavgr_du(a, b)2936 unsafe { __lsx_vavgr_du(a, b) }
2937}2937}
29382938
2939#[inline]2939#[inline]
2940#[target_feature(enable = "lsx")]2940#[target_feature(enable = "lsx")]
2941#[unstable(feature = "stdarch_loongarch", issue = "117427")]2941#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2942pub unsafe fn lsx_vssub_b(a: v16i8, b: v16i8) -> v16i8 {2942pub fn lsx_vssub_b(a: v16i8, b: v16i8) -> v16i8 {
2943 __lsx_vssub_b(a, b)2943 unsafe { __lsx_vssub_b(a, b) }
2944}2944}
29452945
2946#[inline]2946#[inline]
2947#[target_feature(enable = "lsx")]2947#[target_feature(enable = "lsx")]
2948#[unstable(feature = "stdarch_loongarch", issue = "117427")]2948#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2949pub unsafe fn lsx_vssub_h(a: v8i16, b: v8i16) -> v8i16 {2949pub fn lsx_vssub_h(a: v8i16, b: v8i16) -> v8i16 {
2950 __lsx_vssub_h(a, b)2950 unsafe { __lsx_vssub_h(a, b) }
2951}2951}
29522952
2953#[inline]2953#[inline]
2954#[target_feature(enable = "lsx")]2954#[target_feature(enable = "lsx")]
2955#[unstable(feature = "stdarch_loongarch", issue = "117427")]2955#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2956pub unsafe fn lsx_vssub_w(a: v4i32, b: v4i32) -> v4i32 {2956pub fn lsx_vssub_w(a: v4i32, b: v4i32) -> v4i32 {
2957 __lsx_vssub_w(a, b)2957 unsafe { __lsx_vssub_w(a, b) }
2958}2958}
29592959
2960#[inline]2960#[inline]
2961#[target_feature(enable = "lsx")]2961#[target_feature(enable = "lsx")]
2962#[unstable(feature = "stdarch_loongarch", issue = "117427")]2962#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2963pub unsafe fn lsx_vssub_d(a: v2i64, b: v2i64) -> v2i64 {2963pub fn lsx_vssub_d(a: v2i64, b: v2i64) -> v2i64 {
2964 __lsx_vssub_d(a, b)2964 unsafe { __lsx_vssub_d(a, b) }
2965}2965}
29662966
2967#[inline]2967#[inline]
2968#[target_feature(enable = "lsx")]2968#[target_feature(enable = "lsx")]
2969#[unstable(feature = "stdarch_loongarch", issue = "117427")]2969#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2970pub unsafe fn lsx_vssub_bu(a: v16u8, b: v16u8) -> v16u8 {2970pub fn lsx_vssub_bu(a: v16u8, b: v16u8) -> v16u8 {
2971 __lsx_vssub_bu(a, b)2971 unsafe { __lsx_vssub_bu(a, b) }
2972}2972}
29732973
2974#[inline]2974#[inline]
2975#[target_feature(enable = "lsx")]2975#[target_feature(enable = "lsx")]
2976#[unstable(feature = "stdarch_loongarch", issue = "117427")]2976#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2977pub unsafe fn lsx_vssub_hu(a: v8u16, b: v8u16) -> v8u16 {2977pub fn lsx_vssub_hu(a: v8u16, b: v8u16) -> v8u16 {
2978 __lsx_vssub_hu(a, b)2978 unsafe { __lsx_vssub_hu(a, b) }
2979}2979}
29802980
2981#[inline]2981#[inline]
2982#[target_feature(enable = "lsx")]2982#[target_feature(enable = "lsx")]
2983#[unstable(feature = "stdarch_loongarch", issue = "117427")]2983#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2984pub unsafe fn lsx_vssub_wu(a: v4u32, b: v4u32) -> v4u32 {2984pub fn lsx_vssub_wu(a: v4u32, b: v4u32) -> v4u32 {
2985 __lsx_vssub_wu(a, b)2985 unsafe { __lsx_vssub_wu(a, b) }
2986}2986}
29872987
2988#[inline]2988#[inline]
2989#[target_feature(enable = "lsx")]2989#[target_feature(enable = "lsx")]
2990#[unstable(feature = "stdarch_loongarch", issue = "117427")]2990#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2991pub unsafe fn lsx_vssub_du(a: v2u64, b: v2u64) -> v2u64 {2991pub fn lsx_vssub_du(a: v2u64, b: v2u64) -> v2u64 {
2992 __lsx_vssub_du(a, b)2992 unsafe { __lsx_vssub_du(a, b) }
2993}2993}
29942994
2995#[inline]2995#[inline]
2996#[target_feature(enable = "lsx")]2996#[target_feature(enable = "lsx")]
2997#[unstable(feature = "stdarch_loongarch", issue = "117427")]2997#[unstable(feature = "stdarch_loongarch", issue = "117427")]
2998pub unsafe fn lsx_vabsd_b(a: v16i8, b: v16i8) -> v16i8 {2998pub fn lsx_vabsd_b(a: v16i8, b: v16i8) -> v16i8 {
2999 __lsx_vabsd_b(a, b)2999 unsafe { __lsx_vabsd_b(a, b) }
3000}3000}
30013001
3002#[inline]3002#[inline]
3003#[target_feature(enable = "lsx")]3003#[target_feature(enable = "lsx")]
3004#[unstable(feature = "stdarch_loongarch", issue = "117427")]3004#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3005pub unsafe fn lsx_vabsd_h(a: v8i16, b: v8i16) -> v8i16 {3005pub fn lsx_vabsd_h(a: v8i16, b: v8i16) -> v8i16 {
3006 __lsx_vabsd_h(a, b)3006 unsafe { __lsx_vabsd_h(a, b) }
3007}3007}
30083008
3009#[inline]3009#[inline]
3010#[target_feature(enable = "lsx")]3010#[target_feature(enable = "lsx")]
3011#[unstable(feature = "stdarch_loongarch", issue = "117427")]3011#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3012pub unsafe fn lsx_vabsd_w(a: v4i32, b: v4i32) -> v4i32 {3012pub fn lsx_vabsd_w(a: v4i32, b: v4i32) -> v4i32 {
3013 __lsx_vabsd_w(a, b)3013 unsafe { __lsx_vabsd_w(a, b) }
3014}3014}
30153015
3016#[inline]3016#[inline]
3017#[target_feature(enable = "lsx")]3017#[target_feature(enable = "lsx")]
3018#[unstable(feature = "stdarch_loongarch", issue = "117427")]3018#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3019pub unsafe fn lsx_vabsd_d(a: v2i64, b: v2i64) -> v2i64 {3019pub fn lsx_vabsd_d(a: v2i64, b: v2i64) -> v2i64 {
3020 __lsx_vabsd_d(a, b)3020 unsafe { __lsx_vabsd_d(a, b) }
3021}3021}
30223022
3023#[inline]3023#[inline]
3024#[target_feature(enable = "lsx")]3024#[target_feature(enable = "lsx")]
3025#[unstable(feature = "stdarch_loongarch", issue = "117427")]3025#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3026pub unsafe fn lsx_vabsd_bu(a: v16u8, b: v16u8) -> v16u8 {3026pub fn lsx_vabsd_bu(a: v16u8, b: v16u8) -> v16u8 {
3027 __lsx_vabsd_bu(a, b)3027 unsafe { __lsx_vabsd_bu(a, b) }
3028}3028}
30293029
3030#[inline]3030#[inline]
3031#[target_feature(enable = "lsx")]3031#[target_feature(enable = "lsx")]
3032#[unstable(feature = "stdarch_loongarch", issue = "117427")]3032#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3033pub unsafe fn lsx_vabsd_hu(a: v8u16, b: v8u16) -> v8u16 {3033pub fn lsx_vabsd_hu(a: v8u16, b: v8u16) -> v8u16 {
3034 __lsx_vabsd_hu(a, b)3034 unsafe { __lsx_vabsd_hu(a, b) }
3035}3035}
30363036
3037#[inline]3037#[inline]
3038#[target_feature(enable = "lsx")]3038#[target_feature(enable = "lsx")]
3039#[unstable(feature = "stdarch_loongarch", issue = "117427")]3039#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3040pub unsafe fn lsx_vabsd_wu(a: v4u32, b: v4u32) -> v4u32 {3040pub fn lsx_vabsd_wu(a: v4u32, b: v4u32) -> v4u32 {
3041 __lsx_vabsd_wu(a, b)3041 unsafe { __lsx_vabsd_wu(a, b) }
3042}3042}
30433043
3044#[inline]3044#[inline]
3045#[target_feature(enable = "lsx")]3045#[target_feature(enable = "lsx")]
3046#[unstable(feature = "stdarch_loongarch", issue = "117427")]3046#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3047pub unsafe fn lsx_vabsd_du(a: v2u64, b: v2u64) -> v2u64 {3047pub fn lsx_vabsd_du(a: v2u64, b: v2u64) -> v2u64 {
3048 __lsx_vabsd_du(a, b)3048 unsafe { __lsx_vabsd_du(a, b) }
3049}3049}
30503050
3051#[inline]3051#[inline]
3052#[target_feature(enable = "lsx")]3052#[target_feature(enable = "lsx")]
3053#[unstable(feature = "stdarch_loongarch", issue = "117427")]3053#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3054pub unsafe fn lsx_vmul_b(a: v16i8, b: v16i8) -> v16i8 {3054pub fn lsx_vmul_b(a: v16i8, b: v16i8) -> v16i8 {
3055 __lsx_vmul_b(a, b)3055 unsafe { __lsx_vmul_b(a, b) }
3056}3056}
30573057
3058#[inline]3058#[inline]
3059#[target_feature(enable = "lsx")]3059#[target_feature(enable = "lsx")]
3060#[unstable(feature = "stdarch_loongarch", issue = "117427")]3060#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3061pub unsafe fn lsx_vmul_h(a: v8i16, b: v8i16) -> v8i16 {3061pub fn lsx_vmul_h(a: v8i16, b: v8i16) -> v8i16 {
3062 __lsx_vmul_h(a, b)3062 unsafe { __lsx_vmul_h(a, b) }
3063}3063}
30643064
3065#[inline]3065#[inline]
3066#[target_feature(enable = "lsx")]3066#[target_feature(enable = "lsx")]
3067#[unstable(feature = "stdarch_loongarch", issue = "117427")]3067#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3068pub unsafe fn lsx_vmul_w(a: v4i32, b: v4i32) -> v4i32 {3068pub fn lsx_vmul_w(a: v4i32, b: v4i32) -> v4i32 {
3069 __lsx_vmul_w(a, b)3069 unsafe { __lsx_vmul_w(a, b) }
3070}3070}
30713071
3072#[inline]3072#[inline]
3073#[target_feature(enable = "lsx")]3073#[target_feature(enable = "lsx")]
3074#[unstable(feature = "stdarch_loongarch", issue = "117427")]3074#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3075pub unsafe fn lsx_vmul_d(a: v2i64, b: v2i64) -> v2i64 {3075pub fn lsx_vmul_d(a: v2i64, b: v2i64) -> v2i64 {
3076 __lsx_vmul_d(a, b)3076 unsafe { __lsx_vmul_d(a, b) }
3077}3077}
30783078
3079#[inline]3079#[inline]
3080#[target_feature(enable = "lsx")]3080#[target_feature(enable = "lsx")]
3081#[unstable(feature = "stdarch_loongarch", issue = "117427")]3081#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3082pub unsafe fn lsx_vmadd_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {3082pub fn lsx_vmadd_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
3083 __lsx_vmadd_b(a, b, c)3083 unsafe { __lsx_vmadd_b(a, b, c) }
3084}3084}
30853085
3086#[inline]3086#[inline]
3087#[target_feature(enable = "lsx")]3087#[target_feature(enable = "lsx")]
3088#[unstable(feature = "stdarch_loongarch", issue = "117427")]3088#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3089pub unsafe fn lsx_vmadd_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {3089pub fn lsx_vmadd_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
3090 __lsx_vmadd_h(a, b, c)3090 unsafe { __lsx_vmadd_h(a, b, c) }
3091}3091}
30923092
3093#[inline]3093#[inline]
3094#[target_feature(enable = "lsx")]3094#[target_feature(enable = "lsx")]
3095#[unstable(feature = "stdarch_loongarch", issue = "117427")]3095#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3096pub unsafe fn lsx_vmadd_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {3096pub fn lsx_vmadd_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
3097 __lsx_vmadd_w(a, b, c)3097 unsafe { __lsx_vmadd_w(a, b, c) }
3098}3098}
30993099
3100#[inline]3100#[inline]
3101#[target_feature(enable = "lsx")]3101#[target_feature(enable = "lsx")]
3102#[unstable(feature = "stdarch_loongarch", issue = "117427")]3102#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3103pub unsafe fn lsx_vmadd_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {3103pub fn lsx_vmadd_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
3104 __lsx_vmadd_d(a, b, c)3104 unsafe { __lsx_vmadd_d(a, b, c) }
3105}3105}
31063106
3107#[inline]3107#[inline]
3108#[target_feature(enable = "lsx")]3108#[target_feature(enable = "lsx")]
3109#[unstable(feature = "stdarch_loongarch", issue = "117427")]3109#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3110pub unsafe fn lsx_vmsub_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {3110pub fn lsx_vmsub_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
3111 __lsx_vmsub_b(a, b, c)3111 unsafe { __lsx_vmsub_b(a, b, c) }
3112}3112}
31133113
3114#[inline]3114#[inline]
3115#[target_feature(enable = "lsx")]3115#[target_feature(enable = "lsx")]
3116#[unstable(feature = "stdarch_loongarch", issue = "117427")]3116#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3117pub unsafe fn lsx_vmsub_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {3117pub fn lsx_vmsub_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
3118 __lsx_vmsub_h(a, b, c)3118 unsafe { __lsx_vmsub_h(a, b, c) }
3119}3119}
31203120
3121#[inline]3121#[inline]
3122#[target_feature(enable = "lsx")]3122#[target_feature(enable = "lsx")]
3123#[unstable(feature = "stdarch_loongarch", issue = "117427")]3123#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3124pub unsafe fn lsx_vmsub_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {3124pub fn lsx_vmsub_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
3125 __lsx_vmsub_w(a, b, c)3125 unsafe { __lsx_vmsub_w(a, b, c) }
3126}3126}
31273127
3128#[inline]3128#[inline]
3129#[target_feature(enable = "lsx")]3129#[target_feature(enable = "lsx")]
3130#[unstable(feature = "stdarch_loongarch", issue = "117427")]3130#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3131pub unsafe fn lsx_vmsub_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {3131pub fn lsx_vmsub_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
3132 __lsx_vmsub_d(a, b, c)3132 unsafe { __lsx_vmsub_d(a, b, c) }
3133}3133}
31343134
3135#[inline]3135#[inline]
3136#[target_feature(enable = "lsx")]3136#[target_feature(enable = "lsx")]
3137#[unstable(feature = "stdarch_loongarch", issue = "117427")]3137#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3138pub unsafe fn lsx_vdiv_b(a: v16i8, b: v16i8) -> v16i8 {3138pub fn lsx_vdiv_b(a: v16i8, b: v16i8) -> v16i8 {
3139 __lsx_vdiv_b(a, b)3139 unsafe { __lsx_vdiv_b(a, b) }
3140}3140}
31413141
3142#[inline]3142#[inline]
3143#[target_feature(enable = "lsx")]3143#[target_feature(enable = "lsx")]
3144#[unstable(feature = "stdarch_loongarch", issue = "117427")]3144#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3145pub unsafe fn lsx_vdiv_h(a: v8i16, b: v8i16) -> v8i16 {3145pub fn lsx_vdiv_h(a: v8i16, b: v8i16) -> v8i16 {
3146 __lsx_vdiv_h(a, b)3146 unsafe { __lsx_vdiv_h(a, b) }
3147}3147}
31483148
3149#[inline]3149#[inline]
3150#[target_feature(enable = "lsx")]3150#[target_feature(enable = "lsx")]
3151#[unstable(feature = "stdarch_loongarch", issue = "117427")]3151#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3152pub unsafe fn lsx_vdiv_w(a: v4i32, b: v4i32) -> v4i32 {3152pub fn lsx_vdiv_w(a: v4i32, b: v4i32) -> v4i32 {
3153 __lsx_vdiv_w(a, b)3153 unsafe { __lsx_vdiv_w(a, b) }
3154}3154}
31553155
3156#[inline]3156#[inline]
3157#[target_feature(enable = "lsx")]3157#[target_feature(enable = "lsx")]
3158#[unstable(feature = "stdarch_loongarch", issue = "117427")]3158#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3159pub unsafe fn lsx_vdiv_d(a: v2i64, b: v2i64) -> v2i64 {3159pub fn lsx_vdiv_d(a: v2i64, b: v2i64) -> v2i64 {
3160 __lsx_vdiv_d(a, b)3160 unsafe { __lsx_vdiv_d(a, b) }
3161}3161}
31623162
3163#[inline]3163#[inline]
3164#[target_feature(enable = "lsx")]3164#[target_feature(enable = "lsx")]
3165#[unstable(feature = "stdarch_loongarch", issue = "117427")]3165#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3166pub unsafe fn lsx_vdiv_bu(a: v16u8, b: v16u8) -> v16u8 {3166pub fn lsx_vdiv_bu(a: v16u8, b: v16u8) -> v16u8 {
3167 __lsx_vdiv_bu(a, b)3167 unsafe { __lsx_vdiv_bu(a, b) }
3168}3168}
31693169
3170#[inline]3170#[inline]
3171#[target_feature(enable = "lsx")]3171#[target_feature(enable = "lsx")]
3172#[unstable(feature = "stdarch_loongarch", issue = "117427")]3172#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3173pub unsafe fn lsx_vdiv_hu(a: v8u16, b: v8u16) -> v8u16 {3173pub fn lsx_vdiv_hu(a: v8u16, b: v8u16) -> v8u16 {
3174 __lsx_vdiv_hu(a, b)3174 unsafe { __lsx_vdiv_hu(a, b) }
3175}3175}
31763176
3177#[inline]3177#[inline]
3178#[target_feature(enable = "lsx")]3178#[target_feature(enable = "lsx")]
3179#[unstable(feature = "stdarch_loongarch", issue = "117427")]3179#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3180pub unsafe fn lsx_vdiv_wu(a: v4u32, b: v4u32) -> v4u32 {3180pub fn lsx_vdiv_wu(a: v4u32, b: v4u32) -> v4u32 {
3181 __lsx_vdiv_wu(a, b)3181 unsafe { __lsx_vdiv_wu(a, b) }
3182}3182}
31833183
3184#[inline]3184#[inline]
3185#[target_feature(enable = "lsx")]3185#[target_feature(enable = "lsx")]
3186#[unstable(feature = "stdarch_loongarch", issue = "117427")]3186#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3187pub unsafe fn lsx_vdiv_du(a: v2u64, b: v2u64) -> v2u64 {3187pub fn lsx_vdiv_du(a: v2u64, b: v2u64) -> v2u64 {
3188 __lsx_vdiv_du(a, b)3188 unsafe { __lsx_vdiv_du(a, b) }
3189}3189}
31903190
3191#[inline]3191#[inline]
3192#[target_feature(enable = "lsx")]3192#[target_feature(enable = "lsx")]
3193#[unstable(feature = "stdarch_loongarch", issue = "117427")]3193#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3194pub unsafe fn lsx_vhaddw_h_b(a: v16i8, b: v16i8) -> v8i16 {3194pub fn lsx_vhaddw_h_b(a: v16i8, b: v16i8) -> v8i16 {
3195 __lsx_vhaddw_h_b(a, b)3195 unsafe { __lsx_vhaddw_h_b(a, b) }
3196}3196}
31973197
3198#[inline]3198#[inline]
3199#[target_feature(enable = "lsx")]3199#[target_feature(enable = "lsx")]
3200#[unstable(feature = "stdarch_loongarch", issue = "117427")]3200#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3201pub unsafe fn lsx_vhaddw_w_h(a: v8i16, b: v8i16) -> v4i32 {3201pub fn lsx_vhaddw_w_h(a: v8i16, b: v8i16) -> v4i32 {
3202 __lsx_vhaddw_w_h(a, b)3202 unsafe { __lsx_vhaddw_w_h(a, b) }
3203}3203}
32043204
3205#[inline]3205#[inline]
3206#[target_feature(enable = "lsx")]3206#[target_feature(enable = "lsx")]
3207#[unstable(feature = "stdarch_loongarch", issue = "117427")]3207#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3208pub unsafe fn lsx_vhaddw_d_w(a: v4i32, b: v4i32) -> v2i64 {3208pub fn lsx_vhaddw_d_w(a: v4i32, b: v4i32) -> v2i64 {
3209 __lsx_vhaddw_d_w(a, b)3209 unsafe { __lsx_vhaddw_d_w(a, b) }
3210}3210}
32113211
3212#[inline]3212#[inline]
3213#[target_feature(enable = "lsx")]3213#[target_feature(enable = "lsx")]
3214#[unstable(feature = "stdarch_loongarch", issue = "117427")]3214#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3215pub unsafe fn lsx_vhaddw_hu_bu(a: v16u8, b: v16u8) -> v8u16 {3215pub fn lsx_vhaddw_hu_bu(a: v16u8, b: v16u8) -> v8u16 {
3216 __lsx_vhaddw_hu_bu(a, b)3216 unsafe { __lsx_vhaddw_hu_bu(a, b) }
3217}3217}
32183218
3219#[inline]3219#[inline]
3220#[target_feature(enable = "lsx")]3220#[target_feature(enable = "lsx")]
3221#[unstable(feature = "stdarch_loongarch", issue = "117427")]3221#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3222pub unsafe fn lsx_vhaddw_wu_hu(a: v8u16, b: v8u16) -> v4u32 {3222pub fn lsx_vhaddw_wu_hu(a: v8u16, b: v8u16) -> v4u32 {
3223 __lsx_vhaddw_wu_hu(a, b)3223 unsafe { __lsx_vhaddw_wu_hu(a, b) }
3224}3224}
32253225
3226#[inline]3226#[inline]
3227#[target_feature(enable = "lsx")]3227#[target_feature(enable = "lsx")]
3228#[unstable(feature = "stdarch_loongarch", issue = "117427")]3228#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3229pub unsafe fn lsx_vhaddw_du_wu(a: v4u32, b: v4u32) -> v2u64 {3229pub fn lsx_vhaddw_du_wu(a: v4u32, b: v4u32) -> v2u64 {
3230 __lsx_vhaddw_du_wu(a, b)3230 unsafe { __lsx_vhaddw_du_wu(a, b) }
3231}3231}
32323232
3233#[inline]3233#[inline]
3234#[target_feature(enable = "lsx")]3234#[target_feature(enable = "lsx")]
3235#[unstable(feature = "stdarch_loongarch", issue = "117427")]3235#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3236pub unsafe fn lsx_vhsubw_h_b(a: v16i8, b: v16i8) -> v8i16 {3236pub fn lsx_vhsubw_h_b(a: v16i8, b: v16i8) -> v8i16 {
3237 __lsx_vhsubw_h_b(a, b)3237 unsafe { __lsx_vhsubw_h_b(a, b) }
3238}3238}
32393239
3240#[inline]3240#[inline]
3241#[target_feature(enable = "lsx")]3241#[target_feature(enable = "lsx")]
3242#[unstable(feature = "stdarch_loongarch", issue = "117427")]3242#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3243pub unsafe fn lsx_vhsubw_w_h(a: v8i16, b: v8i16) -> v4i32 {3243pub fn lsx_vhsubw_w_h(a: v8i16, b: v8i16) -> v4i32 {
3244 __lsx_vhsubw_w_h(a, b)3244 unsafe { __lsx_vhsubw_w_h(a, b) }
3245}3245}
32463246
3247#[inline]3247#[inline]
3248#[target_feature(enable = "lsx")]3248#[target_feature(enable = "lsx")]
3249#[unstable(feature = "stdarch_loongarch", issue = "117427")]3249#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3250pub unsafe fn lsx_vhsubw_d_w(a: v4i32, b: v4i32) -> v2i64 {3250pub fn lsx_vhsubw_d_w(a: v4i32, b: v4i32) -> v2i64 {
3251 __lsx_vhsubw_d_w(a, b)3251 unsafe { __lsx_vhsubw_d_w(a, b) }
3252}3252}
32533253
3254#[inline]3254#[inline]
3255#[target_feature(enable = "lsx")]3255#[target_feature(enable = "lsx")]
3256#[unstable(feature = "stdarch_loongarch", issue = "117427")]3256#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3257pub unsafe fn lsx_vhsubw_hu_bu(a: v16u8, b: v16u8) -> v8i16 {3257pub fn lsx_vhsubw_hu_bu(a: v16u8, b: v16u8) -> v8i16 {
3258 __lsx_vhsubw_hu_bu(a, b)3258 unsafe { __lsx_vhsubw_hu_bu(a, b) }
3259}3259}
32603260
3261#[inline]3261#[inline]
3262#[target_feature(enable = "lsx")]3262#[target_feature(enable = "lsx")]
3263#[unstable(feature = "stdarch_loongarch", issue = "117427")]3263#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3264pub unsafe fn lsx_vhsubw_wu_hu(a: v8u16, b: v8u16) -> v4i32 {3264pub fn lsx_vhsubw_wu_hu(a: v8u16, b: v8u16) -> v4i32 {
3265 __lsx_vhsubw_wu_hu(a, b)3265 unsafe { __lsx_vhsubw_wu_hu(a, b) }
3266}3266}
32673267
3268#[inline]3268#[inline]
3269#[target_feature(enable = "lsx")]3269#[target_feature(enable = "lsx")]
3270#[unstable(feature = "stdarch_loongarch", issue = "117427")]3270#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3271pub unsafe fn lsx_vhsubw_du_wu(a: v4u32, b: v4u32) -> v2i64 {3271pub fn lsx_vhsubw_du_wu(a: v4u32, b: v4u32) -> v2i64 {
3272 __lsx_vhsubw_du_wu(a, b)3272 unsafe { __lsx_vhsubw_du_wu(a, b) }
3273}3273}
32743274
3275#[inline]3275#[inline]
3276#[target_feature(enable = "lsx")]3276#[target_feature(enable = "lsx")]
3277#[unstable(feature = "stdarch_loongarch", issue = "117427")]3277#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3278pub unsafe fn lsx_vmod_b(a: v16i8, b: v16i8) -> v16i8 {3278pub fn lsx_vmod_b(a: v16i8, b: v16i8) -> v16i8 {
3279 __lsx_vmod_b(a, b)3279 unsafe { __lsx_vmod_b(a, b) }
3280}3280}
32813281
3282#[inline]3282#[inline]
3283#[target_feature(enable = "lsx")]3283#[target_feature(enable = "lsx")]
3284#[unstable(feature = "stdarch_loongarch", issue = "117427")]3284#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3285pub unsafe fn lsx_vmod_h(a: v8i16, b: v8i16) -> v8i16 {3285pub fn lsx_vmod_h(a: v8i16, b: v8i16) -> v8i16 {
3286 __lsx_vmod_h(a, b)3286 unsafe { __lsx_vmod_h(a, b) }
3287}3287}
32883288
3289#[inline]3289#[inline]
3290#[target_feature(enable = "lsx")]3290#[target_feature(enable = "lsx")]
3291#[unstable(feature = "stdarch_loongarch", issue = "117427")]3291#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3292pub unsafe fn lsx_vmod_w(a: v4i32, b: v4i32) -> v4i32 {3292pub fn lsx_vmod_w(a: v4i32, b: v4i32) -> v4i32 {
3293 __lsx_vmod_w(a, b)3293 unsafe { __lsx_vmod_w(a, b) }
3294}3294}
32953295
3296#[inline]3296#[inline]
3297#[target_feature(enable = "lsx")]3297#[target_feature(enable = "lsx")]
3298#[unstable(feature = "stdarch_loongarch", issue = "117427")]3298#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3299pub unsafe fn lsx_vmod_d(a: v2i64, b: v2i64) -> v2i64 {3299pub fn lsx_vmod_d(a: v2i64, b: v2i64) -> v2i64 {
3300 __lsx_vmod_d(a, b)3300 unsafe { __lsx_vmod_d(a, b) }
3301}3301}
33023302
3303#[inline]3303#[inline]
3304#[target_feature(enable = "lsx")]3304#[target_feature(enable = "lsx")]
3305#[unstable(feature = "stdarch_loongarch", issue = "117427")]3305#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3306pub unsafe fn lsx_vmod_bu(a: v16u8, b: v16u8) -> v16u8 {3306pub fn lsx_vmod_bu(a: v16u8, b: v16u8) -> v16u8 {
3307 __lsx_vmod_bu(a, b)3307 unsafe { __lsx_vmod_bu(a, b) }
3308}3308}
33093309
3310#[inline]3310#[inline]
3311#[target_feature(enable = "lsx")]3311#[target_feature(enable = "lsx")]
3312#[unstable(feature = "stdarch_loongarch", issue = "117427")]3312#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3313pub unsafe fn lsx_vmod_hu(a: v8u16, b: v8u16) -> v8u16 {3313pub fn lsx_vmod_hu(a: v8u16, b: v8u16) -> v8u16 {
3314 __lsx_vmod_hu(a, b)3314 unsafe { __lsx_vmod_hu(a, b) }
3315}3315}
33163316
3317#[inline]3317#[inline]
3318#[target_feature(enable = "lsx")]3318#[target_feature(enable = "lsx")]
3319#[unstable(feature = "stdarch_loongarch", issue = "117427")]3319#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3320pub unsafe fn lsx_vmod_wu(a: v4u32, b: v4u32) -> v4u32 {3320pub fn lsx_vmod_wu(a: v4u32, b: v4u32) -> v4u32 {
3321 __lsx_vmod_wu(a, b)3321 unsafe { __lsx_vmod_wu(a, b) }
3322}3322}
33233323
3324#[inline]3324#[inline]
3325#[target_feature(enable = "lsx")]3325#[target_feature(enable = "lsx")]
3326#[unstable(feature = "stdarch_loongarch", issue = "117427")]3326#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3327pub unsafe fn lsx_vmod_du(a: v2u64, b: v2u64) -> v2u64 {3327pub fn lsx_vmod_du(a: v2u64, b: v2u64) -> v2u64 {
3328 __lsx_vmod_du(a, b)3328 unsafe { __lsx_vmod_du(a, b) }
3329}3329}
33303330
3331#[inline]3331#[inline]
3332#[target_feature(enable = "lsx")]3332#[target_feature(enable = "lsx")]
3333#[unstable(feature = "stdarch_loongarch", issue = "117427")]3333#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3334pub unsafe fn lsx_vreplve_b(a: v16i8, b: i32) -> v16i8 {3334pub fn lsx_vreplve_b(a: v16i8, b: i32) -> v16i8 {
3335 __lsx_vreplve_b(a, b)3335 unsafe { __lsx_vreplve_b(a, b) }
3336}3336}
33373337
3338#[inline]3338#[inline]
3339#[target_feature(enable = "lsx")]3339#[target_feature(enable = "lsx")]
3340#[unstable(feature = "stdarch_loongarch", issue = "117427")]3340#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3341pub unsafe fn lsx_vreplve_h(a: v8i16, b: i32) -> v8i16 {3341pub fn lsx_vreplve_h(a: v8i16, b: i32) -> v8i16 {
3342 __lsx_vreplve_h(a, b)3342 unsafe { __lsx_vreplve_h(a, b) }
3343}3343}
33443344
3345#[inline]3345#[inline]
3346#[target_feature(enable = "lsx")]3346#[target_feature(enable = "lsx")]
3347#[unstable(feature = "stdarch_loongarch", issue = "117427")]3347#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3348pub unsafe fn lsx_vreplve_w(a: v4i32, b: i32) -> v4i32 {3348pub fn lsx_vreplve_w(a: v4i32, b: i32) -> v4i32 {
3349 __lsx_vreplve_w(a, b)3349 unsafe { __lsx_vreplve_w(a, b) }
3350}3350}
33513351
3352#[inline]3352#[inline]
3353#[target_feature(enable = "lsx")]3353#[target_feature(enable = "lsx")]
3354#[unstable(feature = "stdarch_loongarch", issue = "117427")]3354#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3355pub unsafe fn lsx_vreplve_d(a: v2i64, b: i32) -> v2i64 {3355pub fn lsx_vreplve_d(a: v2i64, b: i32) -> v2i64 {
3356 __lsx_vreplve_d(a, b)3356 unsafe { __lsx_vreplve_d(a, b) }
3357}3357}
33583358
3359#[inline]3359#[inline]
3360#[target_feature(enable = "lsx")]3360#[target_feature(enable = "lsx")]
3361#[rustc_legacy_const_generics(1)]3361#[rustc_legacy_const_generics(1)]
3362#[unstable(feature = "stdarch_loongarch", issue = "117427")]3362#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3363pub unsafe fn lsx_vreplvei_b<const IMM4: u32>(a: v16i8) -> v16i8 {3363pub fn lsx_vreplvei_b<const IMM4: u32>(a: v16i8) -> v16i8 {
3364 static_assert_uimm_bits!(IMM4, 4);3364 static_assert_uimm_bits!(IMM4, 4);
3365 __lsx_vreplvei_b(a, IMM4)3365 unsafe { __lsx_vreplvei_b(a, IMM4) }
3366}3366}
33673367
3368#[inline]3368#[inline]
3369#[target_feature(enable = "lsx")]3369#[target_feature(enable = "lsx")]
3370#[rustc_legacy_const_generics(1)]3370#[rustc_legacy_const_generics(1)]
3371#[unstable(feature = "stdarch_loongarch", issue = "117427")]3371#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3372pub unsafe fn lsx_vreplvei_h<const IMM3: u32>(a: v8i16) -> v8i16 {3372pub fn lsx_vreplvei_h<const IMM3: u32>(a: v8i16) -> v8i16 {
3373 static_assert_uimm_bits!(IMM3, 3);3373 static_assert_uimm_bits!(IMM3, 3);
3374 __lsx_vreplvei_h(a, IMM3)3374 unsafe { __lsx_vreplvei_h(a, IMM3) }
3375}3375}
33763376
3377#[inline]3377#[inline]
3378#[target_feature(enable = "lsx")]3378#[target_feature(enable = "lsx")]
3379#[rustc_legacy_const_generics(1)]3379#[rustc_legacy_const_generics(1)]
3380#[unstable(feature = "stdarch_loongarch", issue = "117427")]3380#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3381pub unsafe fn lsx_vreplvei_w<const IMM2: u32>(a: v4i32) -> v4i32 {3381pub fn lsx_vreplvei_w<const IMM2: u32>(a: v4i32) -> v4i32 {
3382 static_assert_uimm_bits!(IMM2, 2);3382 static_assert_uimm_bits!(IMM2, 2);
3383 __lsx_vreplvei_w(a, IMM2)3383 unsafe { __lsx_vreplvei_w(a, IMM2) }
3384}3384}
33853385
3386#[inline]3386#[inline]
3387#[target_feature(enable = "lsx")]3387#[target_feature(enable = "lsx")]
3388#[rustc_legacy_const_generics(1)]3388#[rustc_legacy_const_generics(1)]
3389#[unstable(feature = "stdarch_loongarch", issue = "117427")]3389#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3390pub unsafe fn lsx_vreplvei_d<const IMM1: u32>(a: v2i64) -> v2i64 {3390pub fn lsx_vreplvei_d<const IMM1: u32>(a: v2i64) -> v2i64 {
3391 static_assert_uimm_bits!(IMM1, 1);3391 static_assert_uimm_bits!(IMM1, 1);
3392 __lsx_vreplvei_d(a, IMM1)3392 unsafe { __lsx_vreplvei_d(a, IMM1) }
3393}3393}
33943394
3395#[inline]3395#[inline]
3396#[target_feature(enable = "lsx")]3396#[target_feature(enable = "lsx")]
3397#[unstable(feature = "stdarch_loongarch", issue = "117427")]3397#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3398pub unsafe fn lsx_vpickev_b(a: v16i8, b: v16i8) -> v16i8 {3398pub fn lsx_vpickev_b(a: v16i8, b: v16i8) -> v16i8 {
3399 __lsx_vpickev_b(a, b)3399 unsafe { __lsx_vpickev_b(a, b) }
3400}3400}
34013401
3402#[inline]3402#[inline]
3403#[target_feature(enable = "lsx")]3403#[target_feature(enable = "lsx")]
3404#[unstable(feature = "stdarch_loongarch", issue = "117427")]3404#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3405pub unsafe fn lsx_vpickev_h(a: v8i16, b: v8i16) -> v8i16 {3405pub fn lsx_vpickev_h(a: v8i16, b: v8i16) -> v8i16 {
3406 __lsx_vpickev_h(a, b)3406 unsafe { __lsx_vpickev_h(a, b) }
3407}3407}
34083408
3409#[inline]3409#[inline]
3410#[target_feature(enable = "lsx")]3410#[target_feature(enable = "lsx")]
3411#[unstable(feature = "stdarch_loongarch", issue = "117427")]3411#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3412pub unsafe fn lsx_vpickev_w(a: v4i32, b: v4i32) -> v4i32 {3412pub fn lsx_vpickev_w(a: v4i32, b: v4i32) -> v4i32 {
3413 __lsx_vpickev_w(a, b)3413 unsafe { __lsx_vpickev_w(a, b) }
3414}3414}
34153415
3416#[inline]3416#[inline]
3417#[target_feature(enable = "lsx")]3417#[target_feature(enable = "lsx")]
3418#[unstable(feature = "stdarch_loongarch", issue = "117427")]3418#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3419pub unsafe fn lsx_vpickev_d(a: v2i64, b: v2i64) -> v2i64 {3419pub fn lsx_vpickev_d(a: v2i64, b: v2i64) -> v2i64 {
3420 __lsx_vpickev_d(a, b)3420 unsafe { __lsx_vpickev_d(a, b) }
3421}3421}
34223422
3423#[inline]3423#[inline]
3424#[target_feature(enable = "lsx")]3424#[target_feature(enable = "lsx")]
3425#[unstable(feature = "stdarch_loongarch", issue = "117427")]3425#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3426pub unsafe fn lsx_vpickod_b(a: v16i8, b: v16i8) -> v16i8 {3426pub fn lsx_vpickod_b(a: v16i8, b: v16i8) -> v16i8 {
3427 __lsx_vpickod_b(a, b)3427 unsafe { __lsx_vpickod_b(a, b) }
3428}3428}
34293429
3430#[inline]3430#[inline]
3431#[target_feature(enable = "lsx")]3431#[target_feature(enable = "lsx")]
3432#[unstable(feature = "stdarch_loongarch", issue = "117427")]3432#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3433pub unsafe fn lsx_vpickod_h(a: v8i16, b: v8i16) -> v8i16 {3433pub fn lsx_vpickod_h(a: v8i16, b: v8i16) -> v8i16 {
3434 __lsx_vpickod_h(a, b)3434 unsafe { __lsx_vpickod_h(a, b) }
3435}3435}
34363436
3437#[inline]3437#[inline]
3438#[target_feature(enable = "lsx")]3438#[target_feature(enable = "lsx")]
3439#[unstable(feature = "stdarch_loongarch", issue = "117427")]3439#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3440pub unsafe fn lsx_vpickod_w(a: v4i32, b: v4i32) -> v4i32 {3440pub fn lsx_vpickod_w(a: v4i32, b: v4i32) -> v4i32 {
3441 __lsx_vpickod_w(a, b)3441 unsafe { __lsx_vpickod_w(a, b) }
3442}3442}
34433443
3444#[inline]3444#[inline]
3445#[target_feature(enable = "lsx")]3445#[target_feature(enable = "lsx")]
3446#[unstable(feature = "stdarch_loongarch", issue = "117427")]3446#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3447pub unsafe fn lsx_vpickod_d(a: v2i64, b: v2i64) -> v2i64 {3447pub fn lsx_vpickod_d(a: v2i64, b: v2i64) -> v2i64 {
3448 __lsx_vpickod_d(a, b)3448 unsafe { __lsx_vpickod_d(a, b) }
3449}3449}
34503450
3451#[inline]3451#[inline]
3452#[target_feature(enable = "lsx")]3452#[target_feature(enable = "lsx")]
3453#[unstable(feature = "stdarch_loongarch", issue = "117427")]3453#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3454pub unsafe fn lsx_vilvh_b(a: v16i8, b: v16i8) -> v16i8 {3454pub fn lsx_vilvh_b(a: v16i8, b: v16i8) -> v16i8 {
3455 __lsx_vilvh_b(a, b)3455 unsafe { __lsx_vilvh_b(a, b) }
3456}3456}
34573457
3458#[inline]3458#[inline]
3459#[target_feature(enable = "lsx")]3459#[target_feature(enable = "lsx")]
3460#[unstable(feature = "stdarch_loongarch", issue = "117427")]3460#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3461pub unsafe fn lsx_vilvh_h(a: v8i16, b: v8i16) -> v8i16 {3461pub fn lsx_vilvh_h(a: v8i16, b: v8i16) -> v8i16 {
3462 __lsx_vilvh_h(a, b)3462 unsafe { __lsx_vilvh_h(a, b) }
3463}3463}
34643464
3465#[inline]3465#[inline]
3466#[target_feature(enable = "lsx")]3466#[target_feature(enable = "lsx")]
3467#[unstable(feature = "stdarch_loongarch", issue = "117427")]3467#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3468pub unsafe fn lsx_vilvh_w(a: v4i32, b: v4i32) -> v4i32 {3468pub fn lsx_vilvh_w(a: v4i32, b: v4i32) -> v4i32 {
3469 __lsx_vilvh_w(a, b)3469 unsafe { __lsx_vilvh_w(a, b) }
3470}3470}
34713471
3472#[inline]3472#[inline]
3473#[target_feature(enable = "lsx")]3473#[target_feature(enable = "lsx")]
3474#[unstable(feature = "stdarch_loongarch", issue = "117427")]3474#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3475pub unsafe fn lsx_vilvh_d(a: v2i64, b: v2i64) -> v2i64 {3475pub fn lsx_vilvh_d(a: v2i64, b: v2i64) -> v2i64 {
3476 __lsx_vilvh_d(a, b)3476 unsafe { __lsx_vilvh_d(a, b) }
3477}3477}
34783478
3479#[inline]3479#[inline]
3480#[target_feature(enable = "lsx")]3480#[target_feature(enable = "lsx")]
3481#[unstable(feature = "stdarch_loongarch", issue = "117427")]3481#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3482pub unsafe fn lsx_vilvl_b(a: v16i8, b: v16i8) -> v16i8 {3482pub fn lsx_vilvl_b(a: v16i8, b: v16i8) -> v16i8 {
3483 __lsx_vilvl_b(a, b)3483 unsafe { __lsx_vilvl_b(a, b) }
3484}3484}
34853485
3486#[inline]3486#[inline]
3487#[target_feature(enable = "lsx")]3487#[target_feature(enable = "lsx")]
3488#[unstable(feature = "stdarch_loongarch", issue = "117427")]3488#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3489pub unsafe fn lsx_vilvl_h(a: v8i16, b: v8i16) -> v8i16 {3489pub fn lsx_vilvl_h(a: v8i16, b: v8i16) -> v8i16 {
3490 __lsx_vilvl_h(a, b)3490 unsafe { __lsx_vilvl_h(a, b) }
3491}3491}
34923492
3493#[inline]3493#[inline]
3494#[target_feature(enable = "lsx")]3494#[target_feature(enable = "lsx")]
3495#[unstable(feature = "stdarch_loongarch", issue = "117427")]3495#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3496pub unsafe fn lsx_vilvl_w(a: v4i32, b: v4i32) -> v4i32 {3496pub fn lsx_vilvl_w(a: v4i32, b: v4i32) -> v4i32 {
3497 __lsx_vilvl_w(a, b)3497 unsafe { __lsx_vilvl_w(a, b) }
3498}3498}
34993499
3500#[inline]3500#[inline]
3501#[target_feature(enable = "lsx")]3501#[target_feature(enable = "lsx")]
3502#[unstable(feature = "stdarch_loongarch", issue = "117427")]3502#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3503pub unsafe fn lsx_vilvl_d(a: v2i64, b: v2i64) -> v2i64 {3503pub fn lsx_vilvl_d(a: v2i64, b: v2i64) -> v2i64 {
3504 __lsx_vilvl_d(a, b)3504 unsafe { __lsx_vilvl_d(a, b) }
3505}3505}
35063506
3507#[inline]3507#[inline]
3508#[target_feature(enable = "lsx")]3508#[target_feature(enable = "lsx")]
3509#[unstable(feature = "stdarch_loongarch", issue = "117427")]3509#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3510pub unsafe fn lsx_vpackev_b(a: v16i8, b: v16i8) -> v16i8 {3510pub fn lsx_vpackev_b(a: v16i8, b: v16i8) -> v16i8 {
3511 __lsx_vpackev_b(a, b)3511 unsafe { __lsx_vpackev_b(a, b) }
3512}3512}
35133513
3514#[inline]3514#[inline]
3515#[target_feature(enable = "lsx")]3515#[target_feature(enable = "lsx")]
3516#[unstable(feature = "stdarch_loongarch", issue = "117427")]3516#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3517pub unsafe fn lsx_vpackev_h(a: v8i16, b: v8i16) -> v8i16 {3517pub fn lsx_vpackev_h(a: v8i16, b: v8i16) -> v8i16 {
3518 __lsx_vpackev_h(a, b)3518 unsafe { __lsx_vpackev_h(a, b) }
3519}3519}
35203520
3521#[inline]3521#[inline]
3522#[target_feature(enable = "lsx")]3522#[target_feature(enable = "lsx")]
3523#[unstable(feature = "stdarch_loongarch", issue = "117427")]3523#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3524pub unsafe fn lsx_vpackev_w(a: v4i32, b: v4i32) -> v4i32 {3524pub fn lsx_vpackev_w(a: v4i32, b: v4i32) -> v4i32 {
3525 __lsx_vpackev_w(a, b)3525 unsafe { __lsx_vpackev_w(a, b) }
3526}3526}
35273527
3528#[inline]3528#[inline]
3529#[target_feature(enable = "lsx")]3529#[target_feature(enable = "lsx")]
3530#[unstable(feature = "stdarch_loongarch", issue = "117427")]3530#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3531pub unsafe fn lsx_vpackev_d(a: v2i64, b: v2i64) -> v2i64 {3531pub fn lsx_vpackev_d(a: v2i64, b: v2i64) -> v2i64 {
3532 __lsx_vpackev_d(a, b)3532 unsafe { __lsx_vpackev_d(a, b) }
3533}3533}
35343534
3535#[inline]3535#[inline]
3536#[target_feature(enable = "lsx")]3536#[target_feature(enable = "lsx")]
3537#[unstable(feature = "stdarch_loongarch", issue = "117427")]3537#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3538pub unsafe fn lsx_vpackod_b(a: v16i8, b: v16i8) -> v16i8 {3538pub fn lsx_vpackod_b(a: v16i8, b: v16i8) -> v16i8 {
3539 __lsx_vpackod_b(a, b)3539 unsafe { __lsx_vpackod_b(a, b) }
3540}3540}
35413541
3542#[inline]3542#[inline]
3543#[target_feature(enable = "lsx")]3543#[target_feature(enable = "lsx")]
3544#[unstable(feature = "stdarch_loongarch", issue = "117427")]3544#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3545pub unsafe fn lsx_vpackod_h(a: v8i16, b: v8i16) -> v8i16 {3545pub fn lsx_vpackod_h(a: v8i16, b: v8i16) -> v8i16 {
3546 __lsx_vpackod_h(a, b)3546 unsafe { __lsx_vpackod_h(a, b) }
3547}3547}
35483548
3549#[inline]3549#[inline]
3550#[target_feature(enable = "lsx")]3550#[target_feature(enable = "lsx")]
3551#[unstable(feature = "stdarch_loongarch", issue = "117427")]3551#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3552pub unsafe fn lsx_vpackod_w(a: v4i32, b: v4i32) -> v4i32 {3552pub fn lsx_vpackod_w(a: v4i32, b: v4i32) -> v4i32 {
3553 __lsx_vpackod_w(a, b)3553 unsafe { __lsx_vpackod_w(a, b) }
3554}3554}
35553555
3556#[inline]3556#[inline]
3557#[target_feature(enable = "lsx")]3557#[target_feature(enable = "lsx")]
3558#[unstable(feature = "stdarch_loongarch", issue = "117427")]3558#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3559pub unsafe fn lsx_vpackod_d(a: v2i64, b: v2i64) -> v2i64 {3559pub fn lsx_vpackod_d(a: v2i64, b: v2i64) -> v2i64 {
3560 __lsx_vpackod_d(a, b)3560 unsafe { __lsx_vpackod_d(a, b) }
3561}3561}
35623562
3563#[inline]3563#[inline]
3564#[target_feature(enable = "lsx")]3564#[target_feature(enable = "lsx")]
3565#[unstable(feature = "stdarch_loongarch", issue = "117427")]3565#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3566pub unsafe fn lsx_vshuf_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {3566pub fn lsx_vshuf_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
3567 __lsx_vshuf_h(a, b, c)3567 unsafe { __lsx_vshuf_h(a, b, c) }
3568}3568}
35693569
3570#[inline]3570#[inline]
3571#[target_feature(enable = "lsx")]3571#[target_feature(enable = "lsx")]
3572#[unstable(feature = "stdarch_loongarch", issue = "117427")]3572#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3573pub unsafe fn lsx_vshuf_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {3573pub fn lsx_vshuf_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
3574 __lsx_vshuf_w(a, b, c)3574 unsafe { __lsx_vshuf_w(a, b, c) }
3575}3575}
35763576
3577#[inline]3577#[inline]
3578#[target_feature(enable = "lsx")]3578#[target_feature(enable = "lsx")]
3579#[unstable(feature = "stdarch_loongarch", issue = "117427")]3579#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3580pub unsafe fn lsx_vshuf_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {3580pub fn lsx_vshuf_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
3581 __lsx_vshuf_d(a, b, c)3581 unsafe { __lsx_vshuf_d(a, b, c) }
3582}3582}
35833583
3584#[inline]3584#[inline]
3585#[target_feature(enable = "lsx")]3585#[target_feature(enable = "lsx")]
3586#[unstable(feature = "stdarch_loongarch", issue = "117427")]3586#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3587pub unsafe fn lsx_vand_v(a: v16u8, b: v16u8) -> v16u8 {3587pub fn lsx_vand_v(a: v16u8, b: v16u8) -> v16u8 {
3588 __lsx_vand_v(a, b)3588 unsafe { __lsx_vand_v(a, b) }
3589}3589}
35903590
3591#[inline]3591#[inline]
3592#[target_feature(enable = "lsx")]3592#[target_feature(enable = "lsx")]
3593#[rustc_legacy_const_generics(1)]3593#[rustc_legacy_const_generics(1)]
3594#[unstable(feature = "stdarch_loongarch", issue = "117427")]3594#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3595pub unsafe fn lsx_vandi_b<const IMM8: u32>(a: v16u8) -> v16u8 {3595pub fn lsx_vandi_b<const IMM8: u32>(a: v16u8) -> v16u8 {
3596 static_assert_uimm_bits!(IMM8, 8);3596 static_assert_uimm_bits!(IMM8, 8);
3597 __lsx_vandi_b(a, IMM8)3597 unsafe { __lsx_vandi_b(a, IMM8) }
3598}3598}
35993599
3600#[inline]3600#[inline]
3601#[target_feature(enable = "lsx")]3601#[target_feature(enable = "lsx")]
3602#[unstable(feature = "stdarch_loongarch", issue = "117427")]3602#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3603pub unsafe fn lsx_vor_v(a: v16u8, b: v16u8) -> v16u8 {3603pub fn lsx_vor_v(a: v16u8, b: v16u8) -> v16u8 {
3604 __lsx_vor_v(a, b)3604 unsafe { __lsx_vor_v(a, b) }
3605}3605}
36063606
3607#[inline]3607#[inline]
3608#[target_feature(enable = "lsx")]3608#[target_feature(enable = "lsx")]
3609#[rustc_legacy_const_generics(1)]3609#[rustc_legacy_const_generics(1)]
3610#[unstable(feature = "stdarch_loongarch", issue = "117427")]3610#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3611pub unsafe fn lsx_vori_b<const IMM8: u32>(a: v16u8) -> v16u8 {3611pub fn lsx_vori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
3612 static_assert_uimm_bits!(IMM8, 8);3612 static_assert_uimm_bits!(IMM8, 8);
3613 __lsx_vori_b(a, IMM8)3613 unsafe { __lsx_vori_b(a, IMM8) }
3614}3614}
36153615
3616#[inline]3616#[inline]
3617#[target_feature(enable = "lsx")]3617#[target_feature(enable = "lsx")]
3618#[unstable(feature = "stdarch_loongarch", issue = "117427")]3618#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3619pub unsafe fn lsx_vnor_v(a: v16u8, b: v16u8) -> v16u8 {3619pub fn lsx_vnor_v(a: v16u8, b: v16u8) -> v16u8 {
3620 __lsx_vnor_v(a, b)3620 unsafe { __lsx_vnor_v(a, b) }
3621}3621}
36223622
3623#[inline]3623#[inline]
3624#[target_feature(enable = "lsx")]3624#[target_feature(enable = "lsx")]
3625#[rustc_legacy_const_generics(1)]3625#[rustc_legacy_const_generics(1)]
3626#[unstable(feature = "stdarch_loongarch", issue = "117427")]3626#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3627pub unsafe fn lsx_vnori_b<const IMM8: u32>(a: v16u8) -> v16u8 {3627pub fn lsx_vnori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
3628 static_assert_uimm_bits!(IMM8, 8);3628 static_assert_uimm_bits!(IMM8, 8);
3629 __lsx_vnori_b(a, IMM8)3629 unsafe { __lsx_vnori_b(a, IMM8) }
3630}3630}
36313631
3632#[inline]3632#[inline]
3633#[target_feature(enable = "lsx")]3633#[target_feature(enable = "lsx")]
3634#[unstable(feature = "stdarch_loongarch", issue = "117427")]3634#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3635pub unsafe fn lsx_vxor_v(a: v16u8, b: v16u8) -> v16u8 {3635pub fn lsx_vxor_v(a: v16u8, b: v16u8) -> v16u8 {
3636 __lsx_vxor_v(a, b)3636 unsafe { __lsx_vxor_v(a, b) }
3637}3637}
36383638
3639#[inline]3639#[inline]
3640#[target_feature(enable = "lsx")]3640#[target_feature(enable = "lsx")]
3641#[rustc_legacy_const_generics(1)]3641#[rustc_legacy_const_generics(1)]
3642#[unstable(feature = "stdarch_loongarch", issue = "117427")]3642#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3643pub unsafe fn lsx_vxori_b<const IMM8: u32>(a: v16u8) -> v16u8 {3643pub fn lsx_vxori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
3644 static_assert_uimm_bits!(IMM8, 8);3644 static_assert_uimm_bits!(IMM8, 8);
3645 __lsx_vxori_b(a, IMM8)3645 unsafe { __lsx_vxori_b(a, IMM8) }
3646}3646}
36473647
3648#[inline]3648#[inline]
3649#[target_feature(enable = "lsx")]3649#[target_feature(enable = "lsx")]
3650#[unstable(feature = "stdarch_loongarch", issue = "117427")]3650#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3651pub unsafe fn lsx_vbitsel_v(a: v16u8, b: v16u8, c: v16u8) -> v16u8 {3651pub fn lsx_vbitsel_v(a: v16u8, b: v16u8, c: v16u8) -> v16u8 {
3652 __lsx_vbitsel_v(a, b, c)3652 unsafe { __lsx_vbitsel_v(a, b, c) }
3653}3653}
36543654
3655#[inline]3655#[inline]
3656#[target_feature(enable = "lsx")]3656#[target_feature(enable = "lsx")]
3657#[rustc_legacy_const_generics(2)]3657#[rustc_legacy_const_generics(2)]
3658#[unstable(feature = "stdarch_loongarch", issue = "117427")]3658#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3659pub unsafe fn lsx_vbitseli_b<const IMM8: u32>(a: v16u8, b: v16u8) -> v16u8 {3659pub fn lsx_vbitseli_b<const IMM8: u32>(a: v16u8, b: v16u8) -> v16u8 {
3660 static_assert_uimm_bits!(IMM8, 8);3660 static_assert_uimm_bits!(IMM8, 8);
3661 __lsx_vbitseli_b(a, b, IMM8)3661 unsafe { __lsx_vbitseli_b(a, b, IMM8) }
3662}3662}
36633663
3664#[inline]3664#[inline]
3665#[target_feature(enable = "lsx")]3665#[target_feature(enable = "lsx")]
3666#[rustc_legacy_const_generics(1)]3666#[rustc_legacy_const_generics(1)]
3667#[unstable(feature = "stdarch_loongarch", issue = "117427")]3667#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3668pub unsafe fn lsx_vshuf4i_b<const IMM8: u32>(a: v16i8) -> v16i8 {3668pub fn lsx_vshuf4i_b<const IMM8: u32>(a: v16i8) -> v16i8 {
3669 static_assert_uimm_bits!(IMM8, 8);3669 static_assert_uimm_bits!(IMM8, 8);
3670 __lsx_vshuf4i_b(a, IMM8)3670 unsafe { __lsx_vshuf4i_b(a, IMM8) }
3671}3671}
36723672
3673#[inline]3673#[inline]
3674#[target_feature(enable = "lsx")]3674#[target_feature(enable = "lsx")]
3675#[rustc_legacy_const_generics(1)]3675#[rustc_legacy_const_generics(1)]
3676#[unstable(feature = "stdarch_loongarch", issue = "117427")]3676#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3677pub unsafe fn lsx_vshuf4i_h<const IMM8: u32>(a: v8i16) -> v8i16 {3677pub fn lsx_vshuf4i_h<const IMM8: u32>(a: v8i16) -> v8i16 {
3678 static_assert_uimm_bits!(IMM8, 8);3678 static_assert_uimm_bits!(IMM8, 8);
3679 __lsx_vshuf4i_h(a, IMM8)3679 unsafe { __lsx_vshuf4i_h(a, IMM8) }
3680}3680}
36813681
3682#[inline]3682#[inline]
3683#[target_feature(enable = "lsx")]3683#[target_feature(enable = "lsx")]
3684#[rustc_legacy_const_generics(1)]3684#[rustc_legacy_const_generics(1)]
3685#[unstable(feature = "stdarch_loongarch", issue = "117427")]3685#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3686pub unsafe fn lsx_vshuf4i_w<const IMM8: u32>(a: v4i32) -> v4i32 {3686pub fn lsx_vshuf4i_w<const IMM8: u32>(a: v4i32) -> v4i32 {
3687 static_assert_uimm_bits!(IMM8, 8);3687 static_assert_uimm_bits!(IMM8, 8);
3688 __lsx_vshuf4i_w(a, IMM8)3688 unsafe { __lsx_vshuf4i_w(a, IMM8) }
3689}3689}
36903690
3691#[inline]3691#[inline]
3692#[target_feature(enable = "lsx")]3692#[target_feature(enable = "lsx")]
3693#[unstable(feature = "stdarch_loongarch", issue = "117427")]3693#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3694pub unsafe fn lsx_vreplgr2vr_b(a: i32) -> v16i8 {3694pub fn lsx_vreplgr2vr_b(a: i32) -> v16i8 {
3695 __lsx_vreplgr2vr_b(a)3695 unsafe { __lsx_vreplgr2vr_b(a) }
3696}3696}
36973697
3698#[inline]3698#[inline]
3699#[target_feature(enable = "lsx")]3699#[target_feature(enable = "lsx")]
3700#[unstable(feature = "stdarch_loongarch", issue = "117427")]3700#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3701pub unsafe fn lsx_vreplgr2vr_h(a: i32) -> v8i16 {3701pub fn lsx_vreplgr2vr_h(a: i32) -> v8i16 {
3702 __lsx_vreplgr2vr_h(a)3702 unsafe { __lsx_vreplgr2vr_h(a) }
3703}3703}
37043704
3705#[inline]3705#[inline]
3706#[target_feature(enable = "lsx")]3706#[target_feature(enable = "lsx")]
3707#[unstable(feature = "stdarch_loongarch", issue = "117427")]3707#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3708pub unsafe fn lsx_vreplgr2vr_w(a: i32) -> v4i32 {3708pub fn lsx_vreplgr2vr_w(a: i32) -> v4i32 {
3709 __lsx_vreplgr2vr_w(a)3709 unsafe { __lsx_vreplgr2vr_w(a) }
3710}3710}
37113711
3712#[inline]3712#[inline]
3713#[target_feature(enable = "lsx")]3713#[target_feature(enable = "lsx")]
3714#[unstable(feature = "stdarch_loongarch", issue = "117427")]3714#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3715pub unsafe fn lsx_vreplgr2vr_d(a: i64) -> v2i64 {3715pub fn lsx_vreplgr2vr_d(a: i64) -> v2i64 {
3716 __lsx_vreplgr2vr_d(a)3716 unsafe { __lsx_vreplgr2vr_d(a) }
3717}3717}
37183718
3719#[inline]3719#[inline]
3720#[target_feature(enable = "lsx")]3720#[target_feature(enable = "lsx")]
3721#[unstable(feature = "stdarch_loongarch", issue = "117427")]3721#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3722pub unsafe fn lsx_vpcnt_b(a: v16i8) -> v16i8 {3722pub fn lsx_vpcnt_b(a: v16i8) -> v16i8 {
3723 __lsx_vpcnt_b(a)3723 unsafe { __lsx_vpcnt_b(a) }
3724}3724}
37253725
3726#[inline]3726#[inline]
3727#[target_feature(enable = "lsx")]3727#[target_feature(enable = "lsx")]
3728#[unstable(feature = "stdarch_loongarch", issue = "117427")]3728#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3729pub unsafe fn lsx_vpcnt_h(a: v8i16) -> v8i16 {3729pub fn lsx_vpcnt_h(a: v8i16) -> v8i16 {
3730 __lsx_vpcnt_h(a)3730 unsafe { __lsx_vpcnt_h(a) }
3731}3731}
37323732
3733#[inline]3733#[inline]
3734#[target_feature(enable = "lsx")]3734#[target_feature(enable = "lsx")]
3735#[unstable(feature = "stdarch_loongarch", issue = "117427")]3735#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3736pub unsafe fn lsx_vpcnt_w(a: v4i32) -> v4i32 {3736pub fn lsx_vpcnt_w(a: v4i32) -> v4i32 {
3737 __lsx_vpcnt_w(a)3737 unsafe { __lsx_vpcnt_w(a) }
3738}3738}
37393739
3740#[inline]3740#[inline]
3741#[target_feature(enable = "lsx")]3741#[target_feature(enable = "lsx")]
3742#[unstable(feature = "stdarch_loongarch", issue = "117427")]3742#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3743pub unsafe fn lsx_vpcnt_d(a: v2i64) -> v2i64 {3743pub fn lsx_vpcnt_d(a: v2i64) -> v2i64 {
3744 __lsx_vpcnt_d(a)3744 unsafe { __lsx_vpcnt_d(a) }
3745}3745}
37463746
3747#[inline]3747#[inline]
3748#[target_feature(enable = "lsx")]3748#[target_feature(enable = "lsx")]
3749#[unstable(feature = "stdarch_loongarch", issue = "117427")]3749#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3750pub unsafe fn lsx_vclo_b(a: v16i8) -> v16i8 {3750pub fn lsx_vclo_b(a: v16i8) -> v16i8 {
3751 __lsx_vclo_b(a)3751 unsafe { __lsx_vclo_b(a) }
3752}3752}
37533753
3754#[inline]3754#[inline]
3755#[target_feature(enable = "lsx")]3755#[target_feature(enable = "lsx")]
3756#[unstable(feature = "stdarch_loongarch", issue = "117427")]3756#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3757pub unsafe fn lsx_vclo_h(a: v8i16) -> v8i16 {3757pub fn lsx_vclo_h(a: v8i16) -> v8i16 {
3758 __lsx_vclo_h(a)3758 unsafe { __lsx_vclo_h(a) }
3759}3759}
37603760
3761#[inline]3761#[inline]
3762#[target_feature(enable = "lsx")]3762#[target_feature(enable = "lsx")]
3763#[unstable(feature = "stdarch_loongarch", issue = "117427")]3763#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3764pub unsafe fn lsx_vclo_w(a: v4i32) -> v4i32 {3764pub fn lsx_vclo_w(a: v4i32) -> v4i32 {
3765 __lsx_vclo_w(a)3765 unsafe { __lsx_vclo_w(a) }
3766}3766}
37673767
3768#[inline]3768#[inline]
3769#[target_feature(enable = "lsx")]3769#[target_feature(enable = "lsx")]
3770#[unstable(feature = "stdarch_loongarch", issue = "117427")]3770#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3771pub unsafe fn lsx_vclo_d(a: v2i64) -> v2i64 {3771pub fn lsx_vclo_d(a: v2i64) -> v2i64 {
3772 __lsx_vclo_d(a)3772 unsafe { __lsx_vclo_d(a) }
3773}3773}
37743774
3775#[inline]3775#[inline]
3776#[target_feature(enable = "lsx")]3776#[target_feature(enable = "lsx")]
3777#[unstable(feature = "stdarch_loongarch", issue = "117427")]3777#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3778pub unsafe fn lsx_vclz_b(a: v16i8) -> v16i8 {3778pub fn lsx_vclz_b(a: v16i8) -> v16i8 {
3779 __lsx_vclz_b(a)3779 unsafe { __lsx_vclz_b(a) }
3780}3780}
37813781
3782#[inline]3782#[inline]
3783#[target_feature(enable = "lsx")]3783#[target_feature(enable = "lsx")]
3784#[unstable(feature = "stdarch_loongarch", issue = "117427")]3784#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3785pub unsafe fn lsx_vclz_h(a: v8i16) -> v8i16 {3785pub fn lsx_vclz_h(a: v8i16) -> v8i16 {
3786 __lsx_vclz_h(a)3786 unsafe { __lsx_vclz_h(a) }
3787}3787}
37883788
3789#[inline]3789#[inline]
3790#[target_feature(enable = "lsx")]3790#[target_feature(enable = "lsx")]
3791#[unstable(feature = "stdarch_loongarch", issue = "117427")]3791#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3792pub unsafe fn lsx_vclz_w(a: v4i32) -> v4i32 {3792pub fn lsx_vclz_w(a: v4i32) -> v4i32 {
3793 __lsx_vclz_w(a)3793 unsafe { __lsx_vclz_w(a) }
3794}3794}
37953795
3796#[inline]3796#[inline]
3797#[target_feature(enable = "lsx")]3797#[target_feature(enable = "lsx")]
3798#[unstable(feature = "stdarch_loongarch", issue = "117427")]3798#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3799pub unsafe fn lsx_vclz_d(a: v2i64) -> v2i64 {3799pub fn lsx_vclz_d(a: v2i64) -> v2i64 {
3800 __lsx_vclz_d(a)3800 unsafe { __lsx_vclz_d(a) }
3801}3801}
38023802
3803#[inline]3803#[inline]
3804#[target_feature(enable = "lsx")]3804#[target_feature(enable = "lsx")]
3805#[rustc_legacy_const_generics(1)]3805#[rustc_legacy_const_generics(1)]
3806#[unstable(feature = "stdarch_loongarch", issue = "117427")]3806#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3807pub unsafe fn lsx_vpickve2gr_b<const IMM4: u32>(a: v16i8) -> i32 {3807pub fn lsx_vpickve2gr_b<const IMM4: u32>(a: v16i8) -> i32 {
3808 static_assert_uimm_bits!(IMM4, 4);3808 static_assert_uimm_bits!(IMM4, 4);
3809 __lsx_vpickve2gr_b(a, IMM4)3809 unsafe { __lsx_vpickve2gr_b(a, IMM4) }
3810}3810}
38113811
3812#[inline]3812#[inline]
3813#[target_feature(enable = "lsx")]3813#[target_feature(enable = "lsx")]
3814#[rustc_legacy_const_generics(1)]3814#[rustc_legacy_const_generics(1)]
3815#[unstable(feature = "stdarch_loongarch", issue = "117427")]3815#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3816pub unsafe fn lsx_vpickve2gr_h<const IMM3: u32>(a: v8i16) -> i32 {3816pub fn lsx_vpickve2gr_h<const IMM3: u32>(a: v8i16) -> i32 {
3817 static_assert_uimm_bits!(IMM3, 3);3817 static_assert_uimm_bits!(IMM3, 3);
3818 __lsx_vpickve2gr_h(a, IMM3)3818 unsafe { __lsx_vpickve2gr_h(a, IMM3) }
3819}3819}
38203820
3821#[inline]3821#[inline]
3822#[target_feature(enable = "lsx")]3822#[target_feature(enable = "lsx")]
3823#[rustc_legacy_const_generics(1)]3823#[rustc_legacy_const_generics(1)]
3824#[unstable(feature = "stdarch_loongarch", issue = "117427")]3824#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3825pub unsafe fn lsx_vpickve2gr_w<const IMM2: u32>(a: v4i32) -> i32 {3825pub fn lsx_vpickve2gr_w<const IMM2: u32>(a: v4i32) -> i32 {
3826 static_assert_uimm_bits!(IMM2, 2);3826 static_assert_uimm_bits!(IMM2, 2);
3827 __lsx_vpickve2gr_w(a, IMM2)3827 unsafe { __lsx_vpickve2gr_w(a, IMM2) }
3828}3828}
38293829
3830#[inline]3830#[inline]
3831#[target_feature(enable = "lsx")]3831#[target_feature(enable = "lsx")]
3832#[rustc_legacy_const_generics(1)]3832#[rustc_legacy_const_generics(1)]
3833#[unstable(feature = "stdarch_loongarch", issue = "117427")]3833#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3834pub unsafe fn lsx_vpickve2gr_d<const IMM1: u32>(a: v2i64) -> i64 {3834pub fn lsx_vpickve2gr_d<const IMM1: u32>(a: v2i64) -> i64 {
3835 static_assert_uimm_bits!(IMM1, 1);3835 static_assert_uimm_bits!(IMM1, 1);
3836 __lsx_vpickve2gr_d(a, IMM1)3836 unsafe { __lsx_vpickve2gr_d(a, IMM1) }
3837}3837}
38383838
3839#[inline]3839#[inline]
3840#[target_feature(enable = "lsx")]3840#[target_feature(enable = "lsx")]
3841#[rustc_legacy_const_generics(1)]3841#[rustc_legacy_const_generics(1)]
3842#[unstable(feature = "stdarch_loongarch", issue = "117427")]3842#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3843pub unsafe fn lsx_vpickve2gr_bu<const IMM4: u32>(a: v16i8) -> u32 {3843pub fn lsx_vpickve2gr_bu<const IMM4: u32>(a: v16i8) -> u32 {
3844 static_assert_uimm_bits!(IMM4, 4);3844 static_assert_uimm_bits!(IMM4, 4);
3845 __lsx_vpickve2gr_bu(a, IMM4)3845 unsafe { __lsx_vpickve2gr_bu(a, IMM4) }
3846}3846}
38473847
3848#[inline]3848#[inline]
3849#[target_feature(enable = "lsx")]3849#[target_feature(enable = "lsx")]
3850#[rustc_legacy_const_generics(1)]3850#[rustc_legacy_const_generics(1)]
3851#[unstable(feature = "stdarch_loongarch", issue = "117427")]3851#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3852pub unsafe fn lsx_vpickve2gr_hu<const IMM3: u32>(a: v8i16) -> u32 {3852pub fn lsx_vpickve2gr_hu<const IMM3: u32>(a: v8i16) -> u32 {
3853 static_assert_uimm_bits!(IMM3, 3);3853 static_assert_uimm_bits!(IMM3, 3);
3854 __lsx_vpickve2gr_hu(a, IMM3)3854 unsafe { __lsx_vpickve2gr_hu(a, IMM3) }
3855}3855}
38563856
3857#[inline]3857#[inline]
3858#[target_feature(enable = "lsx")]3858#[target_feature(enable = "lsx")]
3859#[rustc_legacy_const_generics(1)]3859#[rustc_legacy_const_generics(1)]
3860#[unstable(feature = "stdarch_loongarch", issue = "117427")]3860#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3861pub unsafe fn lsx_vpickve2gr_wu<const IMM2: u32>(a: v4i32) -> u32 {3861pub fn lsx_vpickve2gr_wu<const IMM2: u32>(a: v4i32) -> u32 {
3862 static_assert_uimm_bits!(IMM2, 2);3862 static_assert_uimm_bits!(IMM2, 2);
3863 __lsx_vpickve2gr_wu(a, IMM2)3863 unsafe { __lsx_vpickve2gr_wu(a, IMM2) }
3864}3864}
38653865
3866#[inline]3866#[inline]
3867#[target_feature(enable = "lsx")]3867#[target_feature(enable = "lsx")]
3868#[rustc_legacy_const_generics(1)]3868#[rustc_legacy_const_generics(1)]
3869#[unstable(feature = "stdarch_loongarch", issue = "117427")]3869#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3870pub unsafe fn lsx_vpickve2gr_du<const IMM1: u32>(a: v2i64) -> u64 {3870pub fn lsx_vpickve2gr_du<const IMM1: u32>(a: v2i64) -> u64 {
3871 static_assert_uimm_bits!(IMM1, 1);3871 static_assert_uimm_bits!(IMM1, 1);
3872 __lsx_vpickve2gr_du(a, IMM1)3872 unsafe { __lsx_vpickve2gr_du(a, IMM1) }
3873}3873}
38743874
3875#[inline]3875#[inline]
3876#[target_feature(enable = "lsx")]3876#[target_feature(enable = "lsx")]
3877#[rustc_legacy_const_generics(2)]3877#[rustc_legacy_const_generics(2)]
3878#[unstable(feature = "stdarch_loongarch", issue = "117427")]3878#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3879pub unsafe fn lsx_vinsgr2vr_b<const IMM4: u32>(a: v16i8, b: i32) -> v16i8 {3879pub fn lsx_vinsgr2vr_b<const IMM4: u32>(a: v16i8, b: i32) -> v16i8 {
3880 static_assert_uimm_bits!(IMM4, 4);3880 static_assert_uimm_bits!(IMM4, 4);
3881 __lsx_vinsgr2vr_b(a, b, IMM4)3881 unsafe { __lsx_vinsgr2vr_b(a, b, IMM4) }
3882}3882}
38833883
3884#[inline]3884#[inline]
3885#[target_feature(enable = "lsx")]3885#[target_feature(enable = "lsx")]
3886#[rustc_legacy_const_generics(2)]3886#[rustc_legacy_const_generics(2)]
3887#[unstable(feature = "stdarch_loongarch", issue = "117427")]3887#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3888pub unsafe fn lsx_vinsgr2vr_h<const IMM3: u32>(a: v8i16, b: i32) -> v8i16 {3888pub fn lsx_vinsgr2vr_h<const IMM3: u32>(a: v8i16, b: i32) -> v8i16 {
3889 static_assert_uimm_bits!(IMM3, 3);3889 static_assert_uimm_bits!(IMM3, 3);
3890 __lsx_vinsgr2vr_h(a, b, IMM3)3890 unsafe { __lsx_vinsgr2vr_h(a, b, IMM3) }
3891}3891}
38923892
3893#[inline]3893#[inline]
3894#[target_feature(enable = "lsx")]3894#[target_feature(enable = "lsx")]
3895#[rustc_legacy_const_generics(2)]3895#[rustc_legacy_const_generics(2)]
3896#[unstable(feature = "stdarch_loongarch", issue = "117427")]3896#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3897pub unsafe fn lsx_vinsgr2vr_w<const IMM2: u32>(a: v4i32, b: i32) -> v4i32 {3897pub fn lsx_vinsgr2vr_w<const IMM2: u32>(a: v4i32, b: i32) -> v4i32 {
3898 static_assert_uimm_bits!(IMM2, 2);3898 static_assert_uimm_bits!(IMM2, 2);
3899 __lsx_vinsgr2vr_w(a, b, IMM2)3899 unsafe { __lsx_vinsgr2vr_w(a, b, IMM2) }
3900}3900}
39013901
3902#[inline]3902#[inline]
3903#[target_feature(enable = "lsx")]3903#[target_feature(enable = "lsx")]
3904#[rustc_legacy_const_generics(2)]3904#[rustc_legacy_const_generics(2)]
3905#[unstable(feature = "stdarch_loongarch", issue = "117427")]3905#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3906pub unsafe fn lsx_vinsgr2vr_d<const IMM1: u32>(a: v2i64, b: i64) -> v2i64 {3906pub fn lsx_vinsgr2vr_d<const IMM1: u32>(a: v2i64, b: i64) -> v2i64 {
3907 static_assert_uimm_bits!(IMM1, 1);3907 static_assert_uimm_bits!(IMM1, 1);
3908 __lsx_vinsgr2vr_d(a, b, IMM1)3908 unsafe { __lsx_vinsgr2vr_d(a, b, IMM1) }
3909}3909}
39103910
3911#[inline]3911#[inline]
3912#[target_feature(enable = "lsx")]3912#[target_feature(enable = "lsx")]
3913#[unstable(feature = "stdarch_loongarch", issue = "117427")]3913#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3914pub unsafe fn lsx_vfadd_s(a: v4f32, b: v4f32) -> v4f32 {3914pub fn lsx_vfadd_s(a: v4f32, b: v4f32) -> v4f32 {
3915 __lsx_vfadd_s(a, b)3915 unsafe { __lsx_vfadd_s(a, b) }
3916}3916}
39173917
3918#[inline]3918#[inline]
3919#[target_feature(enable = "lsx")]3919#[target_feature(enable = "lsx")]
3920#[unstable(feature = "stdarch_loongarch", issue = "117427")]3920#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3921pub unsafe fn lsx_vfadd_d(a: v2f64, b: v2f64) -> v2f64 {3921pub fn lsx_vfadd_d(a: v2f64, b: v2f64) -> v2f64 {
3922 __lsx_vfadd_d(a, b)3922 unsafe { __lsx_vfadd_d(a, b) }
3923}3923}
39243924
3925#[inline]3925#[inline]
3926#[target_feature(enable = "lsx")]3926#[target_feature(enable = "lsx")]
3927#[unstable(feature = "stdarch_loongarch", issue = "117427")]3927#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3928pub unsafe fn lsx_vfsub_s(a: v4f32, b: v4f32) -> v4f32 {3928pub fn lsx_vfsub_s(a: v4f32, b: v4f32) -> v4f32 {
3929 __lsx_vfsub_s(a, b)3929 unsafe { __lsx_vfsub_s(a, b) }
3930}3930}
39313931
3932#[inline]3932#[inline]
3933#[target_feature(enable = "lsx")]3933#[target_feature(enable = "lsx")]
3934#[unstable(feature = "stdarch_loongarch", issue = "117427")]3934#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3935pub unsafe fn lsx_vfsub_d(a: v2f64, b: v2f64) -> v2f64 {3935pub fn lsx_vfsub_d(a: v2f64, b: v2f64) -> v2f64 {
3936 __lsx_vfsub_d(a, b)3936 unsafe { __lsx_vfsub_d(a, b) }
3937}3937}
39383938
3939#[inline]3939#[inline]
3940#[target_feature(enable = "lsx")]3940#[target_feature(enable = "lsx")]
3941#[unstable(feature = "stdarch_loongarch", issue = "117427")]3941#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3942pub unsafe fn lsx_vfmul_s(a: v4f32, b: v4f32) -> v4f32 {3942pub fn lsx_vfmul_s(a: v4f32, b: v4f32) -> v4f32 {
3943 __lsx_vfmul_s(a, b)3943 unsafe { __lsx_vfmul_s(a, b) }
3944}3944}
39453945
3946#[inline]3946#[inline]
3947#[target_feature(enable = "lsx")]3947#[target_feature(enable = "lsx")]
3948#[unstable(feature = "stdarch_loongarch", issue = "117427")]3948#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3949pub unsafe fn lsx_vfmul_d(a: v2f64, b: v2f64) -> v2f64 {3949pub fn lsx_vfmul_d(a: v2f64, b: v2f64) -> v2f64 {
3950 __lsx_vfmul_d(a, b)3950 unsafe { __lsx_vfmul_d(a, b) }
3951}3951}
39523952
3953#[inline]3953#[inline]
3954#[target_feature(enable = "lsx")]3954#[target_feature(enable = "lsx")]
3955#[unstable(feature = "stdarch_loongarch", issue = "117427")]3955#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3956pub unsafe fn lsx_vfdiv_s(a: v4f32, b: v4f32) -> v4f32 {3956pub fn lsx_vfdiv_s(a: v4f32, b: v4f32) -> v4f32 {
3957 __lsx_vfdiv_s(a, b)3957 unsafe { __lsx_vfdiv_s(a, b) }
3958}3958}
39593959
3960#[inline]3960#[inline]
3961#[target_feature(enable = "lsx")]3961#[target_feature(enable = "lsx")]
3962#[unstable(feature = "stdarch_loongarch", issue = "117427")]3962#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3963pub unsafe fn lsx_vfdiv_d(a: v2f64, b: v2f64) -> v2f64 {3963pub fn lsx_vfdiv_d(a: v2f64, b: v2f64) -> v2f64 {
3964 __lsx_vfdiv_d(a, b)3964 unsafe { __lsx_vfdiv_d(a, b) }
3965}3965}
39663966
3967#[inline]3967#[inline]
3968#[target_feature(enable = "lsx")]3968#[target_feature(enable = "lsx")]
3969#[unstable(feature = "stdarch_loongarch", issue = "117427")]3969#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3970pub unsafe fn lsx_vfcvt_h_s(a: v4f32, b: v4f32) -> v8i16 {3970pub fn lsx_vfcvt_h_s(a: v4f32, b: v4f32) -> v8i16 {
3971 __lsx_vfcvt_h_s(a, b)3971 unsafe { __lsx_vfcvt_h_s(a, b) }
3972}3972}
39733973
3974#[inline]3974#[inline]
3975#[target_feature(enable = "lsx")]3975#[target_feature(enable = "lsx")]
3976#[unstable(feature = "stdarch_loongarch", issue = "117427")]3976#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3977pub unsafe fn lsx_vfcvt_s_d(a: v2f64, b: v2f64) -> v4f32 {3977pub fn lsx_vfcvt_s_d(a: v2f64, b: v2f64) -> v4f32 {
3978 __lsx_vfcvt_s_d(a, b)3978 unsafe { __lsx_vfcvt_s_d(a, b) }
3979}3979}
39803980
3981#[inline]3981#[inline]
3982#[target_feature(enable = "lsx")]3982#[target_feature(enable = "lsx")]
3983#[unstable(feature = "stdarch_loongarch", issue = "117427")]3983#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3984pub unsafe fn lsx_vfmin_s(a: v4f32, b: v4f32) -> v4f32 {3984pub fn lsx_vfmin_s(a: v4f32, b: v4f32) -> v4f32 {
3985 __lsx_vfmin_s(a, b)3985 unsafe { __lsx_vfmin_s(a, b) }
3986}3986}
39873987
3988#[inline]3988#[inline]
3989#[target_feature(enable = "lsx")]3989#[target_feature(enable = "lsx")]
3990#[unstable(feature = "stdarch_loongarch", issue = "117427")]3990#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3991pub unsafe fn lsx_vfmin_d(a: v2f64, b: v2f64) -> v2f64 {3991pub fn lsx_vfmin_d(a: v2f64, b: v2f64) -> v2f64 {
3992 __lsx_vfmin_d(a, b)3992 unsafe { __lsx_vfmin_d(a, b) }
3993}3993}
39943994
3995#[inline]3995#[inline]
3996#[target_feature(enable = "lsx")]3996#[target_feature(enable = "lsx")]
3997#[unstable(feature = "stdarch_loongarch", issue = "117427")]3997#[unstable(feature = "stdarch_loongarch", issue = "117427")]
3998pub unsafe fn lsx_vfmina_s(a: v4f32, b: v4f32) -> v4f32 {3998pub fn lsx_vfmina_s(a: v4f32, b: v4f32) -> v4f32 {
3999 __lsx_vfmina_s(a, b)3999 unsafe { __lsx_vfmina_s(a, b) }
4000}4000}
40014001
4002#[inline]4002#[inline]
4003#[target_feature(enable = "lsx")]4003#[target_feature(enable = "lsx")]
4004#[unstable(feature = "stdarch_loongarch", issue = "117427")]4004#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4005pub unsafe fn lsx_vfmina_d(a: v2f64, b: v2f64) -> v2f64 {4005pub fn lsx_vfmina_d(a: v2f64, b: v2f64) -> v2f64 {
4006 __lsx_vfmina_d(a, b)4006 unsafe { __lsx_vfmina_d(a, b) }
4007}4007}
40084008
4009#[inline]4009#[inline]
4010#[target_feature(enable = "lsx")]4010#[target_feature(enable = "lsx")]
4011#[unstable(feature = "stdarch_loongarch", issue = "117427")]4011#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4012pub unsafe fn lsx_vfmax_s(a: v4f32, b: v4f32) -> v4f32 {4012pub fn lsx_vfmax_s(a: v4f32, b: v4f32) -> v4f32 {
4013 __lsx_vfmax_s(a, b)4013 unsafe { __lsx_vfmax_s(a, b) }
4014}4014}
40154015
4016#[inline]4016#[inline]
4017#[target_feature(enable = "lsx")]4017#[target_feature(enable = "lsx")]
4018#[unstable(feature = "stdarch_loongarch", issue = "117427")]4018#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4019pub unsafe fn lsx_vfmax_d(a: v2f64, b: v2f64) -> v2f64 {4019pub fn lsx_vfmax_d(a: v2f64, b: v2f64) -> v2f64 {
4020 __lsx_vfmax_d(a, b)4020 unsafe { __lsx_vfmax_d(a, b) }
4021}4021}
40224022
4023#[inline]4023#[inline]
4024#[target_feature(enable = "lsx")]4024#[target_feature(enable = "lsx")]
4025#[unstable(feature = "stdarch_loongarch", issue = "117427")]4025#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4026pub unsafe fn lsx_vfmaxa_s(a: v4f32, b: v4f32) -> v4f32 {4026pub fn lsx_vfmaxa_s(a: v4f32, b: v4f32) -> v4f32 {
4027 __lsx_vfmaxa_s(a, b)4027 unsafe { __lsx_vfmaxa_s(a, b) }
4028}4028}
40294029
4030#[inline]4030#[inline]
4031#[target_feature(enable = "lsx")]4031#[target_feature(enable = "lsx")]
4032#[unstable(feature = "stdarch_loongarch", issue = "117427")]4032#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4033pub unsafe fn lsx_vfmaxa_d(a: v2f64, b: v2f64) -> v2f64 {4033pub fn lsx_vfmaxa_d(a: v2f64, b: v2f64) -> v2f64 {
4034 __lsx_vfmaxa_d(a, b)4034 unsafe { __lsx_vfmaxa_d(a, b) }
4035}4035}
40364036
4037#[inline]4037#[inline]
4038#[target_feature(enable = "lsx")]4038#[target_feature(enable = "lsx")]
4039#[unstable(feature = "stdarch_loongarch", issue = "117427")]4039#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4040pub unsafe fn lsx_vfclass_s(a: v4f32) -> v4i32 {4040pub fn lsx_vfclass_s(a: v4f32) -> v4i32 {
4041 __lsx_vfclass_s(a)4041 unsafe { __lsx_vfclass_s(a) }
4042}4042}
40434043
4044#[inline]4044#[inline]
4045#[target_feature(enable = "lsx")]4045#[target_feature(enable = "lsx")]
4046#[unstable(feature = "stdarch_loongarch", issue = "117427")]4046#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4047pub unsafe fn lsx_vfclass_d(a: v2f64) -> v2i64 {4047pub fn lsx_vfclass_d(a: v2f64) -> v2i64 {
4048 __lsx_vfclass_d(a)4048 unsafe { __lsx_vfclass_d(a) }
4049}4049}
40504050
4051#[inline]4051#[inline]
4052#[target_feature(enable = "lsx")]4052#[target_feature(enable = "lsx")]
4053#[unstable(feature = "stdarch_loongarch", issue = "117427")]4053#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4054pub unsafe fn lsx_vfsqrt_s(a: v4f32) -> v4f32 {4054pub fn lsx_vfsqrt_s(a: v4f32) -> v4f32 {
4055 __lsx_vfsqrt_s(a)4055 unsafe { __lsx_vfsqrt_s(a) }
4056}4056}
40574057
4058#[inline]4058#[inline]
4059#[target_feature(enable = "lsx")]4059#[target_feature(enable = "lsx")]
4060#[unstable(feature = "stdarch_loongarch", issue = "117427")]4060#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4061pub unsafe fn lsx_vfsqrt_d(a: v2f64) -> v2f64 {4061pub fn lsx_vfsqrt_d(a: v2f64) -> v2f64 {
4062 __lsx_vfsqrt_d(a)4062 unsafe { __lsx_vfsqrt_d(a) }
4063}4063}
40644064
4065#[inline]4065#[inline]
4066#[target_feature(enable = "lsx")]4066#[target_feature(enable = "lsx")]
4067#[unstable(feature = "stdarch_loongarch", issue = "117427")]4067#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4068pub unsafe fn lsx_vfrecip_s(a: v4f32) -> v4f32 {4068pub fn lsx_vfrecip_s(a: v4f32) -> v4f32 {
4069 __lsx_vfrecip_s(a)4069 unsafe { __lsx_vfrecip_s(a) }
4070}4070}
40714071
4072#[inline]4072#[inline]
4073#[target_feature(enable = "lsx")]4073#[target_feature(enable = "lsx")]
4074#[unstable(feature = "stdarch_loongarch", issue = "117427")]4074#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4075pub unsafe fn lsx_vfrecip_d(a: v2f64) -> v2f64 {4075pub fn lsx_vfrecip_d(a: v2f64) -> v2f64 {
4076 __lsx_vfrecip_d(a)4076 unsafe { __lsx_vfrecip_d(a) }
4077}4077}
40784078
4079#[inline]4079#[inline]
4080#[target_feature(enable = "lsx,frecipe")]4080#[target_feature(enable = "lsx,frecipe")]
4081#[unstable(feature = "stdarch_loongarch", issue = "117427")]4081#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4082pub unsafe fn lsx_vfrecipe_s(a: v4f32) -> v4f32 {4082pub fn lsx_vfrecipe_s(a: v4f32) -> v4f32 {
4083 __lsx_vfrecipe_s(a)4083 unsafe { __lsx_vfrecipe_s(a) }
4084}4084}
40854085
4086#[inline]4086#[inline]
4087#[target_feature(enable = "lsx,frecipe")]4087#[target_feature(enable = "lsx,frecipe")]
4088#[unstable(feature = "stdarch_loongarch", issue = "117427")]4088#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4089pub unsafe fn lsx_vfrecipe_d(a: v2f64) -> v2f64 {4089pub fn lsx_vfrecipe_d(a: v2f64) -> v2f64 {
4090 __lsx_vfrecipe_d(a)4090 unsafe { __lsx_vfrecipe_d(a) }
4091}4091}
40924092
4093#[inline]4093#[inline]
4094#[target_feature(enable = "lsx,frecipe")]4094#[target_feature(enable = "lsx,frecipe")]
4095#[unstable(feature = "stdarch_loongarch", issue = "117427")]4095#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4096pub unsafe fn lsx_vfrsqrte_s(a: v4f32) -> v4f32 {4096pub fn lsx_vfrsqrte_s(a: v4f32) -> v4f32 {
4097 __lsx_vfrsqrte_s(a)4097 unsafe { __lsx_vfrsqrte_s(a) }
4098}4098}
40994099
4100#[inline]4100#[inline]
4101#[target_feature(enable = "lsx,frecipe")]4101#[target_feature(enable = "lsx,frecipe")]
4102#[unstable(feature = "stdarch_loongarch", issue = "117427")]4102#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4103pub unsafe fn lsx_vfrsqrte_d(a: v2f64) -> v2f64 {4103pub fn lsx_vfrsqrte_d(a: v2f64) -> v2f64 {
4104 __lsx_vfrsqrte_d(a)4104 unsafe { __lsx_vfrsqrte_d(a) }
4105}4105}
41064106
4107#[inline]4107#[inline]
4108#[target_feature(enable = "lsx")]4108#[target_feature(enable = "lsx")]
4109#[unstable(feature = "stdarch_loongarch", issue = "117427")]4109#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4110pub unsafe fn lsx_vfrint_s(a: v4f32) -> v4f32 {4110pub fn lsx_vfrint_s(a: v4f32) -> v4f32 {
4111 __lsx_vfrint_s(a)4111 unsafe { __lsx_vfrint_s(a) }
4112}4112}
41134113
4114#[inline]4114#[inline]
4115#[target_feature(enable = "lsx")]4115#[target_feature(enable = "lsx")]
4116#[unstable(feature = "stdarch_loongarch", issue = "117427")]4116#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4117pub unsafe fn lsx_vfrint_d(a: v2f64) -> v2f64 {4117pub fn lsx_vfrint_d(a: v2f64) -> v2f64 {
4118 __lsx_vfrint_d(a)4118 unsafe { __lsx_vfrint_d(a) }
4119}4119}
41204120
4121#[inline]4121#[inline]
4122#[target_feature(enable = "lsx")]4122#[target_feature(enable = "lsx")]
4123#[unstable(feature = "stdarch_loongarch", issue = "117427")]4123#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4124pub unsafe fn lsx_vfrsqrt_s(a: v4f32) -> v4f32 {4124pub fn lsx_vfrsqrt_s(a: v4f32) -> v4f32 {
4125 __lsx_vfrsqrt_s(a)4125 unsafe { __lsx_vfrsqrt_s(a) }
4126}4126}
41274127
4128#[inline]4128#[inline]
4129#[target_feature(enable = "lsx")]4129#[target_feature(enable = "lsx")]
4130#[unstable(feature = "stdarch_loongarch", issue = "117427")]4130#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4131pub unsafe fn lsx_vfrsqrt_d(a: v2f64) -> v2f64 {4131pub fn lsx_vfrsqrt_d(a: v2f64) -> v2f64 {
4132 __lsx_vfrsqrt_d(a)4132 unsafe { __lsx_vfrsqrt_d(a) }
4133}4133}
41344134
4135#[inline]4135#[inline]
4136#[target_feature(enable = "lsx")]4136#[target_feature(enable = "lsx")]
4137#[unstable(feature = "stdarch_loongarch", issue = "117427")]4137#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4138pub unsafe fn lsx_vflogb_s(a: v4f32) -> v4f32 {4138pub fn lsx_vflogb_s(a: v4f32) -> v4f32 {
4139 __lsx_vflogb_s(a)4139 unsafe { __lsx_vflogb_s(a) }
4140}4140}
41414141
4142#[inline]4142#[inline]
4143#[target_feature(enable = "lsx")]4143#[target_feature(enable = "lsx")]
4144#[unstable(feature = "stdarch_loongarch", issue = "117427")]4144#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4145pub unsafe fn lsx_vflogb_d(a: v2f64) -> v2f64 {4145pub fn lsx_vflogb_d(a: v2f64) -> v2f64 {
4146 __lsx_vflogb_d(a)4146 unsafe { __lsx_vflogb_d(a) }
4147}4147}
41484148
4149#[inline]4149#[inline]
4150#[target_feature(enable = "lsx")]4150#[target_feature(enable = "lsx")]
4151#[unstable(feature = "stdarch_loongarch", issue = "117427")]4151#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4152pub unsafe fn lsx_vfcvth_s_h(a: v8i16) -> v4f32 {4152pub fn lsx_vfcvth_s_h(a: v8i16) -> v4f32 {
4153 __lsx_vfcvth_s_h(a)4153 unsafe { __lsx_vfcvth_s_h(a) }
4154}4154}
41554155
4156#[inline]4156#[inline]
4157#[target_feature(enable = "lsx")]4157#[target_feature(enable = "lsx")]
4158#[unstable(feature = "stdarch_loongarch", issue = "117427")]4158#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4159pub unsafe fn lsx_vfcvth_d_s(a: v4f32) -> v2f64 {4159pub fn lsx_vfcvth_d_s(a: v4f32) -> v2f64 {
4160 __lsx_vfcvth_d_s(a)4160 unsafe { __lsx_vfcvth_d_s(a) }
4161}4161}
41624162
4163#[inline]4163#[inline]
4164#[target_feature(enable = "lsx")]4164#[target_feature(enable = "lsx")]
4165#[unstable(feature = "stdarch_loongarch", issue = "117427")]4165#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4166pub unsafe fn lsx_vfcvtl_s_h(a: v8i16) -> v4f32 {4166pub fn lsx_vfcvtl_s_h(a: v8i16) -> v4f32 {
4167 __lsx_vfcvtl_s_h(a)4167 unsafe { __lsx_vfcvtl_s_h(a) }
4168}4168}
41694169
4170#[inline]4170#[inline]
4171#[target_feature(enable = "lsx")]4171#[target_feature(enable = "lsx")]
4172#[unstable(feature = "stdarch_loongarch", issue = "117427")]4172#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4173pub unsafe fn lsx_vfcvtl_d_s(a: v4f32) -> v2f64 {4173pub fn lsx_vfcvtl_d_s(a: v4f32) -> v2f64 {
4174 __lsx_vfcvtl_d_s(a)4174 unsafe { __lsx_vfcvtl_d_s(a) }
4175}4175}
41764176
4177#[inline]4177#[inline]
4178#[target_feature(enable = "lsx")]4178#[target_feature(enable = "lsx")]
4179#[unstable(feature = "stdarch_loongarch", issue = "117427")]4179#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4180pub unsafe fn lsx_vftint_w_s(a: v4f32) -> v4i32 {4180pub fn lsx_vftint_w_s(a: v4f32) -> v4i32 {
4181 __lsx_vftint_w_s(a)4181 unsafe { __lsx_vftint_w_s(a) }
4182}4182}
41834183
4184#[inline]4184#[inline]
4185#[target_feature(enable = "lsx")]4185#[target_feature(enable = "lsx")]
4186#[unstable(feature = "stdarch_loongarch", issue = "117427")]4186#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4187pub unsafe fn lsx_vftint_l_d(a: v2f64) -> v2i64 {4187pub fn lsx_vftint_l_d(a: v2f64) -> v2i64 {
4188 __lsx_vftint_l_d(a)4188 unsafe { __lsx_vftint_l_d(a) }
4189}4189}
41904190
4191#[inline]4191#[inline]
4192#[target_feature(enable = "lsx")]4192#[target_feature(enable = "lsx")]
4193#[unstable(feature = "stdarch_loongarch", issue = "117427")]4193#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4194pub unsafe fn lsx_vftint_wu_s(a: v4f32) -> v4u32 {4194pub fn lsx_vftint_wu_s(a: v4f32) -> v4u32 {
4195 __lsx_vftint_wu_s(a)4195 unsafe { __lsx_vftint_wu_s(a) }
4196}4196}
41974197
4198#[inline]4198#[inline]
4199#[target_feature(enable = "lsx")]4199#[target_feature(enable = "lsx")]
4200#[unstable(feature = "stdarch_loongarch", issue = "117427")]4200#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4201pub unsafe fn lsx_vftint_lu_d(a: v2f64) -> v2u64 {4201pub fn lsx_vftint_lu_d(a: v2f64) -> v2u64 {
4202 __lsx_vftint_lu_d(a)4202 unsafe { __lsx_vftint_lu_d(a) }
4203}4203}
42044204
4205#[inline]4205#[inline]
4206#[target_feature(enable = "lsx")]4206#[target_feature(enable = "lsx")]
4207#[unstable(feature = "stdarch_loongarch", issue = "117427")]4207#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4208pub unsafe fn lsx_vftintrz_w_s(a: v4f32) -> v4i32 {4208pub fn lsx_vftintrz_w_s(a: v4f32) -> v4i32 {
4209 __lsx_vftintrz_w_s(a)4209 unsafe { __lsx_vftintrz_w_s(a) }
4210}4210}
42114211
4212#[inline]4212#[inline]
4213#[target_feature(enable = "lsx")]4213#[target_feature(enable = "lsx")]
4214#[unstable(feature = "stdarch_loongarch", issue = "117427")]4214#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4215pub unsafe fn lsx_vftintrz_l_d(a: v2f64) -> v2i64 {4215pub fn lsx_vftintrz_l_d(a: v2f64) -> v2i64 {
4216 __lsx_vftintrz_l_d(a)4216 unsafe { __lsx_vftintrz_l_d(a) }
4217}4217}
42184218
4219#[inline]4219#[inline]
4220#[target_feature(enable = "lsx")]4220#[target_feature(enable = "lsx")]
4221#[unstable(feature = "stdarch_loongarch", issue = "117427")]4221#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4222pub unsafe fn lsx_vftintrz_wu_s(a: v4f32) -> v4u32 {4222pub fn lsx_vftintrz_wu_s(a: v4f32) -> v4u32 {
4223 __lsx_vftintrz_wu_s(a)4223 unsafe { __lsx_vftintrz_wu_s(a) }
4224}4224}
42254225
4226#[inline]4226#[inline]
4227#[target_feature(enable = "lsx")]4227#[target_feature(enable = "lsx")]
4228#[unstable(feature = "stdarch_loongarch", issue = "117427")]4228#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4229pub unsafe fn lsx_vftintrz_lu_d(a: v2f64) -> v2u64 {4229pub fn lsx_vftintrz_lu_d(a: v2f64) -> v2u64 {
4230 __lsx_vftintrz_lu_d(a)4230 unsafe { __lsx_vftintrz_lu_d(a) }
4231}4231}
42324232
4233#[inline]4233#[inline]
4234#[target_feature(enable = "lsx")]4234#[target_feature(enable = "lsx")]
4235#[unstable(feature = "stdarch_loongarch", issue = "117427")]4235#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4236pub unsafe fn lsx_vffint_s_w(a: v4i32) -> v4f32 {4236pub fn lsx_vffint_s_w(a: v4i32) -> v4f32 {
4237 __lsx_vffint_s_w(a)4237 unsafe { __lsx_vffint_s_w(a) }
4238}4238}
42394239
4240#[inline]4240#[inline]
4241#[target_feature(enable = "lsx")]4241#[target_feature(enable = "lsx")]
4242#[unstable(feature = "stdarch_loongarch", issue = "117427")]4242#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4243pub unsafe fn lsx_vffint_d_l(a: v2i64) -> v2f64 {4243pub fn lsx_vffint_d_l(a: v2i64) -> v2f64 {
4244 __lsx_vffint_d_l(a)4244 unsafe { __lsx_vffint_d_l(a) }
4245}4245}
42464246
4247#[inline]4247#[inline]
4248#[target_feature(enable = "lsx")]4248#[target_feature(enable = "lsx")]
4249#[unstable(feature = "stdarch_loongarch", issue = "117427")]4249#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4250pub unsafe fn lsx_vffint_s_wu(a: v4u32) -> v4f32 {4250pub fn lsx_vffint_s_wu(a: v4u32) -> v4f32 {
4251 __lsx_vffint_s_wu(a)4251 unsafe { __lsx_vffint_s_wu(a) }
4252}4252}
42534253
4254#[inline]4254#[inline]
4255#[target_feature(enable = "lsx")]4255#[target_feature(enable = "lsx")]
4256#[unstable(feature = "stdarch_loongarch", issue = "117427")]4256#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4257pub unsafe fn lsx_vffint_d_lu(a: v2u64) -> v2f64 {4257pub fn lsx_vffint_d_lu(a: v2u64) -> v2f64 {
4258 __lsx_vffint_d_lu(a)4258 unsafe { __lsx_vffint_d_lu(a) }
4259}4259}
42604260
4261#[inline]4261#[inline]
4262#[target_feature(enable = "lsx")]4262#[target_feature(enable = "lsx")]
4263#[unstable(feature = "stdarch_loongarch", issue = "117427")]4263#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4264pub unsafe fn lsx_vandn_v(a: v16u8, b: v16u8) -> v16u8 {4264pub fn lsx_vandn_v(a: v16u8, b: v16u8) -> v16u8 {
4265 __lsx_vandn_v(a, b)4265 unsafe { __lsx_vandn_v(a, b) }
4266}4266}
42674267
4268#[inline]4268#[inline]
4269#[target_feature(enable = "lsx")]4269#[target_feature(enable = "lsx")]
4270#[unstable(feature = "stdarch_loongarch", issue = "117427")]4270#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4271pub unsafe fn lsx_vneg_b(a: v16i8) -> v16i8 {4271pub fn lsx_vneg_b(a: v16i8) -> v16i8 {
4272 __lsx_vneg_b(a)4272 unsafe { __lsx_vneg_b(a) }
4273}4273}
42744274
4275#[inline]4275#[inline]
4276#[target_feature(enable = "lsx")]4276#[target_feature(enable = "lsx")]
4277#[unstable(feature = "stdarch_loongarch", issue = "117427")]4277#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4278pub unsafe fn lsx_vneg_h(a: v8i16) -> v8i16 {4278pub fn lsx_vneg_h(a: v8i16) -> v8i16 {
4279 __lsx_vneg_h(a)4279 unsafe { __lsx_vneg_h(a) }
4280}4280}
42814281
4282#[inline]4282#[inline]
4283#[target_feature(enable = "lsx")]4283#[target_feature(enable = "lsx")]
4284#[unstable(feature = "stdarch_loongarch", issue = "117427")]4284#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4285pub unsafe fn lsx_vneg_w(a: v4i32) -> v4i32 {4285pub fn lsx_vneg_w(a: v4i32) -> v4i32 {
4286 __lsx_vneg_w(a)4286 unsafe { __lsx_vneg_w(a) }
4287}4287}
42884288
4289#[inline]4289#[inline]
4290#[target_feature(enable = "lsx")]4290#[target_feature(enable = "lsx")]
4291#[unstable(feature = "stdarch_loongarch", issue = "117427")]4291#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4292pub unsafe fn lsx_vneg_d(a: v2i64) -> v2i64 {4292pub fn lsx_vneg_d(a: v2i64) -> v2i64 {
4293 __lsx_vneg_d(a)4293 unsafe { __lsx_vneg_d(a) }
4294}4294}
42954295
4296#[inline]4296#[inline]
4297#[target_feature(enable = "lsx")]4297#[target_feature(enable = "lsx")]
4298#[unstable(feature = "stdarch_loongarch", issue = "117427")]4298#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4299pub unsafe fn lsx_vmuh_b(a: v16i8, b: v16i8) -> v16i8 {4299pub fn lsx_vmuh_b(a: v16i8, b: v16i8) -> v16i8 {
4300 __lsx_vmuh_b(a, b)4300 unsafe { __lsx_vmuh_b(a, b) }
4301}4301}
43024302
4303#[inline]4303#[inline]
4304#[target_feature(enable = "lsx")]4304#[target_feature(enable = "lsx")]
4305#[unstable(feature = "stdarch_loongarch", issue = "117427")]4305#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4306pub unsafe fn lsx_vmuh_h(a: v8i16, b: v8i16) -> v8i16 {4306pub fn lsx_vmuh_h(a: v8i16, b: v8i16) -> v8i16 {
4307 __lsx_vmuh_h(a, b)4307 unsafe { __lsx_vmuh_h(a, b) }
4308}4308}
43094309
4310#[inline]4310#[inline]
4311#[target_feature(enable = "lsx")]4311#[target_feature(enable = "lsx")]
4312#[unstable(feature = "stdarch_loongarch", issue = "117427")]4312#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4313pub unsafe fn lsx_vmuh_w(a: v4i32, b: v4i32) -> v4i32 {4313pub fn lsx_vmuh_w(a: v4i32, b: v4i32) -> v4i32 {
4314 __lsx_vmuh_w(a, b)4314 unsafe { __lsx_vmuh_w(a, b) }
4315}4315}
43164316
4317#[inline]4317#[inline]
4318#[target_feature(enable = "lsx")]4318#[target_feature(enable = "lsx")]
4319#[unstable(feature = "stdarch_loongarch", issue = "117427")]4319#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4320pub unsafe fn lsx_vmuh_d(a: v2i64, b: v2i64) -> v2i64 {4320pub fn lsx_vmuh_d(a: v2i64, b: v2i64) -> v2i64 {
4321 __lsx_vmuh_d(a, b)4321 unsafe { __lsx_vmuh_d(a, b) }
4322}4322}
43234323
4324#[inline]4324#[inline]
4325#[target_feature(enable = "lsx")]4325#[target_feature(enable = "lsx")]
4326#[unstable(feature = "stdarch_loongarch", issue = "117427")]4326#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4327pub unsafe fn lsx_vmuh_bu(a: v16u8, b: v16u8) -> v16u8 {4327pub fn lsx_vmuh_bu(a: v16u8, b: v16u8) -> v16u8 {
4328 __lsx_vmuh_bu(a, b)4328 unsafe { __lsx_vmuh_bu(a, b) }
4329}4329}
43304330
4331#[inline]4331#[inline]
4332#[target_feature(enable = "lsx")]4332#[target_feature(enable = "lsx")]
4333#[unstable(feature = "stdarch_loongarch", issue = "117427")]4333#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4334pub unsafe fn lsx_vmuh_hu(a: v8u16, b: v8u16) -> v8u16 {4334pub fn lsx_vmuh_hu(a: v8u16, b: v8u16) -> v8u16 {
4335 __lsx_vmuh_hu(a, b)4335 unsafe { __lsx_vmuh_hu(a, b) }
4336}4336}
43374337
4338#[inline]4338#[inline]
4339#[target_feature(enable = "lsx")]4339#[target_feature(enable = "lsx")]
4340#[unstable(feature = "stdarch_loongarch", issue = "117427")]4340#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4341pub unsafe fn lsx_vmuh_wu(a: v4u32, b: v4u32) -> v4u32 {4341pub fn lsx_vmuh_wu(a: v4u32, b: v4u32) -> v4u32 {
4342 __lsx_vmuh_wu(a, b)4342 unsafe { __lsx_vmuh_wu(a, b) }
4343}4343}
43444344
4345#[inline]4345#[inline]
4346#[target_feature(enable = "lsx")]4346#[target_feature(enable = "lsx")]
4347#[unstable(feature = "stdarch_loongarch", issue = "117427")]4347#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4348pub unsafe fn lsx_vmuh_du(a: v2u64, b: v2u64) -> v2u64 {4348pub fn lsx_vmuh_du(a: v2u64, b: v2u64) -> v2u64 {
4349 __lsx_vmuh_du(a, b)4349 unsafe { __lsx_vmuh_du(a, b) }
4350}4350}
43514351
4352#[inline]4352#[inline]
4353#[target_feature(enable = "lsx")]4353#[target_feature(enable = "lsx")]
4354#[rustc_legacy_const_generics(1)]4354#[rustc_legacy_const_generics(1)]
4355#[unstable(feature = "stdarch_loongarch", issue = "117427")]4355#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4356pub unsafe fn lsx_vsllwil_h_b<const IMM3: u32>(a: v16i8) -> v8i16 {4356pub fn lsx_vsllwil_h_b<const IMM3: u32>(a: v16i8) -> v8i16 {
4357 static_assert_uimm_bits!(IMM3, 3);4357 static_assert_uimm_bits!(IMM3, 3);
4358 __lsx_vsllwil_h_b(a, IMM3)4358 unsafe { __lsx_vsllwil_h_b(a, IMM3) }
4359}4359}
43604360
4361#[inline]4361#[inline]
4362#[target_feature(enable = "lsx")]4362#[target_feature(enable = "lsx")]
4363#[rustc_legacy_const_generics(1)]4363#[rustc_legacy_const_generics(1)]
4364#[unstable(feature = "stdarch_loongarch", issue = "117427")]4364#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4365pub unsafe fn lsx_vsllwil_w_h<const IMM4: u32>(a: v8i16) -> v4i32 {4365pub fn lsx_vsllwil_w_h<const IMM4: u32>(a: v8i16) -> v4i32 {
4366 static_assert_uimm_bits!(IMM4, 4);4366 static_assert_uimm_bits!(IMM4, 4);
4367 __lsx_vsllwil_w_h(a, IMM4)4367 unsafe { __lsx_vsllwil_w_h(a, IMM4) }
4368}4368}
43694369
4370#[inline]4370#[inline]
4371#[target_feature(enable = "lsx")]4371#[target_feature(enable = "lsx")]
4372#[rustc_legacy_const_generics(1)]4372#[rustc_legacy_const_generics(1)]
4373#[unstable(feature = "stdarch_loongarch", issue = "117427")]4373#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4374pub unsafe fn lsx_vsllwil_d_w<const IMM5: u32>(a: v4i32) -> v2i64 {4374pub fn lsx_vsllwil_d_w<const IMM5: u32>(a: v4i32) -> v2i64 {
4375 static_assert_uimm_bits!(IMM5, 5);4375 static_assert_uimm_bits!(IMM5, 5);
4376 __lsx_vsllwil_d_w(a, IMM5)4376 unsafe { __lsx_vsllwil_d_w(a, IMM5) }
4377}4377}
43784378
4379#[inline]4379#[inline]
4380#[target_feature(enable = "lsx")]4380#[target_feature(enable = "lsx")]
4381#[rustc_legacy_const_generics(1)]4381#[rustc_legacy_const_generics(1)]
4382#[unstable(feature = "stdarch_loongarch", issue = "117427")]4382#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4383pub unsafe fn lsx_vsllwil_hu_bu<const IMM3: u32>(a: v16u8) -> v8u16 {4383pub fn lsx_vsllwil_hu_bu<const IMM3: u32>(a: v16u8) -> v8u16 {
4384 static_assert_uimm_bits!(IMM3, 3);4384 static_assert_uimm_bits!(IMM3, 3);
4385 __lsx_vsllwil_hu_bu(a, IMM3)4385 unsafe { __lsx_vsllwil_hu_bu(a, IMM3) }
4386}4386}
43874387
4388#[inline]4388#[inline]
4389#[target_feature(enable = "lsx")]4389#[target_feature(enable = "lsx")]
4390#[rustc_legacy_const_generics(1)]4390#[rustc_legacy_const_generics(1)]
4391#[unstable(feature = "stdarch_loongarch", issue = "117427")]4391#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4392pub unsafe fn lsx_vsllwil_wu_hu<const IMM4: u32>(a: v8u16) -> v4u32 {4392pub fn lsx_vsllwil_wu_hu<const IMM4: u32>(a: v8u16) -> v4u32 {
4393 static_assert_uimm_bits!(IMM4, 4);4393 static_assert_uimm_bits!(IMM4, 4);
4394 __lsx_vsllwil_wu_hu(a, IMM4)4394 unsafe { __lsx_vsllwil_wu_hu(a, IMM4) }
4395}4395}
43964396
4397#[inline]4397#[inline]
4398#[target_feature(enable = "lsx")]4398#[target_feature(enable = "lsx")]
4399#[rustc_legacy_const_generics(1)]4399#[rustc_legacy_const_generics(1)]
4400#[unstable(feature = "stdarch_loongarch", issue = "117427")]4400#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4401pub unsafe fn lsx_vsllwil_du_wu<const IMM5: u32>(a: v4u32) -> v2u64 {4401pub fn lsx_vsllwil_du_wu<const IMM5: u32>(a: v4u32) -> v2u64 {
4402 static_assert_uimm_bits!(IMM5, 5);4402 static_assert_uimm_bits!(IMM5, 5);
4403 __lsx_vsllwil_du_wu(a, IMM5)4403 unsafe { __lsx_vsllwil_du_wu(a, IMM5) }
4404}4404}
44054405
4406#[inline]4406#[inline]
4407#[target_feature(enable = "lsx")]4407#[target_feature(enable = "lsx")]
4408#[unstable(feature = "stdarch_loongarch", issue = "117427")]4408#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4409pub unsafe fn lsx_vsran_b_h(a: v8i16, b: v8i16) -> v16i8 {4409pub fn lsx_vsran_b_h(a: v8i16, b: v8i16) -> v16i8 {
4410 __lsx_vsran_b_h(a, b)4410 unsafe { __lsx_vsran_b_h(a, b) }
4411}4411}
44124412
4413#[inline]4413#[inline]
4414#[target_feature(enable = "lsx")]4414#[target_feature(enable = "lsx")]
4415#[unstable(feature = "stdarch_loongarch", issue = "117427")]4415#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4416pub unsafe fn lsx_vsran_h_w(a: v4i32, b: v4i32) -> v8i16 {4416pub fn lsx_vsran_h_w(a: v4i32, b: v4i32) -> v8i16 {
4417 __lsx_vsran_h_w(a, b)4417 unsafe { __lsx_vsran_h_w(a, b) }
4418}4418}
44194419
4420#[inline]4420#[inline]
4421#[target_feature(enable = "lsx")]4421#[target_feature(enable = "lsx")]
4422#[unstable(feature = "stdarch_loongarch", issue = "117427")]4422#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4423pub unsafe fn lsx_vsran_w_d(a: v2i64, b: v2i64) -> v4i32 {4423pub fn lsx_vsran_w_d(a: v2i64, b: v2i64) -> v4i32 {
4424 __lsx_vsran_w_d(a, b)4424 unsafe { __lsx_vsran_w_d(a, b) }
4425}4425}
44264426
4427#[inline]4427#[inline]
4428#[target_feature(enable = "lsx")]4428#[target_feature(enable = "lsx")]
4429#[unstable(feature = "stdarch_loongarch", issue = "117427")]4429#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4430pub unsafe fn lsx_vssran_b_h(a: v8i16, b: v8i16) -> v16i8 {4430pub fn lsx_vssran_b_h(a: v8i16, b: v8i16) -> v16i8 {
4431 __lsx_vssran_b_h(a, b)4431 unsafe { __lsx_vssran_b_h(a, b) }
4432}4432}
44334433
4434#[inline]4434#[inline]
4435#[target_feature(enable = "lsx")]4435#[target_feature(enable = "lsx")]
4436#[unstable(feature = "stdarch_loongarch", issue = "117427")]4436#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4437pub unsafe fn lsx_vssran_h_w(a: v4i32, b: v4i32) -> v8i16 {4437pub fn lsx_vssran_h_w(a: v4i32, b: v4i32) -> v8i16 {
4438 __lsx_vssran_h_w(a, b)4438 unsafe { __lsx_vssran_h_w(a, b) }
4439}4439}
44404440
4441#[inline]4441#[inline]
4442#[target_feature(enable = "lsx")]4442#[target_feature(enable = "lsx")]
4443#[unstable(feature = "stdarch_loongarch", issue = "117427")]4443#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4444pub unsafe fn lsx_vssran_w_d(a: v2i64, b: v2i64) -> v4i32 {4444pub fn lsx_vssran_w_d(a: v2i64, b: v2i64) -> v4i32 {
4445 __lsx_vssran_w_d(a, b)4445 unsafe { __lsx_vssran_w_d(a, b) }
4446}4446}
44474447
4448#[inline]4448#[inline]
4449#[target_feature(enable = "lsx")]4449#[target_feature(enable = "lsx")]
4450#[unstable(feature = "stdarch_loongarch", issue = "117427")]4450#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4451pub unsafe fn lsx_vssran_bu_h(a: v8u16, b: v8u16) -> v16u8 {4451pub fn lsx_vssran_bu_h(a: v8u16, b: v8u16) -> v16u8 {
4452 __lsx_vssran_bu_h(a, b)4452 unsafe { __lsx_vssran_bu_h(a, b) }
4453}4453}
44544454
4455#[inline]4455#[inline]
4456#[target_feature(enable = "lsx")]4456#[target_feature(enable = "lsx")]
4457#[unstable(feature = "stdarch_loongarch", issue = "117427")]4457#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4458pub unsafe fn lsx_vssran_hu_w(a: v4u32, b: v4u32) -> v8u16 {4458pub fn lsx_vssran_hu_w(a: v4u32, b: v4u32) -> v8u16 {
4459 __lsx_vssran_hu_w(a, b)4459 unsafe { __lsx_vssran_hu_w(a, b) }
4460}4460}
44614461
4462#[inline]4462#[inline]
4463#[target_feature(enable = "lsx")]4463#[target_feature(enable = "lsx")]
4464#[unstable(feature = "stdarch_loongarch", issue = "117427")]4464#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4465pub unsafe fn lsx_vssran_wu_d(a: v2u64, b: v2u64) -> v4u32 {4465pub fn lsx_vssran_wu_d(a: v2u64, b: v2u64) -> v4u32 {
4466 __lsx_vssran_wu_d(a, b)4466 unsafe { __lsx_vssran_wu_d(a, b) }
4467}4467}
44684468
4469#[inline]4469#[inline]
4470#[target_feature(enable = "lsx")]4470#[target_feature(enable = "lsx")]
4471#[unstable(feature = "stdarch_loongarch", issue = "117427")]4471#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4472pub unsafe fn lsx_vsrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {4472pub fn lsx_vsrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {
4473 __lsx_vsrarn_b_h(a, b)4473 unsafe { __lsx_vsrarn_b_h(a, b) }
4474}4474}
44754475
4476#[inline]4476#[inline]
4477#[target_feature(enable = "lsx")]4477#[target_feature(enable = "lsx")]
4478#[unstable(feature = "stdarch_loongarch", issue = "117427")]4478#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4479pub unsafe fn lsx_vsrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {4479pub fn lsx_vsrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {
4480 __lsx_vsrarn_h_w(a, b)4480 unsafe { __lsx_vsrarn_h_w(a, b) }
4481}4481}
44824482
4483#[inline]4483#[inline]
4484#[target_feature(enable = "lsx")]4484#[target_feature(enable = "lsx")]
4485#[unstable(feature = "stdarch_loongarch", issue = "117427")]4485#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4486pub unsafe fn lsx_vsrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {4486pub fn lsx_vsrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {
4487 __lsx_vsrarn_w_d(a, b)4487 unsafe { __lsx_vsrarn_w_d(a, b) }
4488}4488}
44894489
4490#[inline]4490#[inline]
4491#[target_feature(enable = "lsx")]4491#[target_feature(enable = "lsx")]
4492#[unstable(feature = "stdarch_loongarch", issue = "117427")]4492#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4493pub unsafe fn lsx_vssrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {4493pub fn lsx_vssrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {
4494 __lsx_vssrarn_b_h(a, b)4494 unsafe { __lsx_vssrarn_b_h(a, b) }
4495}4495}
44964496
4497#[inline]4497#[inline]
4498#[target_feature(enable = "lsx")]4498#[target_feature(enable = "lsx")]
4499#[unstable(feature = "stdarch_loongarch", issue = "117427")]4499#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4500pub unsafe fn lsx_vssrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {4500pub fn lsx_vssrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {
4501 __lsx_vssrarn_h_w(a, b)4501 unsafe { __lsx_vssrarn_h_w(a, b) }
4502}4502}
45034503
4504#[inline]4504#[inline]
4505#[target_feature(enable = "lsx")]4505#[target_feature(enable = "lsx")]
4506#[unstable(feature = "stdarch_loongarch", issue = "117427")]4506#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4507pub unsafe fn lsx_vssrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {4507pub fn lsx_vssrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {
4508 __lsx_vssrarn_w_d(a, b)4508 unsafe { __lsx_vssrarn_w_d(a, b) }
4509}4509}
45104510
4511#[inline]4511#[inline]
4512#[target_feature(enable = "lsx")]4512#[target_feature(enable = "lsx")]
4513#[unstable(feature = "stdarch_loongarch", issue = "117427")]4513#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4514pub unsafe fn lsx_vssrarn_bu_h(a: v8u16, b: v8u16) -> v16u8 {4514pub fn lsx_vssrarn_bu_h(a: v8u16, b: v8u16) -> v16u8 {
4515 __lsx_vssrarn_bu_h(a, b)4515 unsafe { __lsx_vssrarn_bu_h(a, b) }
4516}4516}
45174517
4518#[inline]4518#[inline]
4519#[target_feature(enable = "lsx")]4519#[target_feature(enable = "lsx")]
4520#[unstable(feature = "stdarch_loongarch", issue = "117427")]4520#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4521pub unsafe fn lsx_vssrarn_hu_w(a: v4u32, b: v4u32) -> v8u16 {4521pub fn lsx_vssrarn_hu_w(a: v4u32, b: v4u32) -> v8u16 {
4522 __lsx_vssrarn_hu_w(a, b)4522 unsafe { __lsx_vssrarn_hu_w(a, b) }
4523}4523}
45244524
4525#[inline]4525#[inline]
4526#[target_feature(enable = "lsx")]4526#[target_feature(enable = "lsx")]
4527#[unstable(feature = "stdarch_loongarch", issue = "117427")]4527#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4528pub unsafe fn lsx_vssrarn_wu_d(a: v2u64, b: v2u64) -> v4u32 {4528pub fn lsx_vssrarn_wu_d(a: v2u64, b: v2u64) -> v4u32 {
4529 __lsx_vssrarn_wu_d(a, b)4529 unsafe { __lsx_vssrarn_wu_d(a, b) }
4530}4530}
45314531
4532#[inline]4532#[inline]
4533#[target_feature(enable = "lsx")]4533#[target_feature(enable = "lsx")]
4534#[unstable(feature = "stdarch_loongarch", issue = "117427")]4534#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4535pub unsafe fn lsx_vsrln_b_h(a: v8i16, b: v8i16) -> v16i8 {4535pub fn lsx_vsrln_b_h(a: v8i16, b: v8i16) -> v16i8 {
4536 __lsx_vsrln_b_h(a, b)4536 unsafe { __lsx_vsrln_b_h(a, b) }
4537}4537}
45384538
4539#[inline]4539#[inline]
4540#[target_feature(enable = "lsx")]4540#[target_feature(enable = "lsx")]
4541#[unstable(feature = "stdarch_loongarch", issue = "117427")]4541#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4542pub unsafe fn lsx_vsrln_h_w(a: v4i32, b: v4i32) -> v8i16 {4542pub fn lsx_vsrln_h_w(a: v4i32, b: v4i32) -> v8i16 {
4543 __lsx_vsrln_h_w(a, b)4543 unsafe { __lsx_vsrln_h_w(a, b) }
4544}4544}
45454545
4546#[inline]4546#[inline]
4547#[target_feature(enable = "lsx")]4547#[target_feature(enable = "lsx")]
4548#[unstable(feature = "stdarch_loongarch", issue = "117427")]4548#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4549pub unsafe fn lsx_vsrln_w_d(a: v2i64, b: v2i64) -> v4i32 {4549pub fn lsx_vsrln_w_d(a: v2i64, b: v2i64) -> v4i32 {
4550 __lsx_vsrln_w_d(a, b)4550 unsafe { __lsx_vsrln_w_d(a, b) }
4551}4551}
45524552
4553#[inline]4553#[inline]
4554#[target_feature(enable = "lsx")]4554#[target_feature(enable = "lsx")]
4555#[unstable(feature = "stdarch_loongarch", issue = "117427")]4555#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4556pub unsafe fn lsx_vssrln_bu_h(a: v8u16, b: v8u16) -> v16u8 {4556pub fn lsx_vssrln_bu_h(a: v8u16, b: v8u16) -> v16u8 {
4557 __lsx_vssrln_bu_h(a, b)4557 unsafe { __lsx_vssrln_bu_h(a, b) }
4558}4558}
45594559
4560#[inline]4560#[inline]
4561#[target_feature(enable = "lsx")]4561#[target_feature(enable = "lsx")]
4562#[unstable(feature = "stdarch_loongarch", issue = "117427")]4562#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4563pub unsafe fn lsx_vssrln_hu_w(a: v4u32, b: v4u32) -> v8u16 {4563pub fn lsx_vssrln_hu_w(a: v4u32, b: v4u32) -> v8u16 {
4564 __lsx_vssrln_hu_w(a, b)4564 unsafe { __lsx_vssrln_hu_w(a, b) }
4565}4565}
45664566
4567#[inline]4567#[inline]
4568#[target_feature(enable = "lsx")]4568#[target_feature(enable = "lsx")]
4569#[unstable(feature = "stdarch_loongarch", issue = "117427")]4569#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4570pub unsafe fn lsx_vssrln_wu_d(a: v2u64, b: v2u64) -> v4u32 {4570pub fn lsx_vssrln_wu_d(a: v2u64, b: v2u64) -> v4u32 {
4571 __lsx_vssrln_wu_d(a, b)4571 unsafe { __lsx_vssrln_wu_d(a, b) }
4572}4572}
45734573
4574#[inline]4574#[inline]
4575#[target_feature(enable = "lsx")]4575#[target_feature(enable = "lsx")]
4576#[unstable(feature = "stdarch_loongarch", issue = "117427")]4576#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4577pub unsafe fn lsx_vsrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {4577pub fn lsx_vsrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {
4578 __lsx_vsrlrn_b_h(a, b)4578 unsafe { __lsx_vsrlrn_b_h(a, b) }
4579}4579}
45804580
4581#[inline]4581#[inline]
4582#[target_feature(enable = "lsx")]4582#[target_feature(enable = "lsx")]
4583#[unstable(feature = "stdarch_loongarch", issue = "117427")]4583#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4584pub unsafe fn lsx_vsrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {4584pub fn lsx_vsrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {
4585 __lsx_vsrlrn_h_w(a, b)4585 unsafe { __lsx_vsrlrn_h_w(a, b) }
4586}4586}
45874587
4588#[inline]4588#[inline]
4589#[target_feature(enable = "lsx")]4589#[target_feature(enable = "lsx")]
4590#[unstable(feature = "stdarch_loongarch", issue = "117427")]4590#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4591pub unsafe fn lsx_vsrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {4591pub fn lsx_vsrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {
4592 __lsx_vsrlrn_w_d(a, b)4592 unsafe { __lsx_vsrlrn_w_d(a, b) }
4593}4593}
45944594
4595#[inline]4595#[inline]
4596#[target_feature(enable = "lsx")]4596#[target_feature(enable = "lsx")]
4597#[unstable(feature = "stdarch_loongarch", issue = "117427")]4597#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4598pub unsafe fn lsx_vssrlrn_bu_h(a: v8u16, b: v8u16) -> v16u8 {4598pub fn lsx_vssrlrn_bu_h(a: v8u16, b: v8u16) -> v16u8 {
4599 __lsx_vssrlrn_bu_h(a, b)4599 unsafe { __lsx_vssrlrn_bu_h(a, b) }
4600}4600}
46014601
4602#[inline]4602#[inline]
4603#[target_feature(enable = "lsx")]4603#[target_feature(enable = "lsx")]
4604#[unstable(feature = "stdarch_loongarch", issue = "117427")]4604#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4605pub unsafe fn lsx_vssrlrn_hu_w(a: v4u32, b: v4u32) -> v8u16 {4605pub fn lsx_vssrlrn_hu_w(a: v4u32, b: v4u32) -> v8u16 {
4606 __lsx_vssrlrn_hu_w(a, b)4606 unsafe { __lsx_vssrlrn_hu_w(a, b) }
4607}4607}
46084608
4609#[inline]4609#[inline]
4610#[target_feature(enable = "lsx")]4610#[target_feature(enable = "lsx")]
4611#[unstable(feature = "stdarch_loongarch", issue = "117427")]4611#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4612pub unsafe fn lsx_vssrlrn_wu_d(a: v2u64, b: v2u64) -> v4u32 {4612pub fn lsx_vssrlrn_wu_d(a: v2u64, b: v2u64) -> v4u32 {
4613 __lsx_vssrlrn_wu_d(a, b)4613 unsafe { __lsx_vssrlrn_wu_d(a, b) }
4614}4614}
46154615
4616#[inline]4616#[inline]
4617#[target_feature(enable = "lsx")]4617#[target_feature(enable = "lsx")]
4618#[rustc_legacy_const_generics(2)]4618#[rustc_legacy_const_generics(2)]
4619#[unstable(feature = "stdarch_loongarch", issue = "117427")]4619#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4620pub unsafe fn lsx_vfrstpi_b<const IMM5: u32>(a: v16i8, b: v16i8) -> v16i8 {4620pub fn lsx_vfrstpi_b<const IMM5: u32>(a: v16i8, b: v16i8) -> v16i8 {
4621 static_assert_uimm_bits!(IMM5, 5);4621 static_assert_uimm_bits!(IMM5, 5);
4622 __lsx_vfrstpi_b(a, b, IMM5)4622 unsafe { __lsx_vfrstpi_b(a, b, IMM5) }
4623}4623}
46244624
4625#[inline]4625#[inline]
4626#[target_feature(enable = "lsx")]4626#[target_feature(enable = "lsx")]
4627#[rustc_legacy_const_generics(2)]4627#[rustc_legacy_const_generics(2)]
4628#[unstable(feature = "stdarch_loongarch", issue = "117427")]4628#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4629pub unsafe fn lsx_vfrstpi_h<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {4629pub fn lsx_vfrstpi_h<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
4630 static_assert_uimm_bits!(IMM5, 5);4630 static_assert_uimm_bits!(IMM5, 5);
4631 __lsx_vfrstpi_h(a, b, IMM5)4631 unsafe { __lsx_vfrstpi_h(a, b, IMM5) }
4632}4632}
46334633
4634#[inline]4634#[inline]
4635#[target_feature(enable = "lsx")]4635#[target_feature(enable = "lsx")]
4636#[unstable(feature = "stdarch_loongarch", issue = "117427")]4636#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4637pub unsafe fn lsx_vfrstp_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {4637pub fn lsx_vfrstp_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
4638 __lsx_vfrstp_b(a, b, c)4638 unsafe { __lsx_vfrstp_b(a, b, c) }
4639}4639}
46404640
4641#[inline]4641#[inline]
4642#[target_feature(enable = "lsx")]4642#[target_feature(enable = "lsx")]
4643#[unstable(feature = "stdarch_loongarch", issue = "117427")]4643#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4644pub unsafe fn lsx_vfrstp_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {4644pub fn lsx_vfrstp_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
4645 __lsx_vfrstp_h(a, b, c)4645 unsafe { __lsx_vfrstp_h(a, b, c) }
4646}4646}
46474647
4648#[inline]4648#[inline]
4649#[target_feature(enable = "lsx")]4649#[target_feature(enable = "lsx")]
4650#[rustc_legacy_const_generics(2)]4650#[rustc_legacy_const_generics(2)]
4651#[unstable(feature = "stdarch_loongarch", issue = "117427")]4651#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4652pub unsafe fn lsx_vshuf4i_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {4652pub fn lsx_vshuf4i_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {
4653 static_assert_uimm_bits!(IMM8, 8);4653 static_assert_uimm_bits!(IMM8, 8);
4654 __lsx_vshuf4i_d(a, b, IMM8)4654 unsafe { __lsx_vshuf4i_d(a, b, IMM8) }
4655}4655}
46564656
4657#[inline]4657#[inline]
4658#[target_feature(enable = "lsx")]4658#[target_feature(enable = "lsx")]
4659#[rustc_legacy_const_generics(1)]4659#[rustc_legacy_const_generics(1)]
4660#[unstable(feature = "stdarch_loongarch", issue = "117427")]4660#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4661pub unsafe fn lsx_vbsrl_v<const IMM5: u32>(a: v16i8) -> v16i8 {4661pub fn lsx_vbsrl_v<const IMM5: u32>(a: v16i8) -> v16i8 {
4662 static_assert_uimm_bits!(IMM5, 5);4662 static_assert_uimm_bits!(IMM5, 5);
4663 __lsx_vbsrl_v(a, IMM5)4663 unsafe { __lsx_vbsrl_v(a, IMM5) }
4664}4664}
46654665
4666#[inline]4666#[inline]
4667#[target_feature(enable = "lsx")]4667#[target_feature(enable = "lsx")]
4668#[rustc_legacy_const_generics(1)]4668#[rustc_legacy_const_generics(1)]
4669#[unstable(feature = "stdarch_loongarch", issue = "117427")]4669#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4670pub unsafe fn lsx_vbsll_v<const IMM5: u32>(a: v16i8) -> v16i8 {4670pub fn lsx_vbsll_v<const IMM5: u32>(a: v16i8) -> v16i8 {
4671 static_assert_uimm_bits!(IMM5, 5);4671 static_assert_uimm_bits!(IMM5, 5);
4672 __lsx_vbsll_v(a, IMM5)4672 unsafe { __lsx_vbsll_v(a, IMM5) }
4673}4673}
46744674
4675#[inline]4675#[inline]
4676#[target_feature(enable = "lsx")]4676#[target_feature(enable = "lsx")]
4677#[rustc_legacy_const_generics(2)]4677#[rustc_legacy_const_generics(2)]
4678#[unstable(feature = "stdarch_loongarch", issue = "117427")]4678#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4679pub unsafe fn lsx_vextrins_b<const IMM8: u32>(a: v16i8, b: v16i8) -> v16i8 {4679pub fn lsx_vextrins_b<const IMM8: u32>(a: v16i8, b: v16i8) -> v16i8 {
4680 static_assert_uimm_bits!(IMM8, 8);4680 static_assert_uimm_bits!(IMM8, 8);
4681 __lsx_vextrins_b(a, b, IMM8)4681 unsafe { __lsx_vextrins_b(a, b, IMM8) }
4682}4682}
46834683
4684#[inline]4684#[inline]
4685#[target_feature(enable = "lsx")]4685#[target_feature(enable = "lsx")]
4686#[rustc_legacy_const_generics(2)]4686#[rustc_legacy_const_generics(2)]
4687#[unstable(feature = "stdarch_loongarch", issue = "117427")]4687#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4688pub unsafe fn lsx_vextrins_h<const IMM8: u32>(a: v8i16, b: v8i16) -> v8i16 {4688pub fn lsx_vextrins_h<const IMM8: u32>(a: v8i16, b: v8i16) -> v8i16 {
4689 static_assert_uimm_bits!(IMM8, 8);4689 static_assert_uimm_bits!(IMM8, 8);
4690 __lsx_vextrins_h(a, b, IMM8)4690 unsafe { __lsx_vextrins_h(a, b, IMM8) }
4691}4691}
46924692
4693#[inline]4693#[inline]
4694#[target_feature(enable = "lsx")]4694#[target_feature(enable = "lsx")]
4695#[rustc_legacy_const_generics(2)]4695#[rustc_legacy_const_generics(2)]
4696#[unstable(feature = "stdarch_loongarch", issue = "117427")]4696#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4697pub unsafe fn lsx_vextrins_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {4697pub fn lsx_vextrins_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {
4698 static_assert_uimm_bits!(IMM8, 8);4698 static_assert_uimm_bits!(IMM8, 8);
4699 __lsx_vextrins_w(a, b, IMM8)4699 unsafe { __lsx_vextrins_w(a, b, IMM8) }
4700}4700}
47014701
4702#[inline]4702#[inline]
4703#[target_feature(enable = "lsx")]4703#[target_feature(enable = "lsx")]
4704#[rustc_legacy_const_generics(2)]4704#[rustc_legacy_const_generics(2)]
4705#[unstable(feature = "stdarch_loongarch", issue = "117427")]4705#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4706pub unsafe fn lsx_vextrins_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {4706pub fn lsx_vextrins_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {
4707 static_assert_uimm_bits!(IMM8, 8);4707 static_assert_uimm_bits!(IMM8, 8);
4708 __lsx_vextrins_d(a, b, IMM8)4708 unsafe { __lsx_vextrins_d(a, b, IMM8) }
4709}4709}
47104710
4711#[inline]4711#[inline]
4712#[target_feature(enable = "lsx")]4712#[target_feature(enable = "lsx")]
4713#[unstable(feature = "stdarch_loongarch", issue = "117427")]4713#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4714pub unsafe fn lsx_vmskltz_b(a: v16i8) -> v16i8 {4714pub fn lsx_vmskltz_b(a: v16i8) -> v16i8 {
4715 __lsx_vmskltz_b(a)4715 unsafe { __lsx_vmskltz_b(a) }
4716}4716}
47174717
4718#[inline]4718#[inline]
4719#[target_feature(enable = "lsx")]4719#[target_feature(enable = "lsx")]
4720#[unstable(feature = "stdarch_loongarch", issue = "117427")]4720#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4721pub unsafe fn lsx_vmskltz_h(a: v8i16) -> v8i16 {4721pub fn lsx_vmskltz_h(a: v8i16) -> v8i16 {
4722 __lsx_vmskltz_h(a)4722 unsafe { __lsx_vmskltz_h(a) }
4723}4723}
47244724
4725#[inline]4725#[inline]
4726#[target_feature(enable = "lsx")]4726#[target_feature(enable = "lsx")]
4727#[unstable(feature = "stdarch_loongarch", issue = "117427")]4727#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4728pub unsafe fn lsx_vmskltz_w(a: v4i32) -> v4i32 {4728pub fn lsx_vmskltz_w(a: v4i32) -> v4i32 {
4729 __lsx_vmskltz_w(a)4729 unsafe { __lsx_vmskltz_w(a) }
4730}4730}
47314731
4732#[inline]4732#[inline]
4733#[target_feature(enable = "lsx")]4733#[target_feature(enable = "lsx")]
4734#[unstable(feature = "stdarch_loongarch", issue = "117427")]4734#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4735pub unsafe fn lsx_vmskltz_d(a: v2i64) -> v2i64 {4735pub fn lsx_vmskltz_d(a: v2i64) -> v2i64 {
4736 __lsx_vmskltz_d(a)4736 unsafe { __lsx_vmskltz_d(a) }
4737}4737}
47384738
4739#[inline]4739#[inline]
4740#[target_feature(enable = "lsx")]4740#[target_feature(enable = "lsx")]
4741#[unstable(feature = "stdarch_loongarch", issue = "117427")]4741#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4742pub unsafe fn lsx_vsigncov_b(a: v16i8, b: v16i8) -> v16i8 {4742pub fn lsx_vsigncov_b(a: v16i8, b: v16i8) -> v16i8 {
4743 __lsx_vsigncov_b(a, b)4743 unsafe { __lsx_vsigncov_b(a, b) }
4744}4744}
47454745
4746#[inline]4746#[inline]
4747#[target_feature(enable = "lsx")]4747#[target_feature(enable = "lsx")]
4748#[unstable(feature = "stdarch_loongarch", issue = "117427")]4748#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4749pub unsafe fn lsx_vsigncov_h(a: v8i16, b: v8i16) -> v8i16 {4749pub fn lsx_vsigncov_h(a: v8i16, b: v8i16) -> v8i16 {
4750 __lsx_vsigncov_h(a, b)4750 unsafe { __lsx_vsigncov_h(a, b) }
4751}4751}
47524752
4753#[inline]4753#[inline]
4754#[target_feature(enable = "lsx")]4754#[target_feature(enable = "lsx")]
4755#[unstable(feature = "stdarch_loongarch", issue = "117427")]4755#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4756pub unsafe fn lsx_vsigncov_w(a: v4i32, b: v4i32) -> v4i32 {4756pub fn lsx_vsigncov_w(a: v4i32, b: v4i32) -> v4i32 {
4757 __lsx_vsigncov_w(a, b)4757 unsafe { __lsx_vsigncov_w(a, b) }
4758}4758}
47594759
4760#[inline]4760#[inline]
4761#[target_feature(enable = "lsx")]4761#[target_feature(enable = "lsx")]
4762#[unstable(feature = "stdarch_loongarch", issue = "117427")]4762#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4763pub unsafe fn lsx_vsigncov_d(a: v2i64, b: v2i64) -> v2i64 {4763pub fn lsx_vsigncov_d(a: v2i64, b: v2i64) -> v2i64 {
4764 __lsx_vsigncov_d(a, b)4764 unsafe { __lsx_vsigncov_d(a, b) }
4765}4765}
47664766
4767#[inline]4767#[inline]
4768#[target_feature(enable = "lsx")]4768#[target_feature(enable = "lsx")]
4769#[unstable(feature = "stdarch_loongarch", issue = "117427")]4769#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4770pub unsafe fn lsx_vfmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {4770pub fn lsx_vfmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
4771 __lsx_vfmadd_s(a, b, c)4771 unsafe { __lsx_vfmadd_s(a, b, c) }
4772}4772}
47734773
4774#[inline]4774#[inline]
4775#[target_feature(enable = "lsx")]4775#[target_feature(enable = "lsx")]
4776#[unstable(feature = "stdarch_loongarch", issue = "117427")]4776#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4777pub unsafe fn lsx_vfmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {4777pub fn lsx_vfmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
4778 __lsx_vfmadd_d(a, b, c)4778 unsafe { __lsx_vfmadd_d(a, b, c) }
4779}4779}
47804780
4781#[inline]4781#[inline]
4782#[target_feature(enable = "lsx")]4782#[target_feature(enable = "lsx")]
4783#[unstable(feature = "stdarch_loongarch", issue = "117427")]4783#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4784pub unsafe fn lsx_vfmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {4784pub fn lsx_vfmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
4785 __lsx_vfmsub_s(a, b, c)4785 unsafe { __lsx_vfmsub_s(a, b, c) }
4786}4786}
47874787
4788#[inline]4788#[inline]
4789#[target_feature(enable = "lsx")]4789#[target_feature(enable = "lsx")]
4790#[unstable(feature = "stdarch_loongarch", issue = "117427")]4790#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4791pub unsafe fn lsx_vfmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {4791pub fn lsx_vfmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
4792 __lsx_vfmsub_d(a, b, c)4792 unsafe { __lsx_vfmsub_d(a, b, c) }
4793}4793}
47944794
4795#[inline]4795#[inline]
4796#[target_feature(enable = "lsx")]4796#[target_feature(enable = "lsx")]
4797#[unstable(feature = "stdarch_loongarch", issue = "117427")]4797#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4798pub unsafe fn lsx_vfnmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {4798pub fn lsx_vfnmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
4799 __lsx_vfnmadd_s(a, b, c)4799 unsafe { __lsx_vfnmadd_s(a, b, c) }
4800}4800}
48014801
4802#[inline]4802#[inline]
4803#[target_feature(enable = "lsx")]4803#[target_feature(enable = "lsx")]
4804#[unstable(feature = "stdarch_loongarch", issue = "117427")]4804#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4805pub unsafe fn lsx_vfnmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {4805pub fn lsx_vfnmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
4806 __lsx_vfnmadd_d(a, b, c)4806 unsafe { __lsx_vfnmadd_d(a, b, c) }
4807}4807}
48084808
4809#[inline]4809#[inline]
4810#[target_feature(enable = "lsx")]4810#[target_feature(enable = "lsx")]
4811#[unstable(feature = "stdarch_loongarch", issue = "117427")]4811#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4812pub unsafe fn lsx_vfnmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {4812pub fn lsx_vfnmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
4813 __lsx_vfnmsub_s(a, b, c)4813 unsafe { __lsx_vfnmsub_s(a, b, c) }
4814}4814}
48154815
4816#[inline]4816#[inline]
4817#[target_feature(enable = "lsx")]4817#[target_feature(enable = "lsx")]
4818#[unstable(feature = "stdarch_loongarch", issue = "117427")]4818#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4819pub unsafe fn lsx_vfnmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {4819pub fn lsx_vfnmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
4820 __lsx_vfnmsub_d(a, b, c)4820 unsafe { __lsx_vfnmsub_d(a, b, c) }
4821}4821}
48224822
4823#[inline]4823#[inline]
4824#[target_feature(enable = "lsx")]4824#[target_feature(enable = "lsx")]
4825#[unstable(feature = "stdarch_loongarch", issue = "117427")]4825#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4826pub unsafe fn lsx_vftintrne_w_s(a: v4f32) -> v4i32 {4826pub fn lsx_vftintrne_w_s(a: v4f32) -> v4i32 {
4827 __lsx_vftintrne_w_s(a)4827 unsafe { __lsx_vftintrne_w_s(a) }
4828}4828}
48294829
4830#[inline]4830#[inline]
4831#[target_feature(enable = "lsx")]4831#[target_feature(enable = "lsx")]
4832#[unstable(feature = "stdarch_loongarch", issue = "117427")]4832#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4833pub unsafe fn lsx_vftintrne_l_d(a: v2f64) -> v2i64 {4833pub fn lsx_vftintrne_l_d(a: v2f64) -> v2i64 {
4834 __lsx_vftintrne_l_d(a)4834 unsafe { __lsx_vftintrne_l_d(a) }
4835}4835}
48364836
4837#[inline]4837#[inline]
4838#[target_feature(enable = "lsx")]4838#[target_feature(enable = "lsx")]
4839#[unstable(feature = "stdarch_loongarch", issue = "117427")]4839#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4840pub unsafe fn lsx_vftintrp_w_s(a: v4f32) -> v4i32 {4840pub fn lsx_vftintrp_w_s(a: v4f32) -> v4i32 {
4841 __lsx_vftintrp_w_s(a)4841 unsafe { __lsx_vftintrp_w_s(a) }
4842}4842}
48434843
4844#[inline]4844#[inline]
4845#[target_feature(enable = "lsx")]4845#[target_feature(enable = "lsx")]
4846#[unstable(feature = "stdarch_loongarch", issue = "117427")]4846#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4847pub unsafe fn lsx_vftintrp_l_d(a: v2f64) -> v2i64 {4847pub fn lsx_vftintrp_l_d(a: v2f64) -> v2i64 {
4848 __lsx_vftintrp_l_d(a)4848 unsafe { __lsx_vftintrp_l_d(a) }
4849}4849}
48504850
4851#[inline]4851#[inline]
4852#[target_feature(enable = "lsx")]4852#[target_feature(enable = "lsx")]
4853#[unstable(feature = "stdarch_loongarch", issue = "117427")]4853#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4854pub unsafe fn lsx_vftintrm_w_s(a: v4f32) -> v4i32 {4854pub fn lsx_vftintrm_w_s(a: v4f32) -> v4i32 {
4855 __lsx_vftintrm_w_s(a)4855 unsafe { __lsx_vftintrm_w_s(a) }
4856}4856}
48574857
4858#[inline]4858#[inline]
4859#[target_feature(enable = "lsx")]4859#[target_feature(enable = "lsx")]
4860#[unstable(feature = "stdarch_loongarch", issue = "117427")]4860#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4861pub unsafe fn lsx_vftintrm_l_d(a: v2f64) -> v2i64 {4861pub fn lsx_vftintrm_l_d(a: v2f64) -> v2i64 {
4862 __lsx_vftintrm_l_d(a)4862 unsafe { __lsx_vftintrm_l_d(a) }
4863}4863}
48644864
4865#[inline]4865#[inline]
4866#[target_feature(enable = "lsx")]4866#[target_feature(enable = "lsx")]
4867#[unstable(feature = "stdarch_loongarch", issue = "117427")]4867#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4868pub unsafe fn lsx_vftint_w_d(a: v2f64, b: v2f64) -> v4i32 {4868pub fn lsx_vftint_w_d(a: v2f64, b: v2f64) -> v4i32 {
4869 __lsx_vftint_w_d(a, b)4869 unsafe { __lsx_vftint_w_d(a, b) }
4870}4870}
48714871
4872#[inline]4872#[inline]
4873#[target_feature(enable = "lsx")]4873#[target_feature(enable = "lsx")]
4874#[unstable(feature = "stdarch_loongarch", issue = "117427")]4874#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4875pub unsafe fn lsx_vffint_s_l(a: v2i64, b: v2i64) -> v4f32 {4875pub fn lsx_vffint_s_l(a: v2i64, b: v2i64) -> v4f32 {
4876 __lsx_vffint_s_l(a, b)4876 unsafe { __lsx_vffint_s_l(a, b) }
4877}4877}
48784878
4879#[inline]4879#[inline]
4880#[target_feature(enable = "lsx")]4880#[target_feature(enable = "lsx")]
4881#[unstable(feature = "stdarch_loongarch", issue = "117427")]4881#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4882pub unsafe fn lsx_vftintrz_w_d(a: v2f64, b: v2f64) -> v4i32 {4882pub fn lsx_vftintrz_w_d(a: v2f64, b: v2f64) -> v4i32 {
4883 __lsx_vftintrz_w_d(a, b)4883 unsafe { __lsx_vftintrz_w_d(a, b) }
4884}4884}
48854885
4886#[inline]4886#[inline]
4887#[target_feature(enable = "lsx")]4887#[target_feature(enable = "lsx")]
4888#[unstable(feature = "stdarch_loongarch", issue = "117427")]4888#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4889pub unsafe fn lsx_vftintrp_w_d(a: v2f64, b: v2f64) -> v4i32 {4889pub fn lsx_vftintrp_w_d(a: v2f64, b: v2f64) -> v4i32 {
4890 __lsx_vftintrp_w_d(a, b)4890 unsafe { __lsx_vftintrp_w_d(a, b) }
4891}4891}
48924892
4893#[inline]4893#[inline]
4894#[target_feature(enable = "lsx")]4894#[target_feature(enable = "lsx")]
4895#[unstable(feature = "stdarch_loongarch", issue = "117427")]4895#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4896pub unsafe fn lsx_vftintrm_w_d(a: v2f64, b: v2f64) -> v4i32 {4896pub fn lsx_vftintrm_w_d(a: v2f64, b: v2f64) -> v4i32 {
4897 __lsx_vftintrm_w_d(a, b)4897 unsafe { __lsx_vftintrm_w_d(a, b) }
4898}4898}
48994899
4900#[inline]4900#[inline]
4901#[target_feature(enable = "lsx")]4901#[target_feature(enable = "lsx")]
4902#[unstable(feature = "stdarch_loongarch", issue = "117427")]4902#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4903pub unsafe fn lsx_vftintrne_w_d(a: v2f64, b: v2f64) -> v4i32 {4903pub fn lsx_vftintrne_w_d(a: v2f64, b: v2f64) -> v4i32 {
4904 __lsx_vftintrne_w_d(a, b)4904 unsafe { __lsx_vftintrne_w_d(a, b) }
4905}4905}
49064906
4907#[inline]4907#[inline]
4908#[target_feature(enable = "lsx")]4908#[target_feature(enable = "lsx")]
4909#[unstable(feature = "stdarch_loongarch", issue = "117427")]4909#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4910pub unsafe fn lsx_vftintl_l_s(a: v4f32) -> v2i64 {4910pub fn lsx_vftintl_l_s(a: v4f32) -> v2i64 {
4911 __lsx_vftintl_l_s(a)4911 unsafe { __lsx_vftintl_l_s(a) }
4912}4912}
49134913
4914#[inline]4914#[inline]
4915#[target_feature(enable = "lsx")]4915#[target_feature(enable = "lsx")]
4916#[unstable(feature = "stdarch_loongarch", issue = "117427")]4916#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4917pub unsafe fn lsx_vftinth_l_s(a: v4f32) -> v2i64 {4917pub fn lsx_vftinth_l_s(a: v4f32) -> v2i64 {
4918 __lsx_vftinth_l_s(a)4918 unsafe { __lsx_vftinth_l_s(a) }
4919}4919}
49204920
4921#[inline]4921#[inline]
4922#[target_feature(enable = "lsx")]4922#[target_feature(enable = "lsx")]
4923#[unstable(feature = "stdarch_loongarch", issue = "117427")]4923#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4924pub unsafe fn lsx_vffinth_d_w(a: v4i32) -> v2f64 {4924pub fn lsx_vffinth_d_w(a: v4i32) -> v2f64 {
4925 __lsx_vffinth_d_w(a)4925 unsafe { __lsx_vffinth_d_w(a) }
4926}4926}
49274927
4928#[inline]4928#[inline]
4929#[target_feature(enable = "lsx")]4929#[target_feature(enable = "lsx")]
4930#[unstable(feature = "stdarch_loongarch", issue = "117427")]4930#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4931pub unsafe fn lsx_vffintl_d_w(a: v4i32) -> v2f64 {4931pub fn lsx_vffintl_d_w(a: v4i32) -> v2f64 {
4932 __lsx_vffintl_d_w(a)4932 unsafe { __lsx_vffintl_d_w(a) }
4933}4933}
49344934
4935#[inline]4935#[inline]
4936#[target_feature(enable = "lsx")]4936#[target_feature(enable = "lsx")]
4937#[unstable(feature = "stdarch_loongarch", issue = "117427")]4937#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4938pub unsafe fn lsx_vftintrzl_l_s(a: v4f32) -> v2i64 {4938pub fn lsx_vftintrzl_l_s(a: v4f32) -> v2i64 {
4939 __lsx_vftintrzl_l_s(a)4939 unsafe { __lsx_vftintrzl_l_s(a) }
4940}4940}
49414941
4942#[inline]4942#[inline]
4943#[target_feature(enable = "lsx")]4943#[target_feature(enable = "lsx")]
4944#[unstable(feature = "stdarch_loongarch", issue = "117427")]4944#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4945pub unsafe fn lsx_vftintrzh_l_s(a: v4f32) -> v2i64 {4945pub fn lsx_vftintrzh_l_s(a: v4f32) -> v2i64 {
4946 __lsx_vftintrzh_l_s(a)4946 unsafe { __lsx_vftintrzh_l_s(a) }
4947}4947}
49484948
4949#[inline]4949#[inline]
4950#[target_feature(enable = "lsx")]4950#[target_feature(enable = "lsx")]
4951#[unstable(feature = "stdarch_loongarch", issue = "117427")]4951#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4952pub unsafe fn lsx_vftintrpl_l_s(a: v4f32) -> v2i64 {4952pub fn lsx_vftintrpl_l_s(a: v4f32) -> v2i64 {
4953 __lsx_vftintrpl_l_s(a)4953 unsafe { __lsx_vftintrpl_l_s(a) }
4954}4954}
49554955
4956#[inline]4956#[inline]
4957#[target_feature(enable = "lsx")]4957#[target_feature(enable = "lsx")]
4958#[unstable(feature = "stdarch_loongarch", issue = "117427")]4958#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4959pub unsafe fn lsx_vftintrph_l_s(a: v4f32) -> v2i64 {4959pub fn lsx_vftintrph_l_s(a: v4f32) -> v2i64 {
4960 __lsx_vftintrph_l_s(a)4960 unsafe { __lsx_vftintrph_l_s(a) }
4961}4961}
49624962
4963#[inline]4963#[inline]
4964#[target_feature(enable = "lsx")]4964#[target_feature(enable = "lsx")]
4965#[unstable(feature = "stdarch_loongarch", issue = "117427")]4965#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4966pub unsafe fn lsx_vftintrml_l_s(a: v4f32) -> v2i64 {4966pub fn lsx_vftintrml_l_s(a: v4f32) -> v2i64 {
4967 __lsx_vftintrml_l_s(a)4967 unsafe { __lsx_vftintrml_l_s(a) }
4968}4968}
49694969
4970#[inline]4970#[inline]
4971#[target_feature(enable = "lsx")]4971#[target_feature(enable = "lsx")]
4972#[unstable(feature = "stdarch_loongarch", issue = "117427")]4972#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4973pub unsafe fn lsx_vftintrmh_l_s(a: v4f32) -> v2i64 {4973pub fn lsx_vftintrmh_l_s(a: v4f32) -> v2i64 {
4974 __lsx_vftintrmh_l_s(a)4974 unsafe { __lsx_vftintrmh_l_s(a) }
4975}4975}
49764976
4977#[inline]4977#[inline]
4978#[target_feature(enable = "lsx")]4978#[target_feature(enable = "lsx")]
4979#[unstable(feature = "stdarch_loongarch", issue = "117427")]4979#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4980pub unsafe fn lsx_vftintrnel_l_s(a: v4f32) -> v2i64 {4980pub fn lsx_vftintrnel_l_s(a: v4f32) -> v2i64 {
4981 __lsx_vftintrnel_l_s(a)4981 unsafe { __lsx_vftintrnel_l_s(a) }
4982}4982}
49834983
4984#[inline]4984#[inline]
4985#[target_feature(enable = "lsx")]4985#[target_feature(enable = "lsx")]
4986#[unstable(feature = "stdarch_loongarch", issue = "117427")]4986#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4987pub unsafe fn lsx_vftintrneh_l_s(a: v4f32) -> v2i64 {4987pub fn lsx_vftintrneh_l_s(a: v4f32) -> v2i64 {
4988 __lsx_vftintrneh_l_s(a)4988 unsafe { __lsx_vftintrneh_l_s(a) }
4989}4989}
49904990
4991#[inline]4991#[inline]
4992#[target_feature(enable = "lsx")]4992#[target_feature(enable = "lsx")]
4993#[unstable(feature = "stdarch_loongarch", issue = "117427")]4993#[unstable(feature = "stdarch_loongarch", issue = "117427")]
4994pub unsafe fn lsx_vfrintrne_s(a: v4f32) -> v4f32 {4994pub fn lsx_vfrintrne_s(a: v4f32) -> v4f32 {
4995 __lsx_vfrintrne_s(a)4995 unsafe { __lsx_vfrintrne_s(a) }
4996}4996}
49974997
4998#[inline]4998#[inline]
4999#[target_feature(enable = "lsx")]4999#[target_feature(enable = "lsx")]
5000#[unstable(feature = "stdarch_loongarch", issue = "117427")]5000#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5001pub unsafe fn lsx_vfrintrne_d(a: v2f64) -> v2f64 {5001pub fn lsx_vfrintrne_d(a: v2f64) -> v2f64 {
5002 __lsx_vfrintrne_d(a)5002 unsafe { __lsx_vfrintrne_d(a) }
5003}5003}
50045004
5005#[inline]5005#[inline]
5006#[target_feature(enable = "lsx")]5006#[target_feature(enable = "lsx")]
5007#[unstable(feature = "stdarch_loongarch", issue = "117427")]5007#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5008pub unsafe fn lsx_vfrintrz_s(a: v4f32) -> v4f32 {5008pub fn lsx_vfrintrz_s(a: v4f32) -> v4f32 {
5009 __lsx_vfrintrz_s(a)5009 unsafe { __lsx_vfrintrz_s(a) }
5010}5010}
50115011
5012#[inline]5012#[inline]
5013#[target_feature(enable = "lsx")]5013#[target_feature(enable = "lsx")]
5014#[unstable(feature = "stdarch_loongarch", issue = "117427")]5014#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5015pub unsafe fn lsx_vfrintrz_d(a: v2f64) -> v2f64 {5015pub fn lsx_vfrintrz_d(a: v2f64) -> v2f64 {
5016 __lsx_vfrintrz_d(a)5016 unsafe { __lsx_vfrintrz_d(a) }
5017}5017}
50185018
5019#[inline]5019#[inline]
5020#[target_feature(enable = "lsx")]5020#[target_feature(enable = "lsx")]
5021#[unstable(feature = "stdarch_loongarch", issue = "117427")]5021#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5022pub unsafe fn lsx_vfrintrp_s(a: v4f32) -> v4f32 {5022pub fn lsx_vfrintrp_s(a: v4f32) -> v4f32 {
5023 __lsx_vfrintrp_s(a)5023 unsafe { __lsx_vfrintrp_s(a) }
5024}5024}
50255025
5026#[inline]5026#[inline]
5027#[target_feature(enable = "lsx")]5027#[target_feature(enable = "lsx")]
5028#[unstable(feature = "stdarch_loongarch", issue = "117427")]5028#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5029pub unsafe fn lsx_vfrintrp_d(a: v2f64) -> v2f64 {5029pub fn lsx_vfrintrp_d(a: v2f64) -> v2f64 {
5030 __lsx_vfrintrp_d(a)5030 unsafe { __lsx_vfrintrp_d(a) }
5031}5031}
50325032
5033#[inline]5033#[inline]
5034#[target_feature(enable = "lsx")]5034#[target_feature(enable = "lsx")]
5035#[unstable(feature = "stdarch_loongarch", issue = "117427")]5035#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5036pub unsafe fn lsx_vfrintrm_s(a: v4f32) -> v4f32 {5036pub fn lsx_vfrintrm_s(a: v4f32) -> v4f32 {
5037 __lsx_vfrintrm_s(a)5037 unsafe { __lsx_vfrintrm_s(a) }
5038}5038}
50395039
5040#[inline]5040#[inline]
5041#[target_feature(enable = "lsx")]5041#[target_feature(enable = "lsx")]
5042#[unstable(feature = "stdarch_loongarch", issue = "117427")]5042#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5043pub unsafe fn lsx_vfrintrm_d(a: v2f64) -> v2f64 {5043pub fn lsx_vfrintrm_d(a: v2f64) -> v2f64 {
5044 __lsx_vfrintrm_d(a)5044 unsafe { __lsx_vfrintrm_d(a) }
5045}5045}
50465046
5047#[inline]5047#[inline]
...@@ -5087,687 +5087,687 @@ pub unsafe fn lsx_vstelm_d<const IMM_S8: i32, const IMM1: u32>(a: v2i64, mem_add...@@ -5087,687 +5087,687 @@ pub unsafe fn lsx_vstelm_d<const IMM_S8: i32, const IMM1: u32>(a: v2i64, mem_add
5087#[inline]5087#[inline]
5088#[target_feature(enable = "lsx")]5088#[target_feature(enable = "lsx")]
5089#[unstable(feature = "stdarch_loongarch", issue = "117427")]5089#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5090pub unsafe fn lsx_vaddwev_d_w(a: v4i32, b: v4i32) -> v2i64 {5090pub fn lsx_vaddwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
5091 __lsx_vaddwev_d_w(a, b)5091 unsafe { __lsx_vaddwev_d_w(a, b) }
5092}5092}
50935093
5094#[inline]5094#[inline]
5095#[target_feature(enable = "lsx")]5095#[target_feature(enable = "lsx")]
5096#[unstable(feature = "stdarch_loongarch", issue = "117427")]5096#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5097pub unsafe fn lsx_vaddwev_w_h(a: v8i16, b: v8i16) -> v4i32 {5097pub fn lsx_vaddwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
5098 __lsx_vaddwev_w_h(a, b)5098 unsafe { __lsx_vaddwev_w_h(a, b) }
5099}5099}
51005100
5101#[inline]5101#[inline]
5102#[target_feature(enable = "lsx")]5102#[target_feature(enable = "lsx")]
5103#[unstable(feature = "stdarch_loongarch", issue = "117427")]5103#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5104pub unsafe fn lsx_vaddwev_h_b(a: v16i8, b: v16i8) -> v8i16 {5104pub fn lsx_vaddwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
5105 __lsx_vaddwev_h_b(a, b)5105 unsafe { __lsx_vaddwev_h_b(a, b) }
5106}5106}
51075107
5108#[inline]5108#[inline]
5109#[target_feature(enable = "lsx")]5109#[target_feature(enable = "lsx")]
5110#[unstable(feature = "stdarch_loongarch", issue = "117427")]5110#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5111pub unsafe fn lsx_vaddwod_d_w(a: v4i32, b: v4i32) -> v2i64 {5111pub fn lsx_vaddwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
5112 __lsx_vaddwod_d_w(a, b)5112 unsafe { __lsx_vaddwod_d_w(a, b) }
5113}5113}
51145114
5115#[inline]5115#[inline]
5116#[target_feature(enable = "lsx")]5116#[target_feature(enable = "lsx")]
5117#[unstable(feature = "stdarch_loongarch", issue = "117427")]5117#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5118pub unsafe fn lsx_vaddwod_w_h(a: v8i16, b: v8i16) -> v4i32 {5118pub fn lsx_vaddwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
5119 __lsx_vaddwod_w_h(a, b)5119 unsafe { __lsx_vaddwod_w_h(a, b) }
5120}5120}
51215121
5122#[inline]5122#[inline]
5123#[target_feature(enable = "lsx")]5123#[target_feature(enable = "lsx")]
5124#[unstable(feature = "stdarch_loongarch", issue = "117427")]5124#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5125pub unsafe fn lsx_vaddwod_h_b(a: v16i8, b: v16i8) -> v8i16 {5125pub fn lsx_vaddwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
5126 __lsx_vaddwod_h_b(a, b)5126 unsafe { __lsx_vaddwod_h_b(a, b) }
5127}5127}
51285128
5129#[inline]5129#[inline]
5130#[target_feature(enable = "lsx")]5130#[target_feature(enable = "lsx")]
5131#[unstable(feature = "stdarch_loongarch", issue = "117427")]5131#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5132pub unsafe fn lsx_vaddwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {5132pub fn lsx_vaddwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
5133 __lsx_vaddwev_d_wu(a, b)5133 unsafe { __lsx_vaddwev_d_wu(a, b) }
5134}5134}
51355135
5136#[inline]5136#[inline]
5137#[target_feature(enable = "lsx")]5137#[target_feature(enable = "lsx")]
5138#[unstable(feature = "stdarch_loongarch", issue = "117427")]5138#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5139pub unsafe fn lsx_vaddwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {5139pub fn lsx_vaddwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
5140 __lsx_vaddwev_w_hu(a, b)5140 unsafe { __lsx_vaddwev_w_hu(a, b) }
5141}5141}
51425142
5143#[inline]5143#[inline]
5144#[target_feature(enable = "lsx")]5144#[target_feature(enable = "lsx")]
5145#[unstable(feature = "stdarch_loongarch", issue = "117427")]5145#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5146pub unsafe fn lsx_vaddwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {5146pub fn lsx_vaddwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
5147 __lsx_vaddwev_h_bu(a, b)5147 unsafe { __lsx_vaddwev_h_bu(a, b) }
5148}5148}
51495149
5150#[inline]5150#[inline]
5151#[target_feature(enable = "lsx")]5151#[target_feature(enable = "lsx")]
5152#[unstable(feature = "stdarch_loongarch", issue = "117427")]5152#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5153pub unsafe fn lsx_vaddwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {5153pub fn lsx_vaddwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
5154 __lsx_vaddwod_d_wu(a, b)5154 unsafe { __lsx_vaddwod_d_wu(a, b) }
5155}5155}
51565156
5157#[inline]5157#[inline]
5158#[target_feature(enable = "lsx")]5158#[target_feature(enable = "lsx")]
5159#[unstable(feature = "stdarch_loongarch", issue = "117427")]5159#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5160pub unsafe fn lsx_vaddwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {5160pub fn lsx_vaddwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
5161 __lsx_vaddwod_w_hu(a, b)5161 unsafe { __lsx_vaddwod_w_hu(a, b) }
5162}5162}
51635163
5164#[inline]5164#[inline]
5165#[target_feature(enable = "lsx")]5165#[target_feature(enable = "lsx")]
5166#[unstable(feature = "stdarch_loongarch", issue = "117427")]5166#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5167pub unsafe fn lsx_vaddwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {5167pub fn lsx_vaddwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
5168 __lsx_vaddwod_h_bu(a, b)5168 unsafe { __lsx_vaddwod_h_bu(a, b) }
5169}5169}
51705170
5171#[inline]5171#[inline]
5172#[target_feature(enable = "lsx")]5172#[target_feature(enable = "lsx")]
5173#[unstable(feature = "stdarch_loongarch", issue = "117427")]5173#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5174pub unsafe fn lsx_vaddwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {5174pub fn lsx_vaddwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
5175 __lsx_vaddwev_d_wu_w(a, b)5175 unsafe { __lsx_vaddwev_d_wu_w(a, b) }
5176}5176}
51775177
5178#[inline]5178#[inline]
5179#[target_feature(enable = "lsx")]5179#[target_feature(enable = "lsx")]
5180#[unstable(feature = "stdarch_loongarch", issue = "117427")]5180#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5181pub unsafe fn lsx_vaddwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {5181pub fn lsx_vaddwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
5182 __lsx_vaddwev_w_hu_h(a, b)5182 unsafe { __lsx_vaddwev_w_hu_h(a, b) }
5183}5183}
51845184
5185#[inline]5185#[inline]
5186#[target_feature(enable = "lsx")]5186#[target_feature(enable = "lsx")]
5187#[unstable(feature = "stdarch_loongarch", issue = "117427")]5187#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5188pub unsafe fn lsx_vaddwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {5188pub fn lsx_vaddwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
5189 __lsx_vaddwev_h_bu_b(a, b)5189 unsafe { __lsx_vaddwev_h_bu_b(a, b) }
5190}5190}
51915191
5192#[inline]5192#[inline]
5193#[target_feature(enable = "lsx")]5193#[target_feature(enable = "lsx")]
5194#[unstable(feature = "stdarch_loongarch", issue = "117427")]5194#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5195pub unsafe fn lsx_vaddwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {5195pub fn lsx_vaddwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
5196 __lsx_vaddwod_d_wu_w(a, b)5196 unsafe { __lsx_vaddwod_d_wu_w(a, b) }
5197}5197}
51985198
5199#[inline]5199#[inline]
5200#[target_feature(enable = "lsx")]5200#[target_feature(enable = "lsx")]
5201#[unstable(feature = "stdarch_loongarch", issue = "117427")]5201#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5202pub unsafe fn lsx_vaddwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {5202pub fn lsx_vaddwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
5203 __lsx_vaddwod_w_hu_h(a, b)5203 unsafe { __lsx_vaddwod_w_hu_h(a, b) }
5204}5204}
52055205
5206#[inline]5206#[inline]
5207#[target_feature(enable = "lsx")]5207#[target_feature(enable = "lsx")]
5208#[unstable(feature = "stdarch_loongarch", issue = "117427")]5208#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5209pub unsafe fn lsx_vaddwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {5209pub fn lsx_vaddwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
5210 __lsx_vaddwod_h_bu_b(a, b)5210 unsafe { __lsx_vaddwod_h_bu_b(a, b) }
5211}5211}
52125212
5213#[inline]5213#[inline]
5214#[target_feature(enable = "lsx")]5214#[target_feature(enable = "lsx")]
5215#[unstable(feature = "stdarch_loongarch", issue = "117427")]5215#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5216pub unsafe fn lsx_vsubwev_d_w(a: v4i32, b: v4i32) -> v2i64 {5216pub fn lsx_vsubwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
5217 __lsx_vsubwev_d_w(a, b)5217 unsafe { __lsx_vsubwev_d_w(a, b) }
5218}5218}
52195219
5220#[inline]5220#[inline]
5221#[target_feature(enable = "lsx")]5221#[target_feature(enable = "lsx")]
5222#[unstable(feature = "stdarch_loongarch", issue = "117427")]5222#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5223pub unsafe fn lsx_vsubwev_w_h(a: v8i16, b: v8i16) -> v4i32 {5223pub fn lsx_vsubwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
5224 __lsx_vsubwev_w_h(a, b)5224 unsafe { __lsx_vsubwev_w_h(a, b) }
5225}5225}
52265226
5227#[inline]5227#[inline]
5228#[target_feature(enable = "lsx")]5228#[target_feature(enable = "lsx")]
5229#[unstable(feature = "stdarch_loongarch", issue = "117427")]5229#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5230pub unsafe fn lsx_vsubwev_h_b(a: v16i8, b: v16i8) -> v8i16 {5230pub fn lsx_vsubwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
5231 __lsx_vsubwev_h_b(a, b)5231 unsafe { __lsx_vsubwev_h_b(a, b) }
5232}5232}
52335233
5234#[inline]5234#[inline]
5235#[target_feature(enable = "lsx")]5235#[target_feature(enable = "lsx")]
5236#[unstable(feature = "stdarch_loongarch", issue = "117427")]5236#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5237pub unsafe fn lsx_vsubwod_d_w(a: v4i32, b: v4i32) -> v2i64 {5237pub fn lsx_vsubwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
5238 __lsx_vsubwod_d_w(a, b)5238 unsafe { __lsx_vsubwod_d_w(a, b) }
5239}5239}
52405240
5241#[inline]5241#[inline]
5242#[target_feature(enable = "lsx")]5242#[target_feature(enable = "lsx")]
5243#[unstable(feature = "stdarch_loongarch", issue = "117427")]5243#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5244pub unsafe fn lsx_vsubwod_w_h(a: v8i16, b: v8i16) -> v4i32 {5244pub fn lsx_vsubwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
5245 __lsx_vsubwod_w_h(a, b)5245 unsafe { __lsx_vsubwod_w_h(a, b) }
5246}5246}
52475247
5248#[inline]5248#[inline]
5249#[target_feature(enable = "lsx")]5249#[target_feature(enable = "lsx")]
5250#[unstable(feature = "stdarch_loongarch", issue = "117427")]5250#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5251pub unsafe fn lsx_vsubwod_h_b(a: v16i8, b: v16i8) -> v8i16 {5251pub fn lsx_vsubwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
5252 __lsx_vsubwod_h_b(a, b)5252 unsafe { __lsx_vsubwod_h_b(a, b) }
5253}5253}
52545254
5255#[inline]5255#[inline]
5256#[target_feature(enable = "lsx")]5256#[target_feature(enable = "lsx")]
5257#[unstable(feature = "stdarch_loongarch", issue = "117427")]5257#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5258pub unsafe fn lsx_vsubwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {5258pub fn lsx_vsubwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
5259 __lsx_vsubwev_d_wu(a, b)5259 unsafe { __lsx_vsubwev_d_wu(a, b) }
5260}5260}
52615261
5262#[inline]5262#[inline]
5263#[target_feature(enable = "lsx")]5263#[target_feature(enable = "lsx")]
5264#[unstable(feature = "stdarch_loongarch", issue = "117427")]5264#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5265pub unsafe fn lsx_vsubwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {5265pub fn lsx_vsubwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
5266 __lsx_vsubwev_w_hu(a, b)5266 unsafe { __lsx_vsubwev_w_hu(a, b) }
5267}5267}
52685268
5269#[inline]5269#[inline]
5270#[target_feature(enable = "lsx")]5270#[target_feature(enable = "lsx")]
5271#[unstable(feature = "stdarch_loongarch", issue = "117427")]5271#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5272pub unsafe fn lsx_vsubwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {5272pub fn lsx_vsubwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
5273 __lsx_vsubwev_h_bu(a, b)5273 unsafe { __lsx_vsubwev_h_bu(a, b) }
5274}5274}
52755275
5276#[inline]5276#[inline]
5277#[target_feature(enable = "lsx")]5277#[target_feature(enable = "lsx")]
5278#[unstable(feature = "stdarch_loongarch", issue = "117427")]5278#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5279pub unsafe fn lsx_vsubwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {5279pub fn lsx_vsubwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
5280 __lsx_vsubwod_d_wu(a, b)5280 unsafe { __lsx_vsubwod_d_wu(a, b) }
5281}5281}
52825282
5283#[inline]5283#[inline]
5284#[target_feature(enable = "lsx")]5284#[target_feature(enable = "lsx")]
5285#[unstable(feature = "stdarch_loongarch", issue = "117427")]5285#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5286pub unsafe fn lsx_vsubwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {5286pub fn lsx_vsubwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
5287 __lsx_vsubwod_w_hu(a, b)5287 unsafe { __lsx_vsubwod_w_hu(a, b) }
5288}5288}
52895289
5290#[inline]5290#[inline]
5291#[target_feature(enable = "lsx")]5291#[target_feature(enable = "lsx")]
5292#[unstable(feature = "stdarch_loongarch", issue = "117427")]5292#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5293pub unsafe fn lsx_vsubwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {5293pub fn lsx_vsubwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
5294 __lsx_vsubwod_h_bu(a, b)5294 unsafe { __lsx_vsubwod_h_bu(a, b) }
5295}5295}
52965296
5297#[inline]5297#[inline]
5298#[target_feature(enable = "lsx")]5298#[target_feature(enable = "lsx")]
5299#[unstable(feature = "stdarch_loongarch", issue = "117427")]5299#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5300pub unsafe fn lsx_vaddwev_q_d(a: v2i64, b: v2i64) -> v2i64 {5300pub fn lsx_vaddwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
5301 __lsx_vaddwev_q_d(a, b)5301 unsafe { __lsx_vaddwev_q_d(a, b) }
5302}5302}
53035303
5304#[inline]5304#[inline]
5305#[target_feature(enable = "lsx")]5305#[target_feature(enable = "lsx")]
5306#[unstable(feature = "stdarch_loongarch", issue = "117427")]5306#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5307pub unsafe fn lsx_vaddwod_q_d(a: v2i64, b: v2i64) -> v2i64 {5307pub fn lsx_vaddwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
5308 __lsx_vaddwod_q_d(a, b)5308 unsafe { __lsx_vaddwod_q_d(a, b) }
5309}5309}
53105310
5311#[inline]5311#[inline]
5312#[target_feature(enable = "lsx")]5312#[target_feature(enable = "lsx")]
5313#[unstable(feature = "stdarch_loongarch", issue = "117427")]5313#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5314pub unsafe fn lsx_vaddwev_q_du(a: v2u64, b: v2u64) -> v2i64 {5314pub fn lsx_vaddwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
5315 __lsx_vaddwev_q_du(a, b)5315 unsafe { __lsx_vaddwev_q_du(a, b) }
5316}5316}
53175317
5318#[inline]5318#[inline]
5319#[target_feature(enable = "lsx")]5319#[target_feature(enable = "lsx")]
5320#[unstable(feature = "stdarch_loongarch", issue = "117427")]5320#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5321pub unsafe fn lsx_vaddwod_q_du(a: v2u64, b: v2u64) -> v2i64 {5321pub fn lsx_vaddwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
5322 __lsx_vaddwod_q_du(a, b)5322 unsafe { __lsx_vaddwod_q_du(a, b) }
5323}5323}
53245324
5325#[inline]5325#[inline]
5326#[target_feature(enable = "lsx")]5326#[target_feature(enable = "lsx")]
5327#[unstable(feature = "stdarch_loongarch", issue = "117427")]5327#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5328pub unsafe fn lsx_vsubwev_q_d(a: v2i64, b: v2i64) -> v2i64 {5328pub fn lsx_vsubwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
5329 __lsx_vsubwev_q_d(a, b)5329 unsafe { __lsx_vsubwev_q_d(a, b) }
5330}5330}
53315331
5332#[inline]5332#[inline]
5333#[target_feature(enable = "lsx")]5333#[target_feature(enable = "lsx")]
5334#[unstable(feature = "stdarch_loongarch", issue = "117427")]5334#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5335pub unsafe fn lsx_vsubwod_q_d(a: v2i64, b: v2i64) -> v2i64 {5335pub fn lsx_vsubwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
5336 __lsx_vsubwod_q_d(a, b)5336 unsafe { __lsx_vsubwod_q_d(a, b) }
5337}5337}
53385338
5339#[inline]5339#[inline]
5340#[target_feature(enable = "lsx")]5340#[target_feature(enable = "lsx")]
5341#[unstable(feature = "stdarch_loongarch", issue = "117427")]5341#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5342pub unsafe fn lsx_vsubwev_q_du(a: v2u64, b: v2u64) -> v2i64 {5342pub fn lsx_vsubwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
5343 __lsx_vsubwev_q_du(a, b)5343 unsafe { __lsx_vsubwev_q_du(a, b) }
5344}5344}
53455345
5346#[inline]5346#[inline]
5347#[target_feature(enable = "lsx")]5347#[target_feature(enable = "lsx")]
5348#[unstable(feature = "stdarch_loongarch", issue = "117427")]5348#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5349pub unsafe fn lsx_vsubwod_q_du(a: v2u64, b: v2u64) -> v2i64 {5349pub fn lsx_vsubwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
5350 __lsx_vsubwod_q_du(a, b)5350 unsafe { __lsx_vsubwod_q_du(a, b) }
5351}5351}
53525352
5353#[inline]5353#[inline]
5354#[target_feature(enable = "lsx")]5354#[target_feature(enable = "lsx")]
5355#[unstable(feature = "stdarch_loongarch", issue = "117427")]5355#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5356pub unsafe fn lsx_vaddwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {5356pub fn lsx_vaddwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
5357 __lsx_vaddwev_q_du_d(a, b)5357 unsafe { __lsx_vaddwev_q_du_d(a, b) }
5358}5358}
53595359
5360#[inline]5360#[inline]
5361#[target_feature(enable = "lsx")]5361#[target_feature(enable = "lsx")]
5362#[unstable(feature = "stdarch_loongarch", issue = "117427")]5362#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5363pub unsafe fn lsx_vaddwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {5363pub fn lsx_vaddwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
5364 __lsx_vaddwod_q_du_d(a, b)5364 unsafe { __lsx_vaddwod_q_du_d(a, b) }
5365}5365}
53665366
5367#[inline]5367#[inline]
5368#[target_feature(enable = "lsx")]5368#[target_feature(enable = "lsx")]
5369#[unstable(feature = "stdarch_loongarch", issue = "117427")]5369#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5370pub unsafe fn lsx_vmulwev_d_w(a: v4i32, b: v4i32) -> v2i64 {5370pub fn lsx_vmulwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
5371 __lsx_vmulwev_d_w(a, b)5371 unsafe { __lsx_vmulwev_d_w(a, b) }
5372}5372}
53735373
5374#[inline]5374#[inline]
5375#[target_feature(enable = "lsx")]5375#[target_feature(enable = "lsx")]
5376#[unstable(feature = "stdarch_loongarch", issue = "117427")]5376#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5377pub unsafe fn lsx_vmulwev_w_h(a: v8i16, b: v8i16) -> v4i32 {5377pub fn lsx_vmulwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
5378 __lsx_vmulwev_w_h(a, b)5378 unsafe { __lsx_vmulwev_w_h(a, b) }
5379}5379}
53805380
5381#[inline]5381#[inline]
5382#[target_feature(enable = "lsx")]5382#[target_feature(enable = "lsx")]
5383#[unstable(feature = "stdarch_loongarch", issue = "117427")]5383#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5384pub unsafe fn lsx_vmulwev_h_b(a: v16i8, b: v16i8) -> v8i16 {5384pub fn lsx_vmulwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
5385 __lsx_vmulwev_h_b(a, b)5385 unsafe { __lsx_vmulwev_h_b(a, b) }
5386}5386}
53875387
5388#[inline]5388#[inline]
5389#[target_feature(enable = "lsx")]5389#[target_feature(enable = "lsx")]
5390#[unstable(feature = "stdarch_loongarch", issue = "117427")]5390#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5391pub unsafe fn lsx_vmulwod_d_w(a: v4i32, b: v4i32) -> v2i64 {5391pub fn lsx_vmulwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
5392 __lsx_vmulwod_d_w(a, b)5392 unsafe { __lsx_vmulwod_d_w(a, b) }
5393}5393}
53945394
5395#[inline]5395#[inline]
5396#[target_feature(enable = "lsx")]5396#[target_feature(enable = "lsx")]
5397#[unstable(feature = "stdarch_loongarch", issue = "117427")]5397#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5398pub unsafe fn lsx_vmulwod_w_h(a: v8i16, b: v8i16) -> v4i32 {5398pub fn lsx_vmulwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
5399 __lsx_vmulwod_w_h(a, b)5399 unsafe { __lsx_vmulwod_w_h(a, b) }
5400}5400}
54015401
5402#[inline]5402#[inline]
5403#[target_feature(enable = "lsx")]5403#[target_feature(enable = "lsx")]
5404#[unstable(feature = "stdarch_loongarch", issue = "117427")]5404#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5405pub unsafe fn lsx_vmulwod_h_b(a: v16i8, b: v16i8) -> v8i16 {5405pub fn lsx_vmulwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
5406 __lsx_vmulwod_h_b(a, b)5406 unsafe { __lsx_vmulwod_h_b(a, b) }
5407}5407}
54085408
5409#[inline]5409#[inline]
5410#[target_feature(enable = "lsx")]5410#[target_feature(enable = "lsx")]
5411#[unstable(feature = "stdarch_loongarch", issue = "117427")]5411#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5412pub unsafe fn lsx_vmulwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {5412pub fn lsx_vmulwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
5413 __lsx_vmulwev_d_wu(a, b)5413 unsafe { __lsx_vmulwev_d_wu(a, b) }
5414}5414}
54155415
5416#[inline]5416#[inline]
5417#[target_feature(enable = "lsx")]5417#[target_feature(enable = "lsx")]
5418#[unstable(feature = "stdarch_loongarch", issue = "117427")]5418#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5419pub unsafe fn lsx_vmulwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {5419pub fn lsx_vmulwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
5420 __lsx_vmulwev_w_hu(a, b)5420 unsafe { __lsx_vmulwev_w_hu(a, b) }
5421}5421}
54225422
5423#[inline]5423#[inline]
5424#[target_feature(enable = "lsx")]5424#[target_feature(enable = "lsx")]
5425#[unstable(feature = "stdarch_loongarch", issue = "117427")]5425#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5426pub unsafe fn lsx_vmulwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {5426pub fn lsx_vmulwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
5427 __lsx_vmulwev_h_bu(a, b)5427 unsafe { __lsx_vmulwev_h_bu(a, b) }
5428}5428}
54295429
5430#[inline]5430#[inline]
5431#[target_feature(enable = "lsx")]5431#[target_feature(enable = "lsx")]
5432#[unstable(feature = "stdarch_loongarch", issue = "117427")]5432#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5433pub unsafe fn lsx_vmulwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {5433pub fn lsx_vmulwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
5434 __lsx_vmulwod_d_wu(a, b)5434 unsafe { __lsx_vmulwod_d_wu(a, b) }
5435}5435}
54365436
5437#[inline]5437#[inline]
5438#[target_feature(enable = "lsx")]5438#[target_feature(enable = "lsx")]
5439#[unstable(feature = "stdarch_loongarch", issue = "117427")]5439#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5440pub unsafe fn lsx_vmulwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {5440pub fn lsx_vmulwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
5441 __lsx_vmulwod_w_hu(a, b)5441 unsafe { __lsx_vmulwod_w_hu(a, b) }
5442}5442}
54435443
5444#[inline]5444#[inline]
5445#[target_feature(enable = "lsx")]5445#[target_feature(enable = "lsx")]
5446#[unstable(feature = "stdarch_loongarch", issue = "117427")]5446#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5447pub unsafe fn lsx_vmulwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {5447pub fn lsx_vmulwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
5448 __lsx_vmulwod_h_bu(a, b)5448 unsafe { __lsx_vmulwod_h_bu(a, b) }
5449}5449}
54505450
5451#[inline]5451#[inline]
5452#[target_feature(enable = "lsx")]5452#[target_feature(enable = "lsx")]
5453#[unstable(feature = "stdarch_loongarch", issue = "117427")]5453#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5454pub unsafe fn lsx_vmulwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {5454pub fn lsx_vmulwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
5455 __lsx_vmulwev_d_wu_w(a, b)5455 unsafe { __lsx_vmulwev_d_wu_w(a, b) }
5456}5456}
54575457
5458#[inline]5458#[inline]
5459#[target_feature(enable = "lsx")]5459#[target_feature(enable = "lsx")]
5460#[unstable(feature = "stdarch_loongarch", issue = "117427")]5460#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5461pub unsafe fn lsx_vmulwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {5461pub fn lsx_vmulwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
5462 __lsx_vmulwev_w_hu_h(a, b)5462 unsafe { __lsx_vmulwev_w_hu_h(a, b) }
5463}5463}
54645464
5465#[inline]5465#[inline]
5466#[target_feature(enable = "lsx")]5466#[target_feature(enable = "lsx")]
5467#[unstable(feature = "stdarch_loongarch", issue = "117427")]5467#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5468pub unsafe fn lsx_vmulwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {5468pub fn lsx_vmulwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
5469 __lsx_vmulwev_h_bu_b(a, b)5469 unsafe { __lsx_vmulwev_h_bu_b(a, b) }
5470}5470}
54715471
5472#[inline]5472#[inline]
5473#[target_feature(enable = "lsx")]5473#[target_feature(enable = "lsx")]
5474#[unstable(feature = "stdarch_loongarch", issue = "117427")]5474#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5475pub unsafe fn lsx_vmulwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {5475pub fn lsx_vmulwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
5476 __lsx_vmulwod_d_wu_w(a, b)5476 unsafe { __lsx_vmulwod_d_wu_w(a, b) }
5477}5477}
54785478
5479#[inline]5479#[inline]
5480#[target_feature(enable = "lsx")]5480#[target_feature(enable = "lsx")]
5481#[unstable(feature = "stdarch_loongarch", issue = "117427")]5481#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5482pub unsafe fn lsx_vmulwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {5482pub fn lsx_vmulwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
5483 __lsx_vmulwod_w_hu_h(a, b)5483 unsafe { __lsx_vmulwod_w_hu_h(a, b) }
5484}5484}
54855485
5486#[inline]5486#[inline]
5487#[target_feature(enable = "lsx")]5487#[target_feature(enable = "lsx")]
5488#[unstable(feature = "stdarch_loongarch", issue = "117427")]5488#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5489pub unsafe fn lsx_vmulwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {5489pub fn lsx_vmulwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
5490 __lsx_vmulwod_h_bu_b(a, b)5490 unsafe { __lsx_vmulwod_h_bu_b(a, b) }
5491}5491}
54925492
5493#[inline]5493#[inline]
5494#[target_feature(enable = "lsx")]5494#[target_feature(enable = "lsx")]
5495#[unstable(feature = "stdarch_loongarch", issue = "117427")]5495#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5496pub unsafe fn lsx_vmulwev_q_d(a: v2i64, b: v2i64) -> v2i64 {5496pub fn lsx_vmulwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
5497 __lsx_vmulwev_q_d(a, b)5497 unsafe { __lsx_vmulwev_q_d(a, b) }
5498}5498}
54995499
5500#[inline]5500#[inline]
5501#[target_feature(enable = "lsx")]5501#[target_feature(enable = "lsx")]
5502#[unstable(feature = "stdarch_loongarch", issue = "117427")]5502#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5503pub unsafe fn lsx_vmulwod_q_d(a: v2i64, b: v2i64) -> v2i64 {5503pub fn lsx_vmulwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
5504 __lsx_vmulwod_q_d(a, b)5504 unsafe { __lsx_vmulwod_q_d(a, b) }
5505}5505}
55065506
5507#[inline]5507#[inline]
5508#[target_feature(enable = "lsx")]5508#[target_feature(enable = "lsx")]
5509#[unstable(feature = "stdarch_loongarch", issue = "117427")]5509#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5510pub unsafe fn lsx_vmulwev_q_du(a: v2u64, b: v2u64) -> v2i64 {5510pub fn lsx_vmulwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
5511 __lsx_vmulwev_q_du(a, b)5511 unsafe { __lsx_vmulwev_q_du(a, b) }
5512}5512}
55135513
5514#[inline]5514#[inline]
5515#[target_feature(enable = "lsx")]5515#[target_feature(enable = "lsx")]
5516#[unstable(feature = "stdarch_loongarch", issue = "117427")]5516#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5517pub unsafe fn lsx_vmulwod_q_du(a: v2u64, b: v2u64) -> v2i64 {5517pub fn lsx_vmulwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
5518 __lsx_vmulwod_q_du(a, b)5518 unsafe { __lsx_vmulwod_q_du(a, b) }
5519}5519}
55205520
5521#[inline]5521#[inline]
5522#[target_feature(enable = "lsx")]5522#[target_feature(enable = "lsx")]
5523#[unstable(feature = "stdarch_loongarch", issue = "117427")]5523#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5524pub unsafe fn lsx_vmulwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {5524pub fn lsx_vmulwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
5525 __lsx_vmulwev_q_du_d(a, b)5525 unsafe { __lsx_vmulwev_q_du_d(a, b) }
5526}5526}
55275527
5528#[inline]5528#[inline]
5529#[target_feature(enable = "lsx")]5529#[target_feature(enable = "lsx")]
5530#[unstable(feature = "stdarch_loongarch", issue = "117427")]5530#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5531pub unsafe fn lsx_vmulwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {5531pub fn lsx_vmulwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
5532 __lsx_vmulwod_q_du_d(a, b)5532 unsafe { __lsx_vmulwod_q_du_d(a, b) }
5533}5533}
55345534
5535#[inline]5535#[inline]
5536#[target_feature(enable = "lsx")]5536#[target_feature(enable = "lsx")]
5537#[unstable(feature = "stdarch_loongarch", issue = "117427")]5537#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5538pub unsafe fn lsx_vhaddw_q_d(a: v2i64, b: v2i64) -> v2i64 {5538pub fn lsx_vhaddw_q_d(a: v2i64, b: v2i64) -> v2i64 {
5539 __lsx_vhaddw_q_d(a, b)5539 unsafe { __lsx_vhaddw_q_d(a, b) }
5540}5540}
55415541
5542#[inline]5542#[inline]
5543#[target_feature(enable = "lsx")]5543#[target_feature(enable = "lsx")]
5544#[unstable(feature = "stdarch_loongarch", issue = "117427")]5544#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5545pub unsafe fn lsx_vhaddw_qu_du(a: v2u64, b: v2u64) -> v2u64 {5545pub fn lsx_vhaddw_qu_du(a: v2u64, b: v2u64) -> v2u64 {
5546 __lsx_vhaddw_qu_du(a, b)5546 unsafe { __lsx_vhaddw_qu_du(a, b) }
5547}5547}
55485548
5549#[inline]5549#[inline]
5550#[target_feature(enable = "lsx")]5550#[target_feature(enable = "lsx")]
5551#[unstable(feature = "stdarch_loongarch", issue = "117427")]5551#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5552pub unsafe fn lsx_vhsubw_q_d(a: v2i64, b: v2i64) -> v2i64 {5552pub fn lsx_vhsubw_q_d(a: v2i64, b: v2i64) -> v2i64 {
5553 __lsx_vhsubw_q_d(a, b)5553 unsafe { __lsx_vhsubw_q_d(a, b) }
5554}5554}
55555555
5556#[inline]5556#[inline]
5557#[target_feature(enable = "lsx")]5557#[target_feature(enable = "lsx")]
5558#[unstable(feature = "stdarch_loongarch", issue = "117427")]5558#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5559pub unsafe fn lsx_vhsubw_qu_du(a: v2u64, b: v2u64) -> v2u64 {5559pub fn lsx_vhsubw_qu_du(a: v2u64, b: v2u64) -> v2u64 {
5560 __lsx_vhsubw_qu_du(a, b)5560 unsafe { __lsx_vhsubw_qu_du(a, b) }
5561}5561}
55625562
5563#[inline]5563#[inline]
5564#[target_feature(enable = "lsx")]5564#[target_feature(enable = "lsx")]
5565#[unstable(feature = "stdarch_loongarch", issue = "117427")]5565#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5566pub unsafe fn lsx_vmaddwev_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {5566pub fn lsx_vmaddwev_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {
5567 __lsx_vmaddwev_d_w(a, b, c)5567 unsafe { __lsx_vmaddwev_d_w(a, b, c) }
5568}5568}
55695569
5570#[inline]5570#[inline]
5571#[target_feature(enable = "lsx")]5571#[target_feature(enable = "lsx")]
5572#[unstable(feature = "stdarch_loongarch", issue = "117427")]5572#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5573pub unsafe fn lsx_vmaddwev_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {5573pub fn lsx_vmaddwev_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {
5574 __lsx_vmaddwev_w_h(a, b, c)5574 unsafe { __lsx_vmaddwev_w_h(a, b, c) }
5575}5575}
55765576
5577#[inline]5577#[inline]
5578#[target_feature(enable = "lsx")]5578#[target_feature(enable = "lsx")]
5579#[unstable(feature = "stdarch_loongarch", issue = "117427")]5579#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5580pub unsafe fn lsx_vmaddwev_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {5580pub fn lsx_vmaddwev_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {
5581 __lsx_vmaddwev_h_b(a, b, c)5581 unsafe { __lsx_vmaddwev_h_b(a, b, c) }
5582}5582}
55835583
5584#[inline]5584#[inline]
5585#[target_feature(enable = "lsx")]5585#[target_feature(enable = "lsx")]
5586#[unstable(feature = "stdarch_loongarch", issue = "117427")]5586#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5587pub unsafe fn lsx_vmaddwev_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {5587pub fn lsx_vmaddwev_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {
5588 __lsx_vmaddwev_d_wu(a, b, c)5588 unsafe { __lsx_vmaddwev_d_wu(a, b, c) }
5589}5589}
55905590
5591#[inline]5591#[inline]
5592#[target_feature(enable = "lsx")]5592#[target_feature(enable = "lsx")]
5593#[unstable(feature = "stdarch_loongarch", issue = "117427")]5593#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5594pub unsafe fn lsx_vmaddwev_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {5594pub fn lsx_vmaddwev_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {
5595 __lsx_vmaddwev_w_hu(a, b, c)5595 unsafe { __lsx_vmaddwev_w_hu(a, b, c) }
5596}5596}
55975597
5598#[inline]5598#[inline]
5599#[target_feature(enable = "lsx")]5599#[target_feature(enable = "lsx")]
5600#[unstable(feature = "stdarch_loongarch", issue = "117427")]5600#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5601pub unsafe fn lsx_vmaddwev_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {5601pub fn lsx_vmaddwev_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {
5602 __lsx_vmaddwev_h_bu(a, b, c)5602 unsafe { __lsx_vmaddwev_h_bu(a, b, c) }
5603}5603}
56045604
5605#[inline]5605#[inline]
5606#[target_feature(enable = "lsx")]5606#[target_feature(enable = "lsx")]
5607#[unstable(feature = "stdarch_loongarch", issue = "117427")]5607#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5608pub unsafe fn lsx_vmaddwod_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {5608pub fn lsx_vmaddwod_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {
5609 __lsx_vmaddwod_d_w(a, b, c)5609 unsafe { __lsx_vmaddwod_d_w(a, b, c) }
5610}5610}
56115611
5612#[inline]5612#[inline]
5613#[target_feature(enable = "lsx")]5613#[target_feature(enable = "lsx")]
5614#[unstable(feature = "stdarch_loongarch", issue = "117427")]5614#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5615pub unsafe fn lsx_vmaddwod_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {5615pub fn lsx_vmaddwod_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {
5616 __lsx_vmaddwod_w_h(a, b, c)5616 unsafe { __lsx_vmaddwod_w_h(a, b, c) }
5617}5617}
56185618
5619#[inline]5619#[inline]
5620#[target_feature(enable = "lsx")]5620#[target_feature(enable = "lsx")]
5621#[unstable(feature = "stdarch_loongarch", issue = "117427")]5621#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5622pub unsafe fn lsx_vmaddwod_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {5622pub fn lsx_vmaddwod_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {
5623 __lsx_vmaddwod_h_b(a, b, c)5623 unsafe { __lsx_vmaddwod_h_b(a, b, c) }
5624}5624}
56255625
5626#[inline]5626#[inline]
5627#[target_feature(enable = "lsx")]5627#[target_feature(enable = "lsx")]
5628#[unstable(feature = "stdarch_loongarch", issue = "117427")]5628#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5629pub unsafe fn lsx_vmaddwod_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {5629pub fn lsx_vmaddwod_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {
5630 __lsx_vmaddwod_d_wu(a, b, c)5630 unsafe { __lsx_vmaddwod_d_wu(a, b, c) }
5631}5631}
56325632
5633#[inline]5633#[inline]
5634#[target_feature(enable = "lsx")]5634#[target_feature(enable = "lsx")]
5635#[unstable(feature = "stdarch_loongarch", issue = "117427")]5635#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5636pub unsafe fn lsx_vmaddwod_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {5636pub fn lsx_vmaddwod_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {
5637 __lsx_vmaddwod_w_hu(a, b, c)5637 unsafe { __lsx_vmaddwod_w_hu(a, b, c) }
5638}5638}
56395639
5640#[inline]5640#[inline]
5641#[target_feature(enable = "lsx")]5641#[target_feature(enable = "lsx")]
5642#[unstable(feature = "stdarch_loongarch", issue = "117427")]5642#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5643pub unsafe fn lsx_vmaddwod_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {5643pub fn lsx_vmaddwod_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {
5644 __lsx_vmaddwod_h_bu(a, b, c)5644 unsafe { __lsx_vmaddwod_h_bu(a, b, c) }
5645}5645}
56465646
5647#[inline]5647#[inline]
5648#[target_feature(enable = "lsx")]5648#[target_feature(enable = "lsx")]
5649#[unstable(feature = "stdarch_loongarch", issue = "117427")]5649#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5650pub unsafe fn lsx_vmaddwev_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {5650pub fn lsx_vmaddwev_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {
5651 __lsx_vmaddwev_d_wu_w(a, b, c)5651 unsafe { __lsx_vmaddwev_d_wu_w(a, b, c) }
5652}5652}
56535653
5654#[inline]5654#[inline]
5655#[target_feature(enable = "lsx")]5655#[target_feature(enable = "lsx")]
5656#[unstable(feature = "stdarch_loongarch", issue = "117427")]5656#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5657pub unsafe fn lsx_vmaddwev_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {5657pub fn lsx_vmaddwev_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {
5658 __lsx_vmaddwev_w_hu_h(a, b, c)5658 unsafe { __lsx_vmaddwev_w_hu_h(a, b, c) }
5659}5659}
56605660
5661#[inline]5661#[inline]
5662#[target_feature(enable = "lsx")]5662#[target_feature(enable = "lsx")]
5663#[unstable(feature = "stdarch_loongarch", issue = "117427")]5663#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5664pub unsafe fn lsx_vmaddwev_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {5664pub fn lsx_vmaddwev_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {
5665 __lsx_vmaddwev_h_bu_b(a, b, c)5665 unsafe { __lsx_vmaddwev_h_bu_b(a, b, c) }
5666}5666}
56675667
5668#[inline]5668#[inline]
5669#[target_feature(enable = "lsx")]5669#[target_feature(enable = "lsx")]
5670#[unstable(feature = "stdarch_loongarch", issue = "117427")]5670#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5671pub unsafe fn lsx_vmaddwod_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {5671pub fn lsx_vmaddwod_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {
5672 __lsx_vmaddwod_d_wu_w(a, b, c)5672 unsafe { __lsx_vmaddwod_d_wu_w(a, b, c) }
5673}5673}
56745674
5675#[inline]5675#[inline]
5676#[target_feature(enable = "lsx")]5676#[target_feature(enable = "lsx")]
5677#[unstable(feature = "stdarch_loongarch", issue = "117427")]5677#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5678pub unsafe fn lsx_vmaddwod_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {5678pub fn lsx_vmaddwod_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {
5679 __lsx_vmaddwod_w_hu_h(a, b, c)5679 unsafe { __lsx_vmaddwod_w_hu_h(a, b, c) }
5680}5680}
56815681
5682#[inline]5682#[inline]
5683#[target_feature(enable = "lsx")]5683#[target_feature(enable = "lsx")]
5684#[unstable(feature = "stdarch_loongarch", issue = "117427")]5684#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5685pub unsafe fn lsx_vmaddwod_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {5685pub fn lsx_vmaddwod_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {
5686 __lsx_vmaddwod_h_bu_b(a, b, c)5686 unsafe { __lsx_vmaddwod_h_bu_b(a, b, c) }
5687}5687}
56885688
5689#[inline]5689#[inline]
5690#[target_feature(enable = "lsx")]5690#[target_feature(enable = "lsx")]
5691#[unstable(feature = "stdarch_loongarch", issue = "117427")]5691#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5692pub unsafe fn lsx_vmaddwev_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {5692pub fn lsx_vmaddwev_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
5693 __lsx_vmaddwev_q_d(a, b, c)5693 unsafe { __lsx_vmaddwev_q_d(a, b, c) }
5694}5694}
56955695
5696#[inline]5696#[inline]
5697#[target_feature(enable = "lsx")]5697#[target_feature(enable = "lsx")]
5698#[unstable(feature = "stdarch_loongarch", issue = "117427")]5698#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5699pub unsafe fn lsx_vmaddwod_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {5699pub fn lsx_vmaddwod_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
5700 __lsx_vmaddwod_q_d(a, b, c)5700 unsafe { __lsx_vmaddwod_q_d(a, b, c) }
5701}5701}
57025702
5703#[inline]5703#[inline]
5704#[target_feature(enable = "lsx")]5704#[target_feature(enable = "lsx")]
5705#[unstable(feature = "stdarch_loongarch", issue = "117427")]5705#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5706pub unsafe fn lsx_vmaddwev_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {5706pub fn lsx_vmaddwev_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {
5707 __lsx_vmaddwev_q_du(a, b, c)5707 unsafe { __lsx_vmaddwev_q_du(a, b, c) }
5708}5708}
57095709
5710#[inline]5710#[inline]
5711#[target_feature(enable = "lsx")]5711#[target_feature(enable = "lsx")]
5712#[unstable(feature = "stdarch_loongarch", issue = "117427")]5712#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5713pub unsafe fn lsx_vmaddwod_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {5713pub fn lsx_vmaddwod_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {
5714 __lsx_vmaddwod_q_du(a, b, c)5714 unsafe { __lsx_vmaddwod_q_du(a, b, c) }
5715}5715}
57165716
5717#[inline]5717#[inline]
5718#[target_feature(enable = "lsx")]5718#[target_feature(enable = "lsx")]
5719#[unstable(feature = "stdarch_loongarch", issue = "117427")]5719#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5720pub unsafe fn lsx_vmaddwev_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {5720pub fn lsx_vmaddwev_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {
5721 __lsx_vmaddwev_q_du_d(a, b, c)5721 unsafe { __lsx_vmaddwev_q_du_d(a, b, c) }
5722}5722}
57235723
5724#[inline]5724#[inline]
5725#[target_feature(enable = "lsx")]5725#[target_feature(enable = "lsx")]
5726#[unstable(feature = "stdarch_loongarch", issue = "117427")]5726#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5727pub unsafe fn lsx_vmaddwod_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {5727pub fn lsx_vmaddwod_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {
5728 __lsx_vmaddwod_q_du_d(a, b, c)5728 unsafe { __lsx_vmaddwod_q_du_d(a, b, c) }
5729}5729}
57305730
5731#[inline]5731#[inline]
5732#[target_feature(enable = "lsx")]5732#[target_feature(enable = "lsx")]
5733#[unstable(feature = "stdarch_loongarch", issue = "117427")]5733#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5734pub unsafe fn lsx_vrotr_b(a: v16i8, b: v16i8) -> v16i8 {5734pub fn lsx_vrotr_b(a: v16i8, b: v16i8) -> v16i8 {
5735 __lsx_vrotr_b(a, b)5735 unsafe { __lsx_vrotr_b(a, b) }
5736}5736}
57375737
5738#[inline]5738#[inline]
5739#[target_feature(enable = "lsx")]5739#[target_feature(enable = "lsx")]
5740#[unstable(feature = "stdarch_loongarch", issue = "117427")]5740#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5741pub unsafe fn lsx_vrotr_h(a: v8i16, b: v8i16) -> v8i16 {5741pub fn lsx_vrotr_h(a: v8i16, b: v8i16) -> v8i16 {
5742 __lsx_vrotr_h(a, b)5742 unsafe { __lsx_vrotr_h(a, b) }
5743}5743}
57445744
5745#[inline]5745#[inline]
5746#[target_feature(enable = "lsx")]5746#[target_feature(enable = "lsx")]
5747#[unstable(feature = "stdarch_loongarch", issue = "117427")]5747#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5748pub unsafe fn lsx_vrotr_w(a: v4i32, b: v4i32) -> v4i32 {5748pub fn lsx_vrotr_w(a: v4i32, b: v4i32) -> v4i32 {
5749 __lsx_vrotr_w(a, b)5749 unsafe { __lsx_vrotr_w(a, b) }
5750}5750}
57515751
5752#[inline]5752#[inline]
5753#[target_feature(enable = "lsx")]5753#[target_feature(enable = "lsx")]
5754#[unstable(feature = "stdarch_loongarch", issue = "117427")]5754#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5755pub unsafe fn lsx_vrotr_d(a: v2i64, b: v2i64) -> v2i64 {5755pub fn lsx_vrotr_d(a: v2i64, b: v2i64) -> v2i64 {
5756 __lsx_vrotr_d(a, b)5756 unsafe { __lsx_vrotr_d(a, b) }
5757}5757}
57585758
5759#[inline]5759#[inline]
5760#[target_feature(enable = "lsx")]5760#[target_feature(enable = "lsx")]
5761#[unstable(feature = "stdarch_loongarch", issue = "117427")]5761#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5762pub unsafe fn lsx_vadd_q(a: v2i64, b: v2i64) -> v2i64 {5762pub fn lsx_vadd_q(a: v2i64, b: v2i64) -> v2i64 {
5763 __lsx_vadd_q(a, b)5763 unsafe { __lsx_vadd_q(a, b) }
5764}5764}
57655765
5766#[inline]5766#[inline]
5767#[target_feature(enable = "lsx")]5767#[target_feature(enable = "lsx")]
5768#[unstable(feature = "stdarch_loongarch", issue = "117427")]5768#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5769pub unsafe fn lsx_vsub_q(a: v2i64, b: v2i64) -> v2i64 {5769pub fn lsx_vsub_q(a: v2i64, b: v2i64) -> v2i64 {
5770 __lsx_vsub_q(a, b)5770 unsafe { __lsx_vsub_q(a, b) }
5771}5771}
57725772
5773#[inline]5773#[inline]
...@@ -5809,555 +5809,555 @@ pub unsafe fn lsx_vldrepl_d<const IMM_S9: i32>(mem_addr: *const i8) -> v2i64 {...@@ -5809,555 +5809,555 @@ pub unsafe fn lsx_vldrepl_d<const IMM_S9: i32>(mem_addr: *const i8) -> v2i64 {
5809#[inline]5809#[inline]
5810#[target_feature(enable = "lsx")]5810#[target_feature(enable = "lsx")]
5811#[unstable(feature = "stdarch_loongarch", issue = "117427")]5811#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5812pub unsafe fn lsx_vmskgez_b(a: v16i8) -> v16i8 {5812pub fn lsx_vmskgez_b(a: v16i8) -> v16i8 {
5813 __lsx_vmskgez_b(a)5813 unsafe { __lsx_vmskgez_b(a) }
5814}5814}
58155815
5816#[inline]5816#[inline]
5817#[target_feature(enable = "lsx")]5817#[target_feature(enable = "lsx")]
5818#[unstable(feature = "stdarch_loongarch", issue = "117427")]5818#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5819pub unsafe fn lsx_vmsknz_b(a: v16i8) -> v16i8 {5819pub fn lsx_vmsknz_b(a: v16i8) -> v16i8 {
5820 __lsx_vmsknz_b(a)5820 unsafe { __lsx_vmsknz_b(a) }
5821}5821}
58225822
5823#[inline]5823#[inline]
5824#[target_feature(enable = "lsx")]5824#[target_feature(enable = "lsx")]
5825#[unstable(feature = "stdarch_loongarch", issue = "117427")]5825#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5826pub unsafe fn lsx_vexth_h_b(a: v16i8) -> v8i16 {5826pub fn lsx_vexth_h_b(a: v16i8) -> v8i16 {
5827 __lsx_vexth_h_b(a)5827 unsafe { __lsx_vexth_h_b(a) }
5828}5828}
58295829
5830#[inline]5830#[inline]
5831#[target_feature(enable = "lsx")]5831#[target_feature(enable = "lsx")]
5832#[unstable(feature = "stdarch_loongarch", issue = "117427")]5832#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5833pub unsafe fn lsx_vexth_w_h(a: v8i16) -> v4i32 {5833pub fn lsx_vexth_w_h(a: v8i16) -> v4i32 {
5834 __lsx_vexth_w_h(a)5834 unsafe { __lsx_vexth_w_h(a) }
5835}5835}
58365836
5837#[inline]5837#[inline]
5838#[target_feature(enable = "lsx")]5838#[target_feature(enable = "lsx")]
5839#[unstable(feature = "stdarch_loongarch", issue = "117427")]5839#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5840pub unsafe fn lsx_vexth_d_w(a: v4i32) -> v2i64 {5840pub fn lsx_vexth_d_w(a: v4i32) -> v2i64 {
5841 __lsx_vexth_d_w(a)5841 unsafe { __lsx_vexth_d_w(a) }
5842}5842}
58435843
5844#[inline]5844#[inline]
5845#[target_feature(enable = "lsx")]5845#[target_feature(enable = "lsx")]
5846#[unstable(feature = "stdarch_loongarch", issue = "117427")]5846#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5847pub unsafe fn lsx_vexth_q_d(a: v2i64) -> v2i64 {5847pub fn lsx_vexth_q_d(a: v2i64) -> v2i64 {
5848 __lsx_vexth_q_d(a)5848 unsafe { __lsx_vexth_q_d(a) }
5849}5849}
58505850
5851#[inline]5851#[inline]
5852#[target_feature(enable = "lsx")]5852#[target_feature(enable = "lsx")]
5853#[unstable(feature = "stdarch_loongarch", issue = "117427")]5853#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5854pub unsafe fn lsx_vexth_hu_bu(a: v16u8) -> v8u16 {5854pub fn lsx_vexth_hu_bu(a: v16u8) -> v8u16 {
5855 __lsx_vexth_hu_bu(a)5855 unsafe { __lsx_vexth_hu_bu(a) }
5856}5856}
58575857
5858#[inline]5858#[inline]
5859#[target_feature(enable = "lsx")]5859#[target_feature(enable = "lsx")]
5860#[unstable(feature = "stdarch_loongarch", issue = "117427")]5860#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5861pub unsafe fn lsx_vexth_wu_hu(a: v8u16) -> v4u32 {5861pub fn lsx_vexth_wu_hu(a: v8u16) -> v4u32 {
5862 __lsx_vexth_wu_hu(a)5862 unsafe { __lsx_vexth_wu_hu(a) }
5863}5863}
58645864
5865#[inline]5865#[inline]
5866#[target_feature(enable = "lsx")]5866#[target_feature(enable = "lsx")]
5867#[unstable(feature = "stdarch_loongarch", issue = "117427")]5867#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5868pub unsafe fn lsx_vexth_du_wu(a: v4u32) -> v2u64 {5868pub fn lsx_vexth_du_wu(a: v4u32) -> v2u64 {
5869 __lsx_vexth_du_wu(a)5869 unsafe { __lsx_vexth_du_wu(a) }
5870}5870}
58715871
5872#[inline]5872#[inline]
5873#[target_feature(enable = "lsx")]5873#[target_feature(enable = "lsx")]
5874#[unstable(feature = "stdarch_loongarch", issue = "117427")]5874#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5875pub unsafe fn lsx_vexth_qu_du(a: v2u64) -> v2u64 {5875pub fn lsx_vexth_qu_du(a: v2u64) -> v2u64 {
5876 __lsx_vexth_qu_du(a)5876 unsafe { __lsx_vexth_qu_du(a) }
5877}5877}
58785878
5879#[inline]5879#[inline]
5880#[target_feature(enable = "lsx")]5880#[target_feature(enable = "lsx")]
5881#[rustc_legacy_const_generics(1)]5881#[rustc_legacy_const_generics(1)]
5882#[unstable(feature = "stdarch_loongarch", issue = "117427")]5882#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5883pub unsafe fn lsx_vrotri_b<const IMM3: u32>(a: v16i8) -> v16i8 {5883pub fn lsx_vrotri_b<const IMM3: u32>(a: v16i8) -> v16i8 {
5884 static_assert_uimm_bits!(IMM3, 3);5884 static_assert_uimm_bits!(IMM3, 3);
5885 __lsx_vrotri_b(a, IMM3)5885 unsafe { __lsx_vrotri_b(a, IMM3) }
5886}5886}
58875887
5888#[inline]5888#[inline]
5889#[target_feature(enable = "lsx")]5889#[target_feature(enable = "lsx")]
5890#[rustc_legacy_const_generics(1)]5890#[rustc_legacy_const_generics(1)]
5891#[unstable(feature = "stdarch_loongarch", issue = "117427")]5891#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5892pub unsafe fn lsx_vrotri_h<const IMM4: u32>(a: v8i16) -> v8i16 {5892pub fn lsx_vrotri_h<const IMM4: u32>(a: v8i16) -> v8i16 {
5893 static_assert_uimm_bits!(IMM4, 4);5893 static_assert_uimm_bits!(IMM4, 4);
5894 __lsx_vrotri_h(a, IMM4)5894 unsafe { __lsx_vrotri_h(a, IMM4) }
5895}5895}
58965896
5897#[inline]5897#[inline]
5898#[target_feature(enable = "lsx")]5898#[target_feature(enable = "lsx")]
5899#[rustc_legacy_const_generics(1)]5899#[rustc_legacy_const_generics(1)]
5900#[unstable(feature = "stdarch_loongarch", issue = "117427")]5900#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5901pub unsafe fn lsx_vrotri_w<const IMM5: u32>(a: v4i32) -> v4i32 {5901pub fn lsx_vrotri_w<const IMM5: u32>(a: v4i32) -> v4i32 {
5902 static_assert_uimm_bits!(IMM5, 5);5902 static_assert_uimm_bits!(IMM5, 5);
5903 __lsx_vrotri_w(a, IMM5)5903 unsafe { __lsx_vrotri_w(a, IMM5) }
5904}5904}
59055905
5906#[inline]5906#[inline]
5907#[target_feature(enable = "lsx")]5907#[target_feature(enable = "lsx")]
5908#[rustc_legacy_const_generics(1)]5908#[rustc_legacy_const_generics(1)]
5909#[unstable(feature = "stdarch_loongarch", issue = "117427")]5909#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5910pub unsafe fn lsx_vrotri_d<const IMM6: u32>(a: v2i64) -> v2i64 {5910pub fn lsx_vrotri_d<const IMM6: u32>(a: v2i64) -> v2i64 {
5911 static_assert_uimm_bits!(IMM6, 6);5911 static_assert_uimm_bits!(IMM6, 6);
5912 __lsx_vrotri_d(a, IMM6)5912 unsafe { __lsx_vrotri_d(a, IMM6) }
5913}5913}
59145914
5915#[inline]5915#[inline]
5916#[target_feature(enable = "lsx")]5916#[target_feature(enable = "lsx")]
5917#[unstable(feature = "stdarch_loongarch", issue = "117427")]5917#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5918pub unsafe fn lsx_vextl_q_d(a: v2i64) -> v2i64 {5918pub fn lsx_vextl_q_d(a: v2i64) -> v2i64 {
5919 __lsx_vextl_q_d(a)5919 unsafe { __lsx_vextl_q_d(a) }
5920}5920}
59215921
5922#[inline]5922#[inline]
5923#[target_feature(enable = "lsx")]5923#[target_feature(enable = "lsx")]
5924#[rustc_legacy_const_generics(2)]5924#[rustc_legacy_const_generics(2)]
5925#[unstable(feature = "stdarch_loongarch", issue = "117427")]5925#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5926pub unsafe fn lsx_vsrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {5926pub fn lsx_vsrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
5927 static_assert_uimm_bits!(IMM4, 4);5927 static_assert_uimm_bits!(IMM4, 4);
5928 __lsx_vsrlni_b_h(a, b, IMM4)5928 unsafe { __lsx_vsrlni_b_h(a, b, IMM4) }
5929}5929}
59305930
5931#[inline]5931#[inline]
5932#[target_feature(enable = "lsx")]5932#[target_feature(enable = "lsx")]
5933#[rustc_legacy_const_generics(2)]5933#[rustc_legacy_const_generics(2)]
5934#[unstable(feature = "stdarch_loongarch", issue = "117427")]5934#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5935pub unsafe fn lsx_vsrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {5935pub fn lsx_vsrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
5936 static_assert_uimm_bits!(IMM5, 5);5936 static_assert_uimm_bits!(IMM5, 5);
5937 __lsx_vsrlni_h_w(a, b, IMM5)5937 unsafe { __lsx_vsrlni_h_w(a, b, IMM5) }
5938}5938}
59395939
5940#[inline]5940#[inline]
5941#[target_feature(enable = "lsx")]5941#[target_feature(enable = "lsx")]
5942#[rustc_legacy_const_generics(2)]5942#[rustc_legacy_const_generics(2)]
5943#[unstable(feature = "stdarch_loongarch", issue = "117427")]5943#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5944pub unsafe fn lsx_vsrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {5944pub fn lsx_vsrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
5945 static_assert_uimm_bits!(IMM6, 6);5945 static_assert_uimm_bits!(IMM6, 6);
5946 __lsx_vsrlni_w_d(a, b, IMM6)5946 unsafe { __lsx_vsrlni_w_d(a, b, IMM6) }
5947}5947}
59485948
5949#[inline]5949#[inline]
5950#[target_feature(enable = "lsx")]5950#[target_feature(enable = "lsx")]
5951#[rustc_legacy_const_generics(2)]5951#[rustc_legacy_const_generics(2)]
5952#[unstable(feature = "stdarch_loongarch", issue = "117427")]5952#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5953pub unsafe fn lsx_vsrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {5953pub fn lsx_vsrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
5954 static_assert_uimm_bits!(IMM7, 7);5954 static_assert_uimm_bits!(IMM7, 7);
5955 __lsx_vsrlni_d_q(a, b, IMM7)5955 unsafe { __lsx_vsrlni_d_q(a, b, IMM7) }
5956}5956}
59575957
5958#[inline]5958#[inline]
5959#[target_feature(enable = "lsx")]5959#[target_feature(enable = "lsx")]
5960#[rustc_legacy_const_generics(2)]5960#[rustc_legacy_const_generics(2)]
5961#[unstable(feature = "stdarch_loongarch", issue = "117427")]5961#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5962pub unsafe fn lsx_vsrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {5962pub fn lsx_vsrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
5963 static_assert_uimm_bits!(IMM4, 4);5963 static_assert_uimm_bits!(IMM4, 4);
5964 __lsx_vsrlrni_b_h(a, b, IMM4)5964 unsafe { __lsx_vsrlrni_b_h(a, b, IMM4) }
5965}5965}
59665966
5967#[inline]5967#[inline]
5968#[target_feature(enable = "lsx")]5968#[target_feature(enable = "lsx")]
5969#[rustc_legacy_const_generics(2)]5969#[rustc_legacy_const_generics(2)]
5970#[unstable(feature = "stdarch_loongarch", issue = "117427")]5970#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5971pub unsafe fn lsx_vsrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {5971pub fn lsx_vsrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
5972 static_assert_uimm_bits!(IMM5, 5);5972 static_assert_uimm_bits!(IMM5, 5);
5973 __lsx_vsrlrni_h_w(a, b, IMM5)5973 unsafe { __lsx_vsrlrni_h_w(a, b, IMM5) }
5974}5974}
59755975
5976#[inline]5976#[inline]
5977#[target_feature(enable = "lsx")]5977#[target_feature(enable = "lsx")]
5978#[rustc_legacy_const_generics(2)]5978#[rustc_legacy_const_generics(2)]
5979#[unstable(feature = "stdarch_loongarch", issue = "117427")]5979#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5980pub unsafe fn lsx_vsrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {5980pub fn lsx_vsrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
5981 static_assert_uimm_bits!(IMM6, 6);5981 static_assert_uimm_bits!(IMM6, 6);
5982 __lsx_vsrlrni_w_d(a, b, IMM6)5982 unsafe { __lsx_vsrlrni_w_d(a, b, IMM6) }
5983}5983}
59845984
5985#[inline]5985#[inline]
5986#[target_feature(enable = "lsx")]5986#[target_feature(enable = "lsx")]
5987#[rustc_legacy_const_generics(2)]5987#[rustc_legacy_const_generics(2)]
5988#[unstable(feature = "stdarch_loongarch", issue = "117427")]5988#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5989pub unsafe fn lsx_vsrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {5989pub fn lsx_vsrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
5990 static_assert_uimm_bits!(IMM7, 7);5990 static_assert_uimm_bits!(IMM7, 7);
5991 __lsx_vsrlrni_d_q(a, b, IMM7)5991 unsafe { __lsx_vsrlrni_d_q(a, b, IMM7) }
5992}5992}
59935993
5994#[inline]5994#[inline]
5995#[target_feature(enable = "lsx")]5995#[target_feature(enable = "lsx")]
5996#[rustc_legacy_const_generics(2)]5996#[rustc_legacy_const_generics(2)]
5997#[unstable(feature = "stdarch_loongarch", issue = "117427")]5997#[unstable(feature = "stdarch_loongarch", issue = "117427")]
5998pub unsafe fn lsx_vssrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {5998pub fn lsx_vssrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
5999 static_assert_uimm_bits!(IMM4, 4);5999 static_assert_uimm_bits!(IMM4, 4);
6000 __lsx_vssrlni_b_h(a, b, IMM4)6000 unsafe { __lsx_vssrlni_b_h(a, b, IMM4) }
6001}6001}
60026002
6003#[inline]6003#[inline]
6004#[target_feature(enable = "lsx")]6004#[target_feature(enable = "lsx")]
6005#[rustc_legacy_const_generics(2)]6005#[rustc_legacy_const_generics(2)]
6006#[unstable(feature = "stdarch_loongarch", issue = "117427")]6006#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6007pub unsafe fn lsx_vssrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {6007pub fn lsx_vssrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
6008 static_assert_uimm_bits!(IMM5, 5);6008 static_assert_uimm_bits!(IMM5, 5);
6009 __lsx_vssrlni_h_w(a, b, IMM5)6009 unsafe { __lsx_vssrlni_h_w(a, b, IMM5) }
6010}6010}
60116011
6012#[inline]6012#[inline]
6013#[target_feature(enable = "lsx")]6013#[target_feature(enable = "lsx")]
6014#[rustc_legacy_const_generics(2)]6014#[rustc_legacy_const_generics(2)]
6015#[unstable(feature = "stdarch_loongarch", issue = "117427")]6015#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6016pub unsafe fn lsx_vssrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {6016pub fn lsx_vssrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
6017 static_assert_uimm_bits!(IMM6, 6);6017 static_assert_uimm_bits!(IMM6, 6);
6018 __lsx_vssrlni_w_d(a, b, IMM6)6018 unsafe { __lsx_vssrlni_w_d(a, b, IMM6) }
6019}6019}
60206020
6021#[inline]6021#[inline]
6022#[target_feature(enable = "lsx")]6022#[target_feature(enable = "lsx")]
6023#[rustc_legacy_const_generics(2)]6023#[rustc_legacy_const_generics(2)]
6024#[unstable(feature = "stdarch_loongarch", issue = "117427")]6024#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6025pub unsafe fn lsx_vssrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {6025pub fn lsx_vssrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
6026 static_assert_uimm_bits!(IMM7, 7);6026 static_assert_uimm_bits!(IMM7, 7);
6027 __lsx_vssrlni_d_q(a, b, IMM7)6027 unsafe { __lsx_vssrlni_d_q(a, b, IMM7) }
6028}6028}
60296029
6030#[inline]6030#[inline]
6031#[target_feature(enable = "lsx")]6031#[target_feature(enable = "lsx")]
6032#[rustc_legacy_const_generics(2)]6032#[rustc_legacy_const_generics(2)]
6033#[unstable(feature = "stdarch_loongarch", issue = "117427")]6033#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6034pub unsafe fn lsx_vssrlni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {6034pub fn lsx_vssrlni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
6035 static_assert_uimm_bits!(IMM4, 4);6035 static_assert_uimm_bits!(IMM4, 4);
6036 __lsx_vssrlni_bu_h(a, b, IMM4)6036 unsafe { __lsx_vssrlni_bu_h(a, b, IMM4) }
6037}6037}
60386038
6039#[inline]6039#[inline]
6040#[target_feature(enable = "lsx")]6040#[target_feature(enable = "lsx")]
6041#[rustc_legacy_const_generics(2)]6041#[rustc_legacy_const_generics(2)]
6042#[unstable(feature = "stdarch_loongarch", issue = "117427")]6042#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6043pub unsafe fn lsx_vssrlni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {6043pub fn lsx_vssrlni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
6044 static_assert_uimm_bits!(IMM5, 5);6044 static_assert_uimm_bits!(IMM5, 5);
6045 __lsx_vssrlni_hu_w(a, b, IMM5)6045 unsafe { __lsx_vssrlni_hu_w(a, b, IMM5) }
6046}6046}
60476047
6048#[inline]6048#[inline]
6049#[target_feature(enable = "lsx")]6049#[target_feature(enable = "lsx")]
6050#[rustc_legacy_const_generics(2)]6050#[rustc_legacy_const_generics(2)]
6051#[unstable(feature = "stdarch_loongarch", issue = "117427")]6051#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6052pub unsafe fn lsx_vssrlni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {6052pub fn lsx_vssrlni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
6053 static_assert_uimm_bits!(IMM6, 6);6053 static_assert_uimm_bits!(IMM6, 6);
6054 __lsx_vssrlni_wu_d(a, b, IMM6)6054 unsafe { __lsx_vssrlni_wu_d(a, b, IMM6) }
6055}6055}
60566056
6057#[inline]6057#[inline]
6058#[target_feature(enable = "lsx")]6058#[target_feature(enable = "lsx")]
6059#[rustc_legacy_const_generics(2)]6059#[rustc_legacy_const_generics(2)]
6060#[unstable(feature = "stdarch_loongarch", issue = "117427")]6060#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6061pub unsafe fn lsx_vssrlni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {6061pub fn lsx_vssrlni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
6062 static_assert_uimm_bits!(IMM7, 7);6062 static_assert_uimm_bits!(IMM7, 7);
6063 __lsx_vssrlni_du_q(a, b, IMM7)6063 unsafe { __lsx_vssrlni_du_q(a, b, IMM7) }
6064}6064}
60656065
6066#[inline]6066#[inline]
6067#[target_feature(enable = "lsx")]6067#[target_feature(enable = "lsx")]
6068#[rustc_legacy_const_generics(2)]6068#[rustc_legacy_const_generics(2)]
6069#[unstable(feature = "stdarch_loongarch", issue = "117427")]6069#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6070pub unsafe fn lsx_vssrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {6070pub fn lsx_vssrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
6071 static_assert_uimm_bits!(IMM4, 4);6071 static_assert_uimm_bits!(IMM4, 4);
6072 __lsx_vssrlrni_b_h(a, b, IMM4)6072 unsafe { __lsx_vssrlrni_b_h(a, b, IMM4) }
6073}6073}
60746074
6075#[inline]6075#[inline]
6076#[target_feature(enable = "lsx")]6076#[target_feature(enable = "lsx")]
6077#[rustc_legacy_const_generics(2)]6077#[rustc_legacy_const_generics(2)]
6078#[unstable(feature = "stdarch_loongarch", issue = "117427")]6078#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6079pub unsafe fn lsx_vssrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {6079pub fn lsx_vssrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
6080 static_assert_uimm_bits!(IMM5, 5);6080 static_assert_uimm_bits!(IMM5, 5);
6081 __lsx_vssrlrni_h_w(a, b, IMM5)6081 unsafe { __lsx_vssrlrni_h_w(a, b, IMM5) }
6082}6082}
60836083
6084#[inline]6084#[inline]
6085#[target_feature(enable = "lsx")]6085#[target_feature(enable = "lsx")]
6086#[rustc_legacy_const_generics(2)]6086#[rustc_legacy_const_generics(2)]
6087#[unstable(feature = "stdarch_loongarch", issue = "117427")]6087#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6088pub unsafe fn lsx_vssrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {6088pub fn lsx_vssrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
6089 static_assert_uimm_bits!(IMM6, 6);6089 static_assert_uimm_bits!(IMM6, 6);
6090 __lsx_vssrlrni_w_d(a, b, IMM6)6090 unsafe { __lsx_vssrlrni_w_d(a, b, IMM6) }
6091}6091}
60926092
6093#[inline]6093#[inline]
6094#[target_feature(enable = "lsx")]6094#[target_feature(enable = "lsx")]
6095#[rustc_legacy_const_generics(2)]6095#[rustc_legacy_const_generics(2)]
6096#[unstable(feature = "stdarch_loongarch", issue = "117427")]6096#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6097pub unsafe fn lsx_vssrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {6097pub fn lsx_vssrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
6098 static_assert_uimm_bits!(IMM7, 7);6098 static_assert_uimm_bits!(IMM7, 7);
6099 __lsx_vssrlrni_d_q(a, b, IMM7)6099 unsafe { __lsx_vssrlrni_d_q(a, b, IMM7) }
6100}6100}
61016101
6102#[inline]6102#[inline]
6103#[target_feature(enable = "lsx")]6103#[target_feature(enable = "lsx")]
6104#[rustc_legacy_const_generics(2)]6104#[rustc_legacy_const_generics(2)]
6105#[unstable(feature = "stdarch_loongarch", issue = "117427")]6105#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6106pub unsafe fn lsx_vssrlrni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {6106pub fn lsx_vssrlrni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
6107 static_assert_uimm_bits!(IMM4, 4);6107 static_assert_uimm_bits!(IMM4, 4);
6108 __lsx_vssrlrni_bu_h(a, b, IMM4)6108 unsafe { __lsx_vssrlrni_bu_h(a, b, IMM4) }
6109}6109}
61106110
6111#[inline]6111#[inline]
6112#[target_feature(enable = "lsx")]6112#[target_feature(enable = "lsx")]
6113#[rustc_legacy_const_generics(2)]6113#[rustc_legacy_const_generics(2)]
6114#[unstable(feature = "stdarch_loongarch", issue = "117427")]6114#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6115pub unsafe fn lsx_vssrlrni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {6115pub fn lsx_vssrlrni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
6116 static_assert_uimm_bits!(IMM5, 5);6116 static_assert_uimm_bits!(IMM5, 5);
6117 __lsx_vssrlrni_hu_w(a, b, IMM5)6117 unsafe { __lsx_vssrlrni_hu_w(a, b, IMM5) }
6118}6118}
61196119
6120#[inline]6120#[inline]
6121#[target_feature(enable = "lsx")]6121#[target_feature(enable = "lsx")]
6122#[rustc_legacy_const_generics(2)]6122#[rustc_legacy_const_generics(2)]
6123#[unstable(feature = "stdarch_loongarch", issue = "117427")]6123#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6124pub unsafe fn lsx_vssrlrni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {6124pub fn lsx_vssrlrni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
6125 static_assert_uimm_bits!(IMM6, 6);6125 static_assert_uimm_bits!(IMM6, 6);
6126 __lsx_vssrlrni_wu_d(a, b, IMM6)6126 unsafe { __lsx_vssrlrni_wu_d(a, b, IMM6) }
6127}6127}
61286128
6129#[inline]6129#[inline]
6130#[target_feature(enable = "lsx")]6130#[target_feature(enable = "lsx")]
6131#[rustc_legacy_const_generics(2)]6131#[rustc_legacy_const_generics(2)]
6132#[unstable(feature = "stdarch_loongarch", issue = "117427")]6132#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6133pub unsafe fn lsx_vssrlrni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {6133pub fn lsx_vssrlrni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
6134 static_assert_uimm_bits!(IMM7, 7);6134 static_assert_uimm_bits!(IMM7, 7);
6135 __lsx_vssrlrni_du_q(a, b, IMM7)6135 unsafe { __lsx_vssrlrni_du_q(a, b, IMM7) }
6136}6136}
61376137
6138#[inline]6138#[inline]
6139#[target_feature(enable = "lsx")]6139#[target_feature(enable = "lsx")]
6140#[rustc_legacy_const_generics(2)]6140#[rustc_legacy_const_generics(2)]
6141#[unstable(feature = "stdarch_loongarch", issue = "117427")]6141#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6142pub unsafe fn lsx_vsrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {6142pub fn lsx_vsrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
6143 static_assert_uimm_bits!(IMM4, 4);6143 static_assert_uimm_bits!(IMM4, 4);
6144 __lsx_vsrani_b_h(a, b, IMM4)6144 unsafe { __lsx_vsrani_b_h(a, b, IMM4) }
6145}6145}
61466146
6147#[inline]6147#[inline]
6148#[target_feature(enable = "lsx")]6148#[target_feature(enable = "lsx")]
6149#[rustc_legacy_const_generics(2)]6149#[rustc_legacy_const_generics(2)]
6150#[unstable(feature = "stdarch_loongarch", issue = "117427")]6150#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6151pub unsafe fn lsx_vsrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {6151pub fn lsx_vsrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
6152 static_assert_uimm_bits!(IMM5, 5);6152 static_assert_uimm_bits!(IMM5, 5);
6153 __lsx_vsrani_h_w(a, b, IMM5)6153 unsafe { __lsx_vsrani_h_w(a, b, IMM5) }
6154}6154}
61556155
6156#[inline]6156#[inline]
6157#[target_feature(enable = "lsx")]6157#[target_feature(enable = "lsx")]
6158#[rustc_legacy_const_generics(2)]6158#[rustc_legacy_const_generics(2)]
6159#[unstable(feature = "stdarch_loongarch", issue = "117427")]6159#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6160pub unsafe fn lsx_vsrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {6160pub fn lsx_vsrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
6161 static_assert_uimm_bits!(IMM6, 6);6161 static_assert_uimm_bits!(IMM6, 6);
6162 __lsx_vsrani_w_d(a, b, IMM6)6162 unsafe { __lsx_vsrani_w_d(a, b, IMM6) }
6163}6163}
61646164
6165#[inline]6165#[inline]
6166#[target_feature(enable = "lsx")]6166#[target_feature(enable = "lsx")]
6167#[rustc_legacy_const_generics(2)]6167#[rustc_legacy_const_generics(2)]
6168#[unstable(feature = "stdarch_loongarch", issue = "117427")]6168#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6169pub unsafe fn lsx_vsrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {6169pub fn lsx_vsrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
6170 static_assert_uimm_bits!(IMM7, 7);6170 static_assert_uimm_bits!(IMM7, 7);
6171 __lsx_vsrani_d_q(a, b, IMM7)6171 unsafe { __lsx_vsrani_d_q(a, b, IMM7) }
6172}6172}
61736173
6174#[inline]6174#[inline]
6175#[target_feature(enable = "lsx")]6175#[target_feature(enable = "lsx")]
6176#[rustc_legacy_const_generics(2)]6176#[rustc_legacy_const_generics(2)]
6177#[unstable(feature = "stdarch_loongarch", issue = "117427")]6177#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6178pub unsafe fn lsx_vsrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {6178pub fn lsx_vsrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
6179 static_assert_uimm_bits!(IMM4, 4);6179 static_assert_uimm_bits!(IMM4, 4);
6180 __lsx_vsrarni_b_h(a, b, IMM4)6180 unsafe { __lsx_vsrarni_b_h(a, b, IMM4) }
6181}6181}
61826182
6183#[inline]6183#[inline]
6184#[target_feature(enable = "lsx")]6184#[target_feature(enable = "lsx")]
6185#[rustc_legacy_const_generics(2)]6185#[rustc_legacy_const_generics(2)]
6186#[unstable(feature = "stdarch_loongarch", issue = "117427")]6186#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6187pub unsafe fn lsx_vsrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {6187pub fn lsx_vsrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
6188 static_assert_uimm_bits!(IMM5, 5);6188 static_assert_uimm_bits!(IMM5, 5);
6189 __lsx_vsrarni_h_w(a, b, IMM5)6189 unsafe { __lsx_vsrarni_h_w(a, b, IMM5) }
6190}6190}
61916191
6192#[inline]6192#[inline]
6193#[target_feature(enable = "lsx")]6193#[target_feature(enable = "lsx")]
6194#[rustc_legacy_const_generics(2)]6194#[rustc_legacy_const_generics(2)]
6195#[unstable(feature = "stdarch_loongarch", issue = "117427")]6195#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6196pub unsafe fn lsx_vsrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {6196pub fn lsx_vsrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
6197 static_assert_uimm_bits!(IMM6, 6);6197 static_assert_uimm_bits!(IMM6, 6);
6198 __lsx_vsrarni_w_d(a, b, IMM6)6198 unsafe { __lsx_vsrarni_w_d(a, b, IMM6) }
6199}6199}
62006200
6201#[inline]6201#[inline]
6202#[target_feature(enable = "lsx")]6202#[target_feature(enable = "lsx")]
6203#[rustc_legacy_const_generics(2)]6203#[rustc_legacy_const_generics(2)]
6204#[unstable(feature = "stdarch_loongarch", issue = "117427")]6204#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6205pub unsafe fn lsx_vsrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {6205pub fn lsx_vsrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
6206 static_assert_uimm_bits!(IMM7, 7);6206 static_assert_uimm_bits!(IMM7, 7);
6207 __lsx_vsrarni_d_q(a, b, IMM7)6207 unsafe { __lsx_vsrarni_d_q(a, b, IMM7) }
6208}6208}
62096209
6210#[inline]6210#[inline]
6211#[target_feature(enable = "lsx")]6211#[target_feature(enable = "lsx")]
6212#[rustc_legacy_const_generics(2)]6212#[rustc_legacy_const_generics(2)]
6213#[unstable(feature = "stdarch_loongarch", issue = "117427")]6213#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6214pub unsafe fn lsx_vssrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {6214pub fn lsx_vssrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
6215 static_assert_uimm_bits!(IMM4, 4);6215 static_assert_uimm_bits!(IMM4, 4);
6216 __lsx_vssrani_b_h(a, b, IMM4)6216 unsafe { __lsx_vssrani_b_h(a, b, IMM4) }
6217}6217}
62186218
6219#[inline]6219#[inline]
6220#[target_feature(enable = "lsx")]6220#[target_feature(enable = "lsx")]
6221#[rustc_legacy_const_generics(2)]6221#[rustc_legacy_const_generics(2)]
6222#[unstable(feature = "stdarch_loongarch", issue = "117427")]6222#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6223pub unsafe fn lsx_vssrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {6223pub fn lsx_vssrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
6224 static_assert_uimm_bits!(IMM5, 5);6224 static_assert_uimm_bits!(IMM5, 5);
6225 __lsx_vssrani_h_w(a, b, IMM5)6225 unsafe { __lsx_vssrani_h_w(a, b, IMM5) }
6226}6226}
62276227
6228#[inline]6228#[inline]
6229#[target_feature(enable = "lsx")]6229#[target_feature(enable = "lsx")]
6230#[rustc_legacy_const_generics(2)]6230#[rustc_legacy_const_generics(2)]
6231#[unstable(feature = "stdarch_loongarch", issue = "117427")]6231#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6232pub unsafe fn lsx_vssrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {6232pub fn lsx_vssrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
6233 static_assert_uimm_bits!(IMM6, 6);6233 static_assert_uimm_bits!(IMM6, 6);
6234 __lsx_vssrani_w_d(a, b, IMM6)6234 unsafe { __lsx_vssrani_w_d(a, b, IMM6) }
6235}6235}
62366236
6237#[inline]6237#[inline]
6238#[target_feature(enable = "lsx")]6238#[target_feature(enable = "lsx")]
6239#[rustc_legacy_const_generics(2)]6239#[rustc_legacy_const_generics(2)]
6240#[unstable(feature = "stdarch_loongarch", issue = "117427")]6240#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6241pub unsafe fn lsx_vssrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {6241pub fn lsx_vssrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
6242 static_assert_uimm_bits!(IMM7, 7);6242 static_assert_uimm_bits!(IMM7, 7);
6243 __lsx_vssrani_d_q(a, b, IMM7)6243 unsafe { __lsx_vssrani_d_q(a, b, IMM7) }
6244}6244}
62456245
6246#[inline]6246#[inline]
6247#[target_feature(enable = "lsx")]6247#[target_feature(enable = "lsx")]
6248#[rustc_legacy_const_generics(2)]6248#[rustc_legacy_const_generics(2)]
6249#[unstable(feature = "stdarch_loongarch", issue = "117427")]6249#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6250pub unsafe fn lsx_vssrani_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {6250pub fn lsx_vssrani_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
6251 static_assert_uimm_bits!(IMM4, 4);6251 static_assert_uimm_bits!(IMM4, 4);
6252 __lsx_vssrani_bu_h(a, b, IMM4)6252 unsafe { __lsx_vssrani_bu_h(a, b, IMM4) }
6253}6253}
62546254
6255#[inline]6255#[inline]
6256#[target_feature(enable = "lsx")]6256#[target_feature(enable = "lsx")]
6257#[rustc_legacy_const_generics(2)]6257#[rustc_legacy_const_generics(2)]
6258#[unstable(feature = "stdarch_loongarch", issue = "117427")]6258#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6259pub unsafe fn lsx_vssrani_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {6259pub fn lsx_vssrani_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
6260 static_assert_uimm_bits!(IMM5, 5);6260 static_assert_uimm_bits!(IMM5, 5);
6261 __lsx_vssrani_hu_w(a, b, IMM5)6261 unsafe { __lsx_vssrani_hu_w(a, b, IMM5) }
6262}6262}
62636263
6264#[inline]6264#[inline]
6265#[target_feature(enable = "lsx")]6265#[target_feature(enable = "lsx")]
6266#[rustc_legacy_const_generics(2)]6266#[rustc_legacy_const_generics(2)]
6267#[unstable(feature = "stdarch_loongarch", issue = "117427")]6267#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6268pub unsafe fn lsx_vssrani_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {6268pub fn lsx_vssrani_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
6269 static_assert_uimm_bits!(IMM6, 6);6269 static_assert_uimm_bits!(IMM6, 6);
6270 __lsx_vssrani_wu_d(a, b, IMM6)6270 unsafe { __lsx_vssrani_wu_d(a, b, IMM6) }
6271}6271}
62726272
6273#[inline]6273#[inline]
6274#[target_feature(enable = "lsx")]6274#[target_feature(enable = "lsx")]
6275#[rustc_legacy_const_generics(2)]6275#[rustc_legacy_const_generics(2)]
6276#[unstable(feature = "stdarch_loongarch", issue = "117427")]6276#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6277pub unsafe fn lsx_vssrani_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {6277pub fn lsx_vssrani_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
6278 static_assert_uimm_bits!(IMM7, 7);6278 static_assert_uimm_bits!(IMM7, 7);
6279 __lsx_vssrani_du_q(a, b, IMM7)6279 unsafe { __lsx_vssrani_du_q(a, b, IMM7) }
6280}6280}
62816281
6282#[inline]6282#[inline]
6283#[target_feature(enable = "lsx")]6283#[target_feature(enable = "lsx")]
6284#[rustc_legacy_const_generics(2)]6284#[rustc_legacy_const_generics(2)]
6285#[unstable(feature = "stdarch_loongarch", issue = "117427")]6285#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6286pub unsafe fn lsx_vssrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {6286pub fn lsx_vssrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
6287 static_assert_uimm_bits!(IMM4, 4);6287 static_assert_uimm_bits!(IMM4, 4);
6288 __lsx_vssrarni_b_h(a, b, IMM4)6288 unsafe { __lsx_vssrarni_b_h(a, b, IMM4) }
6289}6289}
62906290
6291#[inline]6291#[inline]
6292#[target_feature(enable = "lsx")]6292#[target_feature(enable = "lsx")]
6293#[rustc_legacy_const_generics(2)]6293#[rustc_legacy_const_generics(2)]
6294#[unstable(feature = "stdarch_loongarch", issue = "117427")]6294#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6295pub unsafe fn lsx_vssrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {6295pub fn lsx_vssrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
6296 static_assert_uimm_bits!(IMM5, 5);6296 static_assert_uimm_bits!(IMM5, 5);
6297 __lsx_vssrarni_h_w(a, b, IMM5)6297 unsafe { __lsx_vssrarni_h_w(a, b, IMM5) }
6298}6298}
62996299
6300#[inline]6300#[inline]
6301#[target_feature(enable = "lsx")]6301#[target_feature(enable = "lsx")]
6302#[rustc_legacy_const_generics(2)]6302#[rustc_legacy_const_generics(2)]
6303#[unstable(feature = "stdarch_loongarch", issue = "117427")]6303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6304pub unsafe fn lsx_vssrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {6304pub fn lsx_vssrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
6305 static_assert_uimm_bits!(IMM6, 6);6305 static_assert_uimm_bits!(IMM6, 6);
6306 __lsx_vssrarni_w_d(a, b, IMM6)6306 unsafe { __lsx_vssrarni_w_d(a, b, IMM6) }
6307}6307}
63086308
6309#[inline]6309#[inline]
6310#[target_feature(enable = "lsx")]6310#[target_feature(enable = "lsx")]
6311#[rustc_legacy_const_generics(2)]6311#[rustc_legacy_const_generics(2)]
6312#[unstable(feature = "stdarch_loongarch", issue = "117427")]6312#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6313pub unsafe fn lsx_vssrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {6313pub fn lsx_vssrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
6314 static_assert_uimm_bits!(IMM7, 7);6314 static_assert_uimm_bits!(IMM7, 7);
6315 __lsx_vssrarni_d_q(a, b, IMM7)6315 unsafe { __lsx_vssrarni_d_q(a, b, IMM7) }
6316}6316}
63176317
6318#[inline]6318#[inline]
6319#[target_feature(enable = "lsx")]6319#[target_feature(enable = "lsx")]
6320#[rustc_legacy_const_generics(2)]6320#[rustc_legacy_const_generics(2)]
6321#[unstable(feature = "stdarch_loongarch", issue = "117427")]6321#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6322pub unsafe fn lsx_vssrarni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {6322pub fn lsx_vssrarni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
6323 static_assert_uimm_bits!(IMM4, 4);6323 static_assert_uimm_bits!(IMM4, 4);
6324 __lsx_vssrarni_bu_h(a, b, IMM4)6324 unsafe { __lsx_vssrarni_bu_h(a, b, IMM4) }
6325}6325}
63266326
6327#[inline]6327#[inline]
6328#[target_feature(enable = "lsx")]6328#[target_feature(enable = "lsx")]
6329#[rustc_legacy_const_generics(2)]6329#[rustc_legacy_const_generics(2)]
6330#[unstable(feature = "stdarch_loongarch", issue = "117427")]6330#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6331pub unsafe fn lsx_vssrarni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {6331pub fn lsx_vssrarni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
6332 static_assert_uimm_bits!(IMM5, 5);6332 static_assert_uimm_bits!(IMM5, 5);
6333 __lsx_vssrarni_hu_w(a, b, IMM5)6333 unsafe { __lsx_vssrarni_hu_w(a, b, IMM5) }
6334}6334}
63356335
6336#[inline]6336#[inline]
6337#[target_feature(enable = "lsx")]6337#[target_feature(enable = "lsx")]
6338#[rustc_legacy_const_generics(2)]6338#[rustc_legacy_const_generics(2)]
6339#[unstable(feature = "stdarch_loongarch", issue = "117427")]6339#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6340pub unsafe fn lsx_vssrarni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {6340pub fn lsx_vssrarni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
6341 static_assert_uimm_bits!(IMM6, 6);6341 static_assert_uimm_bits!(IMM6, 6);
6342 __lsx_vssrarni_wu_d(a, b, IMM6)6342 unsafe { __lsx_vssrarni_wu_d(a, b, IMM6) }
6343}6343}
63446344
6345#[inline]6345#[inline]
6346#[target_feature(enable = "lsx")]6346#[target_feature(enable = "lsx")]
6347#[rustc_legacy_const_generics(2)]6347#[rustc_legacy_const_generics(2)]
6348#[unstable(feature = "stdarch_loongarch", issue = "117427")]6348#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6349pub unsafe fn lsx_vssrarni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {6349pub fn lsx_vssrarni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
6350 static_assert_uimm_bits!(IMM7, 7);6350 static_assert_uimm_bits!(IMM7, 7);
6351 __lsx_vssrarni_du_q(a, b, IMM7)6351 unsafe { __lsx_vssrarni_du_q(a, b, IMM7) }
6352}6352}
63536353
6354#[inline]6354#[inline]
6355#[target_feature(enable = "lsx")]6355#[target_feature(enable = "lsx")]
6356#[rustc_legacy_const_generics(2)]6356#[rustc_legacy_const_generics(2)]
6357#[unstable(feature = "stdarch_loongarch", issue = "117427")]6357#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6358pub unsafe fn lsx_vpermi_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {6358pub fn lsx_vpermi_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {
6359 static_assert_uimm_bits!(IMM8, 8);6359 static_assert_uimm_bits!(IMM8, 8);
6360 __lsx_vpermi_w(a, b, IMM8)6360 unsafe { __lsx_vpermi_w(a, b, IMM8) }
6361}6361}
63626362
6363#[inline]6363#[inline]
...@@ -6381,66 +6381,66 @@ pub unsafe fn lsx_vst<const IMM_S12: i32>(a: v16i8, mem_addr: *mut i8) {...@@ -6381,66 +6381,66 @@ pub unsafe fn lsx_vst<const IMM_S12: i32>(a: v16i8, mem_addr: *mut i8) {
6381#[inline]6381#[inline]
6382#[target_feature(enable = "lsx")]6382#[target_feature(enable = "lsx")]
6383#[unstable(feature = "stdarch_loongarch", issue = "117427")]6383#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6384pub unsafe fn lsx_vssrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {6384pub fn lsx_vssrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {
6385 __lsx_vssrlrn_b_h(a, b)6385 unsafe { __lsx_vssrlrn_b_h(a, b) }
6386}6386}
63876387
6388#[inline]6388#[inline]
6389#[target_feature(enable = "lsx")]6389#[target_feature(enable = "lsx")]
6390#[unstable(feature = "stdarch_loongarch", issue = "117427")]6390#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6391pub unsafe fn lsx_vssrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {6391pub fn lsx_vssrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {
6392 __lsx_vssrlrn_h_w(a, b)6392 unsafe { __lsx_vssrlrn_h_w(a, b) }
6393}6393}
63946394
6395#[inline]6395#[inline]
6396#[target_feature(enable = "lsx")]6396#[target_feature(enable = "lsx")]
6397#[unstable(feature = "stdarch_loongarch", issue = "117427")]6397#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6398pub unsafe fn lsx_vssrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {6398pub fn lsx_vssrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {
6399 __lsx_vssrlrn_w_d(a, b)6399 unsafe { __lsx_vssrlrn_w_d(a, b) }
6400}6400}
64016401
6402#[inline]6402#[inline]
6403#[target_feature(enable = "lsx")]6403#[target_feature(enable = "lsx")]
6404#[unstable(feature = "stdarch_loongarch", issue = "117427")]6404#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6405pub unsafe fn lsx_vssrln_b_h(a: v8i16, b: v8i16) -> v16i8 {6405pub fn lsx_vssrln_b_h(a: v8i16, b: v8i16) -> v16i8 {
6406 __lsx_vssrln_b_h(a, b)6406 unsafe { __lsx_vssrln_b_h(a, b) }
6407}6407}
64086408
6409#[inline]6409#[inline]
6410#[target_feature(enable = "lsx")]6410#[target_feature(enable = "lsx")]
6411#[unstable(feature = "stdarch_loongarch", issue = "117427")]6411#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6412pub unsafe fn lsx_vssrln_h_w(a: v4i32, b: v4i32) -> v8i16 {6412pub fn lsx_vssrln_h_w(a: v4i32, b: v4i32) -> v8i16 {
6413 __lsx_vssrln_h_w(a, b)6413 unsafe { __lsx_vssrln_h_w(a, b) }
6414}6414}
64156415
6416#[inline]6416#[inline]
6417#[target_feature(enable = "lsx")]6417#[target_feature(enable = "lsx")]
6418#[unstable(feature = "stdarch_loongarch", issue = "117427")]6418#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6419pub unsafe fn lsx_vssrln_w_d(a: v2i64, b: v2i64) -> v4i32 {6419pub fn lsx_vssrln_w_d(a: v2i64, b: v2i64) -> v4i32 {
6420 __lsx_vssrln_w_d(a, b)6420 unsafe { __lsx_vssrln_w_d(a, b) }
6421}6421}
64226422
6423#[inline]6423#[inline]
6424#[target_feature(enable = "lsx")]6424#[target_feature(enable = "lsx")]
6425#[unstable(feature = "stdarch_loongarch", issue = "117427")]6425#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6426pub unsafe fn lsx_vorn_v(a: v16i8, b: v16i8) -> v16i8 {6426pub fn lsx_vorn_v(a: v16i8, b: v16i8) -> v16i8 {
6427 __lsx_vorn_v(a, b)6427 unsafe { __lsx_vorn_v(a, b) }
6428}6428}
64296429
6430#[inline]6430#[inline]
6431#[target_feature(enable = "lsx")]6431#[target_feature(enable = "lsx")]
6432#[rustc_legacy_const_generics(0)]6432#[rustc_legacy_const_generics(0)]
6433#[unstable(feature = "stdarch_loongarch", issue = "117427")]6433#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6434pub unsafe fn lsx_vldi<const IMM_S13: i32>() -> v2i64 {6434pub fn lsx_vldi<const IMM_S13: i32>() -> v2i64 {
6435 static_assert_simm_bits!(IMM_S13, 13);6435 static_assert_simm_bits!(IMM_S13, 13);
6436 __lsx_vldi(IMM_S13)6436 unsafe { __lsx_vldi(IMM_S13) }
6437}6437}
64386438
6439#[inline]6439#[inline]
6440#[target_feature(enable = "lsx")]6440#[target_feature(enable = "lsx")]
6441#[unstable(feature = "stdarch_loongarch", issue = "117427")]6441#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6442pub unsafe fn lsx_vshuf_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {6442pub fn lsx_vshuf_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
6443 __lsx_vshuf_b(a, b, c)6443 unsafe { __lsx_vshuf_b(a, b, c) }
6444}6444}
64456445
6446#[inline]6446#[inline]
...@@ -6460,420 +6460,420 @@ pub unsafe fn lsx_vstx(a: v16i8, mem_addr: *mut i8, b: i64) {...@@ -6460,420 +6460,420 @@ pub unsafe fn lsx_vstx(a: v16i8, mem_addr: *mut i8, b: i64) {
6460#[inline]6460#[inline]
6461#[target_feature(enable = "lsx")]6461#[target_feature(enable = "lsx")]
6462#[unstable(feature = "stdarch_loongarch", issue = "117427")]6462#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6463pub unsafe fn lsx_vextl_qu_du(a: v2u64) -> v2u64 {6463pub fn lsx_vextl_qu_du(a: v2u64) -> v2u64 {
6464 __lsx_vextl_qu_du(a)6464 unsafe { __lsx_vextl_qu_du(a) }
6465}6465}
64666466
6467#[inline]6467#[inline]
6468#[target_feature(enable = "lsx")]6468#[target_feature(enable = "lsx")]
6469#[unstable(feature = "stdarch_loongarch", issue = "117427")]6469#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6470pub unsafe fn lsx_bnz_b(a: v16u8) -> i32 {6470pub fn lsx_bnz_b(a: v16u8) -> i32 {
6471 __lsx_bnz_b(a)6471 unsafe { __lsx_bnz_b(a) }
6472}6472}
64736473
6474#[inline]6474#[inline]
6475#[target_feature(enable = "lsx")]6475#[target_feature(enable = "lsx")]
6476#[unstable(feature = "stdarch_loongarch", issue = "117427")]6476#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6477pub unsafe fn lsx_bnz_d(a: v2u64) -> i32 {6477pub fn lsx_bnz_d(a: v2u64) -> i32 {
6478 __lsx_bnz_d(a)6478 unsafe { __lsx_bnz_d(a) }
6479}6479}
64806480
6481#[inline]6481#[inline]
6482#[target_feature(enable = "lsx")]6482#[target_feature(enable = "lsx")]
6483#[unstable(feature = "stdarch_loongarch", issue = "117427")]6483#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6484pub unsafe fn lsx_bnz_h(a: v8u16) -> i32 {6484pub fn lsx_bnz_h(a: v8u16) -> i32 {
6485 __lsx_bnz_h(a)6485 unsafe { __lsx_bnz_h(a) }
6486}6486}
64876487
6488#[inline]6488#[inline]
6489#[target_feature(enable = "lsx")]6489#[target_feature(enable = "lsx")]
6490#[unstable(feature = "stdarch_loongarch", issue = "117427")]6490#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6491pub unsafe fn lsx_bnz_v(a: v16u8) -> i32 {6491pub fn lsx_bnz_v(a: v16u8) -> i32 {
6492 __lsx_bnz_v(a)6492 unsafe { __lsx_bnz_v(a) }
6493}6493}
64946494
6495#[inline]6495#[inline]
6496#[target_feature(enable = "lsx")]6496#[target_feature(enable = "lsx")]
6497#[unstable(feature = "stdarch_loongarch", issue = "117427")]6497#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6498pub unsafe fn lsx_bnz_w(a: v4u32) -> i32 {6498pub fn lsx_bnz_w(a: v4u32) -> i32 {
6499 __lsx_bnz_w(a)6499 unsafe { __lsx_bnz_w(a) }
6500}6500}
65016501
6502#[inline]6502#[inline]
6503#[target_feature(enable = "lsx")]6503#[target_feature(enable = "lsx")]
6504#[unstable(feature = "stdarch_loongarch", issue = "117427")]6504#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6505pub unsafe fn lsx_bz_b(a: v16u8) -> i32 {6505pub fn lsx_bz_b(a: v16u8) -> i32 {
6506 __lsx_bz_b(a)6506 unsafe { __lsx_bz_b(a) }
6507}6507}
65086508
6509#[inline]6509#[inline]
6510#[target_feature(enable = "lsx")]6510#[target_feature(enable = "lsx")]
6511#[unstable(feature = "stdarch_loongarch", issue = "117427")]6511#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6512pub unsafe fn lsx_bz_d(a: v2u64) -> i32 {6512pub fn lsx_bz_d(a: v2u64) -> i32 {
6513 __lsx_bz_d(a)6513 unsafe { __lsx_bz_d(a) }
6514}6514}
65156515
6516#[inline]6516#[inline]
6517#[target_feature(enable = "lsx")]6517#[target_feature(enable = "lsx")]
6518#[unstable(feature = "stdarch_loongarch", issue = "117427")]6518#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6519pub unsafe fn lsx_bz_h(a: v8u16) -> i32 {6519pub fn lsx_bz_h(a: v8u16) -> i32 {
6520 __lsx_bz_h(a)6520 unsafe { __lsx_bz_h(a) }
6521}6521}
65226522
6523#[inline]6523#[inline]
6524#[target_feature(enable = "lsx")]6524#[target_feature(enable = "lsx")]
6525#[unstable(feature = "stdarch_loongarch", issue = "117427")]6525#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6526pub unsafe fn lsx_bz_v(a: v16u8) -> i32 {6526pub fn lsx_bz_v(a: v16u8) -> i32 {
6527 __lsx_bz_v(a)6527 unsafe { __lsx_bz_v(a) }
6528}6528}
65296529
6530#[inline]6530#[inline]
6531#[target_feature(enable = "lsx")]6531#[target_feature(enable = "lsx")]
6532#[unstable(feature = "stdarch_loongarch", issue = "117427")]6532#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6533pub unsafe fn lsx_bz_w(a: v4u32) -> i32 {6533pub fn lsx_bz_w(a: v4u32) -> i32 {
6534 __lsx_bz_w(a)6534 unsafe { __lsx_bz_w(a) }
6535}6535}
65366536
6537#[inline]6537#[inline]
6538#[target_feature(enable = "lsx")]6538#[target_feature(enable = "lsx")]
6539#[unstable(feature = "stdarch_loongarch", issue = "117427")]6539#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6540pub unsafe fn lsx_vfcmp_caf_d(a: v2f64, b: v2f64) -> v2i64 {6540pub fn lsx_vfcmp_caf_d(a: v2f64, b: v2f64) -> v2i64 {
6541 __lsx_vfcmp_caf_d(a, b)6541 unsafe { __lsx_vfcmp_caf_d(a, b) }
6542}6542}
65436543
6544#[inline]6544#[inline]
6545#[target_feature(enable = "lsx")]6545#[target_feature(enable = "lsx")]
6546#[unstable(feature = "stdarch_loongarch", issue = "117427")]6546#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6547pub unsafe fn lsx_vfcmp_caf_s(a: v4f32, b: v4f32) -> v4i32 {6547pub fn lsx_vfcmp_caf_s(a: v4f32, b: v4f32) -> v4i32 {
6548 __lsx_vfcmp_caf_s(a, b)6548 unsafe { __lsx_vfcmp_caf_s(a, b) }
6549}6549}
65506550
6551#[inline]6551#[inline]
6552#[target_feature(enable = "lsx")]6552#[target_feature(enable = "lsx")]
6553#[unstable(feature = "stdarch_loongarch", issue = "117427")]6553#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6554pub unsafe fn lsx_vfcmp_ceq_d(a: v2f64, b: v2f64) -> v2i64 {6554pub fn lsx_vfcmp_ceq_d(a: v2f64, b: v2f64) -> v2i64 {
6555 __lsx_vfcmp_ceq_d(a, b)6555 unsafe { __lsx_vfcmp_ceq_d(a, b) }
6556}6556}
65576557
6558#[inline]6558#[inline]
6559#[target_feature(enable = "lsx")]6559#[target_feature(enable = "lsx")]
6560#[unstable(feature = "stdarch_loongarch", issue = "117427")]6560#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6561pub unsafe fn lsx_vfcmp_ceq_s(a: v4f32, b: v4f32) -> v4i32 {6561pub fn lsx_vfcmp_ceq_s(a: v4f32, b: v4f32) -> v4i32 {
6562 __lsx_vfcmp_ceq_s(a, b)6562 unsafe { __lsx_vfcmp_ceq_s(a, b) }
6563}6563}
65646564
6565#[inline]6565#[inline]
6566#[target_feature(enable = "lsx")]6566#[target_feature(enable = "lsx")]
6567#[unstable(feature = "stdarch_loongarch", issue = "117427")]6567#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6568pub unsafe fn lsx_vfcmp_cle_d(a: v2f64, b: v2f64) -> v2i64 {6568pub fn lsx_vfcmp_cle_d(a: v2f64, b: v2f64) -> v2i64 {
6569 __lsx_vfcmp_cle_d(a, b)6569 unsafe { __lsx_vfcmp_cle_d(a, b) }
6570}6570}
65716571
6572#[inline]6572#[inline]
6573#[target_feature(enable = "lsx")]6573#[target_feature(enable = "lsx")]
6574#[unstable(feature = "stdarch_loongarch", issue = "117427")]6574#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6575pub unsafe fn lsx_vfcmp_cle_s(a: v4f32, b: v4f32) -> v4i32 {6575pub fn lsx_vfcmp_cle_s(a: v4f32, b: v4f32) -> v4i32 {
6576 __lsx_vfcmp_cle_s(a, b)6576 unsafe { __lsx_vfcmp_cle_s(a, b) }
6577}6577}
65786578
6579#[inline]6579#[inline]
6580#[target_feature(enable = "lsx")]6580#[target_feature(enable = "lsx")]
6581#[unstable(feature = "stdarch_loongarch", issue = "117427")]6581#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6582pub unsafe fn lsx_vfcmp_clt_d(a: v2f64, b: v2f64) -> v2i64 {6582pub fn lsx_vfcmp_clt_d(a: v2f64, b: v2f64) -> v2i64 {
6583 __lsx_vfcmp_clt_d(a, b)6583 unsafe { __lsx_vfcmp_clt_d(a, b) }
6584}6584}
65856585
6586#[inline]6586#[inline]
6587#[target_feature(enable = "lsx")]6587#[target_feature(enable = "lsx")]
6588#[unstable(feature = "stdarch_loongarch", issue = "117427")]6588#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6589pub unsafe fn lsx_vfcmp_clt_s(a: v4f32, b: v4f32) -> v4i32 {6589pub fn lsx_vfcmp_clt_s(a: v4f32, b: v4f32) -> v4i32 {
6590 __lsx_vfcmp_clt_s(a, b)6590 unsafe { __lsx_vfcmp_clt_s(a, b) }
6591}6591}
65926592
6593#[inline]6593#[inline]
6594#[target_feature(enable = "lsx")]6594#[target_feature(enable = "lsx")]
6595#[unstable(feature = "stdarch_loongarch", issue = "117427")]6595#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6596pub unsafe fn lsx_vfcmp_cne_d(a: v2f64, b: v2f64) -> v2i64 {6596pub fn lsx_vfcmp_cne_d(a: v2f64, b: v2f64) -> v2i64 {
6597 __lsx_vfcmp_cne_d(a, b)6597 unsafe { __lsx_vfcmp_cne_d(a, b) }
6598}6598}
65996599
6600#[inline]6600#[inline]
6601#[target_feature(enable = "lsx")]6601#[target_feature(enable = "lsx")]
6602#[unstable(feature = "stdarch_loongarch", issue = "117427")]6602#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6603pub unsafe fn lsx_vfcmp_cne_s(a: v4f32, b: v4f32) -> v4i32 {6603pub fn lsx_vfcmp_cne_s(a: v4f32, b: v4f32) -> v4i32 {
6604 __lsx_vfcmp_cne_s(a, b)6604 unsafe { __lsx_vfcmp_cne_s(a, b) }
6605}6605}
66066606
6607#[inline]6607#[inline]
6608#[target_feature(enable = "lsx")]6608#[target_feature(enable = "lsx")]
6609#[unstable(feature = "stdarch_loongarch", issue = "117427")]6609#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6610pub unsafe fn lsx_vfcmp_cor_d(a: v2f64, b: v2f64) -> v2i64 {6610pub fn lsx_vfcmp_cor_d(a: v2f64, b: v2f64) -> v2i64 {
6611 __lsx_vfcmp_cor_d(a, b)6611 unsafe { __lsx_vfcmp_cor_d(a, b) }
6612}6612}
66136613
6614#[inline]6614#[inline]
6615#[target_feature(enable = "lsx")]6615#[target_feature(enable = "lsx")]
6616#[unstable(feature = "stdarch_loongarch", issue = "117427")]6616#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6617pub unsafe fn lsx_vfcmp_cor_s(a: v4f32, b: v4f32) -> v4i32 {6617pub fn lsx_vfcmp_cor_s(a: v4f32, b: v4f32) -> v4i32 {
6618 __lsx_vfcmp_cor_s(a, b)6618 unsafe { __lsx_vfcmp_cor_s(a, b) }
6619}6619}
66206620
6621#[inline]6621#[inline]
6622#[target_feature(enable = "lsx")]6622#[target_feature(enable = "lsx")]
6623#[unstable(feature = "stdarch_loongarch", issue = "117427")]6623#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6624pub unsafe fn lsx_vfcmp_cueq_d(a: v2f64, b: v2f64) -> v2i64 {6624pub fn lsx_vfcmp_cueq_d(a: v2f64, b: v2f64) -> v2i64 {
6625 __lsx_vfcmp_cueq_d(a, b)6625 unsafe { __lsx_vfcmp_cueq_d(a, b) }
6626}6626}
66276627
6628#[inline]6628#[inline]
6629#[target_feature(enable = "lsx")]6629#[target_feature(enable = "lsx")]
6630#[unstable(feature = "stdarch_loongarch", issue = "117427")]6630#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6631pub unsafe fn lsx_vfcmp_cueq_s(a: v4f32, b: v4f32) -> v4i32 {6631pub fn lsx_vfcmp_cueq_s(a: v4f32, b: v4f32) -> v4i32 {
6632 __lsx_vfcmp_cueq_s(a, b)6632 unsafe { __lsx_vfcmp_cueq_s(a, b) }
6633}6633}
66346634
6635#[inline]6635#[inline]
6636#[target_feature(enable = "lsx")]6636#[target_feature(enable = "lsx")]
6637#[unstable(feature = "stdarch_loongarch", issue = "117427")]6637#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6638pub unsafe fn lsx_vfcmp_cule_d(a: v2f64, b: v2f64) -> v2i64 {6638pub fn lsx_vfcmp_cule_d(a: v2f64, b: v2f64) -> v2i64 {
6639 __lsx_vfcmp_cule_d(a, b)6639 unsafe { __lsx_vfcmp_cule_d(a, b) }
6640}6640}
66416641
6642#[inline]6642#[inline]
6643#[target_feature(enable = "lsx")]6643#[target_feature(enable = "lsx")]
6644#[unstable(feature = "stdarch_loongarch", issue = "117427")]6644#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6645pub unsafe fn lsx_vfcmp_cule_s(a: v4f32, b: v4f32) -> v4i32 {6645pub fn lsx_vfcmp_cule_s(a: v4f32, b: v4f32) -> v4i32 {
6646 __lsx_vfcmp_cule_s(a, b)6646 unsafe { __lsx_vfcmp_cule_s(a, b) }
6647}6647}
66486648
6649#[inline]6649#[inline]
6650#[target_feature(enable = "lsx")]6650#[target_feature(enable = "lsx")]
6651#[unstable(feature = "stdarch_loongarch", issue = "117427")]6651#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6652pub unsafe fn lsx_vfcmp_cult_d(a: v2f64, b: v2f64) -> v2i64 {6652pub fn lsx_vfcmp_cult_d(a: v2f64, b: v2f64) -> v2i64 {
6653 __lsx_vfcmp_cult_d(a, b)6653 unsafe { __lsx_vfcmp_cult_d(a, b) }
6654}6654}
66556655
6656#[inline]6656#[inline]
6657#[target_feature(enable = "lsx")]6657#[target_feature(enable = "lsx")]
6658#[unstable(feature = "stdarch_loongarch", issue = "117427")]6658#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6659pub unsafe fn lsx_vfcmp_cult_s(a: v4f32, b: v4f32) -> v4i32 {6659pub fn lsx_vfcmp_cult_s(a: v4f32, b: v4f32) -> v4i32 {
6660 __lsx_vfcmp_cult_s(a, b)6660 unsafe { __lsx_vfcmp_cult_s(a, b) }
6661}6661}
66626662
6663#[inline]6663#[inline]
6664#[target_feature(enable = "lsx")]6664#[target_feature(enable = "lsx")]
6665#[unstable(feature = "stdarch_loongarch", issue = "117427")]6665#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6666pub unsafe fn lsx_vfcmp_cun_d(a: v2f64, b: v2f64) -> v2i64 {6666pub fn lsx_vfcmp_cun_d(a: v2f64, b: v2f64) -> v2i64 {
6667 __lsx_vfcmp_cun_d(a, b)6667 unsafe { __lsx_vfcmp_cun_d(a, b) }
6668}6668}
66696669
6670#[inline]6670#[inline]
6671#[target_feature(enable = "lsx")]6671#[target_feature(enable = "lsx")]
6672#[unstable(feature = "stdarch_loongarch", issue = "117427")]6672#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6673pub unsafe fn lsx_vfcmp_cune_d(a: v2f64, b: v2f64) -> v2i64 {6673pub fn lsx_vfcmp_cune_d(a: v2f64, b: v2f64) -> v2i64 {
6674 __lsx_vfcmp_cune_d(a, b)6674 unsafe { __lsx_vfcmp_cune_d(a, b) }
6675}6675}
66766676
6677#[inline]6677#[inline]
6678#[target_feature(enable = "lsx")]6678#[target_feature(enable = "lsx")]
6679#[unstable(feature = "stdarch_loongarch", issue = "117427")]6679#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6680pub unsafe fn lsx_vfcmp_cune_s(a: v4f32, b: v4f32) -> v4i32 {6680pub fn lsx_vfcmp_cune_s(a: v4f32, b: v4f32) -> v4i32 {
6681 __lsx_vfcmp_cune_s(a, b)6681 unsafe { __lsx_vfcmp_cune_s(a, b) }
6682}6682}
66836683
6684#[inline]6684#[inline]
6685#[target_feature(enable = "lsx")]6685#[target_feature(enable = "lsx")]
6686#[unstable(feature = "stdarch_loongarch", issue = "117427")]6686#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6687pub unsafe fn lsx_vfcmp_cun_s(a: v4f32, b: v4f32) -> v4i32 {6687pub fn lsx_vfcmp_cun_s(a: v4f32, b: v4f32) -> v4i32 {
6688 __lsx_vfcmp_cun_s(a, b)6688 unsafe { __lsx_vfcmp_cun_s(a, b) }
6689}6689}
66906690
6691#[inline]6691#[inline]
6692#[target_feature(enable = "lsx")]6692#[target_feature(enable = "lsx")]
6693#[unstable(feature = "stdarch_loongarch", issue = "117427")]6693#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6694pub unsafe fn lsx_vfcmp_saf_d(a: v2f64, b: v2f64) -> v2i64 {6694pub fn lsx_vfcmp_saf_d(a: v2f64, b: v2f64) -> v2i64 {
6695 __lsx_vfcmp_saf_d(a, b)6695 unsafe { __lsx_vfcmp_saf_d(a, b) }
6696}6696}
66976697
6698#[inline]6698#[inline]
6699#[target_feature(enable = "lsx")]6699#[target_feature(enable = "lsx")]
6700#[unstable(feature = "stdarch_loongarch", issue = "117427")]6700#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6701pub unsafe fn lsx_vfcmp_saf_s(a: v4f32, b: v4f32) -> v4i32 {6701pub fn lsx_vfcmp_saf_s(a: v4f32, b: v4f32) -> v4i32 {
6702 __lsx_vfcmp_saf_s(a, b)6702 unsafe { __lsx_vfcmp_saf_s(a, b) }
6703}6703}
67046704
6705#[inline]6705#[inline]
6706#[target_feature(enable = "lsx")]6706#[target_feature(enable = "lsx")]
6707#[unstable(feature = "stdarch_loongarch", issue = "117427")]6707#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6708pub unsafe fn lsx_vfcmp_seq_d(a: v2f64, b: v2f64) -> v2i64 {6708pub fn lsx_vfcmp_seq_d(a: v2f64, b: v2f64) -> v2i64 {
6709 __lsx_vfcmp_seq_d(a, b)6709 unsafe { __lsx_vfcmp_seq_d(a, b) }
6710}6710}
67116711
6712#[inline]6712#[inline]
6713#[target_feature(enable = "lsx")]6713#[target_feature(enable = "lsx")]
6714#[unstable(feature = "stdarch_loongarch", issue = "117427")]6714#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6715pub unsafe fn lsx_vfcmp_seq_s(a: v4f32, b: v4f32) -> v4i32 {6715pub fn lsx_vfcmp_seq_s(a: v4f32, b: v4f32) -> v4i32 {
6716 __lsx_vfcmp_seq_s(a, b)6716 unsafe { __lsx_vfcmp_seq_s(a, b) }
6717}6717}
67186718
6719#[inline]6719#[inline]
6720#[target_feature(enable = "lsx")]6720#[target_feature(enable = "lsx")]
6721#[unstable(feature = "stdarch_loongarch", issue = "117427")]6721#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6722pub unsafe fn lsx_vfcmp_sle_d(a: v2f64, b: v2f64) -> v2i64 {6722pub fn lsx_vfcmp_sle_d(a: v2f64, b: v2f64) -> v2i64 {
6723 __lsx_vfcmp_sle_d(a, b)6723 unsafe { __lsx_vfcmp_sle_d(a, b) }
6724}6724}
67256725
6726#[inline]6726#[inline]
6727#[target_feature(enable = "lsx")]6727#[target_feature(enable = "lsx")]
6728#[unstable(feature = "stdarch_loongarch", issue = "117427")]6728#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6729pub unsafe fn lsx_vfcmp_sle_s(a: v4f32, b: v4f32) -> v4i32 {6729pub fn lsx_vfcmp_sle_s(a: v4f32, b: v4f32) -> v4i32 {
6730 __lsx_vfcmp_sle_s(a, b)6730 unsafe { __lsx_vfcmp_sle_s(a, b) }
6731}6731}
67326732
6733#[inline]6733#[inline]
6734#[target_feature(enable = "lsx")]6734#[target_feature(enable = "lsx")]
6735#[unstable(feature = "stdarch_loongarch", issue = "117427")]6735#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6736pub unsafe fn lsx_vfcmp_slt_d(a: v2f64, b: v2f64) -> v2i64 {6736pub fn lsx_vfcmp_slt_d(a: v2f64, b: v2f64) -> v2i64 {
6737 __lsx_vfcmp_slt_d(a, b)6737 unsafe { __lsx_vfcmp_slt_d(a, b) }
6738}6738}
67396739
6740#[inline]6740#[inline]
6741#[target_feature(enable = "lsx")]6741#[target_feature(enable = "lsx")]
6742#[unstable(feature = "stdarch_loongarch", issue = "117427")]6742#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6743pub unsafe fn lsx_vfcmp_slt_s(a: v4f32, b: v4f32) -> v4i32 {6743pub fn lsx_vfcmp_slt_s(a: v4f32, b: v4f32) -> v4i32 {
6744 __lsx_vfcmp_slt_s(a, b)6744 unsafe { __lsx_vfcmp_slt_s(a, b) }
6745}6745}
67466746
6747#[inline]6747#[inline]
6748#[target_feature(enable = "lsx")]6748#[target_feature(enable = "lsx")]
6749#[unstable(feature = "stdarch_loongarch", issue = "117427")]6749#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6750pub unsafe fn lsx_vfcmp_sne_d(a: v2f64, b: v2f64) -> v2i64 {6750pub fn lsx_vfcmp_sne_d(a: v2f64, b: v2f64) -> v2i64 {
6751 __lsx_vfcmp_sne_d(a, b)6751 unsafe { __lsx_vfcmp_sne_d(a, b) }
6752}6752}
67536753
6754#[inline]6754#[inline]
6755#[target_feature(enable = "lsx")]6755#[target_feature(enable = "lsx")]
6756#[unstable(feature = "stdarch_loongarch", issue = "117427")]6756#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6757pub unsafe fn lsx_vfcmp_sne_s(a: v4f32, b: v4f32) -> v4i32 {6757pub fn lsx_vfcmp_sne_s(a: v4f32, b: v4f32) -> v4i32 {
6758 __lsx_vfcmp_sne_s(a, b)6758 unsafe { __lsx_vfcmp_sne_s(a, b) }
6759}6759}
67606760
6761#[inline]6761#[inline]
6762#[target_feature(enable = "lsx")]6762#[target_feature(enable = "lsx")]
6763#[unstable(feature = "stdarch_loongarch", issue = "117427")]6763#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6764pub unsafe fn lsx_vfcmp_sor_d(a: v2f64, b: v2f64) -> v2i64 {6764pub fn lsx_vfcmp_sor_d(a: v2f64, b: v2f64) -> v2i64 {
6765 __lsx_vfcmp_sor_d(a, b)6765 unsafe { __lsx_vfcmp_sor_d(a, b) }
6766}6766}
67676767
6768#[inline]6768#[inline]
6769#[target_feature(enable = "lsx")]6769#[target_feature(enable = "lsx")]
6770#[unstable(feature = "stdarch_loongarch", issue = "117427")]6770#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6771pub unsafe fn lsx_vfcmp_sor_s(a: v4f32, b: v4f32) -> v4i32 {6771pub fn lsx_vfcmp_sor_s(a: v4f32, b: v4f32) -> v4i32 {
6772 __lsx_vfcmp_sor_s(a, b)6772 unsafe { __lsx_vfcmp_sor_s(a, b) }
6773}6773}
67746774
6775#[inline]6775#[inline]
6776#[target_feature(enable = "lsx")]6776#[target_feature(enable = "lsx")]
6777#[unstable(feature = "stdarch_loongarch", issue = "117427")]6777#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6778pub unsafe fn lsx_vfcmp_sueq_d(a: v2f64, b: v2f64) -> v2i64 {6778pub fn lsx_vfcmp_sueq_d(a: v2f64, b: v2f64) -> v2i64 {
6779 __lsx_vfcmp_sueq_d(a, b)6779 unsafe { __lsx_vfcmp_sueq_d(a, b) }
6780}6780}
67816781
6782#[inline]6782#[inline]
6783#[target_feature(enable = "lsx")]6783#[target_feature(enable = "lsx")]
6784#[unstable(feature = "stdarch_loongarch", issue = "117427")]6784#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6785pub unsafe fn lsx_vfcmp_sueq_s(a: v4f32, b: v4f32) -> v4i32 {6785pub fn lsx_vfcmp_sueq_s(a: v4f32, b: v4f32) -> v4i32 {
6786 __lsx_vfcmp_sueq_s(a, b)6786 unsafe { __lsx_vfcmp_sueq_s(a, b) }
6787}6787}
67886788
6789#[inline]6789#[inline]
6790#[target_feature(enable = "lsx")]6790#[target_feature(enable = "lsx")]
6791#[unstable(feature = "stdarch_loongarch", issue = "117427")]6791#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6792pub unsafe fn lsx_vfcmp_sule_d(a: v2f64, b: v2f64) -> v2i64 {6792pub fn lsx_vfcmp_sule_d(a: v2f64, b: v2f64) -> v2i64 {
6793 __lsx_vfcmp_sule_d(a, b)6793 unsafe { __lsx_vfcmp_sule_d(a, b) }
6794}6794}
67956795
6796#[inline]6796#[inline]
6797#[target_feature(enable = "lsx")]6797#[target_feature(enable = "lsx")]
6798#[unstable(feature = "stdarch_loongarch", issue = "117427")]6798#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6799pub unsafe fn lsx_vfcmp_sule_s(a: v4f32, b: v4f32) -> v4i32 {6799pub fn lsx_vfcmp_sule_s(a: v4f32, b: v4f32) -> v4i32 {
6800 __lsx_vfcmp_sule_s(a, b)6800 unsafe { __lsx_vfcmp_sule_s(a, b) }
6801}6801}
68026802
6803#[inline]6803#[inline]
6804#[target_feature(enable = "lsx")]6804#[target_feature(enable = "lsx")]
6805#[unstable(feature = "stdarch_loongarch", issue = "117427")]6805#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6806pub unsafe fn lsx_vfcmp_sult_d(a: v2f64, b: v2f64) -> v2i64 {6806pub fn lsx_vfcmp_sult_d(a: v2f64, b: v2f64) -> v2i64 {
6807 __lsx_vfcmp_sult_d(a, b)6807 unsafe { __lsx_vfcmp_sult_d(a, b) }
6808}6808}
68096809
6810#[inline]6810#[inline]
6811#[target_feature(enable = "lsx")]6811#[target_feature(enable = "lsx")]
6812#[unstable(feature = "stdarch_loongarch", issue = "117427")]6812#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6813pub unsafe fn lsx_vfcmp_sult_s(a: v4f32, b: v4f32) -> v4i32 {6813pub fn lsx_vfcmp_sult_s(a: v4f32, b: v4f32) -> v4i32 {
6814 __lsx_vfcmp_sult_s(a, b)6814 unsafe { __lsx_vfcmp_sult_s(a, b) }
6815}6815}
68166816
6817#[inline]6817#[inline]
6818#[target_feature(enable = "lsx")]6818#[target_feature(enable = "lsx")]
6819#[unstable(feature = "stdarch_loongarch", issue = "117427")]6819#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6820pub unsafe fn lsx_vfcmp_sun_d(a: v2f64, b: v2f64) -> v2i64 {6820pub fn lsx_vfcmp_sun_d(a: v2f64, b: v2f64) -> v2i64 {
6821 __lsx_vfcmp_sun_d(a, b)6821 unsafe { __lsx_vfcmp_sun_d(a, b) }
6822}6822}
68236823
6824#[inline]6824#[inline]
6825#[target_feature(enable = "lsx")]6825#[target_feature(enable = "lsx")]
6826#[unstable(feature = "stdarch_loongarch", issue = "117427")]6826#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6827pub unsafe fn lsx_vfcmp_sune_d(a: v2f64, b: v2f64) -> v2i64 {6827pub fn lsx_vfcmp_sune_d(a: v2f64, b: v2f64) -> v2i64 {
6828 __lsx_vfcmp_sune_d(a, b)6828 unsafe { __lsx_vfcmp_sune_d(a, b) }
6829}6829}
68306830
6831#[inline]6831#[inline]
6832#[target_feature(enable = "lsx")]6832#[target_feature(enable = "lsx")]
6833#[unstable(feature = "stdarch_loongarch", issue = "117427")]6833#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6834pub unsafe fn lsx_vfcmp_sune_s(a: v4f32, b: v4f32) -> v4i32 {6834pub fn lsx_vfcmp_sune_s(a: v4f32, b: v4f32) -> v4i32 {
6835 __lsx_vfcmp_sune_s(a, b)6835 unsafe { __lsx_vfcmp_sune_s(a, b) }
6836}6836}
68376837
6838#[inline]6838#[inline]
6839#[target_feature(enable = "lsx")]6839#[target_feature(enable = "lsx")]
6840#[unstable(feature = "stdarch_loongarch", issue = "117427")]6840#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6841pub unsafe fn lsx_vfcmp_sun_s(a: v4f32, b: v4f32) -> v4i32 {6841pub fn lsx_vfcmp_sun_s(a: v4f32, b: v4f32) -> v4i32 {
6842 __lsx_vfcmp_sun_s(a, b)6842 unsafe { __lsx_vfcmp_sun_s(a, b) }
6843}6843}
68446844
6845#[inline]6845#[inline]
6846#[target_feature(enable = "lsx")]6846#[target_feature(enable = "lsx")]
6847#[rustc_legacy_const_generics(0)]6847#[rustc_legacy_const_generics(0)]
6848#[unstable(feature = "stdarch_loongarch", issue = "117427")]6848#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6849pub unsafe fn lsx_vrepli_b<const IMM_S10: i32>() -> v16i8 {6849pub fn lsx_vrepli_b<const IMM_S10: i32>() -> v16i8 {
6850 static_assert_simm_bits!(IMM_S10, 10);6850 static_assert_simm_bits!(IMM_S10, 10);
6851 __lsx_vrepli_b(IMM_S10)6851 unsafe { __lsx_vrepli_b(IMM_S10) }
6852}6852}
68536853
6854#[inline]6854#[inline]
6855#[target_feature(enable = "lsx")]6855#[target_feature(enable = "lsx")]
6856#[rustc_legacy_const_generics(0)]6856#[rustc_legacy_const_generics(0)]
6857#[unstable(feature = "stdarch_loongarch", issue = "117427")]6857#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6858pub unsafe fn lsx_vrepli_d<const IMM_S10: i32>() -> v2i64 {6858pub fn lsx_vrepli_d<const IMM_S10: i32>() -> v2i64 {
6859 static_assert_simm_bits!(IMM_S10, 10);6859 static_assert_simm_bits!(IMM_S10, 10);
6860 __lsx_vrepli_d(IMM_S10)6860 unsafe { __lsx_vrepli_d(IMM_S10) }
6861}6861}
68626862
6863#[inline]6863#[inline]
6864#[target_feature(enable = "lsx")]6864#[target_feature(enable = "lsx")]
6865#[rustc_legacy_const_generics(0)]6865#[rustc_legacy_const_generics(0)]
6866#[unstable(feature = "stdarch_loongarch", issue = "117427")]6866#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6867pub unsafe fn lsx_vrepli_h<const IMM_S10: i32>() -> v8i16 {6867pub fn lsx_vrepli_h<const IMM_S10: i32>() -> v8i16 {
6868 static_assert_simm_bits!(IMM_S10, 10);6868 static_assert_simm_bits!(IMM_S10, 10);
6869 __lsx_vrepli_h(IMM_S10)6869 unsafe { __lsx_vrepli_h(IMM_S10) }
6870}6870}
68716871
6872#[inline]6872#[inline]
6873#[target_feature(enable = "lsx")]6873#[target_feature(enable = "lsx")]
6874#[rustc_legacy_const_generics(0)]6874#[rustc_legacy_const_generics(0)]
6875#[unstable(feature = "stdarch_loongarch", issue = "117427")]6875#[unstable(feature = "stdarch_loongarch", issue = "117427")]
6876pub unsafe fn lsx_vrepli_w<const IMM_S10: i32>() -> v4i32 {6876pub fn lsx_vrepli_w<const IMM_S10: i32>() -> v4i32 {
6877 static_assert_simm_bits!(IMM_S10, 10);6877 static_assert_simm_bits!(IMM_S10, 10);
6878 __lsx_vrepli_w(IMM_S10)6878 unsafe { __lsx_vrepli_w(IMM_S10) }
6879}6879}
library/stdarch/crates/core_arch/src/loongarch64/mod.rs+8-246
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1//! `LoongArch` intrinsics1//! `LoongArch64` intrinsics
22
3mod lasx;3mod lasx;
4mod lsx;4mod lsx;
...@@ -13,89 +13,30 @@ use crate::arch::asm;...@@ -13,89 +13,30 @@ use crate::arch::asm;
13/// Reads the 64-bit stable counter value and the counter ID13/// Reads the 64-bit stable counter value and the counter ID
14#[inline]14#[inline]
15#[unstable(feature = "stdarch_loongarch", issue = "117427")]15#[unstable(feature = "stdarch_loongarch", issue = "117427")]
16pub unsafe fn rdtime_d() -> (i64, isize) {16pub fn rdtime_d() -> (i64, isize) {
17 let val: i64;17 let (val, tid): (i64, isize);
18 let tid: isize;18 unsafe { asm!("rdtime.d {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack)) };
19 asm!("rdtime.d {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack));
20 (val, tid)
21}
22
23/// Reads the lower 32-bit stable counter value and the counter ID
24#[inline]
25#[unstable(feature = "stdarch_loongarch", issue = "117427")]
26pub unsafe fn rdtimel_w() -> (i32, isize) {
27 let val: i32;
28 let tid: isize;
29 asm!("rdtimel.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack));
30 (val, tid)
31}
32
33/// Reads the upper 32-bit stable counter value and the counter ID
34#[inline]
35#[unstable(feature = "stdarch_loongarch", issue = "117427")]
36pub unsafe fn rdtimeh_w() -> (i32, isize) {
37 let val: i32;
38 let tid: isize;
39 asm!("rdtimeh.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack));
40 (val, tid)19 (val, tid)
41}20}
4221
43#[allow(improper_ctypes)]22#[allow(improper_ctypes)]
44unsafe extern "unadjusted" {23unsafe extern "unadjusted" {
45 #[link_name = "llvm.loongarch.crc.w.b.w"]
46 fn __crc_w_b_w(a: i32, b: i32) -> i32;
47 #[link_name = "llvm.loongarch.crc.w.h.w"]
48 fn __crc_w_h_w(a: i32, b: i32) -> i32;
49 #[link_name = "llvm.loongarch.crc.w.w.w"]
50 fn __crc_w_w_w(a: i32, b: i32) -> i32;
51 #[link_name = "llvm.loongarch.crc.w.d.w"]24 #[link_name = "llvm.loongarch.crc.w.d.w"]
52 fn __crc_w_d_w(a: i64, b: i32) -> i32;25 fn __crc_w_d_w(a: i64, b: i32) -> i32;
53 #[link_name = "llvm.loongarch.crcc.w.b.w"]
54 fn __crcc_w_b_w(a: i32, b: i32) -> i32;
55 #[link_name = "llvm.loongarch.crcc.w.h.w"]
56 fn __crcc_w_h_w(a: i32, b: i32) -> i32;
57 #[link_name = "llvm.loongarch.crcc.w.w.w"]
58 fn __crcc_w_w_w(a: i32, b: i32) -> i32;
59 #[link_name = "llvm.loongarch.crcc.w.d.w"]26 #[link_name = "llvm.loongarch.crcc.w.d.w"]
60 fn __crcc_w_d_w(a: i64, b: i32) -> i32;27 fn __crcc_w_d_w(a: i64, b: i32) -> i32;
61 #[link_name = "llvm.loongarch.cacop.d"]28 #[link_name = "llvm.loongarch.cacop.d"]
62 fn __cacop(a: i64, b: i64, c: i64);29 fn __cacop(a: i64, b: i64, c: i64);
63 #[link_name = "llvm.loongarch.dbar"]
64 fn __dbar(a: i32);
65 #[link_name = "llvm.loongarch.ibar"]
66 fn __ibar(a: i32);
67 #[link_name = "llvm.loongarch.movgr2fcsr"]
68 fn __movgr2fcsr(a: i32, b: i32);
69 #[link_name = "llvm.loongarch.movfcsr2gr"]
70 fn __movfcsr2gr(a: i32) -> i32;
71 #[link_name = "llvm.loongarch.csrrd.d"]30 #[link_name = "llvm.loongarch.csrrd.d"]
72 fn __csrrd(a: i32) -> i64;31 fn __csrrd(a: i32) -> i64;
73 #[link_name = "llvm.loongarch.csrwr.d"]32 #[link_name = "llvm.loongarch.csrwr.d"]
74 fn __csrwr(a: i64, b: i32) -> i64;33 fn __csrwr(a: i64, b: i32) -> i64;
75 #[link_name = "llvm.loongarch.csrxchg.d"]34 #[link_name = "llvm.loongarch.csrxchg.d"]
76 fn __csrxchg(a: i64, b: i64, c: i32) -> i64;35 fn __csrxchg(a: i64, b: i64, c: i32) -> i64;
77 #[link_name = "llvm.loongarch.iocsrrd.b"]
78 fn __iocsrrd_b(a: i32) -> i32;
79 #[link_name = "llvm.loongarch.iocsrrd.h"]
80 fn __iocsrrd_h(a: i32) -> i32;
81 #[link_name = "llvm.loongarch.iocsrrd.w"]
82 fn __iocsrrd_w(a: i32) -> i32;
83 #[link_name = "llvm.loongarch.iocsrrd.d"]36 #[link_name = "llvm.loongarch.iocsrrd.d"]
84 fn __iocsrrd_d(a: i32) -> i64;37 fn __iocsrrd_d(a: i32) -> i64;
85 #[link_name = "llvm.loongarch.iocsrwr.b"]
86 fn __iocsrwr_b(a: i32, b: i32);
87 #[link_name = "llvm.loongarch.iocsrwr.h"]
88 fn __iocsrwr_h(a: i32, b: i32);
89 #[link_name = "llvm.loongarch.iocsrwr.w"]
90 fn __iocsrwr_w(a: i32, b: i32);
91 #[link_name = "llvm.loongarch.iocsrwr.d"]38 #[link_name = "llvm.loongarch.iocsrwr.d"]
92 fn __iocsrwr_d(a: i64, b: i32);39 fn __iocsrwr_d(a: i64, b: i32);
93 #[link_name = "llvm.loongarch.break"]
94 fn __break(a: i32);
95 #[link_name = "llvm.loongarch.cpucfg"]
96 fn __cpucfg(a: i32) -> i32;
97 #[link_name = "llvm.loongarch.syscall"]
98 fn __syscall(a: i32);
99 #[link_name = "llvm.loongarch.asrtle.d"]40 #[link_name = "llvm.loongarch.asrtle.d"]
100 fn __asrtle(a: i64, b: i64);41 fn __asrtle(a: i64, b: i64);
101 #[link_name = "llvm.loongarch.asrtgt.d"]42 #[link_name = "llvm.loongarch.asrtgt.d"]
...@@ -104,70 +45,20 @@ unsafe extern "unadjusted" {...@@ -104,70 +45,20 @@ unsafe extern "unadjusted" {
104 fn __lddir(a: i64, b: i64) -> i64;45 fn __lddir(a: i64, b: i64) -> i64;
105 #[link_name = "llvm.loongarch.ldpte.d"]46 #[link_name = "llvm.loongarch.ldpte.d"]
106 fn __ldpte(a: i64, b: i64);47 fn __ldpte(a: i64, b: i64);
107 #[link_name = "llvm.loongarch.frecipe.s"]
108 fn __frecipe_s(a: f32) -> f32;
109 #[link_name = "llvm.loongarch.frecipe.d"]
110 fn __frecipe_d(a: f64) -> f64;
111 #[link_name = "llvm.loongarch.frsqrte.s"]
112 fn __frsqrte_s(a: f32) -> f32;
113 #[link_name = "llvm.loongarch.frsqrte.d"]
114 fn __frsqrte_d(a: f64) -> f64;
115}48}
11649
117/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)50/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
118#[inline]51#[inline]
119#[unstable(feature = "stdarch_loongarch", issue = "117427")]52#[unstable(feature = "stdarch_loongarch", issue = "117427")]
120pub unsafe fn crc_w_b_w(a: i32, b: i32) -> i32 {53pub fn crc_w_d_w(a: i64, b: i32) -> i32 {
121 __crc_w_b_w(a, b)54 unsafe { __crc_w_d_w(a, b) }
122}
123
124/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
125#[inline]
126#[unstable(feature = "stdarch_loongarch", issue = "117427")]
127pub unsafe fn crc_w_h_w(a: i32, b: i32) -> i32 {
128 __crc_w_h_w(a, b)
129}
130
131/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
132#[inline]
133#[unstable(feature = "stdarch_loongarch", issue = "117427")]
134pub unsafe fn crc_w_w_w(a: i32, b: i32) -> i32 {
135 __crc_w_w_w(a, b)
136}
137
138/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
139#[inline]
140#[unstable(feature = "stdarch_loongarch", issue = "117427")]
141pub unsafe fn crc_w_d_w(a: i64, b: i32) -> i32 {
142 __crc_w_d_w(a, b)
143}
144
145/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
146#[inline]
147#[unstable(feature = "stdarch_loongarch", issue = "117427")]
148pub unsafe fn crcc_w_b_w(a: i32, b: i32) -> i32 {
149 __crcc_w_b_w(a, b)
150}
151
152/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
153#[inline]
154#[unstable(feature = "stdarch_loongarch", issue = "117427")]
155pub unsafe fn crcc_w_h_w(a: i32, b: i32) -> i32 {
156 __crcc_w_h_w(a, b)
157}55}
15856
159/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)57/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
160#[inline]58#[inline]
161#[unstable(feature = "stdarch_loongarch", issue = "117427")]59#[unstable(feature = "stdarch_loongarch", issue = "117427")]
162pub unsafe fn crcc_w_w_w(a: i32, b: i32) -> i32 {60pub fn crcc_w_d_w(a: i64, b: i32) -> i32 {
163 __crcc_w_w_w(a, b)61 unsafe { __crcc_w_d_w(a, b) }
164}
165
166/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
167#[inline]
168#[unstable(feature = "stdarch_loongarch", issue = "117427")]
169pub unsafe fn crcc_w_d_w(a: i64, b: i32) -> i32 {
170 __crcc_w_d_w(a, b)
171}62}
17263
173/// Generates the cache operation instruction64/// Generates the cache operation instruction
...@@ -178,38 +69,6 @@ pub unsafe fn cacop<const IMM12: i64>(a: i64, b: i64) {...@@ -178,38 +69,6 @@ pub unsafe fn cacop<const IMM12: i64>(a: i64, b: i64) {
178 __cacop(a, b, IMM12);69 __cacop(a, b, IMM12);
179}70}
18071
181/// Generates the memory barrier instruction
182#[inline]
183#[unstable(feature = "stdarch_loongarch", issue = "117427")]
184pub unsafe fn dbar<const IMM15: i32>() {
185 static_assert_uimm_bits!(IMM15, 15);
186 __dbar(IMM15);
187}
188
189/// Generates the instruction-fetch barrier instruction
190#[inline]
191#[unstable(feature = "stdarch_loongarch", issue = "117427")]
192pub unsafe fn ibar<const IMM15: i32>() {
193 static_assert_uimm_bits!(IMM15, 15);
194 __ibar(IMM15);
195}
196
197/// Moves data from a GPR to the FCSR
198#[inline]
199#[unstable(feature = "stdarch_loongarch", issue = "117427")]
200pub unsafe fn movgr2fcsr<const IMM5: i32>(a: i32) {
201 static_assert_uimm_bits!(IMM5, 5);
202 __movgr2fcsr(IMM5, a);
203}
204
205/// Moves data from a FCSR to the GPR
206#[inline]
207#[unstable(feature = "stdarch_loongarch", issue = "117427")]
208pub unsafe fn movfcsr2gr<const IMM5: i32>() -> i32 {
209 static_assert_uimm_bits!(IMM5, 5);
210 __movfcsr2gr(IMM5)
211}
212
213/// Reads the CSR72/// Reads the CSR
214#[inline]73#[inline]
215#[unstable(feature = "stdarch_loongarch", issue = "117427")]74#[unstable(feature = "stdarch_loongarch", issue = "117427")]
...@@ -234,27 +93,6 @@ pub unsafe fn csrxchg<const IMM14: i32>(a: i64, b: i64) -> i64 {...@@ -234,27 +93,6 @@ pub unsafe fn csrxchg<const IMM14: i32>(a: i64, b: i64) -> i64 {
234 __csrxchg(a, b, IMM14)93 __csrxchg(a, b, IMM14)
235}94}
23695
237/// Reads the 8-bit IO-CSR
238#[inline]
239#[unstable(feature = "stdarch_loongarch", issue = "117427")]
240pub unsafe fn iocsrrd_b(a: i32) -> i32 {
241 __iocsrrd_b(a)
242}
243
244/// Reads the 16-bit IO-CSR
245#[inline]
246#[unstable(feature = "stdarch_loongarch", issue = "117427")]
247pub unsafe fn iocsrrd_h(a: i32) -> i32 {
248 __iocsrrd_h(a)
249}
250
251/// Reads the 32-bit IO-CSR
252#[inline]
253#[unstable(feature = "stdarch_loongarch", issue = "117427")]
254pub unsafe fn iocsrrd_w(a: i32) -> i32 {
255 __iocsrrd_w(a)
256}
257
258/// Reads the 64-bit IO-CSR96/// Reads the 64-bit IO-CSR
259#[inline]97#[inline]
260#[unstable(feature = "stdarch_loongarch", issue = "117427")]98#[unstable(feature = "stdarch_loongarch", issue = "117427")]
...@@ -262,27 +100,6 @@ pub unsafe fn iocsrrd_d(a: i32) -> i64 {...@@ -262,27 +100,6 @@ pub unsafe fn iocsrrd_d(a: i32) -> i64 {
262 __iocsrrd_d(a)100 __iocsrrd_d(a)
263}101}
264102
265/// Writes the 8-bit IO-CSR
266#[inline]
267#[unstable(feature = "stdarch_loongarch", issue = "117427")]
268pub unsafe fn iocsrwr_b(a: i32, b: i32) {
269 __iocsrwr_b(a, b)
270}
271
272/// Writes the 16-bit IO-CSR
273#[inline]
274#[unstable(feature = "stdarch_loongarch", issue = "117427")]
275pub unsafe fn iocsrwr_h(a: i32, b: i32) {
276 __iocsrwr_h(a, b)
277}
278
279/// Writes the 32-bit IO-CSR
280#[inline]
281#[unstable(feature = "stdarch_loongarch", issue = "117427")]
282pub unsafe fn iocsrwr_w(a: i32, b: i32) {
283 __iocsrwr_w(a, b)
284}
285
286/// Writes the 64-bit IO-CSR103/// Writes the 64-bit IO-CSR
287#[inline]104#[inline]
288#[unstable(feature = "stdarch_loongarch", issue = "117427")]105#[unstable(feature = "stdarch_loongarch", issue = "117427")]
...@@ -290,29 +107,6 @@ pub unsafe fn iocsrwr_d(a: i64, b: i32) {...@@ -290,29 +107,6 @@ pub unsafe fn iocsrwr_d(a: i64, b: i32) {
290 __iocsrwr_d(a, b)107 __iocsrwr_d(a, b)
291}108}
292109
293/// Generates the breakpoint instruction
294#[inline]
295#[unstable(feature = "stdarch_loongarch", issue = "117427")]
296pub unsafe fn brk<const IMM15: i32>() {
297 static_assert_uimm_bits!(IMM15, 15);
298 __break(IMM15);
299}
300
301/// Reads the CPU configuration register
302#[inline]
303#[unstable(feature = "stdarch_loongarch", issue = "117427")]
304pub unsafe fn cpucfg(a: i32) -> i32 {
305 __cpucfg(a)
306}
307
308/// Generates the syscall instruction
309#[inline]
310#[unstable(feature = "stdarch_loongarch", issue = "117427")]
311pub unsafe fn syscall<const IMM15: i32>() {
312 static_assert_uimm_bits!(IMM15, 15);
313 __syscall(IMM15);
314}
315
316/// Generates the less-than-or-equal asseration instruction110/// Generates the less-than-or-equal asseration instruction
317#[inline]111#[inline]
318#[unstable(feature = "stdarch_loongarch", issue = "117427")]112#[unstable(feature = "stdarch_loongarch", issue = "117427")]
...@@ -342,35 +136,3 @@ pub unsafe fn lddir<const B: i64>(a: i64) -> i64 {...@@ -342,35 +136,3 @@ pub unsafe fn lddir<const B: i64>(a: i64) -> i64 {
342pub unsafe fn ldpte<const B: i64>(a: i64) {136pub unsafe fn ldpte<const B: i64>(a: i64) {
343 __ldpte(a, B)137 __ldpte(a, B)
344}138}
345
346/// Calculate the approximate single-precision result of 1.0 divided
347#[inline]
348#[target_feature(enable = "frecipe")]
349#[unstable(feature = "stdarch_loongarch", issue = "117427")]
350pub unsafe fn frecipe_s(a: f32) -> f32 {
351 __frecipe_s(a)
352}
353
354/// Calculate the approximate double-precision result of 1.0 divided
355#[inline]
356#[target_feature(enable = "frecipe")]
357#[unstable(feature = "stdarch_loongarch", issue = "117427")]
358pub unsafe fn frecipe_d(a: f64) -> f64 {
359 __frecipe_d(a)
360}
361
362/// Calculate the approximate single-precision result of dividing 1.0 by the square root
363#[inline]
364#[target_feature(enable = "frecipe")]
365#[unstable(feature = "stdarch_loongarch", issue = "117427")]
366pub unsafe fn frsqrte_s(a: f32) -> f32 {
367 __frsqrte_s(a)
368}
369
370/// Calculate the approximate double-precision result of dividing 1.0 by the square root
371#[inline]
372#[target_feature(enable = "frecipe")]
373#[unstable(feature = "stdarch_loongarch", issue = "117427")]
374pub unsafe fn frsqrte_d(a: f64) -> f64 {
375 __frsqrte_d(a)
376}
library/stdarch/crates/core_arch/src/loongarch_shared/mod.rs created+242
...@@ -0,0 +1,242 @@
1//! `Shared LoongArch` intrinsics
2
3use crate::arch::asm;
4
5/// Reads the lower 32-bit stable counter value and the counter ID
6#[inline]
7#[unstable(feature = "stdarch_loongarch", issue = "117427")]
8pub fn rdtimel_w() -> (i32, isize) {
9 let (val, tid): (i32, isize);
10 unsafe { asm!("rdtimel.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack)) };
11 (val, tid)
12}
13
14/// Reads the upper 32-bit stable counter value and the counter ID
15#[inline]
16#[unstable(feature = "stdarch_loongarch", issue = "117427")]
17pub fn rdtimeh_w() -> (i32, isize) {
18 let (val, tid): (i32, isize);
19 unsafe { asm!("rdtimeh.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack)) };
20 (val, tid)
21}
22
23#[allow(improper_ctypes)]
24unsafe extern "unadjusted" {
25 #[link_name = "llvm.loongarch.crc.w.b.w"]
26 fn __crc_w_b_w(a: i32, b: i32) -> i32;
27 #[link_name = "llvm.loongarch.crc.w.h.w"]
28 fn __crc_w_h_w(a: i32, b: i32) -> i32;
29 #[link_name = "llvm.loongarch.crc.w.w.w"]
30 fn __crc_w_w_w(a: i32, b: i32) -> i32;
31 #[link_name = "llvm.loongarch.crcc.w.b.w"]
32 fn __crcc_w_b_w(a: i32, b: i32) -> i32;
33 #[link_name = "llvm.loongarch.crcc.w.h.w"]
34 fn __crcc_w_h_w(a: i32, b: i32) -> i32;
35 #[link_name = "llvm.loongarch.crcc.w.w.w"]
36 fn __crcc_w_w_w(a: i32, b: i32) -> i32;
37 #[link_name = "llvm.loongarch.dbar"]
38 fn __dbar(a: i32);
39 #[link_name = "llvm.loongarch.ibar"]
40 fn __ibar(a: i32);
41 #[link_name = "llvm.loongarch.movgr2fcsr"]
42 fn __movgr2fcsr(a: i32, b: i32);
43 #[link_name = "llvm.loongarch.movfcsr2gr"]
44 fn __movfcsr2gr(a: i32) -> i32;
45 #[link_name = "llvm.loongarch.iocsrrd.b"]
46 fn __iocsrrd_b(a: i32) -> i32;
47 #[link_name = "llvm.loongarch.iocsrrd.h"]
48 fn __iocsrrd_h(a: i32) -> i32;
49 #[link_name = "llvm.loongarch.iocsrrd.w"]
50 fn __iocsrrd_w(a: i32) -> i32;
51 #[link_name = "llvm.loongarch.iocsrwr.b"]
52 fn __iocsrwr_b(a: i32, b: i32);
53 #[link_name = "llvm.loongarch.iocsrwr.h"]
54 fn __iocsrwr_h(a: i32, b: i32);
55 #[link_name = "llvm.loongarch.iocsrwr.w"]
56 fn __iocsrwr_w(a: i32, b: i32);
57 #[link_name = "llvm.loongarch.break"]
58 fn __break(a: i32);
59 #[link_name = "llvm.loongarch.cpucfg"]
60 fn __cpucfg(a: i32) -> i32;
61 #[link_name = "llvm.loongarch.syscall"]
62 fn __syscall(a: i32);
63 #[link_name = "llvm.loongarch.frecipe.s"]
64 fn __frecipe_s(a: f32) -> f32;
65 #[link_name = "llvm.loongarch.frecipe.d"]
66 fn __frecipe_d(a: f64) -> f64;
67 #[link_name = "llvm.loongarch.frsqrte.s"]
68 fn __frsqrte_s(a: f32) -> f32;
69 #[link_name = "llvm.loongarch.frsqrte.d"]
70 fn __frsqrte_d(a: f64) -> f64;
71}
72
73/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
74#[inline]
75#[unstable(feature = "stdarch_loongarch", issue = "117427")]
76pub fn crc_w_b_w(a: i32, b: i32) -> i32 {
77 unsafe { __crc_w_b_w(a, b) }
78}
79
80/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
81#[inline]
82#[unstable(feature = "stdarch_loongarch", issue = "117427")]
83pub fn crc_w_h_w(a: i32, b: i32) -> i32 {
84 unsafe { __crc_w_h_w(a, b) }
85}
86
87/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
88#[inline]
89#[unstable(feature = "stdarch_loongarch", issue = "117427")]
90pub fn crc_w_w_w(a: i32, b: i32) -> i32 {
91 unsafe { __crc_w_w_w(a, b) }
92}
93
94/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
95#[inline]
96#[unstable(feature = "stdarch_loongarch", issue = "117427")]
97pub fn crcc_w_b_w(a: i32, b: i32) -> i32 {
98 unsafe { __crcc_w_b_w(a, b) }
99}
100
101/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
102#[inline]
103#[unstable(feature = "stdarch_loongarch", issue = "117427")]
104pub fn crcc_w_h_w(a: i32, b: i32) -> i32 {
105 unsafe { __crcc_w_h_w(a, b) }
106}
107
108/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
109#[inline]
110#[unstable(feature = "stdarch_loongarch", issue = "117427")]
111pub fn crcc_w_w_w(a: i32, b: i32) -> i32 {
112 unsafe { __crcc_w_w_w(a, b) }
113}
114
115/// Generates the memory barrier instruction
116#[inline]
117#[unstable(feature = "stdarch_loongarch", issue = "117427")]
118pub fn dbar<const IMM15: i32>() {
119 static_assert_uimm_bits!(IMM15, 15);
120 unsafe { __dbar(IMM15) };
121}
122
123/// Generates the instruction-fetch barrier instruction
124#[inline]
125#[unstable(feature = "stdarch_loongarch", issue = "117427")]
126pub fn ibar<const IMM15: i32>() {
127 static_assert_uimm_bits!(IMM15, 15);
128 unsafe { __ibar(IMM15) };
129}
130
131/// Moves data from a GPR to the FCSR
132#[inline]
133#[unstable(feature = "stdarch_loongarch", issue = "117427")]
134pub unsafe fn movgr2fcsr<const IMM5: i32>(a: i32) {
135 static_assert_uimm_bits!(IMM5, 5);
136 __movgr2fcsr(IMM5, a);
137}
138
139/// Moves data from a FCSR to the GPR
140#[inline]
141#[unstable(feature = "stdarch_loongarch", issue = "117427")]
142pub fn movfcsr2gr<const IMM5: i32>() -> i32 {
143 static_assert_uimm_bits!(IMM5, 5);
144 unsafe { __movfcsr2gr(IMM5) }
145}
146
147/// Reads the 8-bit IO-CSR
148#[inline]
149#[unstable(feature = "stdarch_loongarch", issue = "117427")]
150pub unsafe fn iocsrrd_b(a: i32) -> i32 {
151 __iocsrrd_b(a)
152}
153
154/// Reads the 16-bit IO-CSR
155#[inline]
156#[unstable(feature = "stdarch_loongarch", issue = "117427")]
157pub unsafe fn iocsrrd_h(a: i32) -> i32 {
158 __iocsrrd_h(a)
159}
160
161/// Reads the 32-bit IO-CSR
162#[inline]
163#[unstable(feature = "stdarch_loongarch", issue = "117427")]
164pub unsafe fn iocsrrd_w(a: i32) -> i32 {
165 __iocsrrd_w(a)
166}
167
168/// Writes the 8-bit IO-CSR
169#[inline]
170#[unstable(feature = "stdarch_loongarch", issue = "117427")]
171pub unsafe fn iocsrwr_b(a: i32, b: i32) {
172 __iocsrwr_b(a, b)
173}
174
175/// Writes the 16-bit IO-CSR
176#[inline]
177#[unstable(feature = "stdarch_loongarch", issue = "117427")]
178pub unsafe fn iocsrwr_h(a: i32, b: i32) {
179 __iocsrwr_h(a, b)
180}
181
182/// Writes the 32-bit IO-CSR
183#[inline]
184#[unstable(feature = "stdarch_loongarch", issue = "117427")]
185pub unsafe fn iocsrwr_w(a: i32, b: i32) {
186 __iocsrwr_w(a, b)
187}
188
189/// Generates the breakpoint instruction
190#[inline]
191#[unstable(feature = "stdarch_loongarch", issue = "117427")]
192pub unsafe fn brk<const IMM15: i32>() {
193 static_assert_uimm_bits!(IMM15, 15);
194 __break(IMM15);
195}
196
197/// Reads the CPU configuration register
198#[inline]
199#[unstable(feature = "stdarch_loongarch", issue = "117427")]
200pub fn cpucfg(a: i32) -> i32 {
201 unsafe { __cpucfg(a) }
202}
203
204/// Generates the syscall instruction
205#[inline]
206#[unstable(feature = "stdarch_loongarch", issue = "117427")]
207pub unsafe fn syscall<const IMM15: i32>() {
208 static_assert_uimm_bits!(IMM15, 15);
209 __syscall(IMM15);
210}
211
212/// Calculate the approximate single-precision result of 1.0 divided
213#[inline]
214#[target_feature(enable = "frecipe")]
215#[unstable(feature = "stdarch_loongarch", issue = "117427")]
216pub fn frecipe_s(a: f32) -> f32 {
217 unsafe { __frecipe_s(a) }
218}
219
220/// Calculate the approximate double-precision result of 1.0 divided
221#[inline]
222#[target_feature(enable = "frecipe")]
223#[unstable(feature = "stdarch_loongarch", issue = "117427")]
224pub fn frecipe_d(a: f64) -> f64 {
225 unsafe { __frecipe_d(a) }
226}
227
228/// Calculate the approximate single-precision result of dividing 1.0 by the square root
229#[inline]
230#[target_feature(enable = "frecipe")]
231#[unstable(feature = "stdarch_loongarch", issue = "117427")]
232pub fn frsqrte_s(a: f32) -> f32 {
233 unsafe { __frsqrte_s(a) }
234}
235
236/// Calculate the approximate double-precision result of dividing 1.0 by the square root
237#[inline]
238#[target_feature(enable = "frecipe")]
239#[unstable(feature = "stdarch_loongarch", issue = "117427")]
240pub fn frsqrte_d(a: f64) -> f64 {
241 unsafe { __frsqrte_d(a) }
242}
library/stdarch/crates/core_arch/src/mod.rs+20-1
...@@ -16,6 +16,9 @@ mod riscv_shared;...@@ -16,6 +16,9 @@ mod riscv_shared;
16))]16))]
17mod arm_shared;17mod arm_shared;
1818
19#[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64", doc))]
20mod loongarch_shared;
21
19mod simd;22mod simd;
2023
21#[doc = include_str!("core_arch_docs.md")]24#[doc = include_str!("core_arch_docs.md")]
...@@ -271,13 +274,25 @@ pub mod arch {...@@ -271,13 +274,25 @@ pub mod arch {
271 pub use crate::core_arch::nvptx::*;274 pub use crate::core_arch::nvptx::*;
272 }275 }
273276
274 /// Platform-specific intrinsics for the `loongarch` platform.277 /// Platform-specific intrinsics for the `loongarch32` platform.
278 ///
279 /// See the [module documentation](../index.html) for more details.
280 #[cfg(any(target_arch = "loongarch32", doc))]
281 #[doc(cfg(target_arch = "loongarch32"))]
282 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
283 pub mod loongarch32 {
284 pub use crate::core_arch::loongarch_shared::*;
285 pub use crate::core_arch::loongarch32::*;
286 }
287
288 /// Platform-specific intrinsics for the `loongarch64` platform.
275 ///289 ///
276 /// See the [module documentation](../index.html) for more details.290 /// See the [module documentation](../index.html) for more details.
277 #[cfg(any(target_arch = "loongarch64", doc))]291 #[cfg(any(target_arch = "loongarch64", doc))]
278 #[doc(cfg(target_arch = "loongarch64"))]292 #[doc(cfg(target_arch = "loongarch64"))]
279 #[unstable(feature = "stdarch_loongarch", issue = "117427")]293 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
280 pub mod loongarch64 {294 pub mod loongarch64 {
295 pub use crate::core_arch::loongarch_shared::*;
281 pub use crate::core_arch::loongarch64::*;296 pub use crate::core_arch::loongarch64::*;
282 }297 }
283298
...@@ -334,6 +349,10 @@ mod powerpc64;...@@ -334,6 +349,10 @@ mod powerpc64;
334#[doc(cfg(target_arch = "nvptx64"))]349#[doc(cfg(target_arch = "nvptx64"))]
335mod nvptx;350mod nvptx;
336351
352#[cfg(any(target_arch = "loongarch32", doc))]
353#[doc(cfg(target_arch = "loongarch32"))]
354mod loongarch32;
355
337#[cfg(any(target_arch = "loongarch64", doc))]356#[cfg(any(target_arch = "loongarch64", doc))]
338#[doc(cfg(target_arch = "loongarch64"))]357#[doc(cfg(target_arch = "loongarch64"))]
339mod loongarch64;358mod loongarch64;
library/stdarch/crates/core_arch/src/s390x/vector.rs+18-7
...@@ -1181,6 +1181,20 @@ mod sealed {...@@ -1181,6 +1181,20 @@ mod sealed {
11811181
1182 impl_vec_trait! { [VectorOrc vec_orc]+ 2c (orc) }1182 impl_vec_trait! { [VectorOrc vec_orc]+ 2c (orc) }
11831183
1184 // Z vector intrinsic C23 math.h LLVM IR ISO/IEC 60559 operation inexact vfidb parameters
1185 //
1186 // vec_rint rint llvm.rint roundToIntegralExact yes 0, 0
1187 // vec_roundc nearbyint llvm.nearbyint n/a no 4, 0
1188 // vec_floor / vec_roundm floor llvm.floor roundToIntegralTowardNegative no 4, 7
1189 // vec_ceil / vec_roundp ceil llvm.ceil roundToIntegralTowardPositive no 4, 6
1190 // vec_trunc / vec_roundz trunc llvm.trunc roundToIntegralTowardZero no 4, 5
1191 // vec_round roundeven llvm.roundeven roundToIntegralTiesToEven no 4, 4
1192 // n/a round llvm.round roundToIntegralTiesAway no 4, 1
1193
1194 // `simd_round_ties_even` is implemented as `llvm.rint`.
1195 test_impl! { vec_rint_f32 (a: vector_float) -> vector_float [simd_round_ties_even, "vector-enhancements-1" vfisb] }
1196 test_impl! { vec_rint_f64 (a: vector_double) -> vector_double [simd_round_ties_even, vfidb] }
1197
1184 test_impl! { vec_roundc_f32 (a: vector_float) -> vector_float [nearbyint_v4f32, "vector-enhancements-1" vfisb] }1198 test_impl! { vec_roundc_f32 (a: vector_float) -> vector_float [nearbyint_v4f32, "vector-enhancements-1" vfisb] }
1185 test_impl! { vec_roundc_f64 (a: vector_double) -> vector_double [nearbyint_v2f64, vfidb] }1199 test_impl! { vec_roundc_f64 (a: vector_double) -> vector_double [nearbyint_v2f64, vfidb] }
11861200
...@@ -1189,9 +1203,6 @@ mod sealed {...@@ -1189,9 +1203,6 @@ mod sealed {
1189 test_impl! { vec_round_f32 (a: vector_float) -> vector_float [roundeven_v4f32, _] }1203 test_impl! { vec_round_f32 (a: vector_float) -> vector_float [roundeven_v4f32, _] }
1190 test_impl! { vec_round_f64 (a: vector_double) -> vector_double [roundeven_v2f64, _] }1204 test_impl! { vec_round_f64 (a: vector_double) -> vector_double [roundeven_v2f64, _] }
11911205
1192 test_impl! { vec_rint_f32 (a: vector_float) -> vector_float [simd_round_ties_even, "vector-enhancements-1" vfisb] }
1193 test_impl! { vec_rint_f64 (a: vector_double) -> vector_double [simd_round_ties_even, vfidb] }
1194
1195 #[unstable(feature = "stdarch_s390x", issue = "135681")]1206 #[unstable(feature = "stdarch_s390x", issue = "135681")]
1196 pub trait VectorRoundc {1207 pub trait VectorRoundc {
1197 unsafe fn vec_roundc(self) -> Self;1208 unsafe fn vec_roundc(self) -> Self;
...@@ -2254,14 +2265,14 @@ mod sealed {...@@ -2254,14 +2265,14 @@ mod sealed {
22542265
2255 #[inline]2266 #[inline]
2256 #[target_feature(enable = "vector")]2267 #[target_feature(enable = "vector")]
2257 #[cfg_attr(test, assert_instr("vlbb"))]2268 #[cfg_attr(test, assert_instr(vlbb))]
2258 unsafe fn test_vec_load_bndry(ptr: *const i32) -> MaybeUninit<vector_signed_int> {2269 unsafe fn test_vec_load_bndry(ptr: *const i32) -> MaybeUninit<vector_signed_int> {
2259 vector_signed_int::vec_load_bndry::<512>(ptr)2270 vector_signed_int::vec_load_bndry::<512>(ptr)
2260 }2271 }
22612272
2262 #[inline]2273 #[inline]
2263 #[target_feature(enable = "vector")]2274 #[target_feature(enable = "vector")]
2264 #[cfg_attr(test, assert_instr(vst))]2275 #[cfg_attr(test, assert_instr(vstl))]
2265 unsafe fn test_vec_store_len(vector: vector_signed_int, ptr: *mut i32, byte_count: u32) {2276 unsafe fn test_vec_store_len(vector: vector_signed_int, ptr: *mut i32, byte_count: u32) {
2266 vector.vec_store_len(ptr, byte_count)2277 vector.vec_store_len(ptr, byte_count)
2267 }2278 }
...@@ -2787,11 +2798,11 @@ mod sealed {...@@ -2787,11 +2798,11 @@ mod sealed {
2787 }2798 }
27882799
2789 test_impl! { vec_vmal_ib(a: vector_signed_char, b: vector_signed_char, c: vector_signed_char) -> vector_signed_char [simd_mladd, vmalb ] }2800 test_impl! { vec_vmal_ib(a: vector_signed_char, b: vector_signed_char, c: vector_signed_char) -> vector_signed_char [simd_mladd, vmalb ] }
2790 test_impl! { vec_vmal_ih(a: vector_signed_short, b: vector_signed_short, c: vector_signed_short) -> vector_signed_short[simd_mladd, vmalh ] }2801 test_impl! { vec_vmal_ih(a: vector_signed_short, b: vector_signed_short, c: vector_signed_short) -> vector_signed_short[simd_mladd, vmalhw ] }
2791 test_impl! { vec_vmal_if(a: vector_signed_int, b: vector_signed_int, c: vector_signed_int) -> vector_signed_int [simd_mladd, vmalf ] }2802 test_impl! { vec_vmal_if(a: vector_signed_int, b: vector_signed_int, c: vector_signed_int) -> vector_signed_int [simd_mladd, vmalf ] }
27922803
2793 test_impl! { vec_vmal_ub(a: vector_unsigned_char, b: vector_unsigned_char, c: vector_unsigned_char) -> vector_unsigned_char [simd_mladd, vmalb ] }2804 test_impl! { vec_vmal_ub(a: vector_unsigned_char, b: vector_unsigned_char, c: vector_unsigned_char) -> vector_unsigned_char [simd_mladd, vmalb ] }
2794 test_impl! { vec_vmal_uh(a: vector_unsigned_short, b: vector_unsigned_short, c: vector_unsigned_short) -> vector_unsigned_short[simd_mladd, vmalh ] }2805 test_impl! { vec_vmal_uh(a: vector_unsigned_short, b: vector_unsigned_short, c: vector_unsigned_short) -> vector_unsigned_short[simd_mladd, vmalhw ] }
2795 test_impl! { vec_vmal_uf(a: vector_unsigned_int, b: vector_unsigned_int, c: vector_unsigned_int) -> vector_unsigned_int [simd_mladd, vmalf ] }2806 test_impl! { vec_vmal_uf(a: vector_unsigned_int, b: vector_unsigned_int, c: vector_unsigned_int) -> vector_unsigned_int [simd_mladd, vmalf ] }
27962807
2797 impl_mul!([VectorMladd vec_mladd] vec_vmal_ib (vector_signed_char, vector_signed_char, vector_signed_char) -> vector_signed_char );2808 impl_mul!([VectorMladd vec_mladd] vec_vmal_ib (vector_signed_char, vector_signed_char, vector_signed_char) -> vector_signed_char );
library/stdarch/crates/intrinsic-test/src/arm/compile.rs+35-48
...@@ -1,64 +1,51 @@...@@ -1,64 +1,51 @@
1use crate::common::compile_c::CompilationCommandBuilder;1use crate::common::cli::ProcessedCli;
2use crate::common::gen_c::compile_c_programs;2use crate::common::compile_c::{CompilationCommandBuilder, CppCompilation};
3
4pub fn build_cpp_compilation(config: &ProcessedCli) -> Option<CppCompilation> {
5 let cpp_compiler = config.cpp_compiler.as_ref()?;
36
4pub fn compile_c_arm(
5 intrinsics_name_list: &[String],
6 compiler: &str,
7 target: &str,
8 cxx_toolchain_dir: Option<&str>,
9) -> bool {
10 // -ffp-contract=off emulates Rust's approach of not fusing separate mul-add operations7 // -ffp-contract=off emulates Rust's approach of not fusing separate mul-add operations
11 let mut command = CompilationCommandBuilder::new()8 let mut command = CompilationCommandBuilder::new()
12 .add_arch_flags(vec!["armv8.6-a", "crypto", "crc", "dotprod", "fp16"])9 .add_arch_flags(vec!["armv8.6-a", "crypto", "crc", "dotprod", "fp16"])
13 .set_compiler(compiler)10 .set_compiler(cpp_compiler)
14 .set_target(target)11 .set_target(&config.target)
15 .set_opt_level("2")12 .set_opt_level("2")
16 .set_cxx_toolchain_dir(cxx_toolchain_dir)13 .set_cxx_toolchain_dir(config.cxx_toolchain_dir.as_deref())
17 .set_project_root("c_programs")14 .set_project_root("c_programs")
18 .add_extra_flags(vec!["-ffp-contract=off", "-Wno-narrowing"]);15 .add_extra_flags(vec!["-ffp-contract=off", "-Wno-narrowing"]);
1916
20 if !target.contains("v7") {17 if !config.target.contains("v7") {
21 command = command.add_arch_flags(vec!["faminmax", "lut", "sha3"]);18 command = command.add_arch_flags(vec!["faminmax", "lut", "sha3"]);
22 }19 }
2320
24 /*21 if !cpp_compiler.contains("clang") {
25 * clang++ cannot link an aarch64_be object file, so we invoke
26 * aarch64_be-unknown-linux-gnu's C++ linker. This ensures that we
27 * are testing the intrinsics against LLVM.
28 *
29 * Note: setting `--sysroot=<...>` which is the obvious thing to do
30 * does not work as it gets caught up with `#include_next <stdlib.h>`
31 * not existing...
32 */
33 if target.contains("aarch64_be") {
34 command = command
35 .set_linker(
36 cxx_toolchain_dir.unwrap_or("").to_string() + "/bin/aarch64_be-none-linux-gnu-g++",
37 )
38 .set_include_paths(vec![
39 "/include",
40 "/aarch64_be-none-linux-gnu/include",
41 "/aarch64_be-none-linux-gnu/include/c++/14.2.1",
42 "/aarch64_be-none-linux-gnu/include/c++/14.2.1/aarch64_be-none-linux-gnu",
43 "/aarch64_be-none-linux-gnu/include/c++/14.2.1/backward",
44 "/aarch64_be-none-linux-gnu/libc/usr/include",
45 ]);
46 }
47
48 if !compiler.contains("clang") {
49 command = command.add_extra_flag("-flax-vector-conversions");22 command = command.add_extra_flag("-flax-vector-conversions");
50 }23 }
5124
52 let compiler_commands = intrinsics_name_list25 let mut cpp_compiler = command.into_cpp_compilation();
53 .iter()26
54 .map(|intrinsic_name| {27 if config.target.contains("aarch64_be") {
55 command28 let Some(ref cxx_toolchain_dir) = config.cxx_toolchain_dir else {
56 .clone()29 panic!(
57 .set_input_name(intrinsic_name)30 "target `{}` must specify `cxx_toolchain_dir`",
58 .set_output_name(intrinsic_name)31 config.target
59 .make_string()32 )
60 })33 };
61 .collect::<Vec<_>>();34
35 cpp_compiler.command_mut().args([
36 &format!("--sysroot={cxx_toolchain_dir}/aarch64_be-none-linux-gnu/libc"),
37 "--include-directory",
38 &format!("{cxx_toolchain_dir}/aarch64_be-none-linux-gnu/include/c++/14.3.1"),
39 "--include-directory",
40 &format!("{cxx_toolchain_dir}/aarch64_be-none-linux-gnu/include/c++/14.3.1/aarch64_be-none-linux-gnu"),
41 "-L",
42 &format!("{cxx_toolchain_dir}/lib/gcc/aarch64_be-none-linux-gnu/14.3.1"),
43 "-L",
44 &format!("{cxx_toolchain_dir}/aarch64_be-none-linux-gnu/libc/usr/lib"),
45 "-B",
46 &format!("{cxx_toolchain_dir}/lib/gcc/aarch64_be-none-linux-gnu/14.3.1"),
47 ]);
48 }
6249
63 compile_c_programs(&compiler_commands)50 Some(cpp_compiler)
64}51}
library/stdarch/crates/intrinsic-test/src/arm/config.rs-1
...@@ -114,7 +114,6 @@ pub const AARCH_CONFIGURATIONS: &str = r#"...@@ -114,7 +114,6 @@ pub const AARCH_CONFIGURATIONS: &str = r#"
114#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_fcma))]114#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_fcma))]
115#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_dotprod))]115#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_dotprod))]
116#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_i8mm))]116#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_i8mm))]
117#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_sha3))]
118#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_sm4))]117#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_sm4))]
119#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_ftts))]118#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_ftts))]
120#![feature(fmt_helpers_for_derive)]119#![feature(fmt_helpers_for_derive)]
library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs+11-4
...@@ -1,8 +1,8 @@...@@ -1,8 +1,8 @@
1use crate::common::argument::ArgumentList;1use crate::common::argument::ArgumentList;
2use crate::common::indentation::Indentation;2use crate::common::indentation::Indentation;
3use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition};3use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition};
4use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, TypeKind};4use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, Sign, TypeKind};
5use std::ops::Deref;5use std::ops::{Deref, DerefMut};
66
7#[derive(Debug, Clone, PartialEq)]7#[derive(Debug, Clone, PartialEq)]
8pub struct ArmIntrinsicType(pub IntrinsicType);8pub struct ArmIntrinsicType(pub IntrinsicType);
...@@ -15,6 +15,12 @@ impl Deref for ArmIntrinsicType {...@@ -15,6 +15,12 @@ impl Deref for ArmIntrinsicType {
15 }15 }
16}16}
1717
18impl DerefMut for ArmIntrinsicType {
19 fn deref_mut(&mut self) -> &mut Self::Target {
20 &mut self.0
21 }
22}
23
18impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {24impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {
19 fn arguments(&self) -> ArgumentList<ArmIntrinsicType> {25 fn arguments(&self) -> ArgumentList<ArmIntrinsicType> {
20 self.arguments.clone()26 self.arguments.clone()
...@@ -73,8 +79,9 @@ impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {...@@ -73,8 +79,9 @@ impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {
73 TypeKind::Float if self.results().inner_size() == 16 => "float16_t".to_string(),79 TypeKind::Float if self.results().inner_size() == 16 => "float16_t".to_string(),
74 TypeKind::Float if self.results().inner_size() == 32 => "float".to_string(),80 TypeKind::Float if self.results().inner_size() == 32 => "float".to_string(),
75 TypeKind::Float if self.results().inner_size() == 64 => "double".to_string(),81 TypeKind::Float if self.results().inner_size() == 64 => "double".to_string(),
76 TypeKind::Int => format!("int{}_t", self.results().inner_size()),82 TypeKind::Int(Sign::Signed) => format!("int{}_t", self.results().inner_size()),
77 TypeKind::UInt => format!("uint{}_t", self.results().inner_size()),83 TypeKind::Int(Sign::Unsigned) =>
84 format!("uint{}_t", self.results().inner_size()),
78 TypeKind::Poly => format!("poly{}_t", self.results().inner_size()),85 TypeKind::Poly => format!("poly{}_t", self.results().inner_size()),
79 ty => todo!("print_result_c - Unknown type: {:#?}", ty),86 ty => todo!("print_result_c - Unknown type: {:#?}", ty),
80 },87 },
library/stdarch/crates/intrinsic-test/src/arm/json_parser.rs+1-1
...@@ -110,7 +110,7 @@ fn json_to_intrinsic(...@@ -110,7 +110,7 @@ fn json_to_intrinsic(
110 Ok(Intrinsic {110 Ok(Intrinsic {
111 name,111 name,
112 arguments,112 arguments,
113 results: *results,113 results: results,
114 arch_tags: intr.architectures,114 arch_tags: intr.architectures,
115 })115 })
116}116}
library/stdarch/crates/intrinsic-test/src/arm/mod.rs+65-29
...@@ -4,15 +4,20 @@ mod intrinsic;...@@ -4,15 +4,20 @@ mod intrinsic;
4mod json_parser;4mod json_parser;
5mod types;5mod types;
66
7use std::fs::File;
8
9use rayon::prelude::*;
10
11use crate::arm::config::POLY128_OSTREAM_DEF;
7use crate::common::SupportedArchitectureTest;12use crate::common::SupportedArchitectureTest;
8use crate::common::cli::ProcessedCli;13use crate::common::cli::ProcessedCli;
9use crate::common::compare::compare_outputs;14use crate::common::compare::compare_outputs;
15use crate::common::gen_c::{write_main_cpp, write_mod_cpp};
10use crate::common::gen_rust::compile_rust_programs;16use crate::common::gen_rust::compile_rust_programs;
11use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition};17use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition};
12use crate::common::intrinsic_helpers::TypeKind;18use crate::common::intrinsic_helpers::TypeKind;
13use crate::common::write_file::{write_c_testfiles, write_rust_testfiles};19use crate::common::write_file::write_rust_testfiles;
14use compile::compile_c_arm;20use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, build_notices};
15use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, POLY128_OSTREAM_DEF, build_notices};
16use intrinsic::ArmIntrinsicType;21use intrinsic::ArmIntrinsicType;
17use json_parser::get_neon_intrinsics;22use json_parser::get_neon_intrinsics;
1823
...@@ -21,6 +26,13 @@ pub struct ArmArchitectureTest {...@@ -21,6 +26,13 @@ pub struct ArmArchitectureTest {
21 cli_options: ProcessedCli,26 cli_options: ProcessedCli,
22}27}
2328
29fn chunk_info(intrinsic_count: usize) -> (usize, usize) {
30 let available_parallelism = std::thread::available_parallelism().unwrap().get();
31 let chunk_size = intrinsic_count.div_ceil(Ord::min(available_parallelism, intrinsic_count));
32
33 (chunk_size, intrinsic_count.div_ceil(chunk_size))
34}
35
24impl SupportedArchitectureTest for ArmArchitectureTest {36impl SupportedArchitectureTest for ArmArchitectureTest {
25 fn create(cli_options: ProcessedCli) -> Box<Self> {37 fn create(cli_options: ProcessedCli) -> Box<Self> {
26 let a32 = cli_options.target.contains("v7");38 let a32 = cli_options.target.contains("v7");
...@@ -51,33 +63,58 @@ impl SupportedArchitectureTest for ArmArchitectureTest {...@@ -51,33 +63,58 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
51 }63 }
5264
53 fn build_c_file(&self) -> bool {65 fn build_c_file(&self) -> bool {
54 let compiler = self.cli_options.cpp_compiler.as_deref();
55 let target = &self.cli_options.target;
56 let cxx_toolchain_dir = self.cli_options.cxx_toolchain_dir.as_deref();
57 let c_target = "aarch64";66 let c_target = "aarch64";
67 let platform_headers = &["arm_neon.h", "arm_acle.h", "arm_fp16.h"];
5868
59 let intrinsics_name_list = write_c_testfiles(69 let (chunk_size, chunk_count) = chunk_info(self.intrinsics.len());
60 &self70
61 .intrinsics71 let cpp_compiler = compile::build_cpp_compilation(&self.cli_options).unwrap();
62 .iter()72
63 .map(|i| i as &dyn IntrinsicDefinition<_>)73 let notice = &build_notices("// ");
64 .collect::<Vec<_>>(),74 self.intrinsics
65 target,75 .par_chunks(chunk_size)
76 .enumerate()
77 .map(|(i, chunk)| {
78 let c_filename = format!("c_programs/mod_{i}.cpp");
79 let mut file = File::create(&c_filename).unwrap();
80 write_mod_cpp(&mut file, notice, c_target, platform_headers, chunk).unwrap();
81
82 // compile this cpp file into a .o file
83 let output = cpp_compiler
84 .compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
85 assert!(output.status.success(), "{output:?}");
86
87 Ok(())
88 })
89 .collect::<Result<(), std::io::Error>>()
90 .unwrap();
91
92 let mut file = File::create("c_programs/main.cpp").unwrap();
93 write_main_cpp(
94 &mut file,
66 c_target,95 c_target,
67 &["arm_neon.h", "arm_acle.h", "arm_fp16.h"],96 POLY128_OSTREAM_DEF,
68 &build_notices("// "),97 self.intrinsics.iter().map(|i| i.name.as_str()),
69 &[POLY128_OSTREAM_DEF],98 )
70 );99 .unwrap();
71100
72 match compiler {101 // compile this cpp file into a .o file
73 None => true,102 info!("compiling main.cpp");
74 Some(compiler) => compile_c_arm(103 let output = cpp_compiler
75 intrinsics_name_list.as_slice(),104 .compile_object_file("main.cpp", "intrinsic-test-programs.o")
76 compiler,105 .unwrap();
77 target,106 assert!(output.status.success(), "{output:?}");
78 cxx_toolchain_dir,107
79 ),108 let object_files = (0..chunk_count)
80 }109 .map(|i| format!("mod_{i}.o"))
110 .chain(["intrinsic-test-programs.o".to_owned()]);
111
112 let output = cpp_compiler
113 .link_executable(object_files, "intrinsic-test-programs")
114 .unwrap();
115 assert!(output.status.success(), "{output:?}");
116
117 true
81 }118 }
82119
83 fn build_rust_file(&self) -> bool {120 fn build_rust_file(&self) -> bool {
...@@ -104,7 +141,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest {...@@ -104,7 +141,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
104 }141 }
105142
106 fn compare_outputs(&self) -> bool {143 fn compare_outputs(&self) -> bool {
107 if let Some(ref toolchain) = self.cli_options.toolchain {144 if self.cli_options.toolchain.is_some() {
108 let intrinsics_name_list = self145 let intrinsics_name_list = self
109 .intrinsics146 .intrinsics
110 .iter()147 .iter()
...@@ -113,8 +150,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest {...@@ -113,8 +150,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
113150
114 compare_outputs(151 compare_outputs(
115 &intrinsics_name_list,152 &intrinsics_name_list,
116 toolchain,153 &self.cli_options.runner,
117 &self.cli_options.c_runner,
118 &self.cli_options.target,154 &self.cli_options.target,
119 )155 )
120 } else {156 } else {
library/stdarch/crates/intrinsic-test/src/arm/types.rs+13-14
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1use super::intrinsic::ArmIntrinsicType;1use super::intrinsic::ArmIntrinsicType;
2use crate::common::cli::Language;2use crate::common::cli::Language;
3use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, TypeKind};3use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, Sign, TypeKind};
44
5impl IntrinsicTypeDefinition for ArmIntrinsicType {5impl IntrinsicTypeDefinition for ArmIntrinsicType {
6 /// Gets a string containing the typename for this type in C format.6 /// Gets a string containing the typename for this type in C format.
...@@ -73,8 +73,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -73,8 +73,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
73 format!(73 format!(
74 "vld{len}{quad}_{type}{size}",74 "vld{len}{quad}_{type}{size}",
75 type = match k {75 type = match k {
76 TypeKind::UInt => "u",76 TypeKind::Int(Sign::Unsigned) => "u",
77 TypeKind::Int => "s",77 TypeKind::Int(Sign::Signed) => "s",
78 TypeKind::Float => "f",78 TypeKind::Float => "f",
79 // The ACLE doesn't support 64-bit polynomial loads on Armv779 // The ACLE doesn't support 64-bit polynomial loads on Armv7
80 // if armv7 and bl == 64, use "s", else "p"80 // if armv7 and bl == 64, use "s", else "p"
...@@ -107,8 +107,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -107,8 +107,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
107 format!(107 format!(
108 "vget{quad}_lane_{type}{size}",108 "vget{quad}_lane_{type}{size}",
109 type = match k {109 type = match k {
110 TypeKind::UInt => "u",110 TypeKind::Int(Sign::Unsigned) => "u",
111 TypeKind::Int => "s",111 TypeKind::Int(Sign::Signed) => "s",
112 TypeKind::Float => "f",112 TypeKind::Float => "f",
113 TypeKind::Poly => "p",113 TypeKind::Poly => "p",
114 x => todo!("get_load_function TypeKind: {:#?}", x),114 x => todo!("get_load_function TypeKind: {:#?}", x),
...@@ -121,7 +121,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -121,7 +121,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
121 }121 }
122 }122 }
123123
124 fn from_c(s: &str, target: &str) -> Result<Box<Self>, String> {124 fn from_c(s: &str, target: &str) -> Result<Self, String> {
125 const CONST_STR: &str = "const";125 const CONST_STR: &str = "const";
126 if let Some(s) = s.strip_suffix('*') {126 if let Some(s) = s.strip_suffix('*') {
127 let (s, constant) = match s.trim().strip_suffix(CONST_STR) {127 let (s, constant) = match s.trim().strip_suffix(CONST_STR) {
...@@ -131,9 +131,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -131,9 +131,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
131 let s = s.trim_end();131 let s = s.trim_end();
132 let temp_return = ArmIntrinsicType::from_c(s, target);132 let temp_return = ArmIntrinsicType::from_c(s, target);
133 temp_return.map(|mut op| {133 temp_return.map(|mut op| {
134 let edited = op.as_mut();134 op.ptr = true;
135 edited.0.ptr = true;135 op.ptr_constant = constant;
136 edited.0.ptr_constant = constant;
137 op136 op
138 })137 })
139 } else {138 } else {
...@@ -163,7 +162,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -163,7 +162,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
163 ),162 ),
164 None => None,163 None => None,
165 };164 };
166 Ok(Box::new(ArmIntrinsicType(IntrinsicType {165 Ok(ArmIntrinsicType(IntrinsicType {
167 ptr: false,166 ptr: false,
168 ptr_constant: false,167 ptr_constant: false,
169 constant,168 constant,
...@@ -172,14 +171,14 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -172,14 +171,14 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
172 simd_len,171 simd_len,
173 vec_len,172 vec_len,
174 target: target.to_string(),173 target: target.to_string(),
175 })))174 }))
176 } else {175 } else {
177 let kind = start.parse::<TypeKind>()?;176 let kind = start.parse::<TypeKind>()?;
178 let bit_len = match kind {177 let bit_len = match kind {
179 TypeKind::Int => Some(32),178 TypeKind::Int(_) => Some(32),
180 _ => None,179 _ => None,
181 };180 };
182 Ok(Box::new(ArmIntrinsicType(IntrinsicType {181 Ok(ArmIntrinsicType(IntrinsicType {
183 ptr: false,182 ptr: false,
184 ptr_constant: false,183 ptr_constant: false,
185 constant,184 constant,
...@@ -188,7 +187,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {...@@ -188,7 +187,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
188 simd_len: None,187 simd_len: None,
189 vec_len: None,188 vec_len: None,
190 target: target.to_string(),189 target: target.to_string(),
191 })))190 }))
192 }191 }
193 }192 }
194 }193 }
library/stdarch/crates/intrinsic-test/src/common/argument.rs+18-14
...@@ -76,7 +76,7 @@ where...@@ -76,7 +76,7 @@ where
76 Argument {76 Argument {
77 pos,77 pos,
78 name: String::from(var_name),78 name: String::from(var_name),
79 ty: *ty,79 ty: ty,
80 constraint,80 constraint,
81 }81 }
82 }82 }
...@@ -125,19 +125,23 @@ where...@@ -125,19 +125,23 @@ where
125 /// Creates a line for each argument that initializes an array for C from which `loads` argument125 /// Creates a line for each argument that initializes an array for C from which `loads` argument
126 /// values can be loaded as a sliding window.126 /// values can be loaded as a sliding window.
127 /// e.g `const int32x2_t a_vals = {0x3effffff, 0x3effffff, 0x3f7fffff}`, if loads=2.127 /// e.g `const int32x2_t a_vals = {0x3effffff, 0x3effffff, 0x3f7fffff}`, if loads=2.
128 pub fn gen_arglists_c(&self, indentation: Indentation, loads: u32) -> String {128 pub fn gen_arglists_c(
129 self.iter()129 &self,
130 .filter(|&arg| !arg.has_constraint())130 w: &mut impl std::io::Write,
131 .map(|arg| {131 indentation: Indentation,
132 format!(132 loads: u32,
133 "{indentation}const {ty} {name}_vals[] = {values};",133 ) -> std::io::Result<()> {
134 ty = arg.ty.c_scalar_type(),134 for arg in self.iter().filter(|&arg| !arg.has_constraint()) {
135 name = arg.name,135 writeln!(
136 values = arg.ty.populate_random(indentation, loads, &Language::C)136 w,
137 )137 "{indentation}const {ty} {name}_vals[] = {values};",
138 })138 ty = arg.ty.c_scalar_type(),
139 .collect::<Vec<_>>()139 name = arg.name,
140 .join("\n")140 values = arg.ty.populate_random(indentation, loads, &Language::C)
141 )?
142 }
143
144 Ok(())
141 }145 }
142146
143 /// Creates a line for each argument that initializes an array for Rust from which `loads` argument147 /// Creates a line for each argument that initializes an array for Rust from which `loads` argument
library/stdarch/crates/intrinsic-test/src/common/cli.rs+3-3
...@@ -60,7 +60,7 @@ pub struct ProcessedCli {...@@ -60,7 +60,7 @@ pub struct ProcessedCli {
60 pub filename: PathBuf,60 pub filename: PathBuf,
61 pub toolchain: Option<String>,61 pub toolchain: Option<String>,
62 pub cpp_compiler: Option<String>,62 pub cpp_compiler: Option<String>,
63 pub c_runner: String,63 pub runner: String,
64 pub target: String,64 pub target: String,
65 pub linker: Option<String>,65 pub linker: Option<String>,
66 pub cxx_toolchain_dir: Option<String>,66 pub cxx_toolchain_dir: Option<String>,
...@@ -70,7 +70,7 @@ pub struct ProcessedCli {...@@ -70,7 +70,7 @@ pub struct ProcessedCli {
70impl ProcessedCli {70impl ProcessedCli {
71 pub fn new(cli_options: Cli) -> Self {71 pub fn new(cli_options: Cli) -> Self {
72 let filename = cli_options.input;72 let filename = cli_options.input;
73 let c_runner = cli_options.runner.unwrap_or_default();73 let runner = cli_options.runner.unwrap_or_default();
74 let target = cli_options.target;74 let target = cli_options.target;
75 let linker = cli_options.linker;75 let linker = cli_options.linker;
76 let cxx_toolchain_dir = cli_options.cxx_toolchain_dir;76 let cxx_toolchain_dir = cli_options.cxx_toolchain_dir;
...@@ -102,7 +102,7 @@ impl ProcessedCli {...@@ -102,7 +102,7 @@ impl ProcessedCli {
102 Self {102 Self {
103 toolchain,103 toolchain,
104 cpp_compiler,104 cpp_compiler,
105 c_runner,105 runner,
106 target,106 target,
107 linker,107 linker,
108 cxx_toolchain_dir,108 cxx_toolchain_dir,
library/stdarch/crates/intrinsic-test/src/common/compare.rs+16-18
...@@ -2,27 +2,25 @@ use super::cli::FailureReason;...@@ -2,27 +2,25 @@ use super::cli::FailureReason;
2use rayon::prelude::*;2use rayon::prelude::*;
3use std::process::Command;3use std::process::Command;
44
5pub fn compare_outputs(5pub fn compare_outputs(intrinsic_name_list: &Vec<String>, runner: &str, target: &str) -> bool {
6 intrinsic_name_list: &Vec<String>,6 fn runner_command(runner: &str) -> Command {
7 toolchain: &str,7 let mut it = runner.split_whitespace();
8 runner: &str,8 let mut cmd = Command::new(it.next().unwrap());
9 target: &str,9 cmd.args(it);
10) -> bool {10
11 cmd
12 }
13
11 let intrinsics = intrinsic_name_list14 let intrinsics = intrinsic_name_list
12 .par_iter()15 .par_iter()
13 .filter_map(|intrinsic_name| {16 .filter_map(|intrinsic_name| {
14 let c = Command::new("sh")17 let c = runner_command(runner)
15 .arg("-c")18 .arg("./c_programs/intrinsic-test-programs")
16 .arg(format!("{runner} ./c_programs/{intrinsic_name}"))19 .arg(intrinsic_name)
17 .output();20 .output();
1821
19 let rust = Command::new("sh")22 let rust = runner_command(runner)
20 .current_dir("rust_programs")23 .arg(format!("target/{target}/release/{intrinsic_name}"))
21 .arg("-c")
22 .arg(format!(
23 "cargo {toolchain} run --target {target} --bin {intrinsic_name} --release",
24 ))
25 .env("RUSTFLAGS", "-Cdebuginfo=0")
26 .output();24 .output();
2725
28 let (c, rust) = match (c, rust) {26 let (c, rust) = match (c, rust) {
...@@ -42,8 +40,8 @@ pub fn compare_outputs(...@@ -42,8 +40,8 @@ pub fn compare_outputs(
42 if !rust.status.success() {40 if !rust.status.success() {
43 error!(41 error!(
44 "Failed to run Rust program for intrinsic {intrinsic_name}\nstdout: {stdout}\nstderr: {stderr}",42 "Failed to run Rust program for intrinsic {intrinsic_name}\nstdout: {stdout}\nstderr: {stderr}",
45 stdout = std::str::from_utf8(&rust.stdout).unwrap_or(""),43 stdout = String::from_utf8_lossy(&rust.stdout),
46 stderr = std::str::from_utf8(&rust.stderr).unwrap_or(""),44 stderr = String::from_utf8_lossy(&rust.stderr),
47 );45 );
48 return Some(FailureReason::RunRust(intrinsic_name.clone()));46 return Some(FailureReason::RunRust(intrinsic_name.clone()));
49 }47 }
library/stdarch/crates/intrinsic-test/src/common/compile_c.rs+59-78
...@@ -5,11 +5,7 @@ pub struct CompilationCommandBuilder {...@@ -5,11 +5,7 @@ pub struct CompilationCommandBuilder {
5 cxx_toolchain_dir: Option<String>,5 cxx_toolchain_dir: Option<String>,
6 arch_flags: Vec<String>,6 arch_flags: Vec<String>,
7 optimization: String,7 optimization: String,
8 include_paths: Vec<String>,
9 project_root: Option<String>,8 project_root: Option<String>,
10 output: String,
11 input: String,
12 linker: Option<String>,
13 extra_flags: Vec<String>,9 extra_flags: Vec<String>,
14}10}
1511
...@@ -21,11 +17,7 @@ impl CompilationCommandBuilder {...@@ -21,11 +17,7 @@ impl CompilationCommandBuilder {
21 cxx_toolchain_dir: None,17 cxx_toolchain_dir: None,
22 arch_flags: Vec::new(),18 arch_flags: Vec::new(),
23 optimization: "2".to_string(),19 optimization: "2".to_string(),
24 include_paths: Vec::new(),
25 project_root: None,20 project_root: None,
26 output: String::new(),
27 input: String::new(),
28 linker: None,
29 extra_flags: Vec::new(),21 extra_flags: Vec::new(),
30 }22 }
31 }23 }
...@@ -57,37 +49,12 @@ impl CompilationCommandBuilder {...@@ -57,37 +49,12 @@ impl CompilationCommandBuilder {
57 self49 self
58 }50 }
5951
60 /// Sets a list of include paths for compilation.
61 /// The paths that are passed must be relative to the
62 /// "cxx_toolchain_dir" directory path.
63 pub fn set_include_paths(mut self, paths: Vec<&str>) -> Self {
64 self.include_paths = paths.into_iter().map(|path| path.to_string()).collect();
65 self
66 }
67
68 /// Sets the root path of all the generated test files.52 /// Sets the root path of all the generated test files.
69 pub fn set_project_root(mut self, path: &str) -> Self {53 pub fn set_project_root(mut self, path: &str) -> Self {
70 self.project_root = Some(path.to_string());54 self.project_root = Some(path.to_string());
71 self55 self
72 }56 }
7357
74 /// The name of the output executable, without any suffixes
75 pub fn set_output_name(mut self, path: &str) -> Self {
76 self.output = path.to_string();
77 self
78 }
79
80 /// The name of the input C file, without any suffixes
81 pub fn set_input_name(mut self, path: &str) -> Self {
82 self.input = path.to_string();
83 self
84 }
85
86 pub fn set_linker(mut self, linker: String) -> Self {
87 self.linker = Some(linker);
88 self
89 }
90
91 pub fn add_extra_flags(mut self, flags: Vec<&str>) -> Self {58 pub fn add_extra_flags(mut self, flags: Vec<&str>) -> Self {
92 let mut flags: Vec<String> = flags.into_iter().map(|f| f.to_string()).collect();59 let mut flags: Vec<String> = flags.into_iter().map(|f| f.to_string()).collect();
93 self.extra_flags.append(&mut flags);60 self.extra_flags.append(&mut flags);
...@@ -100,55 +67,69 @@ impl CompilationCommandBuilder {...@@ -100,55 +67,69 @@ impl CompilationCommandBuilder {
100}67}
10168
102impl CompilationCommandBuilder {69impl CompilationCommandBuilder {
103 pub fn make_string(self) -> String {70 pub fn into_cpp_compilation(self) -> CppCompilation {
104 let arch_flags = self.arch_flags.join("+");71 let mut cpp_compiler = std::process::Command::new(self.compiler);
72
73 if let Some(project_root) = self.project_root {
74 cpp_compiler.current_dir(project_root);
75 }
76
105 let flags = std::env::var("CPPFLAGS").unwrap_or("".into());77 let flags = std::env::var("CPPFLAGS").unwrap_or("".into());
106 let project_root = self.project_root.unwrap_or_default();78 cpp_compiler.args(flags.split_whitespace());
107 let project_root_str = project_root.as_str();79
108 let mut output = self.output.clone();80 cpp_compiler.arg(format!("-march={}", self.arch_flags.join("+")));
109 if self.linker.is_some() {81
110 output += ".o"82 cpp_compiler.arg(format!("-O{}", self.optimization));
111 };83
112 let mut command = format!(84 cpp_compiler.args(self.extra_flags);
113 "{} {flags} -march={arch_flags} \
114 -O{} \
115 -o {project_root}/{} \
116 {project_root}/{}.cpp",
117 self.compiler, self.optimization, output, self.input,
118 );
119
120 command = command + " " + self.extra_flags.join(" ").as_str();
12185
122 if let Some(target) = &self.target {86 if let Some(target) = &self.target {
123 command = command + " --target=" + target;87 cpp_compiler.arg(format!("--target={target}"));
124 }88 }
12589
126 if let (Some(linker), Some(cxx_toolchain_dir)) = (&self.linker, &self.cxx_toolchain_dir) {90 CppCompilation(cpp_compiler)
127 let include_args = self91 }
128 .include_paths92}
129 .iter()93
130 .map(|path| "--include-directory=".to_string() + cxx_toolchain_dir + path)94pub struct CppCompilation(std::process::Command);
131 .collect::<Vec<_>>()95
132 .join(" ");96fn clone_command(command: &std::process::Command) -> std::process::Command {
13397 let mut cmd = std::process::Command::new(command.get_program());
134 command = command98 if let Some(current_dir) = command.get_current_dir() {
135 + " -c "99 cmd.current_dir(current_dir);
136 + include_args.as_str()100 }
137 + " && "101 cmd.args(command.get_args());
138 + linker102
139 + " "103 for (key, val) in command.get_envs() {
140 + project_root_str104 cmd.env(key, val.unwrap_or_default());
141 + "/"105 }
142 + &output106
143 + " -o "107 cmd
144 + project_root_str108}
145 + "/"109
146 + &self.output110impl CppCompilation {
147 + " && rm "111 pub fn command_mut(&mut self) -> &mut std::process::Command {
148 + project_root_str112 &mut self.0
149 + "/"113 }
150 + &output;114
151 }115 pub fn compile_object_file(
152 command116 &self,
117 input: &str,
118 output: &str,
119 ) -> std::io::Result<std::process::Output> {
120 let mut cmd = clone_command(&self.0);
121 cmd.args([input, "-c", "-o", output]);
122 cmd.output()
123 }
124
125 pub fn link_executable(
126 &self,
127 inputs: impl Iterator<Item = String>,
128 output: &str,
129 ) -> std::io::Result<std::process::Output> {
130 let mut cmd = clone_command(&self.0);
131 cmd.args(inputs);
132 cmd.args(["-o", output]);
133 cmd.output()
153 }134 }
154}135}
library/stdarch/crates/intrinsic-test/src/common/gen_c.rs+162-161
...@@ -1,8 +1,3 @@...@@ -1,8 +1,3 @@
1use itertools::Itertools;
2use rayon::prelude::*;
3use std::collections::BTreeMap;
4use std::process::Command;
5
6use super::argument::Argument;1use super::argument::Argument;
7use super::indentation::Indentation;2use super::indentation::Indentation;
8use super::intrinsic::IntrinsicDefinition;3use super::intrinsic::IntrinsicDefinition;
...@@ -11,104 +6,16 @@ use super::intrinsic_helpers::IntrinsicTypeDefinition;...@@ -11,104 +6,16 @@ use super::intrinsic_helpers::IntrinsicTypeDefinition;
11// The number of times each intrinsic will be called.6// The number of times each intrinsic will be called.
12const PASSES: u32 = 20;7const PASSES: u32 = 20;
138
14// Formats the main C program template with placeholders
15pub fn format_c_main_template(
16 notices: &str,
17 header_files: &[&str],
18 arch_identifier: &str,
19 arch_specific_definitions: &[&str],
20 arglists: &str,
21 passes: &str,
22) -> String {
23 format!(
24 r#"{notices}{header_files}
25#include <iostream>
26#include <cstring>
27#include <iomanip>
28#include <sstream>
29
30template<typename T1, typename T2> T1 cast(T2 x) {{
31 static_assert(sizeof(T1) == sizeof(T2), "sizeof T1 and T2 must be the same");
32 T1 ret{{}};
33 memcpy(&ret, &x, sizeof(T1));
34 return ret;
35}}
36
37std::ostream& operator<<(std::ostream& os, float16_t value) {{
38 uint16_t temp = 0;
39 memcpy(&temp, &value, sizeof(float16_t));
40 std::stringstream ss;
41 ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << temp;
42 os << ss.str();
43 return os;
44}}
45
46#ifdef __{arch_identifier}__
47{arch_specific_definitions}
48#endif
49
50{arglists}
51
52int main(int argc, char **argv) {{
53{passes}
54 return 0;
55}}"#,
56 header_files = header_files
57 .iter()
58 .map(|header| format!("#include <{header}>"))
59 .collect::<Vec<_>>()
60 .join("\n"),
61 arch_specific_definitions = arch_specific_definitions.join("\n"),
62 )
63}
64
65pub fn compile_c_programs(compiler_commands: &[String]) -> bool {
66 compiler_commands
67 .par_iter()
68 .map(|compiler_command| {
69 let output = Command::new("sh").arg("-c").arg(compiler_command).output();
70 if let Ok(output) = output {
71 if output.status.success() {
72 true
73 } else {
74 error!(
75 "Failed to compile code for intrinsics: \n\nstdout:\n{}\n\nstderr:\n{}",
76 std::str::from_utf8(&output.stdout).unwrap_or(""),
77 std::str::from_utf8(&output.stderr).unwrap_or("")
78 );
79 false
80 }
81 } else {
82 error!("Command failed: {output:#?}");
83 false
84 }
85 })
86 .find_any(|x| !x)
87 .is_none()
88}
89
90// Creates directory structure and file path mappings
91pub fn setup_c_file_paths(identifiers: &Vec<String>) -> BTreeMap<&String, String> {
92 let _ = std::fs::create_dir("c_programs");
93 identifiers
94 .par_iter()
95 .map(|identifier| {
96 let c_filename = format!(r#"c_programs/{identifier}.cpp"#);
97
98 (identifier, c_filename)
99 })
100 .collect::<BTreeMap<&String, String>>()
101}
102
103pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>(9pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>(
10 w: &mut impl std::io::Write,
104 intrinsic: &dyn IntrinsicDefinition<T>,11 intrinsic: &dyn IntrinsicDefinition<T>,
105 indentation: Indentation,12 indentation: Indentation,
106 additional: &str,13 additional: &str,
107 passes: u32,14 passes: u32,
108 _target: &str,15) -> std::io::Result<()> {
109) -> String {
110 let body_indentation = indentation.nested();16 let body_indentation = indentation.nested();
111 format!(17 writeln!(
18 w,
112 "{indentation}for (int i=0; i<{passes}; i++) {{\n\19 "{indentation}for (int i=0; i<{passes}; i++) {{\n\
113 {loaded_args}\20 {loaded_args}\
114 {body_indentation}auto __return_value = {intrinsic_call}({args});\n\21 {body_indentation}auto __return_value = {intrinsic_call}({args});\n\
...@@ -121,78 +28,172 @@ pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>(...@@ -121,78 +28,172 @@ pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>(
121 )28 )
122}29}
12330
124pub fn generate_c_constraint_blocks<T: IntrinsicTypeDefinition>(31pub fn generate_c_constraint_blocks<'a, T: IntrinsicTypeDefinition + 'a>(
32 w: &mut impl std::io::Write,
125 intrinsic: &dyn IntrinsicDefinition<T>,33 intrinsic: &dyn IntrinsicDefinition<T>,
126 indentation: Indentation,34 indentation: Indentation,
127 constraints: &[&Argument<T>],35 constraints: &mut (impl Iterator<Item = &'a Argument<T>> + Clone),
128 name: String,36 name: String,
129 target: &str,37) -> std::io::Result<()> {
130) -> String {38 let Some(current) = constraints.next() else {
131 if let Some((current, constraints)) = constraints.split_last() {39 return generate_c_test_loop(w, intrinsic, indentation, &name, PASSES);
132 let range = current40 };
133 .constraint41
134 .iter()42 let body_indentation = indentation.nested();
135 .map(|c| c.to_range())43 for i in current.constraint.iter().flat_map(|c| c.to_range()) {
136 .flat_map(|r| r.into_iter());44 let ty = current.ty.c_type();
13745
138 let body_indentation = indentation.nested();46 writeln!(w, "{indentation}{{")?;
139 range47 writeln!(w, "{body_indentation}{ty} {} = {i};", current.name)?;
140 .map(|i| {48
141 format!(49 generate_c_constraint_blocks(
142 "{indentation}{{\n\50 w,
143 {body_indentation}{ty} {name} = {val};\n\51 intrinsic,
144 {pass}\n\52 body_indentation,
145 {indentation}}}",53 &mut constraints.clone(),
146 name = current.name,54 format!("{name}-{i}"),
147 ty = current.ty.c_type(),55 )?;
148 val = i,56
149 pass = generate_c_constraint_blocks(57 writeln!(w, "{indentation}}}")?;
150 intrinsic,
151 body_indentation,
152 constraints,
153 format!("{name}-{i}"),
154 target,
155 )
156 )
157 })
158 .join("\n")
159 } else {
160 generate_c_test_loop(intrinsic, indentation, &name, PASSES, target)
161 }58 }
59
60 Ok(())
162}61}
16362
164// Compiles C test programs using specified compiler63// Compiles C test programs using specified compiler
165pub fn create_c_test_program<T: IntrinsicTypeDefinition>(64pub fn create_c_test_function<T: IntrinsicTypeDefinition>(
65 w: &mut impl std::io::Write,
166 intrinsic: &dyn IntrinsicDefinition<T>,66 intrinsic: &dyn IntrinsicDefinition<T>,
167 header_files: &[&str],67) -> std::io::Result<()> {
168 target: &str,68 let indentation = Indentation::default();
169 c_target: &str,69
170 notices: &str,70 writeln!(w, "int run_{}() {{", intrinsic.name())?;
171 arch_specific_definitions: &[&str],71
172) -> String {72 // Define the arrays of arguments.
173 let arguments = intrinsic.arguments();73 let arguments = intrinsic.arguments();
174 let constraints = arguments74 arguments.gen_arglists_c(w, indentation.nested(), PASSES)?;
175 .iter()
176 .filter(|&i| i.has_constraint())
177 .collect_vec();
17875
179 let indentation = Indentation::default();76 generate_c_constraint_blocks(
180 format_c_main_template(77 w,
181 notices,78 intrinsic,
182 header_files,79 indentation.nested(),
183 c_target,80 &mut arguments.iter().rev().filter(|&i| i.has_constraint()),
184 arch_specific_definitions,81 Default::default(),
185 intrinsic82 )?;
186 .arguments()83
187 .gen_arglists_c(indentation, PASSES)84 writeln!(w, " return 0;")?;
188 .as_str(),85 writeln!(w, "}}")?;
189 generate_c_constraint_blocks(86
190 intrinsic,87 Ok(())
191 indentation.nested(),88}
192 constraints.as_slice(),89
193 Default::default(),90pub fn write_mod_cpp<T: IntrinsicTypeDefinition>(
194 target,91 w: &mut impl std::io::Write,
195 )92 notice: &str,
196 .as_str(),93 architecture: &str,
197 )94 platform_headers: &[&str],
95 intrinsics: &[impl IntrinsicDefinition<T>],
96) -> std::io::Result<()> {
97 write!(w, "{notice}")?;
98
99 for header in platform_headers {
100 writeln!(w, "#include <{header}>")?;
101 }
102
103 writeln!(
104 w,
105 r#"
106#include <iostream>
107#include <cstring>
108#include <iomanip>
109#include <sstream>
110
111template<typename T1, typename T2> T1 cast(T2 x) {{
112 static_assert(sizeof(T1) == sizeof(T2), "sizeof T1 and T2 must be the same");
113 T1 ret{{}};
114 memcpy(&ret, &x, sizeof(T1));
115 return ret;
116}}
117
118std::ostream& operator<<(std::ostream& os, float16_t value);
119
120
121
122"#
123 )?;
124
125 writeln!(w, "#ifdef __{architecture}__")?;
126 writeln!(
127 w,
128 "std::ostream& operator<<(std::ostream& os, poly128_t value);"
129 )?;
130 writeln!(w, "#endif")?;
131
132 for intrinsic in intrinsics {
133 create_c_test_function(w, intrinsic)?;
134 }
135
136 Ok(())
137}
138
139pub fn write_main_cpp<'a>(
140 w: &mut impl std::io::Write,
141 architecture: &str,
142 arch_specific_definitions: &str,
143 intrinsics: impl Iterator<Item = &'a str> + Clone,
144) -> std::io::Result<()> {
145 writeln!(w, "#include <iostream>")?;
146 writeln!(w, "#include <string>")?;
147
148 for header in ["arm_neon.h", "arm_acle.h", "arm_fp16.h"] {
149 writeln!(w, "#include <{header}>")?;
150 }
151
152 writeln!(
153 w,
154 r#"
155#include <cstring>
156#include <iomanip>
157#include <sstream>
158
159std::ostream& operator<<(std::ostream& os, float16_t value) {{
160 uint16_t temp = 0;
161 memcpy(&temp, &value, sizeof(float16_t));
162 std::stringstream ss;
163 ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << temp;
164 os << ss.str();
165 return os;
166}}
167"#
168 )?;
169
170 writeln!(w, "#ifdef __{architecture}__")?;
171 writeln!(w, "{arch_specific_definitions }")?;
172 writeln!(w, "#endif")?;
173
174 for intrinsic in intrinsics.clone() {
175 writeln!(w, "extern int run_{intrinsic}(void);")?;
176 }
177
178 writeln!(w, "int main(int argc, char **argv) {{")?;
179 writeln!(w, " std::string intrinsic_name = argv[1];")?;
180
181 writeln!(w, " if (false) {{")?;
182
183 for intrinsic in intrinsics {
184 writeln!(w, " }} else if (intrinsic_name == \"{intrinsic}\") {{")?;
185 writeln!(w, " return run_{intrinsic}();")?;
186 }
187
188 writeln!(w, " }} else {{")?;
189 writeln!(
190 w,
191 " std::cerr << \"Unknown command: \" << intrinsic_name << \"\\n\";"
192 )?;
193 writeln!(w, " return -1;")?;
194 writeln!(w, " }}")?;
195
196 writeln!(w, "}}")?;
197
198 Ok(())
198}199}
library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs+49-50
...@@ -2,7 +2,6 @@ use itertools::Itertools;...@@ -2,7 +2,6 @@ use itertools::Itertools;
2use rayon::prelude::*;2use rayon::prelude::*;
3use std::collections::BTreeMap;3use std::collections::BTreeMap;
4use std::fs::File;4use std::fs::File;
5use std::io::Write;
6use std::process::Command;5use std::process::Command;
76
8use super::argument::Argument;7use super::argument::Argument;
...@@ -23,8 +22,8 @@ pub fn format_rust_main_template(...@@ -23,8 +22,8 @@ pub fn format_rust_main_template(
23) -> String {22) -> String {
24 format!(23 format!(
25 r#"{notices}#![feature(simd_ffi)]24 r#"{notices}#![feature(simd_ffi)]
26#![feature(link_llvm_intrinsics)]
27#![feature(f16)]25#![feature(f16)]
26#![allow(unused)]
28{configurations}27{configurations}
29{definitions}28{definitions}
3029
...@@ -38,6 +37,42 @@ fn main() {{...@@ -38,6 +37,42 @@ fn main() {{
38 )37 )
39}38}
4039
40fn write_cargo_toml(w: &mut impl std::io::Write, binaries: &[String]) -> std::io::Result<()> {
41 writeln!(
42 w,
43 concat!(
44 "[package]\n",
45 "name = \"intrinsic-test-programs\"\n",
46 "version = \"{version}\"\n",
47 "authors = [{authors}]\n",
48 "license = \"{license}\"\n",
49 "edition = \"2018\"\n",
50 "[workspace]\n",
51 "[dependencies]\n",
52 "core_arch = {{ path = \"../crates/core_arch\" }}",
53 ),
54 version = env!("CARGO_PKG_VERSION"),
55 authors = env!("CARGO_PKG_AUTHORS")
56 .split(":")
57 .format_with(", ", |author, fmt| fmt(&format_args!("\"{author}\""))),
58 license = env!("CARGO_PKG_LICENSE"),
59 )?;
60
61 for binary in binaries {
62 writeln!(
63 w,
64 concat!(
65 "[[bin]]\n",
66 "name = \"{binary}\"\n",
67 "path = \"{binary}/main.rs\"\n",
68 ),
69 binary = binary,
70 )?;
71 }
72
73 Ok(())
74}
75
41pub fn compile_rust_programs(76pub fn compile_rust_programs(
42 binaries: Vec<String>,77 binaries: Vec<String>,
43 toolchain: Option<&str>,78 toolchain: Option<&str>,
...@@ -45,56 +80,20 @@ pub fn compile_rust_programs(...@@ -45,56 +80,20 @@ pub fn compile_rust_programs(
45 linker: Option<&str>,80 linker: Option<&str>,
46) -> bool {81) -> bool {
47 let mut cargo = File::create("rust_programs/Cargo.toml").unwrap();82 let mut cargo = File::create("rust_programs/Cargo.toml").unwrap();
48 cargo83 write_cargo_toml(&mut cargo, &binaries).unwrap();
49 .write_all(
50 format!(
51 r#"[package]
52name = "intrinsic-test-programs"
53version = "{version}"
54authors = [{authors}]
55license = "{license}"
56edition = "2018"
57[workspace]
58[dependencies]
59core_arch = {{ path = "../crates/core_arch" }}
60{binaries}"#,
61 version = env!("CARGO_PKG_VERSION"),
62 authors = env!("CARGO_PKG_AUTHORS")
63 .split(":")
64 .format_with(", ", |author, fmt| fmt(&format_args!("\"{author}\""))),
65 license = env!("CARGO_PKG_LICENSE"),
66 binaries = binaries
67 .iter()
68 .map(|binary| {
69 format!(
70 r#"[[bin]]
71name = "{binary}"
72path = "{binary}/main.rs""#,
73 )
74 })
75 .collect::<Vec<_>>()
76 .join("\n")
77 )
78 .into_bytes()
79 .as_slice(),
80 )
81 .unwrap();
82
83 let toolchain = match toolchain {
84 None => return true,
85 Some(t) => t,
86 };
8784
88 /* If there has been a linker explicitly set from the command line then85 /* If there has been a linker explicitly set from the command line then
89 * we want to set it via setting it in the RUSTFLAGS*/86 * we want to set it via setting it in the RUSTFLAGS*/
9087
91 let cargo_command = format!("cargo {toolchain} build --target {target} --release");88 let mut cargo_command = Command::new("cargo");
89 cargo_command.current_dir("rust_programs");
9290
93 let mut command = Command::new("sh");91 if let Some(toolchain) = toolchain {
94 command92 if !toolchain.is_empty() {
95 .current_dir("rust_programs")93 cargo_command.arg(toolchain);
96 .arg("-c")94 }
97 .arg(cargo_command);95 }
96 cargo_command.args(["build", "--target", target, "--release"]);
9897
99 let mut rust_flags = "-Cdebuginfo=0".to_string();98 let mut rust_flags = "-Cdebuginfo=0".to_string();
100 if let Some(linker) = linker {99 if let Some(linker) = linker {
...@@ -102,11 +101,11 @@ path = "{binary}/main.rs""#,...@@ -102,11 +101,11 @@ path = "{binary}/main.rs""#,
102 rust_flags.push_str(linker);101 rust_flags.push_str(linker);
103 rust_flags.push_str(" -C link-args=-static");102 rust_flags.push_str(" -C link-args=-static");
104103
105 command.env("CPPFLAGS", "-fuse-ld=lld");104 cargo_command.env("CPPFLAGS", "-fuse-ld=lld");
106 }105 }
107106
108 command.env("RUSTFLAGS", rust_flags);107 cargo_command.env("RUSTFLAGS", rust_flags);
109 let output = command.output();108 let output = cargo_command.output();
110109
111 if let Ok(output) = output {110 if let Ok(output) = output {
112 if output.status.success() {111 if output.status.success() {
library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs+65-23
...@@ -8,14 +8,22 @@ use super::cli::Language;...@@ -8,14 +8,22 @@ use super::cli::Language;
8use super::indentation::Indentation;8use super::indentation::Indentation;
9use super::values::value_for_array;9use super::values::value_for_array;
1010
11#[derive(Debug, PartialEq, Copy, Clone)]
12pub enum Sign {
13 Signed,
14 Unsigned,
15}
16
11#[derive(Debug, PartialEq, Copy, Clone)]17#[derive(Debug, PartialEq, Copy, Clone)]
12pub enum TypeKind {18pub enum TypeKind {
13 BFloat,19 BFloat,
14 Float,20 Float,
15 Int,21 Int(Sign),
16 UInt,22 Char(Sign),
17 Poly,23 Poly,
18 Void,24 Void,
25 Mask,
26 Vector,
19}27}
2028
21impl FromStr for TypeKind {29impl FromStr for TypeKind {
...@@ -23,12 +31,17 @@ impl FromStr for TypeKind {...@@ -23,12 +31,17 @@ impl FromStr for TypeKind {
2331
24 fn from_str(s: &str) -> Result<Self, Self::Err> {32 fn from_str(s: &str) -> Result<Self, Self::Err> {
25 match s {33 match s {
26 "bfloat" => Ok(Self::BFloat),34 "bfloat" | "BF16" => Ok(Self::BFloat),
27 "float" => Ok(Self::Float),35 "float" | "double" | "FP16" | "FP32" | "FP64" => Ok(Self::Float),
28 "int" => Ok(Self::Int),36 "int" | "long" | "short" | "SI8" | "SI16" | "SI32" | "SI64" => {
37 Ok(Self::Int(Sign::Signed))
38 }
29 "poly" => Ok(Self::Poly),39 "poly" => Ok(Self::Poly),
30 "uint" | "unsigned" => Ok(Self::UInt),40 "char" => Ok(Self::Char(Sign::Signed)),
41 "uint" | "unsigned" | "UI8" | "UI16" | "UI32" | "UI64" => Ok(Self::Int(Sign::Unsigned)),
31 "void" => Ok(Self::Void),42 "void" => Ok(Self::Void),
43 "MASK" => Ok(Self::Mask),
44 "M64" | "M128" | "M256" | "M512" => Ok(Self::Vector),
32 _ => Err(format!("Impossible to parse argument kind {s}")),45 _ => Err(format!("Impossible to parse argument kind {s}")),
33 }46 }
34 }47 }
...@@ -42,10 +55,14 @@ impl fmt::Display for TypeKind {...@@ -42,10 +55,14 @@ impl fmt::Display for TypeKind {
42 match self {55 match self {
43 Self::BFloat => "bfloat",56 Self::BFloat => "bfloat",
44 Self::Float => "float",57 Self::Float => "float",
45 Self::Int => "int",58 Self::Int(Sign::Signed) => "int",
46 Self::UInt => "uint",59 Self::Int(Sign::Unsigned) => "uint",
47 Self::Poly => "poly",60 Self::Poly => "poly",
48 Self::Void => "void",61 Self::Void => "void",
62 Self::Char(Sign::Signed) => "char",
63 Self::Char(Sign::Unsigned) => "unsigned char",
64 Self::Mask => "mask",
65 Self::Vector => "vector",
49 }66 }
50 )67 )
51 }68 }
...@@ -56,9 +73,10 @@ impl TypeKind {...@@ -56,9 +73,10 @@ impl TypeKind {
56 pub fn c_prefix(&self) -> &str {73 pub fn c_prefix(&self) -> &str {
57 match self {74 match self {
58 Self::Float => "float",75 Self::Float => "float",
59 Self::Int => "int",76 Self::Int(Sign::Signed) => "int",
60 Self::UInt => "uint",77 Self::Int(Sign::Unsigned) => "uint",
61 Self::Poly => "poly",78 Self::Poly => "poly",
79 Self::Char(Sign::Signed) => "char",
62 _ => unreachable!("Not used: {:#?}", self),80 _ => unreachable!("Not used: {:#?}", self),
63 }81 }
64 }82 }
...@@ -66,10 +84,13 @@ impl TypeKind {...@@ -66,10 +84,13 @@ impl TypeKind {
66 /// Gets the rust prefix for the type kind i.e. i, u, f.84 /// Gets the rust prefix for the type kind i.e. i, u, f.
67 pub fn rust_prefix(&self) -> &str {85 pub fn rust_prefix(&self) -> &str {
68 match self {86 match self {
87 Self::BFloat => "bf",
69 Self::Float => "f",88 Self::Float => "f",
70 Self::Int => "i",89 Self::Int(Sign::Signed) => "i",
71 Self::UInt => "u",90 Self::Int(Sign::Unsigned) => "u",
72 Self::Poly => "u",91 Self::Poly => "u",
92 Self::Char(Sign::Unsigned) => "u",
93 Self::Char(Sign::Signed) => "i",
73 _ => unreachable!("Unused type kind: {:#?}", self),94 _ => unreachable!("Unused type kind: {:#?}", self),
74 }95 }
75 }96 }
...@@ -133,11 +154,14 @@ impl IntrinsicType {...@@ -133,11 +154,14 @@ impl IntrinsicType {
133 }154 }
134155
135 pub fn c_scalar_type(&self) -> String {156 pub fn c_scalar_type(&self) -> String {
136 format!(157 match self.kind() {
137 "{prefix}{bits}_t",158 TypeKind::Char(_) => String::from("char"),
138 prefix = self.kind().c_prefix(),159 _ => format!(
139 bits = self.inner_size()160 "{prefix}{bits}_t",
140 )161 prefix = self.kind().c_prefix(),
162 bits = self.inner_size()
163 ),
164 }
141 }165 }
142166
143 pub fn rust_scalar_type(&self) -> String {167 pub fn rust_scalar_type(&self) -> String {
...@@ -155,8 +179,8 @@ impl IntrinsicType {...@@ -155,8 +179,8 @@ impl IntrinsicType {
155 bit_len: Some(8),179 bit_len: Some(8),
156 ..180 ..
157 } => match kind {181 } => match kind {
158 TypeKind::Int => "(int)",182 TypeKind::Int(Sign::Signed) => "(int)",
159 TypeKind::UInt => "(unsigned int)",183 TypeKind::Int(Sign::Unsigned) => "(unsigned int)",
160 TypeKind::Poly => "(unsigned int)(uint8_t)",184 TypeKind::Poly => "(unsigned int)(uint8_t)",
161 _ => "",185 _ => "",
162 },186 },
...@@ -172,6 +196,21 @@ impl IntrinsicType {...@@ -172,6 +196,21 @@ impl IntrinsicType {
172 128 => "",196 128 => "",
173 _ => panic!("invalid bit_len"),197 _ => panic!("invalid bit_len"),
174 },198 },
199 IntrinsicType {
200 kind: TypeKind::Float,
201 bit_len: Some(bit_len),
202 ..
203 } => match bit_len {
204 16 => "(float16_t)",
205 32 => "(float)",
206 64 => "(double)",
207 128 => "",
208 _ => panic!("invalid bit_len"),
209 },
210 IntrinsicType {
211 kind: TypeKind::Char(_),
212 ..
213 } => "(char)",
175 _ => "",214 _ => "",
176 }215 }
177 }216 }
...@@ -185,7 +224,7 @@ impl IntrinsicType {...@@ -185,7 +224,7 @@ impl IntrinsicType {
185 match self {224 match self {
186 IntrinsicType {225 IntrinsicType {
187 bit_len: Some(bit_len @ (8 | 16 | 32 | 64)),226 bit_len: Some(bit_len @ (8 | 16 | 32 | 64)),
188 kind: kind @ (TypeKind::Int | TypeKind::UInt | TypeKind::Poly),227 kind: kind @ (TypeKind::Int(_) | TypeKind::Poly | TypeKind::Char(_)),
189 simd_len,228 simd_len,
190 vec_len,229 vec_len,
191 ..230 ..
...@@ -201,7 +240,8 @@ impl IntrinsicType {...@@ -201,7 +240,8 @@ impl IntrinsicType {
201 .format_with(",\n", |i, fmt| {240 .format_with(",\n", |i, fmt| {
202 let src = value_for_array(*bit_len, i);241 let src = value_for_array(*bit_len, i);
203 assert!(src == 0 || src.ilog2() < *bit_len);242 assert!(src == 0 || src.ilog2() < *bit_len);
204 if *kind == TypeKind::Int && (src >> (*bit_len - 1)) != 0 {243 if *kind == TypeKind::Int(Sign::Signed) && (src >> (*bit_len - 1)) != 0
244 {
205 // `src` is a two's complement representation of a negative value.245 // `src` is a two's complement representation of a negative value.
206 let mask = !0u64 >> (64 - *bit_len);246 let mask = !0u64 >> (64 - *bit_len);
207 let ones_compl = src ^ mask;247 let ones_compl = src ^ mask;
...@@ -257,7 +297,7 @@ impl IntrinsicType {...@@ -257,7 +297,7 @@ impl IntrinsicType {
257 ..297 ..
258 } => false,298 } => false,
259 IntrinsicType {299 IntrinsicType {
260 kind: TypeKind::Int | TypeKind::UInt | TypeKind::Poly,300 kind: TypeKind::Int(_) | TypeKind::Poly,
261 ..301 ..
262 } => true,302 } => true,
263 _ => unimplemented!(),303 _ => unimplemented!(),
...@@ -282,7 +322,9 @@ pub trait IntrinsicTypeDefinition: Deref<Target = IntrinsicType> {...@@ -282,7 +322,9 @@ pub trait IntrinsicTypeDefinition: Deref<Target = IntrinsicType> {
282 fn get_lane_function(&self) -> String;322 fn get_lane_function(&self) -> String;
283323
284 /// can be implemented in an `impl` block324 /// can be implemented in an `impl` block
285 fn from_c(_s: &str, _target: &str) -> Result<Box<Self>, String>;325 fn from_c(_s: &str, _target: &str) -> Result<Self, String>
326 where
327 Self: Sized;
286328
287 /// Gets a string containing the typename for this type in C format.329 /// Gets a string containing the typename for this type in C format.
288 /// can be directly defined in `impl` blocks330 /// can be directly defined in `impl` blocks
library/stdarch/crates/intrinsic-test/src/common/write_file.rs-33
...@@ -1,5 +1,3 @@...@@ -1,5 +1,3 @@
1use super::gen_c::create_c_test_program;
2use super::gen_c::setup_c_file_paths;
3use super::gen_rust::{create_rust_test_program, setup_rust_file_paths};1use super::gen_rust::{create_rust_test_program, setup_rust_file_paths};
4use super::intrinsic::IntrinsicDefinition;2use super::intrinsic::IntrinsicDefinition;
5use super::intrinsic_helpers::IntrinsicTypeDefinition;3use super::intrinsic_helpers::IntrinsicTypeDefinition;
...@@ -11,37 +9,6 @@ pub fn write_file(filename: &String, code: String) {...@@ -11,37 +9,6 @@ pub fn write_file(filename: &String, code: String) {
11 file.write_all(code.into_bytes().as_slice()).unwrap();9 file.write_all(code.into_bytes().as_slice()).unwrap();
12}10}
1311
14pub fn write_c_testfiles<T: IntrinsicTypeDefinition + Sized>(
15 intrinsics: &Vec<&dyn IntrinsicDefinition<T>>,
16 target: &str,
17 c_target: &str,
18 headers: &[&str],
19 notice: &str,
20 arch_specific_definitions: &[&str],
21) -> Vec<String> {
22 let intrinsics_name_list = intrinsics
23 .iter()
24 .map(|i| i.name().clone())
25 .collect::<Vec<_>>();
26 let filename_mapping = setup_c_file_paths(&intrinsics_name_list);
27
28 intrinsics.iter().for_each(|&i| {
29 let c_code = create_c_test_program(
30 i,
31 headers,
32 target,
33 c_target,
34 notice,
35 arch_specific_definitions,
36 );
37 if let Some(filename) = filename_mapping.get(&i.name()) {
38 write_file(filename, c_code)
39 };
40 });
41
42 intrinsics_name_list
43}
44
45pub fn write_rust_testfiles<T: IntrinsicTypeDefinition>(12pub fn write_rust_testfiles<T: IntrinsicTypeDefinition>(
46 intrinsics: Vec<&dyn IntrinsicDefinition<T>>,13 intrinsics: Vec<&dyn IntrinsicDefinition<T>>,
47 rust_target: &str,14 rust_target: &str,
library/stdarch/crates/intrinsic-test/src/main.rs+3
...@@ -30,12 +30,15 @@ fn main() {...@@ -30,12 +30,15 @@ fn main() {
3030
31 let test_environment = test_environment_result.unwrap();31 let test_environment = test_environment_result.unwrap();
3232
33 info!("building C binaries");
33 if !test_environment.build_c_file() {34 if !test_environment.build_c_file() {
34 std::process::exit(2);35 std::process::exit(2);
35 }36 }
37 info!("building Rust binaries");
36 if !test_environment.build_rust_file() {38 if !test_environment.build_rust_file() {
37 std::process::exit(3);39 std::process::exit(3);
38 }40 }
41 info!("comaparing outputs");
39 if !test_environment.compare_outputs() {42 if !test_environment.compare_outputs() {
40 std::process::exit(1);43 std::process::exit(1);
41 }44 }
library/stdarch/crates/simd-test-macro/src/lib.rs+2-2
...@@ -57,12 +57,12 @@ pub fn simd_test(...@@ -57,12 +57,12 @@ pub fn simd_test(
57 .unwrap_or_else(|| panic!("target triple contained no \"-\": {target}"))57 .unwrap_or_else(|| panic!("target triple contained no \"-\": {target}"))
58 {58 {
59 "i686" | "x86_64" | "i586" => "is_x86_feature_detected",59 "i686" | "x86_64" | "i586" => "is_x86_feature_detected",
60 "arm" | "armv7" => "is_arm_feature_detected",60 "arm" | "armv7" | "thumbv7neon" => "is_arm_feature_detected",
61 "aarch64" | "arm64ec" | "aarch64_be" => "is_aarch64_feature_detected",61 "aarch64" | "arm64ec" | "aarch64_be" => "is_aarch64_feature_detected",
62 maybe_riscv if maybe_riscv.starts_with("riscv") => "is_riscv_feature_detected",62 maybe_riscv if maybe_riscv.starts_with("riscv") => "is_riscv_feature_detected",
63 "powerpc" | "powerpcle" => "is_powerpc_feature_detected",63 "powerpc" | "powerpcle" => "is_powerpc_feature_detected",
64 "powerpc64" | "powerpc64le" => "is_powerpc64_feature_detected",64 "powerpc64" | "powerpc64le" => "is_powerpc64_feature_detected",
65 "loongarch64" => "is_loongarch_feature_detected",65 "loongarch32" | "loongarch64" => "is_loongarch_feature_detected",
66 "s390x" => "is_s390x_feature_detected",66 "s390x" => "is_s390x_feature_detected",
67 t => panic!("unknown target: {t}"),67 t => panic!("unknown target: {t}"),
68 };68 };
library/stdarch/crates/std_detect/README.md+1-1
...@@ -55,7 +55,7 @@ crate from working on applications in which `std` is not available....@@ -55,7 +55,7 @@ crate from working on applications in which `std` is not available.
55 application.55 application.
5656
57* Linux/Android:57* Linux/Android:
58 * `arm{32, 64}`, `mips{32,64}{,el}`, `powerpc{32,64}{,le}`, `loongarch64`, `s390x`:58 * `arm{32, 64}`, `mips{32,64}{,el}`, `powerpc{32,64}{,le}`, `loongarch{32,64}`, `s390x`:
59 `std_detect` supports these on Linux by querying ELF auxiliary vectors (using `getauxval`59 `std_detect` supports these on Linux by querying ELF auxiliary vectors (using `getauxval`
60 when available), and if that fails, by querying `/proc/self/auxv`.60 when available), and if that fails, by querying `/proc/self/auxv`.
61 * `arm64`: partial support for doing run-time feature detection by directly61 * `arm64`: partial support for doing run-time feature detection by directly
library/stdarch/crates/std_detect/src/detect/arch/loongarch.rs+1-1
...@@ -2,7 +2,7 @@...@@ -2,7 +2,7 @@
22
3features! {3features! {
4 @TARGET: loongarch;4 @TARGET: loongarch;
5 @CFG: target_arch = "loongarch64";5 @CFG: any(target_arch = "loongarch32", target_arch = "loongarch64");
6 @MACRO_NAME: is_loongarch_feature_detected;6 @MACRO_NAME: is_loongarch_feature_detected;
7 @MACRO_ATTRS:7 @MACRO_ATTRS:
8 /// Checks if `loongarch` feature is enabled.8 /// Checks if `loongarch` feature is enabled.
library/stdarch/crates/std_detect/src/detect/arch/mod.rs+1-1
...@@ -49,7 +49,7 @@ cfg_if! {...@@ -49,7 +49,7 @@ cfg_if! {
49 } else if #[cfg(target_arch = "mips64")] {49 } else if #[cfg(target_arch = "mips64")] {
50 #[unstable(feature = "stdarch_mips_feature_detection", issue = "111188")]50 #[unstable(feature = "stdarch_mips_feature_detection", issue = "111188")]
51 pub use mips64::*;51 pub use mips64::*;
52 } else if #[cfg(target_arch = "loongarch64")] {52 } else if #[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64"))] {
53 #[stable(feature = "stdarch_loongarch_feature", since = "1.89.0")]53 #[stable(feature = "stdarch_loongarch_feature", since = "1.89.0")]
54 pub use loongarch::*;54 pub use loongarch::*;
55 } else if #[cfg(target_arch = "s390x")] {55 } else if #[cfg(target_arch = "s390x")] {
library/stdarch/crates/std_detect/src/detect/mod.rs+1
...@@ -103,6 +103,7 @@ pub fn features() -> impl Iterator<Item = (&'static str, bool)> {...@@ -103,6 +103,7 @@ pub fn features() -> impl Iterator<Item = (&'static str, bool)> {
103 target_arch = "powerpc64",103 target_arch = "powerpc64",
104 target_arch = "mips",104 target_arch = "mips",
105 target_arch = "mips64",105 target_arch = "mips64",
106 target_arch = "loongarch32",
106 target_arch = "loongarch64",107 target_arch = "loongarch64",
107 target_arch = "s390x",108 target_arch = "s390x",
108 ))] {109 ))] {
library/stdarch/crates/std_detect/src/detect/os/linux/auxvec.rs+2
...@@ -80,6 +80,7 @@ pub(crate) fn auxv() -> Result<AuxVec, ()> {...@@ -80,6 +80,7 @@ pub(crate) fn auxv() -> Result<AuxVec, ()> {
80 target_arch = "riscv64",80 target_arch = "riscv64",
81 target_arch = "mips",81 target_arch = "mips",
82 target_arch = "mips64",82 target_arch = "mips64",
83 target_arch = "loongarch32",
83 target_arch = "loongarch64",84 target_arch = "loongarch64",
84 ))]85 ))]
85 {86 {
...@@ -182,6 +183,7 @@ fn auxv_from_buf(buf: &[usize]) -> Result<AuxVec, ()> {...@@ -182,6 +183,7 @@ fn auxv_from_buf(buf: &[usize]) -> Result<AuxVec, ()> {
182 target_arch = "riscv64",183 target_arch = "riscv64",
183 target_arch = "mips",184 target_arch = "mips",
184 target_arch = "mips64",185 target_arch = "mips64",
186 target_arch = "loongarch32",
185 target_arch = "loongarch64",187 target_arch = "loongarch64",
186 ))]188 ))]
187 {189 {
library/stdarch/crates/std_detect/src/detect/os/linux/mod.rs+1-1
...@@ -51,7 +51,7 @@ cfg_if::cfg_if! {...@@ -51,7 +51,7 @@ cfg_if::cfg_if! {
51 } else if #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] {51 } else if #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] {
52 mod powerpc;52 mod powerpc;
53 pub(crate) use self::powerpc::detect_features;53 pub(crate) use self::powerpc::detect_features;
54 } else if #[cfg(target_arch = "loongarch64")] {54 } else if #[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64"))] {
55 mod loongarch;55 mod loongarch;
56 pub(crate) use self::loongarch::detect_features;56 pub(crate) use self::loongarch::detect_features;
57 } else if #[cfg(target_arch = "s390x")] {57 } else if #[cfg(target_arch = "s390x")] {
library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs+5-3
...@@ -11,6 +11,7 @@...@@ -11,6 +11,7 @@
11 target_arch = "s390x",11 target_arch = "s390x",
12 target_arch = "riscv32",12 target_arch = "riscv32",
13 target_arch = "riscv64",13 target_arch = "riscv64",
14 target_arch = "loongarch32",
14 target_arch = "loongarch64"15 target_arch = "loongarch64"
15 ),16 ),
16 feature(stdarch_internal)17 feature(stdarch_internal)
...@@ -30,7 +31,7 @@...@@ -30,7 +31,7 @@
30 feature(stdarch_riscv_feature_detection)31 feature(stdarch_riscv_feature_detection)
31)]32)]
32#![cfg_attr(33#![cfg_attr(
33 target_arch = "loongarch64",34 any(target_arch = "loongarch32", target_arch = "loongarch64"),
34 feature(stdarch_loongarch_feature_detection)35 feature(stdarch_loongarch_feature_detection)
35)]36)]
3637
...@@ -45,6 +46,7 @@...@@ -45,6 +46,7 @@
45 target_arch = "s390x",46 target_arch = "s390x",
46 target_arch = "riscv32",47 target_arch = "riscv32",
47 target_arch = "riscv64",48 target_arch = "riscv64",
49 target_arch = "loongarch32",
48 target_arch = "loongarch64"50 target_arch = "loongarch64"
49))]51))]
50#[macro_use]52#[macro_use]
...@@ -65,8 +67,8 @@ fn aarch64() {...@@ -65,8 +67,8 @@ fn aarch64() {
65}67}
6668
67#[test]69#[test]
68#[cfg(target_arch = "loongarch64")]70#[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64"))]
69fn loongarch64() {71fn loongarch() {
70 let _ = is_loongarch_feature_detected!("lsx");72 let _ = is_loongarch_feature_detected!("lsx");
71 let _ = is_loongarch_feature_detected!("lsx",);73 let _ = is_loongarch_feature_detected!("lsx",);
72}74}
library/stdarch/crates/stdarch-gen-arm/Cargo.toml-1
...@@ -13,7 +13,6 @@ edition = "2024"...@@ -13,7 +13,6 @@ edition = "2024"
1313
14[dependencies]14[dependencies]
15itertools = "0.14.0"15itertools = "0.14.0"
16lazy_static = "1.4.0"
17proc-macro2 = "1.0"16proc-macro2 = "1.0"
18quote = "1.0"17quote = "1.0"
19regex = "1.5"18regex = "1.5"
library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml+66-128
...@@ -187,7 +187,7 @@ intrinsics:...@@ -187,7 +187,7 @@ intrinsics:
187 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]187 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
188 return_type: "{neon_type[1]}"188 return_type: "{neon_type[1]}"
189 attr: [*neon-stable]189 attr: [*neon-stable]
190 assert_instr: [sabdl]190 assert_instr: [sabdl2]
191 safety: safe191 safety: safe
192 types:192 types:
193 - [int8x16_t, int16x8_t, int8x8_t, uint8x8_t]193 - [int8x16_t, int16x8_t, int8x8_t, uint8x8_t]
...@@ -230,7 +230,7 @@ intrinsics:...@@ -230,7 +230,7 @@ intrinsics:
230 - stable230 - stable
231 - - 'feature = "neon_intrinsics"'231 - - 'feature = "neon_intrinsics"'
232 - 'since = "1.59.0"'232 - 'since = "1.59.0"'
233 assert_instr: [sabdl]233 assert_instr: [sabdl2]
234 safety: safe234 safety: safe
235 types:235 types:
236 - [int16x8_t, int32x4_t, int16x4_t, uint16x4_t]236 - [int16x8_t, int32x4_t, int16x4_t, uint16x4_t]
...@@ -273,7 +273,7 @@ intrinsics:...@@ -273,7 +273,7 @@ intrinsics:
273 - stable273 - stable
274 - - 'feature = "neon_intrinsics"'274 - - 'feature = "neon_intrinsics"'
275 - 'since = "1.59.0"'275 - 'since = "1.59.0"'
276 assert_instr: [sabdl]276 assert_instr: [sabdl2]
277 safety: safe277 safety: safe
278 types:278 types:
279 - [int32x4_t, int64x2_t, int32x2_t, uint32x2_t]279 - [int32x4_t, int64x2_t, int32x2_t, uint32x2_t]
...@@ -1462,7 +1462,7 @@ intrinsics:...@@ -1462,7 +1462,7 @@ intrinsics:
1462 arguments: ["a: {neon_type[0]}"]1462 arguments: ["a: {neon_type[0]}"]
1463 return_type: "{neon_type[1]}"1463 return_type: "{neon_type[1]}"
1464 attr:1464 attr:
1465 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl]]}]]1465 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl2]]}]]
1466 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1466 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
1467 safety: safe1467 safety: safe
1468 types:1468 types:
...@@ -1530,7 +1530,7 @@ intrinsics:...@@ -1530,7 +1530,7 @@ intrinsics:
1530 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]1530 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
1531 return_type: "{neon_type[2]}"1531 return_type: "{neon_type[2]}"
1532 attr:1532 attr:
1533 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn]]}]]1533 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn2]]}]]
1534 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1534 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
1535 safety: safe1535 safety: safe
1536 types:1536 types:
...@@ -1582,7 +1582,7 @@ intrinsics:...@@ -1582,7 +1582,7 @@ intrinsics:
1582 arguments: ["a: {type[0]}", "b: {neon_type[1]}"]1582 arguments: ["a: {type[0]}", "b: {neon_type[1]}"]
1583 return_type: "{type[2]}"1583 return_type: "{type[2]}"
1584 attr:1584 attr:
1585 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn]]}]]1585 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn2]]}]]
1586 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]1586 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
1587 safety: safe1587 safety: safe
1588 types:1588 types:
...@@ -5147,7 +5147,7 @@ intrinsics:...@@ -5147,7 +5147,7 @@ intrinsics:
5147 attr:5147 attr:
5148 - *neon-stable5148 - *neon-stable
5149 safety: safe5149 safety: safe
5150 assert_instr: [pmull]5150 assert_instr: [pmull2]
5151 types:5151 types:
5152 - [poly8x16_t, poly8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', poly16x8_t]5152 - [poly8x16_t, poly8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', poly16x8_t]
5153 compose:5153 compose:
...@@ -5169,7 +5169,7 @@ intrinsics:...@@ -5169,7 +5169,7 @@ intrinsics:
5169 - *neon-aes5169 - *neon-aes
5170 - *neon-stable5170 - *neon-stable
5171 safety: safe5171 safety: safe
5172 assert_instr: [pmull]5172 assert_instr: [pmull2]
5173 types:5173 types:
5174 - [poly64x2_t, "p128"]5174 - [poly64x2_t, "p128"]
5175 compose:5175 compose:
...@@ -5741,7 +5741,7 @@ intrinsics:...@@ -5741,7 +5741,7 @@ intrinsics:
5741 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]5741 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
5742 return_type: "{neon_type[0]}"5742 return_type: "{neon_type[0]}"
5743 attr: [*neon-stable]5743 attr: [*neon-stable]
5744 assert_instr: [ssubw]5744 assert_instr: [ssubw2]
5745 safety: safe5745 safety: safe
5746 types:5746 types:
5747 - [int16x8_t, int8x16_t, int8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']5747 - [int16x8_t, int8x16_t, int8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
...@@ -5762,7 +5762,7 @@ intrinsics:...@@ -5762,7 +5762,7 @@ intrinsics:
5762 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]5762 arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
5763 return_type: "{neon_type[0]}"5763 return_type: "{neon_type[0]}"
5764 attr: [*neon-stable]5764 attr: [*neon-stable]
5765 assert_instr: [usubw]5765 assert_instr: [usubw2]
5766 safety: safe5766 safety: safe
5767 types:5767 types:
5768 - [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']5768 - [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
...@@ -5783,7 +5783,7 @@ intrinsics:...@@ -5783,7 +5783,7 @@ intrinsics:
5783 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]5783 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
5784 return_type: "{neon_type[1]}"5784 return_type: "{neon_type[1]}"
5785 attr: [*neon-stable]5785 attr: [*neon-stable]
5786 assert_instr: [ssubl]5786 assert_instr: [ssubl2]
5787 safety: safe5787 safety: safe
5788 types:5788 types:
5789 - [int8x16_t, int16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t]5789 - [int8x16_t, int16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t]
...@@ -5813,7 +5813,7 @@ intrinsics:...@@ -5813,7 +5813,7 @@ intrinsics:
5813 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]5813 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
5814 return_type: "{neon_type[1]}"5814 return_type: "{neon_type[1]}"
5815 attr: [*neon-stable]5815 attr: [*neon-stable]
5816 assert_instr: [usubl]5816 assert_instr: [usubl2]
5817 safety: safe5817 safety: safe
5818 types:5818 types:
5819 - [uint8x16_t, uint16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', uint8x8_t]5819 - [uint8x16_t, uint16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', uint8x8_t]
...@@ -6580,7 +6580,6 @@ intrinsics:...@@ -6580,7 +6580,6 @@ intrinsics:
6580 arch: aarch64,arm64ec6580 arch: aarch64,arm64ec
65816581
65826582
6583
6584 - name: "vmaxnm{neon_type.no}"6583 - name: "vmaxnm{neon_type.no}"
6585 doc: Floating-point Maximum Number (vector)6584 doc: Floating-point Maximum Number (vector)
6586 arguments: ["a: {neon_type}", "b: {neon_type}"]6585 arguments: ["a: {neon_type}", "b: {neon_type}"]
...@@ -6592,11 +6591,7 @@ intrinsics:...@@ -6592,11 +6591,7 @@ intrinsics:
6592 - float64x1_t6591 - float64x1_t
6593 - float64x2_t6592 - float64x2_t
6594 compose:6593 compose:
6595 - LLVMLink:6594 - FnCall: [simd_fmax, [a, b]]
6596 name: "fmaxnm.{neon_type}"
6597 links:
6598 - link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
6599 arch: aarch64,arm64ec
66006595
66016596
6602 - name: "vmaxnmh_{type}"6597 - name: "vmaxnmh_{type}"
...@@ -6611,11 +6606,7 @@ intrinsics:...@@ -6611,11 +6606,7 @@ intrinsics:
6611 types:6606 types:
6612 - f166607 - f16
6613 compose:6608 compose:
6614 - LLVMLink:6609 - FnCall: ["f16::max", [a, b]]
6615 name: "vmaxh.{neon_type}"
6616 links:
6617 - link: "llvm.aarch64.neon.fmaxnm.{type}"
6618 arch: aarch64,arm64ec
66196610
66206611
6621 - name: "vminnmh_{type}"6612 - name: "vminnmh_{type}"
...@@ -6630,11 +6621,7 @@ intrinsics:...@@ -6630,11 +6621,7 @@ intrinsics:
6630 types:6621 types:
6631 - f166622 - f16
6632 compose:6623 compose:
6633 - LLVMLink:6624 - FnCall: ["f16::min", [a, b]]
6634 name: "vminh.{neon_type}"
6635 links:
6636 - link: "llvm.aarch64.neon.fminnm.{type}"
6637 arch: aarch64,arm64ec
66386625
66396626
6640 - name: "vmaxnmv{neon_type[0].no}"6627 - name: "vmaxnmv{neon_type[0].no}"
...@@ -6648,11 +6635,7 @@ intrinsics:...@@ -6648,11 +6635,7 @@ intrinsics:
6648 - [float32x2_t, f32]6635 - [float32x2_t, f32]
6649 - [float64x2_t, f64]6636 - [float64x2_t, f64]
6650 compose:6637 compose:
6651 - LLVMLink:6638 - FnCall: [simd_reduce_max, [a]]
6652 name: "fmaxnmv.{neon_type[0]}"
6653 links:
6654 - link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
6655 arch: aarch64,arm64ec
66566639
6657 - name: "vmaxnmv{neon_type[0].no}"6640 - name: "vmaxnmv{neon_type[0].no}"
6658 doc: Floating-point maximum number across vector6641 doc: Floating-point maximum number across vector
...@@ -6664,11 +6647,7 @@ intrinsics:...@@ -6664,11 +6647,7 @@ intrinsics:
6664 types:6647 types:
6665 - [float32x4_t, f32]6648 - [float32x4_t, f32]
6666 compose:6649 compose:
6667 - LLVMLink:6650 - FnCall: [simd_reduce_max, [a]]
6668 name: "fmaxnmv.{neon_type[0]}"
6669 links:
6670 - link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
6671 arch: aarch64,arm64ec
66726651
66736652
6674 - name: "vmaxnmv{neon_type[0].no}"6653 - name: "vmaxnmv{neon_type[0].no}"
...@@ -6684,11 +6663,7 @@ intrinsics:...@@ -6684,11 +6663,7 @@ intrinsics:
6684 - [float16x4_t, f16]6663 - [float16x4_t, f16]
6685 - [float16x8_t, f16]6664 - [float16x8_t, f16]
6686 compose:6665 compose:
6687 - LLVMLink:6666 - FnCall: [simd_reduce_max, [a]]
6688 name: "fmaxnmv.{neon_type[0]}"
6689 links:
6690 - link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
6691 arch: aarch64,arm64ec
66926667
66936668
6694 - name: "vminnmv{neon_type[0].no}"6669 - name: "vminnmv{neon_type[0].no}"
...@@ -6704,11 +6679,7 @@ intrinsics:...@@ -6704,11 +6679,7 @@ intrinsics:
6704 - [float16x4_t, f16]6679 - [float16x4_t, f16]
6705 - [float16x8_t, f16]6680 - [float16x8_t, f16]
6706 compose:6681 compose:
6707 - LLVMLink:6682 - FnCall: [simd_reduce_min, [a]]
6708 name: "fminnmv.{neon_type[0]}"
6709 links:
6710 - link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
6711 arch: aarch64,arm64ec
67126683
67136684
6714 - name: "vmaxv{neon_type[0].no}"6685 - name: "vmaxv{neon_type[0].no}"
...@@ -6814,11 +6785,7 @@ intrinsics:...@@ -6814,11 +6785,7 @@ intrinsics:
6814 - float64x1_t6785 - float64x1_t
6815 - float64x2_t6786 - float64x2_t
6816 compose:6787 compose:
6817 - LLVMLink:6788 - FnCall: [simd_fmin, [a, b]]
6818 name: "fminnm.{neon_type}"
6819 links:
6820 - link: "llvm.aarch64.neon.fminnm.{neon_type}"
6821 arch: aarch64,arm64ec
68226789
6823 - name: "vminnmv{neon_type[0].no}"6790 - name: "vminnmv{neon_type[0].no}"
6824 doc: "Floating-point minimum number across vector"6791 doc: "Floating-point minimum number across vector"
...@@ -6832,11 +6799,7 @@ intrinsics:...@@ -6832,11 +6799,7 @@ intrinsics:
6832 - [float32x2_t, "f32"]6799 - [float32x2_t, "f32"]
6833 - [float64x2_t, "f64"]6800 - [float64x2_t, "f64"]
6834 compose:6801 compose:
6835 - LLVMLink:6802 - FnCall: [simd_reduce_min, [a]]
6836 name: "vminnmv.{neon_type[0]}"
6837 links:
6838 - link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
6839 arch: aarch64,arm64ec
68406803
6841 - name: "vminnmv{neon_type[0].no}"6804 - name: "vminnmv{neon_type[0].no}"
6842 doc: "Floating-point minimum number across vector"6805 doc: "Floating-point minimum number across vector"
...@@ -6849,11 +6812,7 @@ intrinsics:...@@ -6849,11 +6812,7 @@ intrinsics:
6849 types:6812 types:
6850 - [float32x4_t, "f32"]6813 - [float32x4_t, "f32"]
6851 compose:6814 compose:
6852 - LLVMLink:6815 - FnCall: [simd_reduce_min, [a]]
6853 name: "vminnmv.{neon_type[0]}"
6854 links:
6855 - link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
6856 arch: aarch64,arm64ec
68576816
6858 - name: "vmovl_high{neon_type[0].noq}"6817 - name: "vmovl_high{neon_type[0].noq}"
6859 doc: Vector move6818 doc: Vector move
...@@ -9950,7 +9909,7 @@ intrinsics:...@@ -9950,7 +9909,7 @@ intrinsics:
9950 return_type: "{neon_type[0]}"9909 return_type: "{neon_type[0]}"
9951 attr:9910 attr:
9952 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]9911 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
9953 - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [uabal]]}]]9912 - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [uabal2]]}]]
9954 safety: safe9913 safety: safe
9955 types:9914 types:
9956 - [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', '[8, 9, 10, 11, 12, 13, 14, 15]']9915 - [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', '[8, 9, 10, 11, 12, 13, 14, 15]']
...@@ -9977,7 +9936,7 @@ intrinsics:...@@ -9977,7 +9936,7 @@ intrinsics:
9977 return_type: "{neon_type[0]}"9936 return_type: "{neon_type[0]}"
9978 attr:9937 attr:
9979 - *neon-stable9938 - *neon-stable
9980 - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [sabal]]}]]9939 - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [sabal2]]}]]
9981 safety: safe9940 safety: safe
9982 types:9941 types:
9983 - [int16x8_t, int8x16_t, int8x16_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t, uint8x8_t]9942 - [int16x8_t, int8x16_t, int8x16_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t, uint8x8_t]
...@@ -11386,7 +11345,7 @@ intrinsics:...@@ -11386,7 +11345,7 @@ intrinsics:
11386 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]11345 arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
11387 return_type: "{neon_type[1]}"11346 return_type: "{neon_type[1]}"
11388 attr:11347 attr:
11389 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [uabdl]]}]]11348 - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [uabdl2]]}]]
11390 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]11349 - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
11391 safety: safe11350 safety: safe
11392 types:11351 types:
...@@ -13023,6 +12982,26 @@ intrinsics:...@@ -13023,6 +12982,26 @@ intrinsics:
13023 - link: "llvm.aarch64.crc32cx"12982 - link: "llvm.aarch64.crc32cx"
13024 arch: aarch64,arm64ec12983 arch: aarch64,arm64ec
1302512984
12985 - name: "vabsd_s64"
12986 doc: "Absolute Value (wrapping)."
12987 arguments: ["a: {type[1]}"]
12988 return_type: "{type[1]}"
12989 attr:
12990 - *neon-stable
12991 assert_instr: [abs]
12992 safety: safe
12993 types:
12994 - [i64, i64]
12995 compose:
12996 # This is behaviorally equivalent to `i64::wrapping_abs`, but keeps the value in a SIMD
12997 # register. That can be beneficial when combined with other instructions. This LLVM
12998 # issue provides some extra context https://github.com/llvm/llvm-project/issues/148388.
12999 - LLVMLink:
13000 name: "vabsd_s64"
13001 links:
13002 - link: "llvm.aarch64.neon.abs.i64"
13003 arch: aarch64,arm64ec
13004
13026 - name: "{type[0]}"13005 - name: "{type[0]}"
13027 doc: "Absolute Value (wrapping)."13006 doc: "Absolute Value (wrapping)."
13028 arguments: ["a: {type[1]}"]13007 arguments: ["a: {type[1]}"]
...@@ -13032,15 +13011,18 @@ intrinsics:...@@ -13032,15 +13011,18 @@ intrinsics:
13032 assert_instr: [abs]13011 assert_instr: [abs]
13033 safety: safe13012 safety: safe
13034 types:13013 types:
13035 - ['vabsd_s64', i64, i64]
13036 - ['vabs_s64', int64x1_t, v1i64]13014 - ['vabs_s64', int64x1_t, v1i64]
13037 - ['vabsq_s64', int64x2_t, v2i64]13015 - ['vabsq_s64', int64x2_t, v2i64]
13038 compose:13016 compose:
13039 - LLVMLink:13017 - Let:
13040 name: "{type[0]}"13018 - neg
13041 links:13019 - "{type[1]}"
13042 - link: "llvm.aarch64.neon.abs.{type[2]}"13020 - FnCall: [simd_neg, [a]]
13043 arch: aarch64,arm64ec13021 - Let:
13022 - mask
13023 - "{type[1]}"
13024 - FnCall: [simd_ge, [a, neg]]
13025 - FnCall: [simd_select, [mask, a, neg]]
1304413026
13045 - name: "vuqadd{neon_type[0].no}"13027 - name: "vuqadd{neon_type[0].no}"
13046 doc: "Signed saturating Accumulate of Unsigned value."13028 doc: "Signed saturating Accumulate of Unsigned value."
...@@ -13142,11 +13124,7 @@ intrinsics:...@@ -13142,11 +13124,7 @@ intrinsics:
13142 types:13124 types:
13143 - [int64x2_t, i64]13125 - [int64x2_t, i64]
13144 compose:13126 compose:
13145 - FnCall:13127 - FnCall: [simd_reduce_add_unordered, [a]]
13146 - transmute
13147 - - FnCall:
13148 - "vaddvq_u64"
13149 - - FnCall: [transmute, [a]]
1315013128
13151 - name: "vpaddd_u64"13129 - name: "vpaddd_u64"
13152 doc: "Add pairwise"13130 doc: "Add pairwise"
...@@ -13159,7 +13137,7 @@ intrinsics:...@@ -13159,7 +13137,7 @@ intrinsics:
13159 types:13137 types:
13160 - [uint64x2_t, u64]13138 - [uint64x2_t, u64]
13161 compose:13139 compose:
13162 - FnCall: [vaddvq_u64, [a]]13140 - FnCall: [simd_reduce_add_unordered, [a]]
1316313141
13164 - name: "vaddv{neon_type[0].no}"13142 - name: "vaddv{neon_type[0].no}"
13165 doc: "Add across vector"13143 doc: "Add across vector"
...@@ -13176,11 +13154,7 @@ intrinsics:...@@ -13176,11 +13154,7 @@ intrinsics:
13176 - [int16x8_t, i16]13154 - [int16x8_t, i16]
13177 - [int32x4_t, i32]13155 - [int32x4_t, i32]
13178 compose:13156 compose:
13179 - LLVMLink:13157 - FnCall: [simd_reduce_add_unordered, [a]]
13180 name: "vaddv{neon_type[0].no}"
13181 links:
13182 - link: "llvm.aarch64.neon.saddv.{type[1]}.{neon_type[0]}"
13183 arch: aarch64,arm64ec
1318413158
13185 - name: "vaddv{neon_type[0].no}"13159 - name: "vaddv{neon_type[0].no}"
13186 doc: "Add across vector"13160 doc: "Add across vector"
...@@ -13193,11 +13167,7 @@ intrinsics:...@@ -13193,11 +13167,7 @@ intrinsics:
13193 types:13167 types:
13194 - [int32x2_t, i32]13168 - [int32x2_t, i32]
13195 compose:13169 compose:
13196 - LLVMLink:13170 - FnCall: [simd_reduce_add_unordered, [a]]
13197 name: "vaddv{neon_type[0].no}"
13198 links:
13199 - link: "llvm.aarch64.neon.saddv.i32.{neon_type[0]}"
13200 arch: aarch64,arm64ec
1320113171
13202 - name: "vaddv{neon_type[0].no}"13172 - name: "vaddv{neon_type[0].no}"
13203 doc: "Add across vector"13173 doc: "Add across vector"
...@@ -13210,11 +13180,7 @@ intrinsics:...@@ -13210,11 +13180,7 @@ intrinsics:
13210 types:13180 types:
13211 - [int64x2_t, i64]13181 - [int64x2_t, i64]
13212 compose:13182 compose:
13213 - LLVMLink:13183 - FnCall: [simd_reduce_add_unordered, [a]]
13214 name: "vaddv{neon_type[0].no}"
13215 links:
13216 - link: "llvm.aarch64.neon.saddv.i64.{neon_type[0]}"
13217 arch: aarch64,arm64ec
1321813184
13219 - name: "vaddv{neon_type[0].no}"13185 - name: "vaddv{neon_type[0].no}"
13220 doc: "Add across vector"13186 doc: "Add across vector"
...@@ -13231,11 +13197,7 @@ intrinsics:...@@ -13231,11 +13197,7 @@ intrinsics:
13231 - [uint16x8_t, u16]13197 - [uint16x8_t, u16]
13232 - [uint32x4_t, u32]13198 - [uint32x4_t, u32]
13233 compose:13199 compose:
13234 - LLVMLink:13200 - FnCall: [simd_reduce_add_unordered, [a]]
13235 name: "vaddv{neon_type[0].no}"
13236 links:
13237 - link: "llvm.aarch64.neon.uaddv.{type[1]}.{neon_type[0]}"
13238 arch: aarch64,arm64ec
1323913201
13240 - name: "vaddv{neon_type[0].no}"13202 - name: "vaddv{neon_type[0].no}"
13241 doc: "Add across vector"13203 doc: "Add across vector"
...@@ -13248,11 +13210,7 @@ intrinsics:...@@ -13248,11 +13210,7 @@ intrinsics:
13248 types:13210 types:
13249 - [uint32x2_t, u32, i32]13211 - [uint32x2_t, u32, i32]
13250 compose:13212 compose:
13251 - LLVMLink:13213 - FnCall: [simd_reduce_add_unordered, [a]]
13252 name: "vaddv{neon_type[0].no}"
13253 links:
13254 - link: "llvm.aarch64.neon.uaddv.{type[2]}.{neon_type[0]}"
13255 arch: aarch64,arm64ec
1325613214
13257 - name: "vaddv{neon_type[0].no}"13215 - name: "vaddv{neon_type[0].no}"
13258 doc: "Add across vector"13216 doc: "Add across vector"
...@@ -13265,11 +13223,7 @@ intrinsics:...@@ -13265,11 +13223,7 @@ intrinsics:
13265 types:13223 types:
13266 - [uint64x2_t, u64, i64]13224 - [uint64x2_t, u64, i64]
13267 compose:13225 compose:
13268 - LLVMLink:13226 - FnCall: [simd_reduce_add_unordered, [a]]
13269 name: "vaddv{neon_type[0].no}"
13270 links:
13271 - link: "llvm.aarch64.neon.uaddv.{type[2]}.{neon_type[0]}"
13272 arch: aarch64,arm64ec
1327313227
13274 - name: "vaddlv{neon_type[0].no}"13228 - name: "vaddlv{neon_type[0].no}"
13275 doc: "Signed Add Long across Vector"13229 doc: "Signed Add Long across Vector"
...@@ -13327,11 +13281,7 @@ intrinsics:...@@ -13327,11 +13281,7 @@ intrinsics:
13327 - [int16x8_t, i16, 'smaxv']13281 - [int16x8_t, i16, 'smaxv']
13328 - [int32x4_t, i32, 'smaxv']13282 - [int32x4_t, i32, 'smaxv']
13329 compose:13283 compose:
13330 - LLVMLink:13284 - FnCall: [simd_reduce_max, [a]]
13331 name: "vmaxv{neon_type[0].no}"
13332 links:
13333 - link: "llvm.aarch64.neon.smaxv.{type[1]}.{neon_type[0]}"
13334 arch: aarch64,arm64ec
1333513285
13336 - name: "vmaxv{neon_type[0].no}"13286 - name: "vmaxv{neon_type[0].no}"
13337 doc: "Horizontal vector max."13287 doc: "Horizontal vector max."
...@@ -13349,11 +13299,7 @@ intrinsics:...@@ -13349,11 +13299,7 @@ intrinsics:
13349 - [uint16x8_t, u16, 'umaxv']13299 - [uint16x8_t, u16, 'umaxv']
13350 - [uint32x4_t, u32, 'umaxv']13300 - [uint32x4_t, u32, 'umaxv']
13351 compose:13301 compose:
13352 - LLVMLink:13302 - FnCall: [simd_reduce_max, [a]]
13353 name: "vmaxv{neon_type[0].no}"
13354 links:
13355 - link: "llvm.aarch64.neon.umaxv.{type[1]}.{neon_type[0]}"
13356 arch: aarch64,arm64ec
1335713303
13358 - name: "vmaxv{neon_type[0].no}"13304 - name: "vmaxv{neon_type[0].no}"
13359 doc: "Horizontal vector max."13305 doc: "Horizontal vector max."
...@@ -13390,11 +13336,7 @@ intrinsics:...@@ -13390,11 +13336,7 @@ intrinsics:
13390 - [int16x8_t, i16, 'sminv']13336 - [int16x8_t, i16, 'sminv']
13391 - [int32x4_t, i32, 'sminv']13337 - [int32x4_t, i32, 'sminv']
13392 compose:13338 compose:
13393 - LLVMLink:13339 - FnCall: [simd_reduce_min, [a]]
13394 name: "vminv{neon_type[0].no}"
13395 links:
13396 - link: "llvm.aarch64.neon.sminv.{type[1]}.{neon_type[0]}"
13397 arch: aarch64,arm64ec
1339813340
13399 - name: "vminv{neon_type[0].no}"13341 - name: "vminv{neon_type[0].no}"
13400 doc: "Horizontal vector min."13342 doc: "Horizontal vector min."
...@@ -13412,11 +13354,7 @@ intrinsics:...@@ -13412,11 +13354,7 @@ intrinsics:
13412 - [uint16x8_t, u16, 'uminv']13354 - [uint16x8_t, u16, 'uminv']
13413 - [uint32x4_t, u32, 'uminv']13355 - [uint32x4_t, u32, 'uminv']
13414 compose:13356 compose:
13415 - LLVMLink:13357 - FnCall: [simd_reduce_min, [a]]
13416 name: "vminv{neon_type[0].no}"
13417 links:
13418 - link: "llvm.aarch64.neon.uminv.{type[1]}.{neon_type[0]}"
13419 arch: aarch64,arm64ec
1342013358
13421 - name: "vminv{neon_type[0].no}"13359 - name: "vminv{neon_type[0].no}"
13422 doc: "Horizontal vector min."13360 doc: "Horizontal vector min."
library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml+85-119
...@@ -7135,13 +7135,8 @@ intrinsics:...@@ -7135,13 +7135,8 @@ intrinsics:
7135 - int32x2_t7135 - int32x2_t
7136 - int32x4_t7136 - int32x4_t
7137 compose:7137 compose:
7138 - LLVMLink:7138 - Let: [mask, "{neon_type}", {FnCall: [simd_ge, [a, b]]}]
7139 name: "smax.{neon_type}"7139 - FnCall: [simd_select, [mask, a, b]]
7140 links:
7141 - link: "llvm.arm.neon.vmaxs.{neon_type}"
7142 arch: arm
7143 - link: "llvm.aarch64.neon.smax.{neon_type}"
7144 arch: aarch64,arm64ec
71457140
7146 - name: "vmax{neon_type.no}"7141 - name: "vmax{neon_type.no}"
7147 doc: Maximum (vector)7142 doc: Maximum (vector)
...@@ -7162,13 +7157,8 @@ intrinsics:...@@ -7162,13 +7157,8 @@ intrinsics:
7162 - uint32x2_t7157 - uint32x2_t
7163 - uint32x4_t7158 - uint32x4_t
7164 compose:7159 compose:
7165 - LLVMLink:7160 - Let: [mask, "{neon_type}", {FnCall: [simd_ge, [a, b]]}]
7166 name: "smax.{neon_type}"7161 - FnCall: [simd_select, [mask, a, b]]
7167 links:
7168 - link: "llvm.arm.neon.vmaxu.{neon_type}"
7169 arch: arm
7170 - link: "llvm.aarch64.neon.umax.{neon_type}"
7171 arch: aarch64,arm64ec
71727162
7173 - name: "vmax{neon_type.no}"7163 - name: "vmax{neon_type.no}"
7174 doc: Maximum (vector)7164 doc: Maximum (vector)
...@@ -7233,13 +7223,7 @@ intrinsics:...@@ -7233,13 +7223,7 @@ intrinsics:
7233 - float32x2_t7223 - float32x2_t
7234 - float32x4_t7224 - float32x4_t
7235 compose:7225 compose:
7236 - LLVMLink:7226 - FnCall: [simd_fmax, [a, b]]
7237 name: "fmaxnm.{neon_type}"
7238 links:
7239 - link: "llvm.arm.neon.vmaxnm.{neon_type}"
7240 arch: arm
7241 - link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
7242 arch: aarch64,arm64ec
72437227
72447228
7245 - name: "vmaxnm{neon_type.no}"7229 - name: "vmaxnm{neon_type.no}"
...@@ -7257,13 +7241,7 @@ intrinsics:...@@ -7257,13 +7241,7 @@ intrinsics:
7257 - float16x4_t7241 - float16x4_t
7258 - float16x8_t7242 - float16x8_t
7259 compose:7243 compose:
7260 - LLVMLink:7244 - FnCall: [simd_fmax, [a, b]]
7261 name: "fmaxnm.{neon_type}"
7262 links:
7263 - link: "llvm.arm.neon.vmaxnm.{neon_type}"
7264 arch: arm
7265 - link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
7266 arch: aarch64,arm64ec
72677245
72687246
7269 - name: "vminnm{neon_type.no}"7247 - name: "vminnm{neon_type.no}"
...@@ -7281,13 +7259,7 @@ intrinsics:...@@ -7281,13 +7259,7 @@ intrinsics:
7281 - float16x4_t7259 - float16x4_t
7282 - float16x8_t7260 - float16x8_t
7283 compose:7261 compose:
7284 - LLVMLink:7262 - FnCall: [simd_fmin, [a, b]]
7285 name: "fminnm.{neon_type}"
7286 links:
7287 - link: "llvm.arm.neon.vminnm.{neon_type}"
7288 arch: arm
7289 - link: "llvm.aarch64.neon.fminnm.{neon_type}"
7290 arch: aarch64,arm64ec
72917263
72927264
7293 - name: "vmin{neon_type.no}"7265 - name: "vmin{neon_type.no}"
...@@ -7309,13 +7281,8 @@ intrinsics:...@@ -7309,13 +7281,8 @@ intrinsics:
7309 - int32x2_t7281 - int32x2_t
7310 - int32x4_t7282 - int32x4_t
7311 compose:7283 compose:
7312 - LLVMLink:7284 - Let: [mask, "{neon_type}", {FnCall: [simd_le, [a, b]]}]
7313 name: "smin.{neon_type}"7285 - FnCall: [simd_select, [mask, a, b]]
7314 links:
7315 - link: "llvm.arm.neon.vmins.{neon_type}"
7316 arch: arm
7317 - link: "llvm.aarch64.neon.smin.{neon_type}"
7318 arch: aarch64,arm64ec
73197286
7320 - name: "vmin{neon_type.no}"7287 - name: "vmin{neon_type.no}"
7321 doc: "Minimum (vector)"7288 doc: "Minimum (vector)"
...@@ -7336,13 +7303,8 @@ intrinsics:...@@ -7336,13 +7303,8 @@ intrinsics:
7336 - uint32x2_t7303 - uint32x2_t
7337 - uint32x4_t7304 - uint32x4_t
7338 compose:7305 compose:
7339 - LLVMLink:7306 - Let: [mask, "{neon_type}", {FnCall: [simd_le, [a, b]]}]
7340 name: "umin.{neon_type}"7307 - FnCall: [simd_select, [mask, a, b]]
7341 links:
7342 - link: "llvm.arm.neon.vminu.{neon_type}"
7343 arch: arm
7344 - link: "llvm.aarch64.neon.umin.{neon_type}"
7345 arch: aarch64,arm64ec
73467308
7347 - name: "vmin{neon_type.no}"7309 - name: "vmin{neon_type.no}"
7348 doc: "Minimum (vector)"7310 doc: "Minimum (vector)"
...@@ -7408,13 +7370,7 @@ intrinsics:...@@ -7408,13 +7370,7 @@ intrinsics:
7408 - float32x2_t7370 - float32x2_t
7409 - float32x4_t7371 - float32x4_t
7410 compose:7372 compose:
7411 - LLVMLink:7373 - FnCall: [simd_fmin, [a, b]]
7412 name: "fminnm.{neon_type}"
7413 links:
7414 - link: "llvm.arm.neon.vminnm.{neon_type}"
7415 arch: arm
7416 - link: "llvm.aarch64.neon.fminnm.{neon_type}"
7417 arch: aarch64,arm64ec
74187374
7419 - name: "vpadd{neon_type.no}"7375 - name: "vpadd{neon_type.no}"
7420 doc: Floating-point add pairwise7376 doc: Floating-point add pairwise
...@@ -7874,9 +7830,9 @@ intrinsics:...@@ -7874,9 +7830,9 @@ intrinsics:
7874 static_defs: ['const N: i32']7830 static_defs: ['const N: i32']
7875 safety: safe7831 safety: safe
7876 types:7832 types:
7877 - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']7833 - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
7878 - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']7834 - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
7879 - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']7835 - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
7880 compose:7836 compose:
7881 - FnCall: [static_assert!, ["{type[2]}"]]7837 - FnCall: [static_assert!, ["{type[2]}"]]
7882 - LLVMLink:7838 - LLVMLink:
...@@ -7929,9 +7885,9 @@ intrinsics:...@@ -7929,9 +7885,9 @@ intrinsics:
7929 static_defs: ['const N: i32']7885 static_defs: ['const N: i32']
7930 safety: safe7886 safety: safe
7931 types:7887 types:
7932 - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']7888 - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
7933 - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']7889 - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
7934 - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']7890 - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
7935 compose:7891 compose:
7936 - FnCall: [static_assert!, ["{type[2]}"]]7892 - FnCall: [static_assert!, ["{type[2]}"]]
7937 - LLVMLink:7893 - LLVMLink:
...@@ -8105,9 +8061,9 @@ intrinsics:...@@ -8105,9 +8061,9 @@ intrinsics:
8105 static_defs: ['const N: i32']8061 static_defs: ['const N: i32']
8106 safety: safe8062 safety: safe
8107 types:8063 types:
8108 - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']8064 - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
8109 - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']8065 - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
8110 - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']8066 - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
8111 compose:8067 compose:
8112 - FnCall: [static_assert!, ["{type[2]}"]]8068 - FnCall: [static_assert!, ["{type[2]}"]]
8113 - LLVMLink:8069 - LLVMLink:
...@@ -8215,9 +8171,9 @@ intrinsics:...@@ -8215,9 +8171,9 @@ intrinsics:
8215 static_defs: ['const N: i32']8171 static_defs: ['const N: i32']
8216 safety: safe8172 safety: safe
8217 types:8173 types:
8218 - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']8174 - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
8219 - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']8175 - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
8220 - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']8176 - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
8221 compose:8177 compose:
8222 - FnCall: [static_assert!, ["{type[2]}"]]8178 - FnCall: [static_assert!, ["{type[2]}"]]
8223 - LLVMLink:8179 - LLVMLink:
...@@ -8939,9 +8895,9 @@ intrinsics:...@@ -8939,9 +8895,9 @@ intrinsics:
8939 static_defs: ['const N: i32']8895 static_defs: ['const N: i32']
8940 safety: safe8896 safety: safe
8941 types:8897 types:
8942 - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']8898 - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
8943 - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']8899 - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
8944 - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']8900 - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
8945 compose:8901 compose:
8946 - FnCall: [static_assert!, ["{type[2]}"]]8902 - FnCall: [static_assert!, ["{type[2]}"]]
8947 - LLVMLink:8903 - LLVMLink:
...@@ -9576,7 +9532,8 @@ intrinsics:...@@ -9576,7 +9532,8 @@ intrinsics:
9576 attr:9532 attr:
9577 - *neon-v79533 - *neon-v7
9578 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]9534 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
9579 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn]]}]]9535 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn1]]}]]
9536 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn2]]}]]
9580 - *neon-not-arm-stable9537 - *neon-not-arm-stable
9581 - *neon-cfg-arm-unstable9538 - *neon-cfg-arm-unstable
9582 safety: safe9539 safety: safe
...@@ -9617,7 +9574,8 @@ intrinsics:...@@ -9617,7 +9574,8 @@ intrinsics:
9617 attr:9574 attr:
9618 - *neon-v79575 - *neon-v7
9619 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]9576 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
9620 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn]]}]]9577 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn1]]}]]
9578 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn2]]}]]
9621 - *neon-fp169579 - *neon-fp16
9622 - *neon-unstable-f169580 - *neon-unstable-f16
9623 safety: safe9581 safety: safe
...@@ -9645,7 +9603,8 @@ intrinsics:...@@ -9645,7 +9603,8 @@ intrinsics:
9645 attr:9603 attr:
9646 - *neon-v79604 - *neon-v7
9647 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]9605 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
9648 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]9606 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
9607 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
9649 - *neon-not-arm-stable9608 - *neon-not-arm-stable
9650 - *neon-cfg-arm-unstable9609 - *neon-cfg-arm-unstable
9651 safety: safe9610 safety: safe
...@@ -9673,7 +9632,8 @@ intrinsics:...@@ -9673,7 +9632,8 @@ intrinsics:
9673 attr:9632 attr:
9674 - *neon-v79633 - *neon-v7
9675 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vorr]]}]]9634 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vorr]]}]]
9676 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]9635 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
9636 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
9677 - *neon-not-arm-stable9637 - *neon-not-arm-stable
9678 - *neon-cfg-arm-unstable9638 - *neon-cfg-arm-unstable
9679 safety: safe9639 safety: safe
...@@ -9707,7 +9667,8 @@ intrinsics:...@@ -9707,7 +9667,8 @@ intrinsics:
9707 attr:9667 attr:
9708 - *neon-v79668 - *neon-v7
9709 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]9669 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
9710 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]9670 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
9671 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
9711 - *neon-not-arm-stable9672 - *neon-not-arm-stable
9712 - *neon-cfg-arm-unstable9673 - *neon-cfg-arm-unstable
9713 safety: safe9674 safety: safe
...@@ -9735,7 +9696,8 @@ intrinsics:...@@ -9735,7 +9696,8 @@ intrinsics:
9735 attr:9696 attr:
9736 - *neon-v79697 - *neon-v7
9737 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vzip]]}]]9698 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vzip]]}]]
9738 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]9699 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
9700 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
9739 - *neon-not-arm-stable9701 - *neon-not-arm-stable
9740 - *neon-cfg-arm-unstable9702 - *neon-cfg-arm-unstable
9741 safety: safe9703 safety: safe
...@@ -9767,7 +9729,8 @@ intrinsics:...@@ -9767,7 +9729,8 @@ intrinsics:
9767 attr:9729 attr:
9768 - *neon-v79730 - *neon-v7
9769 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vzip.16"']]}]]9731 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vzip.16"']]}]]
9770 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]9732 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
9733 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
9771 - *neon-fp169734 - *neon-fp16
9772 - *neon-unstable-f169735 - *neon-unstable-f16
9773 safety: safe9736 safety: safe
...@@ -9794,7 +9757,8 @@ intrinsics:...@@ -9794,7 +9757,8 @@ intrinsics:
9794 attr:9757 attr:
9795 - *neon-v79758 - *neon-v7
9796 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vuzp]]}]]9759 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vuzp]]}]]
9797 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp]]}]]9760 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp1]]}]]
9761 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp2]]}]]
9798 - *neon-not-arm-stable9762 - *neon-not-arm-stable
9799 - *neon-cfg-arm-unstable9763 - *neon-cfg-arm-unstable
9800 safety: safe9764 safety: safe
...@@ -9835,7 +9799,8 @@ intrinsics:...@@ -9835,7 +9799,8 @@ intrinsics:
9835 attr:9799 attr:
9836 - *neon-v79800 - *neon-v7
9837 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vuzp]]}]]9801 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vuzp]]}]]
9838 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp]]}]]9802 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp1]]}]]
9803 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp2]]}]]
9839 - *neon-fp169804 - *neon-fp16
9840 - *neon-unstable-f169805 - *neon-unstable-f16
9841 safety: safe9806 safety: safe
...@@ -9863,7 +9828,8 @@ intrinsics:...@@ -9863,7 +9828,8 @@ intrinsics:
9863 attr:9828 attr:
9864 - *neon-v79829 - *neon-v7
9865 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]9830 - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
9866 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]9831 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
9832 - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
9867 - *neon-not-arm-stable9833 - *neon-not-arm-stable
9868 - *neon-cfg-arm-unstable9834 - *neon-cfg-arm-unstable
9869 safety: safe9835 safety: safe
...@@ -12881,13 +12847,16 @@ intrinsics:...@@ -12881,13 +12847,16 @@ intrinsics:
12881 - int16x8_t12847 - int16x8_t
12882 - int32x4_t12848 - int32x4_t
12883 compose:12849 compose:
12884 - LLVMLink:12850 - Let:
12885 name: "vabs{neon_type.no}"12851 - neg
12886 links:12852 - "{neon_type}"
12887 - link: "llvm.aarch64.neon.abs.{neon_type}"12853 - FnCall: [simd_neg, [a]]
12888 arch: aarch64,arm64ec12854 - Let:
12889 - link: "llvm.arm.neon.vabs.{neon_type}"12855 - mask
12890 arch: arm12856 - "{neon_type}"
12857 - FnCall: [simd_ge, [a, neg]]
12858 - FnCall: [simd_select, [mask, a, neg]]
12859
1289112860
12892 - name: "vpmin{neon_type.no}"12861 - name: "vpmin{neon_type.no}"
12893 doc: "Folding minimum of adjacent pairs"12862 doc: "Folding minimum of adjacent pairs"
...@@ -13862,8 +13831,8 @@ intrinsics:...@@ -13862,8 +13831,8 @@ intrinsics:
13862 - [int8x16_t, '8', '1 <= N && N <= 8', 'v16i8', 'int8x16_t::splat', '-N as i8']13831 - [int8x16_t, '8', '1 <= N && N <= 8', 'v16i8', 'int8x16_t::splat', '-N as i8']
13863 - [int16x4_t, '16', '1 <= N && N <= 16', 'v4i16', 'int16x4_t::splat', '-N as i16']13832 - [int16x4_t, '16', '1 <= N && N <= 16', 'v4i16', 'int16x4_t::splat', '-N as i16']
13864 - [int16x8_t, '16', '1 <= N && N <= 16', 'v8i16', 'int16x8_t::splat', '-N as i16']13833 - [int16x8_t, '16', '1 <= N && N <= 16', 'v8i16', 'int16x8_t::splat', '-N as i16']
13865 - [int32x2_t, '32', '1 <= N && N <= 32', 'v2i32', 'int32x2_t::splat', '-N as i32']13834 - [int32x2_t, '32', '1 <= N && N <= 32', 'v2i32', 'int32x2_t::splat', '-N']
13866 - [int32x4_t, '32', '1 <= N && N <= 32', 'v4i32', 'int32x4_t::splat', '-N as i32']13835 - [int32x4_t, '32', '1 <= N && N <= 32', 'v4i32', 'int32x4_t::splat', '-N']
13867 - [int64x1_t, '64', '1 <= N && N <= 64', 'v1i64', 'int64x1_t::splat', '-N as i64']13836 - [int64x1_t, '64', '1 <= N && N <= 64', 'v1i64', 'int64x1_t::splat', '-N as i64']
13868 - [int64x2_t, '64', '1 <= N && N <= 64', 'v2i64', 'int64x2_t::splat', '-N as i64']13837 - [int64x2_t, '64', '1 <= N && N <= 64', 'v2i64', 'int64x2_t::splat', '-N as i64']
13869 compose:13838 compose:
...@@ -13891,8 +13860,8 @@ intrinsics:...@@ -13891,8 +13860,8 @@ intrinsics:
13891 - [uint8x16_t, "neon,v7", '8', 'static_assert_uimm_bits!', 'N, 3', 'v16i8', 'int8x16_t::splat', 'N as i8']13860 - [uint8x16_t, "neon,v7", '8', 'static_assert_uimm_bits!', 'N, 3', 'v16i8', 'int8x16_t::splat', 'N as i8']
13892 - [uint16x4_t, "neon,v7", '16', 'static_assert_uimm_bits!', 'N, 4', 'v4i16', 'int16x4_t::splat', 'N as i16']13861 - [uint16x4_t, "neon,v7", '16', 'static_assert_uimm_bits!', 'N, 4', 'v4i16', 'int16x4_t::splat', 'N as i16']
13893 - [uint16x8_t, "neon,v7", '16', 'static_assert_uimm_bits!', 'N, 4', 'v8i16', 'int16x8_t::splat', 'N as i16']13862 - [uint16x8_t, "neon,v7", '16', 'static_assert_uimm_bits!', 'N, 4', 'v8i16', 'int16x8_t::splat', 'N as i16']
13894 - [uint32x2_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v2i32', 'int32x2_t::splat', 'N as i32']13863 - [uint32x2_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v2i32', 'int32x2_t::splat', 'N']
13895 - [uint32x4_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v4i32', 'int32x4_t::splat', 'N as i32']13864 - [uint32x4_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v4i32', 'int32x4_t::splat', 'N']
13896 - [uint64x1_t, "neon,v7", '64', 'static_assert!', 'N >= 0 && N <= 63', 'v1i64', 'int64x1_t::splat', 'N as i64']13865 - [uint64x1_t, "neon,v7", '64', 'static_assert!', 'N >= 0 && N <= 63', 'v1i64', 'int64x1_t::splat', 'N as i64']
13897 - [uint64x2_t, "neon,v7", '64', 'static_assert!', 'N >= 0 && N <= 63', 'v2i64', 'int64x2_t::splat', 'N as i64']13866 - [uint64x2_t, "neon,v7", '64', 'static_assert!', 'N >= 0 && N <= 63', 'v2i64', 'int64x2_t::splat', 'N as i64']
13898 - [poly8x8_t, "neon,v7", '8', 'static_assert_uimm_bits!', 'N, 3', 'v8i8', 'int8x8_t::splat', 'N as i8']13867 - [poly8x8_t, "neon,v7", '8', 'static_assert_uimm_bits!', 'N, 3', 'v8i8', 'int8x8_t::splat', 'N as i8']
...@@ -14138,6 +14107,7 @@ intrinsics:...@@ -14138,6 +14107,7 @@ intrinsics:
14138 doc: "Load one single-element structure and Replicate to all lanes (of one register)."14107 doc: "Load one single-element structure and Replicate to all lanes (of one register)."
14139 arguments: ["ptr: {type[1]}"]14108 arguments: ["ptr: {type[1]}"]
14140 return_type: "{neon_type[2]}"14109 return_type: "{neon_type[2]}"
14110 big_endian_inverse: false
14141 attr:14111 attr:
14142 - *neon-v714112 - *neon-v7
14143 - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['"{type[3]}"']] } ]]14113 - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['"{type[3]}"']] } ]]
...@@ -14147,40 +14117,36 @@ intrinsics:...@@ -14147,40 +14117,36 @@ intrinsics:
14147 safety:14117 safety:
14148 unsafe: [neon]14118 unsafe: [neon]
14149 types:14119 types:
14150 - ['vld1_dup_s8', '*const i8', 'int8x8_t', 'vld1.8', 'ld1r', 'vld1_lane_s8::<0>', 'i8x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']14120 - ['vld1_dup_s8', '*const i8', 'int8x8_t', 'vld1.8', 'ld1r', 'i8x8::splat']
14151 - ['vld1_dup_u8', '*const u8', 'uint8x8_t', 'vld1.8', 'ld1r', 'vld1_lane_u8::<0>', 'u8x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']14121 - ['vld1_dup_u8', '*const u8', 'uint8x8_t', 'vld1.8', 'ld1r', 'u8x8::splat']
14152 - ['vld1_dup_p8', '*const p8', 'poly8x8_t', 'vld1.8', 'ld1r', 'vld1_lane_p8::<0>', 'u8x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']14122 - ['vld1_dup_p8', '*const p8', 'poly8x8_t', 'vld1.8', 'ld1r', 'u8x8::splat']
1415314123
14154 - ['vld1q_dup_s8', '*const i8', 'int8x16_t', 'vld1.8', 'ld1r', 'vld1q_lane_s8::<0>', 'i8x16::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]']14124 - ['vld1q_dup_s8', '*const i8', 'int8x16_t', 'vld1.8', 'ld1r', 'i8x16::splat']
14155 - ['vld1q_dup_u8', '*const u8', 'uint8x16_t', 'vld1.8', 'ld1r', 'vld1q_lane_u8::<0>', 'u8x16::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]']14125 - ['vld1q_dup_u8', '*const u8', 'uint8x16_t', 'vld1.8', 'ld1r', 'u8x16::splat']
14156 - ['vld1q_dup_p8', '*const p8', 'poly8x16_t', 'vld1.8', 'ld1r', 'vld1q_lane_p8::<0>', 'u8x16::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]']14126 - ['vld1q_dup_p8', '*const p8', 'poly8x16_t', 'vld1.8', 'ld1r', 'u8x16::splat']
1415714127
14158 - ['vld1_dup_s16', '*const i16', 'int16x4_t', 'vld1.16', 'ld1r', 'vld1_lane_s16::<0>', 'i16x4::splat(0)', '[0, 0, 0, 0]']14128 - ['vld1_dup_s16', '*const i16', 'int16x4_t', 'vld1.16', 'ld1r', 'i16x4::splat']
14159 - ['vld1_dup_u16', '*const u16', 'uint16x4_t', 'vld1.16', 'ld1r', 'vld1_lane_u16::<0>', 'u16x4::splat(0)', '[0, 0, 0, 0]']14129 - ['vld1_dup_u16', '*const u16', 'uint16x4_t', 'vld1.16', 'ld1r', 'u16x4::splat']
14160 - ['vld1_dup_p16', '*const p16', 'poly16x4_t', 'vld1.16', 'ld1r', 'vld1_lane_p16::<0>', 'u16x4::splat(0)', '[0, 0, 0, 0]']14130 - ['vld1_dup_p16', '*const p16', 'poly16x4_t', 'vld1.16', 'ld1r', 'u16x4::splat']
1416114131
14162 - ['vld1q_dup_s16', '*const i16', 'int16x8_t', 'vld1.16', 'ld1r', 'vld1q_lane_s16::<0>', 'i16x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']14132 - ['vld1q_dup_s16', '*const i16', 'int16x8_t', 'vld1.16', 'ld1r', 'i16x8::splat']
14163 - ['vld1q_dup_u16', '*const u16', 'uint16x8_t', 'vld1.16', 'ld1r', 'vld1q_lane_u16::<0>', 'u16x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']14133 - ['vld1q_dup_u16', '*const u16', 'uint16x8_t', 'vld1.16', 'ld1r', 'u16x8::splat']
14164 - ['vld1q_dup_p16', '*const p16', 'poly16x8_t', 'vld1.16', 'ld1r', 'vld1q_lane_p16::<0>', 'u16x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']14134 - ['vld1q_dup_p16', '*const p16', 'poly16x8_t', 'vld1.16', 'ld1r', 'u16x8::splat']
1416514135
14166 - ['vld1_dup_s32', '*const i32', 'int32x2_t', 'vld1.32', 'ld1r', 'vld1_lane_s32::<0>', 'i32x2::splat(0)', '[0, 0]']14136 - ['vld1_dup_s32', '*const i32', 'int32x2_t', 'vld1.32', 'ld1r', 'i32x2::splat']
14167 - ['vld1_dup_u32', '*const u32', 'uint32x2_t', 'vld1.32', 'ld1r', 'vld1_lane_u32::<0>', 'u32x2::splat(0)', '[0, 0]']14137 - ['vld1_dup_u32', '*const u32', 'uint32x2_t', 'vld1.32', 'ld1r', 'u32x2::splat']
14168 - ['vld1_dup_f32', '*const f32', 'float32x2_t', 'vld1.32', 'ld1r', 'vld1_lane_f32::<0>', 'f32x2::splat(0.0)', '[0, 0]']14138 - ['vld1_dup_f32', '*const f32', 'float32x2_t', 'vld1.32', 'ld1r', 'f32x2::splat']
1416914139
14170 - ['vld1q_dup_s32', '*const i32', 'int32x4_t', 'vld1.32', 'ld1r', 'vld1q_lane_s32::<0>', 'i32x4::splat(0)', '[0, 0, 0, 0]']14140 - ['vld1q_dup_s32', '*const i32', 'int32x4_t', 'vld1.32', 'ld1r', 'i32x4::splat']
14171 - ['vld1q_dup_u32', '*const u32', 'uint32x4_t', 'vld1.32', 'ld1r', 'vld1q_lane_u32::<0>', 'u32x4::splat(0)', '[0, 0, 0, 0]']14141 - ['vld1q_dup_u32', '*const u32', 'uint32x4_t', 'vld1.32', 'ld1r', 'u32x4::splat']
14172 - ['vld1q_dup_f32', '*const f32', 'float32x4_t', 'vld1.32', 'ld1r', 'vld1q_lane_f32::<0>', 'f32x4::splat(0.0)', '[0, 0, 0, 0]']14142 - ['vld1q_dup_f32', '*const f32', 'float32x4_t', 'vld1.32', 'ld1r', 'f32x4::splat']
1417314143
14174 - ['vld1q_dup_s64', '*const i64', 'int64x2_t', 'vldr', 'ld1', 'vld1q_lane_s64::<0>', 'i64x2::splat(0)', '[0, 0]']14144 - ['vld1q_dup_s64', '*const i64', 'int64x2_t', 'vldr', 'ld1r', 'i64x2::splat']
14175 - ['vld1q_dup_u64', '*const u64', 'uint64x2_t', 'vldr', 'ld1', 'vld1q_lane_u64::<0>', 'u64x2::splat(0)', '[0, 0]']14145 - ['vld1q_dup_u64', '*const u64', 'uint64x2_t', 'vldr', 'ld1r', 'u64x2::splat']
14176 compose:14146 compose:
14177 - Let:14147 - FnCall:
14178 - x14148 - transmute
14179 - FnCall:14149 - - FnCall: ['{type[5]}', ["*ptr"]]
14180 - '{type[5]}'
14181 - - ptr
14182 - FnCall: [transmute, ['{type[6]}']]
14183 - FnCall: ['simd_shuffle!', [x, x, '{type[7]}']]
1418414150
14185 - name: "{type[0]}"14151 - name: "{type[0]}"
14186 doc: "Absolute difference and accumulate (64-bit)"14152 doc: "Absolute difference and accumulate (64-bit)"
library/stdarch/crates/stdarch-gen-arm/src/expression.rs+3-5
...@@ -1,5 +1,4 @@...@@ -1,5 +1,4 @@
1use itertools::Itertools;1use itertools::Itertools;
2use lazy_static::lazy_static;
3use proc_macro2::{Literal, Punct, Spacing, TokenStream};2use proc_macro2::{Literal, Punct, Spacing, TokenStream};
4use quote::{ToTokens, TokenStreamExt, format_ident, quote};3use quote::{ToTokens, TokenStreamExt, format_ident, quote};
5use regex::Regex;4use regex::Regex;
...@@ -7,6 +6,7 @@ use serde::de::{self, MapAccess, Visitor};...@@ -7,6 +6,7 @@ use serde::de::{self, MapAccess, Visitor};
7use serde::{Deserialize, Deserializer, Serialize};6use serde::{Deserialize, Deserializer, Serialize};
8use std::fmt;7use std::fmt;
9use std::str::FromStr;8use std::str::FromStr;
9use std::sync::LazyLock;
1010
11use crate::intrinsic::Intrinsic;11use crate::intrinsic::Intrinsic;
12use crate::wildstring::WildStringPart;12use crate::wildstring::WildStringPart;
...@@ -374,10 +374,8 @@ impl FromStr for Expression {...@@ -374,10 +374,8 @@ impl FromStr for Expression {
374 type Err = String;374 type Err = String;
375375
376 fn from_str(s: &str) -> Result<Self, Self::Err> {376 fn from_str(s: &str) -> Result<Self, Self::Err> {
377 lazy_static! {377 static MACRO_RE: LazyLock<Regex> =
378 static ref MACRO_RE: Regex =378 LazyLock::new(|| Regex::new(r"^(?P<name>[\w\d_]+)!\((?P<ex>.*?)\);?$").unwrap());
379 Regex::new(r"^(?P<name>[\w\d_]+)!\((?P<ex>.*?)\);?$").unwrap();
380 }
381379
382 if s == "SvUndef" {380 if s == "SvUndef" {
383 Ok(Expression::SvUndef)381 Ok(Expression::SvUndef)
library/stdarch/crates/stdarch-gen-arm/src/load_store_tests.rs+8-12
...@@ -2,6 +2,7 @@ use std::fs::File;...@@ -2,6 +2,7 @@ use std::fs::File;
2use std::io::Write;2use std::io::Write;
3use std::path::PathBuf;3use std::path::PathBuf;
4use std::str::FromStr;4use std::str::FromStr;
5use std::sync::LazyLock;
56
6use crate::format_code;7use crate::format_code;
7use crate::input::InputType;8use crate::input::InputType;
...@@ -10,7 +11,6 @@ use crate::typekinds::BaseType;...@@ -10,7 +11,6 @@ use crate::typekinds::BaseType;
10use crate::typekinds::{ToRepr, TypeKind};11use crate::typekinds::{ToRepr, TypeKind};
1112
12use itertools::Itertools;13use itertools::Itertools;
13use lazy_static::lazy_static;
14use proc_macro2::TokenStream;14use proc_macro2::TokenStream;
15use quote::{format_ident, quote};15use quote::{format_ident, quote};
1616
...@@ -639,8 +639,8 @@ impl LdIntrCharacteristics {...@@ -639,8 +639,8 @@ impl LdIntrCharacteristics {
639 }639 }
640}640}
641641
642lazy_static! {642static PREAMBLE: LazyLock<String> = LazyLock::new(|| {
643 static ref PREAMBLE: String = format!(643 format!(
644 r#"#![allow(unused)]644 r#"#![allow(unused)]
645645
646use super::*;646use super::*;
...@@ -801,13 +801,11 @@ fn assert_vector_matches_u64(vector: svuint64_t, expected: svuint64_t) {{...@@ -801,13 +801,11 @@ fn assert_vector_matches_u64(vector: svuint64_t, expected: svuint64_t) {{
801 assert!(!svptest_any(defined, cmp))801 assert!(!svptest_any(defined, cmp))
802}}802}}
803"#803"#
804 );804 )
805}805});
806806
807lazy_static! {807const MANUAL_TESTS: &str = "#[simd_test(enable = \"sve\")]
808 static ref MANUAL_TESTS: String = format!(808unsafe fn test_ffr() {
809 "#[simd_test(enable = \"sve\")]
810unsafe fn test_ffr() {{
811 svsetffr();809 svsetffr();
812 let ffr = svrdffr();810 let ffr = svrdffr();
813 assert_vector_matches_u8(svdup_n_u8_z(ffr, 1), svindex_u8(1, 0));811 assert_vector_matches_u8(svdup_n_u8_z(ffr, 1), svindex_u8(1, 0));
...@@ -816,7 +814,5 @@ unsafe fn test_ffr() {{...@@ -816,7 +814,5 @@ unsafe fn test_ffr() {{
816 svwrffr(pred);814 svwrffr(pred);
817 let ffr = svrdffr_z(svptrue_b8());815 let ffr = svrdffr_z(svptrue_b8());
818 assert_vector_matches_u8(svdup_n_u8_z(ffr, 1), svdup_n_u8_z(pred, 1));816 assert_vector_matches_u8(svdup_n_u8_z(ffr, 1), svdup_n_u8_z(pred, 1));
819}}
820"
821 );
822}817}
818";
library/stdarch/crates/stdarch-gen-arm/src/typekinds.rs+6-7
...@@ -1,10 +1,10 @@...@@ -1,10 +1,10 @@
1use lazy_static::lazy_static;
2use proc_macro2::TokenStream;1use proc_macro2::TokenStream;
3use quote::{ToTokens, TokenStreamExt, quote};2use quote::{ToTokens, TokenStreamExt, quote};
4use regex::Regex;3use regex::Regex;
5use serde_with::{DeserializeFromStr, SerializeDisplay};4use serde_with::{DeserializeFromStr, SerializeDisplay};
6use std::fmt;5use std::fmt;
7use std::str::FromStr;6use std::str::FromStr;
7use std::sync::LazyLock;
88
9use crate::context;9use crate::context;
10use crate::expression::{Expression, FnCall};10use crate::expression::{Expression, FnCall};
...@@ -496,9 +496,9 @@ impl FromStr for VectorType {...@@ -496,9 +496,9 @@ impl FromStr for VectorType {
496 type Err = String;496 type Err = String;
497497
498 fn from_str(s: &str) -> Result<Self, Self::Err> {498 fn from_str(s: &str) -> Result<Self, Self::Err> {
499 lazy_static! {499 static RE: LazyLock<Regex> = LazyLock::new(|| {
500 static ref RE: Regex = Regex::new(r"^(?:(?:sv(?P<sv_ty>(?:uint|int|bool|float)(?:\d+)?))|(?:(?P<ty>(?:uint|int|bool|poly|float)(?:\d+)?)x(?P<lanes>(?:\d+)?)))(?:x(?P<tuple_size>2|3|4))?_t$").unwrap();500 Regex::new(r"^(?:(?:sv(?P<sv_ty>(?:uint|int|bool|float)(?:\d+)?))|(?:(?P<ty>(?:uint|int|bool|poly|float)(?:\d+)?)x(?P<lanes>(?:\d+)?)))(?:x(?P<tuple_size>2|3|4))?_t$").unwrap()
501 }501 });
502502
503 if let Some(c) = RE.captures(s) {503 if let Some(c) = RE.captures(s) {
504 let (base_type, lanes) = Self::sanitise_lanes(504 let (base_type, lanes) = Self::sanitise_lanes(
...@@ -698,9 +698,8 @@ impl FromStr for BaseType {...@@ -698,9 +698,8 @@ impl FromStr for BaseType {
698 type Err = String;698 type Err = String;
699699
700 fn from_str(s: &str) -> Result<Self, Self::Err> {700 fn from_str(s: &str) -> Result<Self, Self::Err> {
701 lazy_static! {701 static RE: LazyLock<Regex> =
702 static ref RE: Regex = Regex::new(r"^(?P<kind>[a-zA-Z]+)(?P<size>\d+)?(_t)?$").unwrap();702 LazyLock::new(|| Regex::new(r"^(?P<kind>[a-zA-Z]+)(?P<size>\d+)?(_t)?$").unwrap());
703 }
704703
705 if let Some(c) = RE.captures(s) {704 if let Some(c) = RE.captures(s) {
706 let kind = c["kind"].parse()?;705 let kind = c["kind"].parse()?;
library/stdarch/crates/stdarch-gen-arm/src/wildcards.rs+4-5
...@@ -1,8 +1,7 @@...@@ -1,8 +1,7 @@
1use lazy_static::lazy_static;
2use regex::Regex;1use regex::Regex;
3use serde_with::{DeserializeFromStr, SerializeDisplay};2use serde_with::{DeserializeFromStr, SerializeDisplay};
4use std::fmt;
5use std::str::FromStr;3use std::str::FromStr;
4use std::{fmt, sync::LazyLock};
65
7use crate::{6use crate::{
8 fn_suffix::SuffixKind,7 fn_suffix::SuffixKind,
...@@ -66,9 +65,9 @@ impl FromStr for Wildcard {...@@ -66,9 +65,9 @@ impl FromStr for Wildcard {
66 type Err = String;65 type Err = String;
6766
68 fn from_str(s: &str) -> Result<Self, Self::Err> {67 fn from_str(s: &str) -> Result<Self, Self::Err> {
69 lazy_static! {68 static RE: LazyLock<Regex> = LazyLock::new(|| {
70 static ref RE: Regex = Regex::new(r"^(?P<wildcard>\w+?)(?:_x(?P<tuple_size>[2-4]))?(?:\[(?P<index>\d+)\])?(?:\.(?P<modifiers>\w+))?(?:\s+as\s+(?P<scale_to>.*?))?$").unwrap();69 Regex::new(r"^(?P<wildcard>\w+?)(?:_x(?P<tuple_size>[2-4]))?(?:\[(?P<index>\d+)\])?(?:\.(?P<modifiers>\w+))?(?:\s+as\s+(?P<scale_to>.*?))?$").unwrap()
71 }70 });
7271
73 if let Some(c) = RE.captures(s) {72 if let Some(c) = RE.captures(s) {
74 let wildcard_name = &c["wildcard"];73 let wildcard_name = &c["wildcard"];
library/stdarch/crates/stdarch-gen-loongarch/README.md-2
...@@ -11,7 +11,6 @@ LSX:...@@ -11,7 +11,6 @@ LSX:
11# Generate bindings11# Generate bindings
12OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsxintrin.h12OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsxintrin.h
13OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec13OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec
14rustfmt crates/core_arch/src/loongarch64/lsx/generated.rs
1514
16# Generate tests15# Generate tests
17OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec test16OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec test
...@@ -25,7 +24,6 @@ LASX:...@@ -25,7 +24,6 @@ LASX:
25# Generate bindings24# Generate bindings
26OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasxintrin.h25OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasxintrin.h
27OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec26OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec
28rustfmt crates/core_arch/src/loongarch64/lasx/generated.rs
2927
30# Generate tests28# Generate tests
31OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec test29OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec test
library/stdarch/crates/stdarch-gen-loongarch/src/main.rs+29-17
...@@ -274,13 +274,14 @@ fn gen_bind_body(...@@ -274,13 +274,14 @@ fn gen_bind_body(
274 }274 }
275 };275 };
276276
277 let is_mem = in_t.iter().any(|s| s.contains("POINTER"));
277 let is_store = current_name.to_string().contains("vst");278 let is_store = current_name.to_string().contains("vst");
278 let link_function = {279 let link_function = {
279 let fn_decl = {280 let fn_decl = {
280 let fn_output = if out_t.to_lowercase() == "void" {281 let fn_output = if out_t.to_lowercase() == "void" {
281 String::new()282 String::new()
282 } else {283 } else {
283 format!("-> {}", type_to_rst(out_t, is_store))284 format!(" -> {}", type_to_rst(out_t, is_store))
284 };285 };
285 let fn_inputs = match para_num {286 let fn_inputs = match para_num {
286 1 => format!("(a: {})", type_to_rst(in_t[0], is_store)),287 1 => format!("(a: {})", type_to_rst(in_t[0], is_store)),
...@@ -304,7 +305,7 @@ fn gen_bind_body(...@@ -304,7 +305,7 @@ fn gen_bind_body(
304 ),305 ),
305 _ => panic!("unsupported parameter number"),306 _ => panic!("unsupported parameter number"),
306 };307 };
307 format!("fn __{current_name}{fn_inputs} {fn_output};")308 format!("fn __{current_name}{fn_inputs}{fn_output};")
308 };309 };
309 let function = format!(310 let function = format!(
310 r#" #[link_name = "llvm.loongarch.{}"]311 r#" #[link_name = "llvm.loongarch.{}"]
...@@ -456,31 +457,40 @@ fn gen_bind_body(...@@ -456,31 +457,40 @@ fn gen_bind_body(
456 };457 };
457 rustc_legacy_const_generics = "rustc_legacy_const_generics(2, 3)";458 rustc_legacy_const_generics = "rustc_legacy_const_generics(2, 3)";
458 }459 }
459 format!("pub unsafe fn {current_name}{fn_inputs} {fn_output}")460 format!(
461 "pub {}fn {current_name}{fn_inputs} {fn_output}",
462 if is_mem { "unsafe " } else { "" }
463 )
460 };464 };
465 let unsafe_start = if !is_mem { "unsafe { " } else { "" };
466 let unsafe_end = if !is_mem { " }" } else { "" };
461 let mut call_params = {467 let mut call_params = {
462 match para_num {468 match para_num {
463 1 => format!("__{current_name}(a)"),469 1 => format!("{unsafe_start}__{current_name}(a){unsafe_end}"),
464 2 => format!("__{current_name}(a, b)"),470 2 => format!("{unsafe_start}__{current_name}(a, b){unsafe_end}"),
465 3 => format!("__{current_name}(a, b, c)"),471 3 => format!("{unsafe_start}__{current_name}(a, b, c){unsafe_end}"),
466 4 => format!("__{current_name}(a, b, c, d)"),472 4 => format!("{unsafe_start}__{current_name}(a, b, c, d){unsafe_end}"),
467 _ => panic!("unsupported parameter number"),473 _ => panic!("unsupported parameter number"),
468 }474 }
469 };475 };
470 if para_num == 1 && in_t[0] == "HI" {476 if para_num == 1 && in_t[0] == "HI" {
471 call_params = match asm_fmts[1].as_str() {477 call_params = match asm_fmts[1].as_str() {
472 "si10" => {478 "si10" => {
473 format!("static_assert_simm_bits!(IMM_S10, 10);\n __{current_name}(IMM_S10)")479 format!(
480 "static_assert_simm_bits!(IMM_S10, 10);\n {unsafe_start}__{current_name}(IMM_S10){unsafe_end}"
481 )
474 }482 }
475 "i13" => {483 "i13" => {
476 format!("static_assert_simm_bits!(IMM_S13, 13);\n __{current_name}(IMM_S13)")484 format!(
485 "static_assert_simm_bits!(IMM_S13, 13);\n {unsafe_start}__{current_name}(IMM_S13){unsafe_end}"
486 )
477 }487 }
478 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),488 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
479 }489 }
480 } else if para_num == 2 && (in_t[1] == "UQI" || in_t[1] == "USI") {490 } else if para_num == 2 && (in_t[1] == "UQI" || in_t[1] == "USI") {
481 call_params = if asm_fmts[2].starts_with("ui") {491 call_params = if asm_fmts[2].starts_with("ui") {
482 format!(492 format!(
483 "static_assert_uimm_bits!(IMM{0}, {0});\n __{current_name}(a, IMM{0})",493 "static_assert_uimm_bits!(IMM{0}, {0});\n {unsafe_start}__{current_name}(a, IMM{0}){unsafe_end}",
484 asm_fmts[2].get(2..).unwrap()494 asm_fmts[2].get(2..).unwrap()
485 )495 )
486 } else {496 } else {
...@@ -489,14 +499,16 @@ fn gen_bind_body(...@@ -489,14 +499,16 @@ fn gen_bind_body(
489 } else if para_num == 2 && in_t[1] == "QI" {499 } else if para_num == 2 && in_t[1] == "QI" {
490 call_params = match asm_fmts[2].as_str() {500 call_params = match asm_fmts[2].as_str() {
491 "si5" => {501 "si5" => {
492 format!("static_assert_simm_bits!(IMM_S5, 5);\n __{current_name}(a, IMM_S5)")502 format!(
503 "static_assert_simm_bits!(IMM_S5, 5);\n {unsafe_start}__{current_name}(a, IMM_S5){unsafe_end}"
504 )
493 }505 }
494 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),506 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
495 };507 };
496 } else if para_num == 2 && in_t[0] == "CVPOINTER" && in_t[1] == "SI" {508 } else if para_num == 2 && in_t[0] == "CVPOINTER" && in_t[1] == "SI" {
497 call_params = if asm_fmts[2].starts_with("si") {509 call_params = if asm_fmts[2].starts_with("si") {
498 format!(510 format!(
499 "static_assert_simm_bits!(IMM_S{0}, {0});\n __{current_name}(mem_addr, IMM_S{0})",511 "static_assert_simm_bits!(IMM_S{0}, {0});\n {unsafe_start}__{current_name}(mem_addr, IMM_S{0}){unsafe_end}",
500 asm_fmts[2].get(2..).unwrap()512 asm_fmts[2].get(2..).unwrap()
501 )513 )
502 } else {514 } else {
...@@ -504,13 +516,13 @@ fn gen_bind_body(...@@ -504,13 +516,13 @@ fn gen_bind_body(
504 }516 }
505 } else if para_num == 2 && in_t[0] == "CVPOINTER" && in_t[1] == "DI" {517 } else if para_num == 2 && in_t[0] == "CVPOINTER" && in_t[1] == "DI" {
506 call_params = match asm_fmts[2].as_str() {518 call_params = match asm_fmts[2].as_str() {
507 "rk" => format!("__{current_name}(mem_addr, b)"),519 "rk" => format!("{unsafe_start}__{current_name}(mem_addr, b){unsafe_end}"),
508 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),520 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
509 };521 };
510 } else if para_num == 3 && (in_t[2] == "USI" || in_t[2] == "UQI") {522 } else if para_num == 3 && (in_t[2] == "USI" || in_t[2] == "UQI") {
511 call_params = if asm_fmts[2].starts_with("ui") {523 call_params = if asm_fmts[2].starts_with("ui") {
512 format!(524 format!(
513 "static_assert_uimm_bits!(IMM{0}, {0});\n __{current_name}(a, b, IMM{0})",525 "static_assert_uimm_bits!(IMM{0}, {0});\n {unsafe_start}__{current_name}(a, b, IMM{0}){unsafe_end}",
514 asm_fmts[2].get(2..).unwrap()526 asm_fmts[2].get(2..).unwrap()
515 )527 )
516 } else {528 } else {
...@@ -519,19 +531,19 @@ fn gen_bind_body(...@@ -519,19 +531,19 @@ fn gen_bind_body(
519 } else if para_num == 3 && in_t[1] == "CVPOINTER" && in_t[2] == "SI" {531 } else if para_num == 3 && in_t[1] == "CVPOINTER" && in_t[2] == "SI" {
520 call_params = match asm_fmts[2].as_str() {532 call_params = match asm_fmts[2].as_str() {
521 "si12" => format!(533 "si12" => format!(
522 "static_assert_simm_bits!(IMM_S12, 12);\n __{current_name}(a, mem_addr, IMM_S12)"534 "static_assert_simm_bits!(IMM_S12, 12);\n {unsafe_start}__{current_name}(a, mem_addr, IMM_S12){unsafe_end}"
523 ),535 ),
524 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),536 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
525 };537 };
526 } else if para_num == 3 && in_t[1] == "CVPOINTER" && in_t[2] == "DI" {538 } else if para_num == 3 && in_t[1] == "CVPOINTER" && in_t[2] == "DI" {
527 call_params = match asm_fmts[2].as_str() {539 call_params = match asm_fmts[2].as_str() {
528 "rk" => format!("__{current_name}(a, mem_addr, b)"),540 "rk" => format!("{unsafe_start}__{current_name}(a, mem_addr, b){unsafe_end}"),
529 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),541 _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
530 };542 };
531 } else if para_num == 4 {543 } else if para_num == 4 {
532 call_params = match (asm_fmts[2].as_str(), current_name.chars().last().unwrap()) {544 call_params = match (asm_fmts[2].as_str(), current_name.chars().last().unwrap()) {
533 ("si8", t) => format!(545 ("si8", t) => format!(
534 "static_assert_simm_bits!(IMM_S8, 8);\n static_assert_uimm_bits!(IMM{0}, {0});\n __{current_name}(a, mem_addr, IMM_S8, IMM{0})",546 "static_assert_simm_bits!(IMM_S8, 8);\n static_assert_uimm_bits!(IMM{0}, {0});\n {unsafe_start}__{current_name}(a, mem_addr, IMM_S8, IMM{0}){unsafe_end}",
535 type_to_imm(t)547 type_to_imm(t)
536 ),548 ),
537 (_, _) => panic!(549 (_, _) => panic!(
library/stdarch/crates/stdarch-test/Cargo.toml+1-2
...@@ -7,7 +7,6 @@ edition = "2024"...@@ -7,7 +7,6 @@ edition = "2024"
7[dependencies]7[dependencies]
8assert-instr-macro = { path = "../assert-instr-macro" }8assert-instr-macro = { path = "../assert-instr-macro" }
9simd-test-macro = { path = "../simd-test-macro" }9simd-test-macro = { path = "../simd-test-macro" }
10lazy_static = "1.0"
11rustc-demangle = "0.1.8"10rustc-demangle = "0.1.8"
12cfg-if = "1.0"11cfg-if = "1.0"
1312
...@@ -20,7 +19,7 @@ cc = "1.0"...@@ -20,7 +19,7 @@ cc = "1.0"
20# time, and we want to make updates to this explicit rather than automatically19# time, and we want to make updates to this explicit rather than automatically
21# picking up updates which might break CI with new instruction names.20# picking up updates which might break CI with new instruction names.
22[target.'cfg(target_arch = "wasm32")'.dependencies]21[target.'cfg(target_arch = "wasm32")'.dependencies]
23wasmprinter = "=0.2.67"22wasmprinter = "=0.235"
2423
25[features]24[features]
26default = []25default = []
library/stdarch/crates/stdarch-test/src/lib.rs+25-14
...@@ -6,14 +6,12 @@...@@ -6,14 +6,12 @@
6#![deny(rust_2018_idioms)]6#![deny(rust_2018_idioms)]
7#![allow(clippy::missing_docs_in_private_items, clippy::print_stdout)]7#![allow(clippy::missing_docs_in_private_items, clippy::print_stdout)]
88
9#[macro_use]
10extern crate lazy_static;
11#[macro_use]9#[macro_use]
12extern crate cfg_if;10extern crate cfg_if;
1311
14pub use assert_instr_macro::*;12pub use assert_instr_macro::*;
15pub use simd_test_macro::*;13pub use simd_test_macro::*;
16use std::{cmp, collections::HashSet, env, hash, hint::black_box, str};14use std::{cmp, collections::HashSet, env, hash, hint::black_box, str, sync::LazyLock};
1715
18cfg_if! {16cfg_if! {
19 if #[cfg(target_arch = "wasm32")] {17 if #[cfg(target_arch = "wasm32")] {
...@@ -25,9 +23,7 @@ cfg_if! {...@@ -25,9 +23,7 @@ cfg_if! {
25 }23 }
26}24}
2725
28lazy_static! {26static DISASSEMBLY: LazyLock<HashSet<Function>> = LazyLock::new(disassemble_myself);
29 static ref DISASSEMBLY: HashSet<Function> = disassemble_myself();
30}
3127
32#[derive(Debug)]28#[derive(Debug)]
33struct Function {29struct Function {
...@@ -65,11 +61,12 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {...@@ -65,11 +61,12 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {
65 black_box(shim_addr);61 black_box(shim_addr);
6662
67 //eprintln!("shim name: {fnname}");63 //eprintln!("shim name: {fnname}");
68 let function = &DISASSEMBLY64 let Some(function) = &DISASSEMBLY.get(&Function::new(fnname)) else {
69 .get(&Function::new(fnname))65 panic!("function `{fnname}` not found in the disassembly")
70 .unwrap_or_else(|| panic!("function \"{fnname}\" not found in the disassembly"));66 };
71 //eprintln!(" function: {:?}", function);67 //eprintln!(" function: {:?}", function);
7268
69 // Trim any filler instructions.
73 let mut instrs = &function.instrs[..];70 let mut instrs = &function.instrs[..];
74 while instrs.last().is_some_and(|s| s == "nop" || s == "int3") {71 while instrs.last().is_some_and(|s| s == "nop" || s == "int3") {
75 instrs = &instrs[..instrs.len() - 1];72 instrs = &instrs[..instrs.len() - 1];
...@@ -84,12 +81,26 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {...@@ -84,12 +81,26 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {
84 // 2. It is a mark, indicating that the instruction will be81 // 2. It is a mark, indicating that the instruction will be
85 // compiled into other instructions - mainly because of llvm82 // compiled into other instructions - mainly because of llvm
86 // optimization.83 // optimization.
87 let expected = if expected == "unknown" {84 let expected = match expected {
88 "<unknown>" // Workaround for rust-lang/stdarch#1674, todo: remove when the issue is fixed85 // `<unknown>` is what LLVM will generate for unknown instructions. We use this to fail
89 } else {86 // loudly when LLVM does start supporting these instructions.
90 expected87 //
88 // This was introduced in https://github.com/rust-lang/stdarch/pull/1674 to work around the
89 // RISC-V P extension not yet being supported.
90 "unknown" => "<unknown>",
91 _ => expected,
91 };92 };
92 let found = expected == "nop" || instrs.iter().any(|s| s.starts_with(expected));93
94 // Check whether the given instruction is part of the disassemblied body.
95 let found = expected == "nop"
96 || instrs.iter().any(|instruction| {
97 instruction.starts_with(expected)
98 // Check that the next character is non-alphanumeric. This prevents false negatives
99 // when e.g. `fminnm` was used but `fmin` was expected.
100 //
101 // TODO: resolve the conflicts (x86_64 and aarch64 have a bunch, probably others)
102 // && !instruction[expected.len()..].starts_with(|c: char| c.is_ascii_alphanumeric())
103 });
93104
94 // Look for subroutine call instructions in the disassembly to detect whether105 // Look for subroutine call instructions in the disassembly to detect whether
95 // inlining failed: all intrinsics are `#[inline(always)]`, so calling one106 // inlining failed: all intrinsics are `#[inline(always)]`, so calling one
library/stdarch/examples/connect5.rs+12-25
...@@ -558,7 +558,8 @@ fn search(pos: &Pos, alpha: i32, beta: i32, depth: i32, _ply: i32) -> i32 {...@@ -558,7 +558,8 @@ fn search(pos: &Pos, alpha: i32, beta: i32, depth: i32, _ply: i32) -> i32 {
558 assert_ne!(bm, MOVE_NONE);558 assert_ne!(bm, MOVE_NONE);
559 assert!(bs >= -EVAL_INF && bs <= EVAL_INF);559 assert!(bs >= -EVAL_INF && bs <= EVAL_INF);
560560
561 if _ply == 0 { bm } else { bs } //best move at the root node, best score elsewhere561 // best move at the root node, best score elsewhere
562 if _ply == 0 { bm } else { bs }
562}563}
563564
564/// Evaluation function: give different scores to different patterns after a fixed depth.565/// Evaluation function: give different scores to different patterns after a fixed depth.
...@@ -570,15 +571,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {...@@ -570,15 +571,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {
570 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]571 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
571 {572 {
572 if check_x86_avx512_features() {573 if check_x86_avx512_features() {
573 unsafe {574 if unsafe { check_patternlive4_avx512(pos, def) } {
574 if check_patternlive4_avx512(pos, def) {
575 return -4096;
576 }
577 }
578 } else {
579 if check_patternlive4(pos, def) {
580 return -4096;575 return -4096;
581 }576 }
577 } else if check_patternlive4(pos, def) {
578 return -4096;
582 }579 }
583 }580 }
584581
...@@ -593,15 +590,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {...@@ -593,15 +590,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {
593 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]590 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
594 {591 {
595 if check_x86_avx512_features() {592 if check_x86_avx512_features() {
596 unsafe {593 if unsafe { check_patternlive4_avx512(pos, atk) } {
597 if check_patternlive4_avx512(pos, atk) {
598 return 2560;
599 }
600 }
601 } else {
602 if check_patternlive4(pos, atk) {
603 return 2560;594 return 2560;
604 }595 }
596 } else if check_patternlive4(pos, atk) {
597 return 2560;
605 }598 }
606 }599 }
607600
...@@ -616,15 +609,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {...@@ -616,15 +609,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {
616 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]609 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
617 {610 {
618 if check_x86_avx512_features() {611 if check_x86_avx512_features() {
619 unsafe {612 if unsafe { check_patterndead4_avx512(pos, atk) > 0 } {
620 if check_patterndead4_avx512(pos, atk) > 0 {
621 return 2560;
622 }
623 }
624 } else {
625 if check_patterndead4(pos, atk) > 0 {
626 return 2560;613 return 2560;
627 }614 }
615 } else if check_patterndead4(pos, atk) > 0 {
616 return 2560;
628 }617 }
629 }618 }
630619
...@@ -909,9 +898,7 @@ fn pos_is_winner_avx512(pos: &Pos) -> bool {...@@ -909,9 +898,7 @@ fn pos_is_winner_avx512(pos: &Pos) -> bool {
909 0b00_10_10_10_10_11_10_10_10_10_11_11_11_11_11_10];898 0b00_10_10_10_10_11_10_10_10_10_11_11_11_11_11_10];
910 let mut count_match: i32 = 0;899 let mut count_match: i32 = 0;
911900
912 for dir in 0..2 {901 for mut board0 in board0org {
913 // direction 0 and 1
914 let mut board0 = board0org[dir];
915 let boardf = _mm512_and_si512(answer, board0);902 let boardf = _mm512_and_si512(answer, board0);
916 let temp_mask = _mm512_mask_cmpeq_epi16_mask(answer_mask[0], answer, boardf);903 let temp_mask = _mm512_mask_cmpeq_epi16_mask(answer_mask[0], answer, boardf);
917 count_match += _popcnt32(temp_mask as i32);904 count_match += _popcnt32(temp_mask as i32);
library/stdarch/triagebot.toml+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1[assign]1[assign]
22
3[assign.owners]3[assign.owners]
4"*" = ["@Amanieu"]4"*" = ["@Amanieu", "@folkertdev", "@sayantn"]
55
6[ping.windows]6[ping.windows]
7message = """\7message = """\