From 9a48c5fe0357de23ff2413c7510e2caa2d8f661e Mon Sep 17 00:00:00 2001 From: Myers Carpenter Date: Sat, 3 Oct 2026 11:25:13 -0400 Subject: [PATCH] ci: build the no_std decoder for x86_64-unknown-none The no-std job runs clippy for the host, which always has SSE2 and a float unit. A kernel target has neither: x86_64-unknown-none is -mmx,-sse,-sse2,...,+soft-float. Vector code that reaches codegen there fails only on that target, and as an LLVM error rather than a type error, so the host steps cannot see it. Earlier code in this crate did exactly that: with the x86 huff0 SIMD gated on `target_arch` alone, a `--no-default-features` build for this target stopped with rustc-LLVM ERROR: Do not know how to split the result of this operator! Current main builds cleanly for it, including with the x86 kernel tiers enabled (they are inert without the target feature, and stay inert even with the no_std tier selection forced on). This step keeps it that way. It builds both profiles, since -O0 and -O3 lower differently, with no SIMD tier and with `kernel-avx2`. --- .github/workflows/ci.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73352b56..6af6b1c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -426,6 +426,22 @@ jobs: - name: Clippy (embedded_minimal — kernel-scalar + std) working-directory: zstd run: cargo clippy -p structured-zstd --no-default-features --features kernel-scalar,std,hash -- -D warnings + # The clippy steps above compile for the host, which has SSE2 and a + # float unit. A kernel target has neither (x86_64-unknown-none is + # -sse,-sse2,...,+soft-float), so a vector type that + # reaches codegen there fails only on that target, as an LLVM error + # rather than a type error. Build for it directly, with no SIMD tier and + # with the x86 tiers enabled (they must stay inert without the target + # feature), in both profiles since -O0 and -O3 lower differently. + - name: Install bare-metal target + run: rustup target add x86_64-unknown-none + - name: Build (x86_64-unknown-none) + working-directory: zstd + run: | + for profile in dev release; do + cargo build -p structured-zstd --lib --profile "$profile" --target x86_64-unknown-none --no-default-features --features hash + cargo build -p structured-zstd --lib --profile "$profile" --target x86_64-unknown-none --no-default-features --features kernel-avx2,hash + done wasm: # #347 / #348: the wasm32 simd128 kernel tier + the npm package