Skip to content

Commit 6083f78

Browse files
committed
Auto merge of #156900 - folkertdev:stdarch-sync-2026-05-25, r=folkertdev
stdarch subtree update Subtree update of `stdarch` to rust-lang/stdarch@5e930b6. Created using https://github.com/rust-lang/josh-sync. r? @ghost
2 parents 783eb8c + b8e62d7 commit 6083f78

50 files changed

Lines changed: 1043 additions & 644 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

library/stdarch/.github/workflows/main.yml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,19 @@ jobs:
281281
- armv7-unknown-linux-gnueabihf
282282
- x86_64-unknown-linux-gnu
283283
profile: [dev, release]
284+
cc: [clang, gcc]
284285
include:
285286
- target: aarch64_be-unknown-linux-gnu
286287
build_std: true
287-
288+
- target: x86_64-unknown-linux-gnu
289+
cc: icx
290+
profile: dev
291+
- target: x86_64-unknown-linux-gnu
292+
cc: icx
293+
profile: release
294+
exclude:
295+
- target: armv7-unknown-linux-gnueabihf
296+
cc: gcc
288297
steps:
289298
- uses: actions/checkout@v6
290299
- name: Install Rust
@@ -297,18 +306,19 @@ jobs:
297306
rustup component add rust-src
298307
echo "CARGO_UNSTABLE_BUILD_STD=std" >> $GITHUB_ENV
299308
if: ${{ matrix.build_std }}
309+
- run: rustup component add rustfmt
300310

301311
# Configure some env vars based on matrix configuration
302312
- run: echo "PROFILE=${{ matrix.profile }}" >> $GITHUB_ENV
303-
- run: ./ci/intrinsic-test-docker.sh ${{ matrix.target }}
313+
- run: ./ci/intrinsic-test-docker.sh ${{ matrix.target }} ${{ matrix.cc }}
304314
if: ${{ !startsWith(matrix.target, 'thumb') }}
305315
env:
306316
TARGET: ${{ matrix.target }}
307317

308318
# Check that the generated files agree with the checked-in versions.
309319
check-stdarch-gen:
310320
needs: [style]
311-
name: Check stdarch-gen-{arm, loongarch, hexagon} output
321+
name: Check stdarch-gen-{arm, loongarch, hexagon, hexagon-scalar} output
312322
runs-on: ubuntu-latest
313323
steps:
314324
- uses: actions/checkout@v6
@@ -330,6 +340,10 @@ jobs:
330340
run: |
331341
cargo run -p stdarch-gen-hexagon --release
332342
git diff --exit-code
343+
- name: Check hexagon scalar
344+
run: |
345+
cargo run -p stdarch-gen-hexagon-scalar --release
346+
git diff --exit-code
333347
334348
# Run some tests with Miri. Most stdarch functions use platform-specific intrinsics
335349
# that Miri does not support. Also Miri is reltively slow.

library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ RUN wget https://mirrors.edge.kernel.org/pub/tools/llvm/files/llvm-22.1.4-x86_64
1515
RUN mkdir llvm
1616
RUN tar -xvf llvm.tar.xz --strip-components=1 -C llvm
1717

18-
ENV PATH="/llvm/bin:$PATH"
18+
ENV CLANG_PATH="/llvm/bin/clang"
19+
ENV GCC_PATH=aarch64-linux-gnu-gcc
1920

2021
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
2122
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -cpu max -L /usr/aarch64-linux-gnu" \

library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ RUN wget https://mirrors.edge.kernel.org/pub/tools/llvm/files/llvm-22.1.4-x86_64
2323
RUN mkdir llvm
2424
RUN tar -xvf llvm.tar.xz --strip-components=1 -C llvm
2525

26-
ENV PATH="/llvm/bin:$PATH"
27-
2826
ENV AARCH64_BE_TOOLCHAIN="/toolchains/${TOOLCHAIN}"
2927
ENV AARCH64_BE_LIBC="${AARCH64_BE_TOOLCHAIN}/aarch64_be-none-linux-gnu/libc"
3028

29+
ENV CLANG_PATH="/llvm/bin/clang"
30+
ENV GCC_PATH="${AARCH64_BE_TOOLCHAIN}/bin/aarch64_be-none-linux-gnu-gcc"
31+
3132
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_LINKER="${AARCH64_BE_TOOLCHAIN}/bin/aarch64_be-none-linux-gnu-gcc"
3233
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64_be -cpu max -L ${AARCH64_BE_LIBC}"
3334
ENV OBJDUMP="${AARCH64_BE_TOOLCHAIN}/bin/aarch64_be-none-linux-gnu-objdump"

library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ RUN wget https://mirrors.edge.kernel.org/pub/tools/llvm/files/llvm-22.1.4-x86_64
1414
RUN mkdir llvm
1515
RUN tar -xvf llvm.tar.xz --strip-components=1 -C llvm
1616

17-
ENV PATH="/llvm/bin:$PATH"
17+
ENV CLANG_PATH="/llvm/bin/clang"
18+
ENV GCC_PATH=arm-linux-gnueabihf-gcc
1819

1920
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
2021
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \

library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
make \
77
ca-certificates \
88
wget \
9-
xz-utils
9+
xz-utils \
10+
gpg
1011

1112
RUN wget http://ci-mirrors.rust-lang.org/sde-external-10.8.0-2026-03-15-lin.tar.xz -O sde.tar.xz
1213
RUN mkdir intel-sde
@@ -16,7 +17,18 @@ RUN wget https://mirrors.edge.kernel.org/pub/tools/llvm/files/llvm-22.1.4-x86_64
1617
RUN mkdir llvm
1718
RUN tar -xvf llvm.tar.xz --strip-components=1 -C llvm
1819

19-
ENV PATH="/llvm/bin:$PATH"
20+
RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB |\
21+
gpg --dearmor |\
22+
tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
23+
24+
RUN echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" |\
25+
tee /etc/apt/sources.list.d/oneAPI.list
26+
27+
RUN apt-get update && apt-get install -y --no-install-recommends intel-oneapi-compiler-dpcpp-cpp
28+
29+
ENV CLANG_PATH="/llvm/bin/clang"
30+
ENV GCC_PATH="gcc"
31+
ENV ICX_PATH="/opt/intel/oneapi/compiler/2026.0/bin/icx"
2032

2133
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/intel-sde/sde64 \
2234
-cpuid-in /checkout/ci/docker/x86_64-unknown-linux-gnu/cpuid.def \

library/stdarch/ci/intrinsic-test-docker.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
set -ex
77

8-
if [ $# -lt 1 ]; then
9-
>&2 echo "Usage: $0 <TARGET>"
8+
if [ $# -lt 2 ]; then
9+
>&2 echo "Usage: $0 <TARGET> <CC>"
1010
exit 1
1111
fi
1212

@@ -29,7 +29,6 @@ run() {
2929
--user "$(id -u)":"$(id -g)" \
3030
--env CARGO_HOME=/cargo \
3131
--env CARGO_TARGET_DIR=/checkout/target \
32-
--env TARGET="${1}" \
3332
--env PROFILE \
3433
--env "${HOST_LINKER}"="cc" \
3534
--env STDARCH_DISABLE_ASSERT_INSTR \
@@ -48,12 +47,12 @@ run() {
4847
--workdir /checkout \
4948
--privileged \
5049
stdarch \
51-
sh -c "HOME=/tmp PATH=\$PATH:/rust/bin exec ci/intrinsic-test.sh"
50+
sh -c "HOME=/tmp PATH=\$PATH:/rust/bin exec ci/intrinsic-test.sh ${1} ${2}"
5251
}
5352

5453
if [ -z "$1" ]; then
5554
>&2 echo "No target specified!"
5655
exit 1
5756
else
58-
run "${1}"
57+
run "${1}" "${2}"
5958
fi

library/stdarch/ci/intrinsic-test.sh

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,30 @@
22

33
set -ex
44

5-
: "${TARGET?The TARGET environment variable must be set.}"
5+
if [ $# -lt 2 ]; then
6+
>&2 echo "Usage: $0 <TARGET> <CC>"
7+
exit 1
8+
fi
9+
10+
case ${2} in
11+
clang)
12+
export CC="${CLANG_PATH}"
13+
CC_ARG_STYLE=clang
14+
;;
15+
gcc)
16+
export CC="${GCC_PATH}"
17+
CC_ARG_STYLE=gcc
18+
;;
19+
icx)
20+
export CC="${ICX_PATH}"
21+
# `icx` uses clang-style arguments
22+
CC_ARG_STYLE=clang
23+
;;
24+
*)
25+
>&2 echo "Unknown compiler: ${2}"
26+
exit 1
27+
;;
28+
esac
629

730
export RUSTFLAGS="${RUSTFLAGS} -D warnings -Z merge-functions=disabled -Z verify-llvm-ir"
831
export PROFILE="${PROFILE:="release"}"
@@ -12,49 +35,49 @@ echo "PROFILE=${PROFILE}"
1235

1336
INTRINSIC_TEST="--manifest-path=crates/intrinsic-test/Cargo.toml"
1437

15-
export CC="clang"
16-
17-
case ${TARGET} in
38+
case ${1} in
1839
aarch64_be*)
1940
export CFLAGS="-I${AARCH64_BE_TOOLCHAIN}/aarch64_be-none-linux-gnu/libc/usr/include --sysroot={AARCH64_BE_TOOLCHAIN}/aarch64_be-none-linux-gnu/libc -Wno-nonportable-vector-initialization"
20-
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64_be.txt
41+
ARCH=aarch64_be
2142
;;
2243

2344
aarch64*)
2445
export CFLAGS="-I/usr/aarch64-linux-gnu/include/"
25-
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
46+
ARCH=aarch64
2647
;;
2748

2849
armv7*)
2950
export CFLAGS="-I/usr/arm-linux-gnueabihf/include/"
30-
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_arm.txt
51+
ARCH=arm
3152
;;
3253

3354
x86_64*)
3455
export CFLAGS="-I/usr/include/x86_64-linux-gnu/"
35-
TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_x86.txt
56+
ARCH=x86
3657
;;
3758
*)
3859
;;
3960

4061
esac
4162

42-
case "${TARGET}" in
63+
case "${1}" in
4364
x86_64-unknown-linux-gnu*)
4465
env -u CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER \
4566
cargo run "${INTRINSIC_TEST}" --release \
4667
--bin intrinsic-test -- intrinsics_data/x86-intel.xml \
47-
--skip "${TEST_SKIP_INTRINSICS}" \
48-
--target "${TARGET}"
49-
50-
echo "${CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER}"
68+
--skip "crates/intrinsic-test/missing_${ARCH}_common.txt" \
69+
--skip "crates/intrinsic-test/missing_${ARCH}_${2}.txt" \
70+
--target "${1}" \
71+
--cc-arg-style "${CC_ARG_STYLE}"
5172
;;
5273
*)
5374
cargo run "${INTRINSIC_TEST}" --release \
5475
--bin intrinsic-test -- intrinsics_data/arm_intrinsics.json \
55-
--skip "${TEST_SKIP_INTRINSICS}" \
56-
--target "${TARGET}"
76+
--skip "crates/intrinsic-test/missing_${ARCH}_common.txt" \
77+
--skip "crates/intrinsic-test/missing_${ARCH}_${2}.txt" \
78+
--target "${1}" \
79+
--cc-arg-style "${CC_ARG_STYLE}"
5780
;;
5881
esac
5982

60-
cargo test --manifest-path=rust_programs/Cargo.toml --target "${TARGET}" --profile "${PROFILE}"
83+
cargo test --manifest-path=rust_programs/Cargo.toml --target "${1}" --profile "${PROFILE}" --tests

0 commit comments

Comments
 (0)