Skip to content

[SYCL] Add properties to enqueue_signal_event and enqueue_wait_event[s] - #23474

Open
mmichel11 wants to merge 1 commit into
intel:syclfrom
adamfidel:matt/reusable_event_properties
Open

mmichel11 wants to merge 1 commit into
intel:syclfrom
adamfidel:matt/reusable_event_properties

Conversation

@mmichel11

Copy link
Copy Markdown
Contributor

@mmichel11
mmichel11 requested a balanced review from Copilot October 13, 2026 20:15
@mmichel11 mmichel11 changed the title [SYCL] Add property-list to enqueue_signal_event and enqueue_wait_event[s] [SYCL] Add properties to enqueue_signal_event and enqueue_wait_event[s] Oct 13, 2026

Copilot AI left a comment

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.

🟡 Changes recommended

Removing the legacy public declarations breaks source compatibility for callers taking function addresses.

1 open finding
What changed in this PR

Adds property-list support to reusable event enqueue APIs while preserving existing ABI symbols.

Changes:

  • Adds constrained property-list overloads and internal flag plumbing.
  • Retains legacy runtime entry points.
  • Adds compile-time, unit, and ABI coverage.
File Description
sycl/​include/​sycl/​ext/​oneapi/​experimental/​reusable_events.hpp Defines property-list enqueue APIs.
sycl/​source/​reusable_events.cpp Implements flag-based entry points and ABI wrappers.
sycl/​unittests/​Extensions/​ReusableEvents.cpp Tests empty property lists.
sycl/​test/​extensions/​reusable_events_constraints.cpp Tests property constraints.
sycl/​test/​abi/​sycl_symbols_linux.dump Records Linux ABI symbols.
sycl/​test/​abi/​sycl_symbols_windows.dump Records Windows ABI symbols.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +131 to +137
template <typename PropertyListT = empty_properties_t,
typename = std::enable_if_t<detail::all_are_properties_of_v<
detail::enqueue_event_props, PropertyListT>>>
void enqueue_wait_event(sycl::queue q, const event &evt,
PropertyListT props = {}) {
detail::enqueue_wait_event(q, evt, detail::getEnqueueEventFlags(props));
}
@mmichel11
mmichel11 force-pushed the matt/reusable_event_properties branch from 36c70d4 to aa8aa98 Compare October 13, 2026 20:40
@mmichel11
mmichel11 marked this pull request as ready for review October 14, 2026 15:26
@mmichel11
mmichel11 requested a review from a team as a code owner October 14, 2026 15:26

} // namespace detail

// These entry points are kept for backwards compatibility.

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.

@dm-vodopyanov @intel/llvm-reviewers-runtime Could you advise if this is the best approach to preserve ABI?

We had discussed with @gmlueck that the libsycl ABI should be maintained here. The enqueue_* functions used to be exported directly. They are now header templates that take a property list and call new detail:: exports with a flags argument. I removed the previous declarations from the header but kept these old exported symbols, so binaries built against older headers still work.

Is it fine that calls with no provided property list call into the new detail:: functions?

@mmichel11
mmichel11 requested a review from adamfidel October 15, 2026 19:44

This branch has not been deployed

No deployments
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