-
Notifications
You must be signed in to change notification settings - Fork 796
[SYCL][NativeCPU] Limit generic ABI to builtins. #19564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
In intel#17408, NativeCPU became a target in order to be able to pick the ABI for its own libclc functions consistently, without having targets affect this. This was, and is, required to be able to use libclc independent of target and target options. However, it breaks some calls into libc. Therefore, this PR allows the calling convention to be explicitly specified, ensures it is specified for any libclc functions, and ensures it is not specified for any libc functions. Fixes the SYCL-E2E acos, cmath, and exp-std-complex tests.
|
This needs compiler tests, |
|
Just a heads up that after today I will be on holiday. I am not expecting reviews to be done today, that is fine, but it will be a little while before I'll be able to respond to any issues or concerns. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FE changes LGTM
| // Note: These signatures for parallel_for_work_item are intentionally | ||
| // non-conforming. The spec says this should take const WorkItemFunctionT &, | ||
| // but we take it by value, and rely on passing by value being done as passing | ||
| // a copy by reference (ptr byval) to ensure that the special handling in | ||
| // SYCLLowerWGScopePass to mutate the passed functor object works. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hierarchical parallelism is deprecated in SYCL 2020, so nobody cares, I guess.
|
It seems weird, but this PR hung twice on Windows BMG where other PRs passed, I don't expect it would effect GPU since this is NativeCPU. Are there any changes here that could cause this? |
No, nothing; I would be surprised if it's caused by anything in this PR. I'll retry a few more times. |
|
@intel/llvm-gatekeepers This is ready to be merged, thanks. |
|
We suspect this or something related is responsible for the CI struggles. Looks like and then Github Actions struggle processing all that output. @hvdijk please make take a look ASAP. |
|
Can you point me to where you are seeing these warnings, please? This PR adds both the definition of the |
|
We're seeing that in pre-commit build jobs, e.g. https://github.com/intel/llvm/actions/runs/17445027793/job/49537268401 And a bit more copy-paste context: |
|
Ah, thanks. The warning follows "warning: 'libclc_call' calling convention is not supported for this target" in files such as The libclc CMake is not setting |
|
Untested fix: #19971. I'll look at the CI output when it's ready to see if this works as intended. |
In #17408, NativeCPU became a target in order to be able to pick the ABI for its own libclc functions consistently, without having targets affect this. This was, and is, required to be able to use libclc independent of target and target options. However, it breaks some calls into libc. Therefore, this PR allows the calling convention to be explicitly specified, ensures it is specified for any libclc functions, and ensures it is not specified for any libc functions.
Fixes the SYCL-E2E acos, cmath, and exp-std-complex tests.