Skip to content

[SYCL][Driver] Enable SPV_EXT_long_vector alongside SPV_INTEL_vector_compute - #22831

Open
hchilama wants to merge 18 commits into
intel:syclfrom
hchilama:sycl-enable-spv-ext-long-vector
Open

[SYCL][Driver] Enable SPV_EXT_long_vector alongside SPV_INTEL_vector_compute#22831
hchilama wants to merge 18 commits into
intel:syclfrom
hchilama:sycl-enable-spv-ext-long-vector

Conversation

@hchilama

Copy link
Copy Markdown
Contributor

Add SPV_EXT_long_vector to the default -spirv-ext= list passed to llvm-spirv, so that scalar (non-ESIMD/non-VC) SYCL modules emit size-1 vectors under the multi-vendor SPV_EXT_long_vector extension instead of SPV_INTEL_vector_compute. SPV_INTEL_vector_compute stays enabled so ESIMD / vector-compute modules keep working - when both are enabled the
SPIR-V translator picks SPV_INTEL_vector_compute for VC modules and SPV_EXT_long_vector otherwise

@hchilama
hchilama requested review from a team and cperkinsintel as code owners July 30, 2026 20:31
",+SPV_INTEL_io_pipes,+SPV_INTEL_inline_assembly"
",+SPV_INTEL_arbitrary_precision_integers"
",+SPV_INTEL_float_controls2,+SPV_INTEL_vector_compute"
",+SPV_EXT_long_vector"

@sarnex sarnex Jul 30, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you know if intel gpu driver support for this extension is somewhat recent? we need to support a large range of drivers

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, SPV_EXT_long_vector was added to IGC on 2026-07-23.

So we'd effectively be producing binaries that fail to load on every currently-shipped public Intel GPU driver for the scalar path. A few options:

  1. Hold this PR until IGC uplift - wait for the next public IGC release that includes 84f80ab074+, devops/dependencies.json moves to it, then land unconditionally. Cleanest; no dead
    code paths.
  2. Feature-flag off by default - add -f[no-]sycl-use-long-vector-ext, land the plumbing now, flip the default once the driver floor moves.
  3. JIT-only for now - apply the change only in SPIRVLLVMTranslation.cpp and revert Clang.cpp / ClangLinkerWrapper.cpp. (Note: currently the JIT translator has no device/driver-version info at the translation call site - translatorOpts() is a process-wide singleton with no parameters. To gate it on the driver version would need a new parameter threaded from the SYCL runtime, so this option is only "safe" if it's also unconditional - meaning JIT would still produce SPV_EXT_long_vector for scalar modules and break on older drivers at JIT time.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants