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