Skip to content

Commit 83c9cc5

Browse files
committed
Add test-everything annotations to more targets to ensure test coverage
+ Upgrade CPU for `qemu` + Disable `vsx` tests for `ppc` and `ppc64` + Disable `tme` tests for `aarch64` and `aarch64_be` + Disable `frecipe` tests for `loongarch64` + Map `usize` to pointer-width in `stdarch-verify/x86-intel.rs` + Enable `assert_instr` tests for PPC64LE + Augment `stdarch-test` for PPC + Remove `-Ctarget-feature=+vsx` run for PPC32
1 parent f65bd07 commit 83c9cc5

File tree

16 files changed

+69
-38
lines changed

16 files changed

+69
-38
lines changed

.github/workflows/main.yml

+35-12
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,41 @@ jobs:
122122

123123
# Add additional variables to the matrix variations generated above using `include`:
124124
include:
125+
# `TEST_EVERYTHING` setups - there should be at least 1 for each architecture
126+
- target:
127+
tuple: aarch64-unknown-linux-gnu
128+
os: ubuntu-latest
129+
test_everything: true
130+
- target:
131+
tuple: armv7-unknown-linux-gnueabihf
132+
os: ubuntu-latest
133+
test_everything: true
134+
- target:
135+
tuple: loongarch64-unknown-linux-gnu
136+
os: ubuntu-latest
137+
test_everything: true
138+
- target:
139+
tuple: powerpc-unknown-linux-gnu
140+
os: ubuntu-latest
141+
disable_assert_instr: true
142+
test_everything: true
143+
- target:
144+
tuple: powerpc64-unknown-linux-gnu
145+
os: ubuntu-latest
146+
disable_assert_instr: true
147+
test_everything: true
148+
- target:
149+
tuple: powerpc64le-unknown-linux-gnu
150+
os: ubuntu-latest
151+
test_everything: true
152+
- target:
153+
tuple: riscv64gc-unknown-linux-gnu
154+
os: ubuntu-latest
155+
test_everything: true
156+
- target:
157+
tuple: s390x-unknown-linux-gnu
158+
os: ubuntu-latest
159+
test_everything: true
125160
- target:
126161
tuple: x86_64-unknown-linux-gnu-emulated
127162
os: ubuntu-latest
@@ -144,18 +179,6 @@ jobs:
144179
# tuple: mipsel-unknown-linux-musl
145180
# os: ubuntu-latest
146181
# norun: true
147-
- target:
148-
tuple: powerpc-unknown-linux-gnu
149-
os: ubuntu-latest
150-
disable_assert_instr: true
151-
- target:
152-
tuple: powerpc64-unknown-linux-gnu
153-
os: ubuntu-latest
154-
disable_assert_instr: true
155-
- target:
156-
tuple: powerpc64le-unknown-linux-gnu
157-
os: ubuntu-latest
158-
disable_assert_instr: true
159182
- target:
160183
tuple: aarch64-apple-darwin
161184
os: macos-15

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1414
lld
1515

1616
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
17-
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -L /usr/aarch64-linux-gnu" \
18-
OBJDUMP=aarch64-linux-gnu-objdump
17+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64 -cpu max -L /usr/aarch64-linux-gnu" \
18+
OBJDUMP=aarch64-linux-gnu-objdump \
19+
STDARCH_TEST_SKIP_FEATURE=tme

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ ENV AARCH64_BE_TOOLCHAIN="/toolchains/${TOOLCHAIN}"
2525
ENV AARCH64_BE_LIBC="${AARCH64_BE_TOOLCHAIN}/aarch64_be-none-linux-gnu/libc"
2626

2727
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_LINKER="${AARCH64_BE_TOOLCHAIN}/bin/aarch64_be-none-linux-gnu-gcc"
28-
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64_be -L ${AARCH64_BE_LIBC}"
28+
ENV CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER="qemu-aarch64_be -cpu max -L ${AARCH64_BE_LIBC}"
2929
ENV OBJDUMP="${AARCH64_BE_TOOLCHAIN}/bin/bin/aarch64-none-linux-gnu-objdump"
30+
ENV STDARCH_TEST_SKIP_FEATURE=tme

ci/docker/arm-unknown-linux-gnueabihf/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
99
make \
1010
file
1111
ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
12-
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
12+
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \
1313
OBJDUMP=arm-linux-gnueabihf-objdump

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1313
clang-19 \
1414
lld
1515
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
16-
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf" \
16+
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \
1717
OBJDUMP=arm-linux-gnueabihf-objdump

ci/docker/loongarch64-unknown-linux-gnu/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ RUN apt-get update && \
77

88

99
ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=loongarch64-linux-gnu-gcc-14 \
10-
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-loongarch64-static -L /usr/loongarch64-linux-gnu" \
11-
OBJDUMP=loongarch64-linux-gnu-objdump
10+
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_RUNNER="qemu-loongarch64-static -cpu max -L /usr/loongarch64-linux-gnu" \
11+
OBJDUMP=loongarch64-linux-gnu-objdump \
12+
STDARCH_TEST_SKIP_FEATURE=frecipe

ci/docker/powerpc-unknown-linux-gnu/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
qemu-system-ppc make file
77

88
ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \
9-
CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu Vger -L /usr/powerpc-linux-gnu" \
9+
CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -cpu mpc8610 -L /usr/powerpc-linux-gnu" \
1010
CC=powerpc-linux-gnu-gcc \
11-
OBJDUMP=powerpc-linux-gnu-objdump
11+
OBJDUMP=powerpc-linux-gnu-objdump \
12+
STDARCH_TEST_SKIP_FEATURE=vsx

ci/docker/powerpc64-unknown-linux-gnu/Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
file make
77

88
ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc \
9-
CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -cpu power10 -L /usr/powerpc64-linux-gnu" \
9+
CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -cpu power11 -L /usr/powerpc64-linux-gnu" \
1010
CC=powerpc64-linux-gnu-gcc \
1111
OBJDUMP=powerpc64-linux-gnu-objdump \
12+
STDARCH_TEST_SKIP_FEATURE=vsx \
1213
# These 2 tests have erratic behaviour with qemu, see https://gitlab.com/qemu-project/qemu/-/issues/1623#note_2449012173
1314
STDARCH_TEST_SKIP_FUNCTION=vec_lde_u16,vec_lde_u32

ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
77

88
# Work around qemu triggering a sigill on vec_subs if the cpu target is not defined.
99
ENV CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER=powerpc64le-linux-gnu-gcc \
10-
CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -cpu power10 -L /usr/powerpc64le-linux-gnu" \
10+
CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -cpu power11 -L /usr/powerpc64le-linux-gnu" \
1111
CC=powerpc64le-linux-gnu-gcc \
1212
OBJDUMP=powerpc64le-linux-gnu-objdump

ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
llvm
77

88
ENV CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=riscv64-linux-gnu-gcc \
9-
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUNNER="qemu-riscv64 \
10-
-L /usr/riscv64-linux-gnu \
11-
-cpu rv64,zk=true,zks=true,zbb=true,zbc=true \
12-
" \
9+
CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_RUNNER="qemu-riscv64 -cpu max -L /usr/riscv64-linux-gnu" \
1310
OBJDUMP=llvm-objdump

ci/docker/s390x-unknown-linux-gnu/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1010
file
1111

1212
ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc \
13-
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -L /usr/s390x-linux-gnu" \
13+
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -cpu max -L /usr/s390x-linux-gnu" \
1414
OBJDUMP=s390x-linux-gnu-objdump

ci/run-docker.sh

-2
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,10 @@ run() {
2424
--env CARGO_TARGET_DIR=/checkout/target \
2525
--env TARGET="${target}" \
2626
--env STDARCH_TEST_EVERYTHING \
27-
--env STDARCH_ASSERT_INSTR_IGNORE \
2827
--env STDARCH_DISABLE_ASSERT_INSTR \
2928
--env NOSTD \
3029
--env NORUN \
3130
--env RUSTFLAGS \
32-
--env STDARCH_TEST_NORUN \
3331
--volume "${HOME}/.cargo":/cargo \
3432
--volume "$(rustc --print sysroot)":/rust:ro \
3533
--volume "$(pwd)":/checkout:ro \

ci/run.sh

+7-5
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,15 @@ case ${TARGET} in
121121
cargo_test "${PROFILE}"
122122
;;
123123
powerpc64*)
124-
# We don't build the ppc 32-bit targets with these - these targets
125-
# are mostly unsupported for now.
126-
OLD_RUSTFLAGS="${RUSTFLAGS}"
127-
export RUSTFLAGS="${OLD_RUSTFLAGS} -C target-feature=+altivec"
124+
export RUSTFLAGS="${RUSTFLAGS} -C target-feature=+altivec"
128125
cargo_test "${PROFILE}"
129126

130-
export RUSTFLAGS="${OLD_RUSTFLAGS} -C target-feature=+vsx"
127+
export RUSTFLAGS="${RUSTFLAGS} -C target-feature=+vsx"
128+
cargo_test "${PROFILE}"
129+
;;
130+
powerpc*)
131+
# qemu has a bug in PPC32 which leads to a crash when compiled with `vsx`
132+
export RUSTFLAGS="${RUSTFLAGS} -C target-feature=+altivec"
131133
cargo_test "${PROFILE}"
132134
;;
133135

crates/stdarch-test/src/disassembly.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fn normalize(mut symbol: &str) -> String {
2929

3030
// Normalize to no leading underscore to handle platforms that may
3131
// inject extra ones in symbol names.
32-
while symbol.starts_with('_') {
32+
while symbol.starts_with('_') || symbol.starts_with('.') {
3333
symbol.remove(0);
3434
}
3535
// Windows/x86 has a suffix such as @@4.

crates/stdarch-test/src/lib.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,12 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {
104104
// failed inlining something.
105105
s[0].starts_with("call ") && s[1].starts_with("pop") // FIXME: original logic but does not match comment
106106
})
107-
} else if cfg!(any(target_arch = "aarch64", target_arch = "arm64ec")) {
107+
} else if cfg!(any(
108+
target_arch = "aarch64",
109+
target_arch = "arm64ec",
110+
target_arch = "powerpc",
111+
target_arch = "powerpc64"
112+
)) {
108113
instrs.iter().any(|s| s.starts_with("bl "))
109114
} else {
110115
// FIXME: Add detection for other archs

crates/stdarch-verify/tests/x86-intel.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -749,7 +749,8 @@ fn equate(
749749
&Type::PrimUnsigned(32),
750750
"unsigned __int32" | "unsigned int" | "unsigned long" | "const unsigned int",
751751
) => {}
752-
(&Type::PrimUnsigned(64), "unsigned __int64" | "size_t") => {}
752+
(&Type::PrimUnsigned(64), "unsigned __int64") => {}
753+
(&Type::PrimUnsigned(SS), "size_t") => {}
753754

754755
(&Type::M128, "__m128") => {}
755756
(&Type::M128BH, "__m128bh") => {}

0 commit comments

Comments
 (0)