Compile bug: SYCL AOT build for mtl-m (Xe-LPG) fails: `dpas.nosrc0` intrinsic not supported, introduced by d81d0d8fb
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- cmake, cpp, linux
- Domain
- backend, build-system
Research direction
Start with the regression commit d81d0d8fb95e52a66992bcfc212b1891b4d2f94a and the XMX implementation at ggml/src/ggml-sycl/esimd.hpp:1036, where xmx::dpas is called. Reproduce using the provided CMake configuration for GGML_SYCL on mtl-m and inspect how AOT code generation handles that kernel. Done means AOT compilation succeeds on Xe-LPG using a supported DPAS form or by excluding the unsupported kernels for that target.
Written by the indexing model from the issue text.
Description
Git commit
1ab09d632ebc30f171f58547a1110f8d6e9546c0 (b11834)
Operating systems
Linux
GGML backends
SYCL
Problem description & steps to reproduce
Compiling llama.cpp with the SYCL backend using AOT compilation for Meteor Lake iGPU (-device mtl-m, Xe-LPG) fails since d81d0d8fb (b11821, PR #29864 "Multi-column on Intel XMX matrix engines refactored"). The new XMX kernels call xmx::dpas (ggml/src/ggml-sycl/esimd.hpp:1036), which the compiler lowers to the llvm.genx.dpas.nosrc0 intrinsic. This intrinsic variant is not supported on Xe-LPG — the DPAS unit on Meteor Lake does not support the no-src0 form (it is a Xe2+ feature), so the AOT backend pass (GenXCisaBuilder) aborts.
The previous build tree at 39da130fcb (b11770, oneAPI 2026.2) compiled fine with the same flags, so this is a regression introduced in this batch. Presumably PR #29864 was validated on Xe2 hardware (B70), where dpas.nosrc0 exists. JIT builds may not notice because native code generation happens lazily at kernel launch; AOT codegen for Xe-LPG fails at build time for any kernel containing the intrinsic.
Expected: AOT compilation for Xe-LPG targets should either succeed (using a DPAS form supported on Xe-LPG) or the XMX multi-column kernels should be excluded from codegen for targets that lack dpas.nosrc0.
First Bad Commit
d81d0d8fb95e52a66992bcfc212b1891b4d2f94a (b11821, PR #29864)
Last known good: 39da130fcb (b11770) built successfully with identical flags and toolchain.
Compile command
cmake -B build-aot \
-DCMAKE_C_COMPILER=icx \
-DCMAKE_CXX_COMPILER=icpx \
-DGGML_SYCL=ON \
-DGGML_SYCL_F16=ON \
-DGGML_SYCL_DEVICE_ARCH=mtl-m \
-DGGML_SYCL_DNN=OFF
cmake --build build-aot -j16
Toolchain: Intel oneAPI DPC++/C++ Compiler 2026.2.0, Debian 13, kernel 6.12.113.
Relevant log output
[ 77%] Linking CXX shared library ../../../bin/libggml-sycl.so.0.27.0
error: LLVM ERROR: GenXCisaBuilder failed for: < %.esimd28 = tail call <16 x i32> @llvm.genx.dpas.nosrc0.v16i32.v128i32.v8i32(<128 x i32> %.esimd20.join48, <8 x i32> %.esimd11, i32 17303560)>: Intrinsic is not supported by the <XeLPG> platform
error: LLVM ERROR: GenXCisaBuilder failed for: < %.esimd30 = tail call <16 x i32> @llvm.genx.dpas.nosrc0.v16i32.v128i32.v8i32(<128 x i32> %.esimd24.join48, <8 x i32> %.esimd111997, i32 17303560)>: Intrinsic is not supported by the <XeLPG> platform
error: LLVM ERROR: GenXCisaBuilder failed for: < %.esimd28.1 = tail call <16 x i32> @llvm.genx.dpas.nosrc0.v16i32.v128i32.v8i32(<128 x i32> %.esimd20.1.join48, <8 x i32> %.esimd11.1, i32 17303560)>: Intrinsic is not supported by the <XeLPG> platform
gmake[2]: *** [ggml/src/ggml-sycl/CMakeFiles/ggml-sycl.dir/build.make:1772:bin/libggml-sycl.so.0.27.0] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:2617:ggml/src/ggml-sycl/CMakeFiles/ggml-sycl.dir/all] 错误 2
gmake: *** [Makefile:146:all] 错误 2
- Dominant language
- C++
- Stars
- 133k
- Forks
- 24.9k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 486
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ggml-org/llama.cpp
-
bug-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
ggml-org/llama.cpp#31337 · 1 comment ·
Maintainers usually reply within 1 day
-
bug-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ggml-org/llama.cpp#31290 · 2 comments ·
Maintainers usually reply within 1 day
-
bug-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Eval bug: Vulkan: count_experts.comp zero_skipped_rows() loops over every id in every threadPossibly taken @SG-Amadeus claimed this 3 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ggml-org/llama.cpp#31163 · 3 comments ·
Maintainers usually reply within 1 day
-
bug-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
Maintainers usually reply within 1 day
All issues in ggml-org/llama.cpp
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
ROCm/FastFlowLM#887 ·
Maintainers usually reply within 1 day
-
bug medium priority openmp tokenizer wrong result
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
good first issue invalid
Difficulty 1/5 Under an hour Newbie friendliness 72/100
DanielJerolm/gpcc#74 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
patrick-hudson/put.gd-desktop#808 ·
Maintainers usually reply within 1 day
-
DPI change is not fully handled in the cascading window on WindowsPossibly taken @yukawa claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 4 days