@@ -108,6 +108,7 @@ if [ "$NOSTD" != "1" ]; then
108108 cargo_test " ${STDARCH_EXAMPLES} ${PROFILE} "
109109fi
110110
111+
111112# Test targets compiled with extra features.
112113case ${TARGET} in
113114 x86* )
@@ -134,26 +135,75 @@ case ${TARGET} in
134135 export RUSTFLAGS=" ${OLD_RUSTFLAGS} -C target-feature=+vsx"
135136 cargo_test " ${PROFILE} "
136137 ;;
138+
139+ # Setup aarch64 & armv7 specific variables, the runner, along with some
140+ # tests to skip
141+ aarch64-unknown-linux-gnu* )
142+ TEST_CPPFLAGS=" -fuse-ld=lld -I/usr/aarch64-linux-gnu/include/ -I/usr/aarch64-linux-gnu/include/c++/9/aarch64-linux-gnu/"
143+ TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
144+ TEST_CXX_COMPILER=" clang++-15"
145+ TEST_RUNNER=" ${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER} "
146+ ;;
147+ armv7-unknown-linux-gnueabihf* )
148+ TEST_CPPFLAGS=" -fuse-ld=lld -I/usr/arm-linux-gnueabihf/include/ -I/usr/arm-linux-gnueabihf/include/c++/9/arm-linux-gnueabihf/"
149+ TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_arm.txt
150+ TEST_CXX_COMPILER=" clang++-15"
151+ TEST_RUNNER=" ${CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER} "
152+ ;;
137153 * )
138154 ;;
139155
140156esac
141157
142- if [ " ${TARGET} " = " aarch64-unknown-linux-gnu" ]; then
143- (
144- CPPFLAGS=" -fuse-ld=lld -I/usr/aarch64-linux-gnu/include/ -I/usr/aarch64-linux-gnu/include/c++/9/aarch64-linux-gnu/" \
145- RUSTFLAGS=" $HOST_RUSTFLAGS " \
146- RUST_LOG=warn \
147- cargo run ${INTRINSIC_TEST} " ${PROFILE} " --bin intrinsic-test -- intrinsics_data/arm_intrinsics.json --runner " ${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER} " --cppcompiler " clang++-15" --skip crates/intrinsic-test/missing_aarch64.txt
148- )
149- elif [ " ${TARGET} " = " armv7-unknown-linux-gnueabihf" ]; then
150- (
151- CPPFLAGS=" -fuse-ld=lld -I/usr/arm-linux-gnueabihf/include/ -I/usr/arm-linux-gnueabihf/include/c++/9/arm-linux-gnueabihf/" \
152- RUSTFLAGS=" $HOST_RUSTFLAGS " \
153- RUST_LOG=warn \
154- cargo run ${INTRINSIC_TEST} " ${PROFILE} " --bin intrinsic-test -- intrinsics_data/arm_intrinsics.json --runner " ${CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER} " --cppcompiler " clang++-15" --skip crates/intrinsic-test/missing_arm.txt --a32
155- )
156- fi
158+ # Arm specific
159+ case " ${TARGET} " in
160+ aarch64-unknown-linux-gnu* |armv7-unknown-linux-gnueabihf* )
161+ CPPFLAGS=" ${TEST_CPPFLAGS} " RUSTFLAGS=" ${HOST_RUSTFLAGS} " RUST_LOG=warn \
162+ cargo run " ${INTRINSIC_TEST} " " ${PROFILE} " \
163+ --bin intrinsic-test -- intrinsics_data/arm_intrinsics.json \
164+ --runner " ${TEST_RUNNER} " \
165+ --cppcompiler " ${TEST_CXX_COMPILER} " \
166+ --skip " ${TEST_SKIP_INTRINSICS} " \
167+ --target " ${TARGET} "
168+ ;;
169+
170+ aarch64_be-unknown-linux-gnu)
171+ # get the aarch64_be toolchain
172+ TOOLCHAIN=" arm-gnu-toolchain-14.2.rel1-x86_64-aarch64_be-none-linux-gnu"
173+
174+ # Download the aarch64_be gcc toolchain
175+ curl -L " https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/${TOOLCHAIN} .tar.xz" \
176+ -o " ${TOOLCHAIN} .tar.xz" && \
177+ tar -xzvf " ./${TOOLCHAIN} " .tar.xz && \
178+ mdkir /toolchains &&
179+ mv " ./${TOOLCHAIN} " /toolchains
180+
181+ # Build the test suite
182+ AARCH64_BE_TOOLCHAIN=" /toolchains/${TOOLCHAIN} "
183+ AARCH64_BE_LIBC=" ${AARCH64_BE_TOOLCHAIN} /aarch64_be-none-linux-gnu/libc"
184+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=" ${AARCH64_BE_TOOLCHAIN} /bin/aarch64_be-none-linux-gnu-gcc" \
185+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER=" qemu-aarch64_be -L ${AARCH64_BE_LIBC} " \
186+ CPPFLAGS=" -fuse-ld=lld" \
187+ RUSTFLAGS=" -C linker=${AARCH64_BE} /bin/aarch64_be-none-linux-gnu-gcc -C link-args=-static" \
188+ cargo build \
189+ --target=" ${TARGET} " \
190+ --manifest-path=crates/intrinsic-test/Cargo.toml \
191+ --profile=release
192+
193+ # Now run it
194+ qemu-aarch64_be -L " ${AARCH64_BE_LIBC} " \
195+ " ./target/${TARGET} /release/intrinsic-test" \
196+ " ./intrinsics_data/arm_intrinsics.json" \
197+ --target " ${TARGET} " \
198+ --cppcompiler " clang++-18" \
199+ --skip crates/intrinsic-test/missing_aarch64.txt \
200+ --runner " ${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER} " \
201+ --linker " ${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER} " \
202+ --cxx-toolchain-dir " ${AARCH64_BE_TOOLCHAIN} "
203+ ;;
204+ * )
205+ ;;
206+ esac
157207
158208if [ " $NORUN " != " 1" ] && [ " $NOSTD " != 1 ]; then
159209 # Test examples
0 commit comments