In LLVM 23 / Binutils 2.47, the SpacemiT X60 schedule model has become the default -mtune=generic reference for RISC-V. A look at what shipped in July 2026 and why it matters.
-mtune=... flag. This means X60 — the eight-issue superscalar core inside the SpacemiT K1 SoC that powers Lichee Pi 3A, Banana Pi BPI-F3, and dozens of other boards — has effectively become the reference tuning baseline for the entire RISC-V ecosystem in mainline LLVM/Clang.
This is not a marketing claim; it is a code change inside the official LLVM 23 release and Binutils 2.47. For developers building anything RISC-V on a CI pipeline, the compiler decisions you get tomorrow will quietly be guided by the K1's design assumptions.
SpacemiT's monthly upstream digest (Topic 1554 on the SpacemiT community forum) lists the patches that landed in July 2026:
-mtune=generic referenceThe corresponding forum thread (Topic 1559) summarises the same month with a much broader lens, including SpacemiT Studio, FlagOS 2.1, Bianbu 4.0.4, Box64 RV64 dynarec optimisations, and the OpenOCD/Keystone K3 target files.
What makes the X60 story different from "yet another RISC-V vendor merged support" is the-mtune=generic decision. Generic tuning is what compilers fall back to when the user has not specified a micro-architecture. The implication is sweeping: any developer who runs clang --target=riscv64 -O2 foo.c and does not explicitly request a core will get scheduling decisions informed by the X60 pipeline model.
-mtune=generic MattersMost cross-compilation invocations for RISC-V look something like this:
clang --target=riscv64-unknown-linux-gnu -O2 -mcpu=rv64 app.c -o app Without an-mtune=, LLVM historically defaulted to a generic out-of-order cost model that often produced conservative code. SpacemiT's X60 schedule model is a tuned, validated model representing an actual shipped superscalar core. LLVM's -mtune=generic now aligns the default scheduling behaviour with the X60 pipeline — and since the X60 is the reference core for many of SpacemiT's downstream parts (including the K3's predecessors and follow-ons), the choice ripples across multiple SKUs.
For developers, the practical takeaways are:
-mtune=generic remains portable across other RISC-V parts; you just give up some performance optimisation. If you happen to compile on a K1 and run on a different core, the code is still valid — it is just less perfectly scheduled.The X60 headline is part of a much larger wave. The same upstream month delivered, in summary:
Kernel mainline merge activity-march auto-detectionThe message is clear: SpacemiT is no longer pushing patches; SpacemiT's models are now defaults that other people inherit.
For developers evaluating RISC-V boards, the cumulative effect is increasingly practical:
For a single-board platform, this is an enviable position. Compare it to a typical Chinese RISC-V board of 18 months ago, where you had to rebuild GCC yourself and chase out-of-tree BSP patches.
Two practical recommendations for anyone shipping cross-compiled RISC-V binaries:
-mcpu= explicitly for performance-critical paths. The default is good, but the best-in-class result still comes from -mcpu=spacemit-x100 (for K3 compute cores) or -mcpu=spacemit-a100 (for K3 AI cores with the matrix extension).-mtune=generic or to embrace the new default and benefit from K1/K3 class performance across the board.
If you want to evaluate this on real hardware, the cleanest path is:
# Boot a Lichee Pi 3A or BPI-F3 with Bianbu 4.0.4 sudo apt update && sudo apt install clang llvm lld # Verify your toolchain is upstream-aware clang --version # should report LLVM 23 or newer clang --print-targets | grep riscv # Compile a benchmark using the new defaults clang --target=riscv64-unknown-linux-gnu -O2 -mcpu=rv64 bench.c -o bench # Compare to explicit X60 tuning clang --target=riscv64-unknown-linux-gnu -O2 -mcpu=rv64 -mtune=spacemit-x60 bench.c -o bench-tunedFor our readers looking at K1 boards and dev kits, our store lists multiple K1-based single-board computers and accessories at competitive pricing. K3-based boards (Jupiter 2, Pico-ITX, COM260) are available for early evaluators running RVA23 workloads.
The takeaway: in compiler time, six months can be a generation. The X60's elevation to the generic-tuning reference is the kind of change that quietly cascades through CI logs and benchmarks for the next two years.