Skip to content

[SYCL] Preserve restrict on free function kernel pointer args#21989

Open
koparasy wants to merge 2 commits into
intel:syclfrom
koparasy:free-functions-restrict-ptr
Open

[SYCL] Preserve restrict on free function kernel pointer args#21989
koparasy wants to merge 2 commits into
intel:syclfrom
koparasy:free-functions-restrict-ptr

Conversation

@koparasy
Copy link
Copy Markdown
Contributor

Preserve top-level pointer qualifiers when rewriting SYCL free function kernel pointer parameters into global address space, so restrict lowers to LLVM noalias on generated kernel arguments. Add device-code coverage for restrict-qualified free function kernel and helper parameters.

I changed ModifyAddressSpace because that is where SYCL reconstructs rewritten pointer types. It was preserving pointee qualifiers but dropping top-level pointer qualifiers such as __restrict__, which caused the generated kernel parameters to lose LLVM noalias.

Preserve top-level pointer qualifiers when rewriting SYCL free function
kernel pointer parameters into global address space, so restrict lowers
to LLVM noalias on generated kernel arguments. Add device-code coverage
for restrict-qualified free function kernel and helper parameters.
@koparasy koparasy requested a review from bader May 11, 2026 23:08
@koparasy koparasy requested review from a team as code owners May 11, 2026 23:08
@koparasy koparasy requested a review from cperkinsintel May 11, 2026 23:08
@@ -0,0 +1,30 @@
// RUN: %clangxx -fsycl-device-only -S -Xclang -emit-llvm -Xclang -disable-llvm-passes %s -o - | FileCheck %s --check-prefix CHECK-IR
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.

I don't see why this test is added to sycl directory. The tests in sycl/test/check_device_code exist to make sure that SYCL headers correctly use front-end provided features to produce expected IR. I don't see anything specific for our SYCL headers in this test therefore it is easier to add a test to clang/test/CodeGenSYCL directory.

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.

Thanks! That sounds about right. Moved the test under the requested directory.

@bader bader requested a review from Fznamznon May 12, 2026 15:30
Comment on lines +3 to +4
#include <sycl/ext/oneapi/experimental/free_function_traits.hpp>
#include <sycl/sycl.hpp>
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.

Could you please also align this test with other tests in CodeGenSYCL? General changes that should be done are:

  • Don't use clang driver in front-end tests, i.e. clang_cc1 substitute instead of clangxx
  • Use mock SYCL headers available in CodeGenSYCL/Inputs to avoid dependency on our SYCL headers

Other tests for free functions in CodeGenSYCL are good examples.

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.

3 participants