@@ -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* )
@@ -134,26 +135,75 @@ case ${TARGET} in
134
135
export RUSTFLAGS=" ${OLD_RUSTFLAGS} -C target-feature=+vsx"
135
136
cargo_test " ${PROFILE} "
136
137
;;
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
+ ;;
137
153
* )
138
154
;;
139
155
140
156
esac
141
157
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
157
207
158
208
if [ " $NORUN " != " 1" ] && [ " $NOSTD " != 1 ]; then
159
209
# Test examples
0 commit comments