-
Notifications
You must be signed in to change notification settings - Fork 787
[SYCL][Fusion] Adapt internalization to opaque pointers. #10882
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
46930c3
to
6c5e9e5
Compare
Signed-off-by: Julian Oppermann <[email protected]>
6c5e9e5
to
498b169
Compare
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.
Do we need to add a LIT test checking that we do not promote a pointer into an aggregate?
Signed-off-by: Julian Oppermann <[email protected]>
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.
Looks good. Can you add some lit tests to sycl-fusion/test/internalization/
testing new cases?
Signed-off-by: Julian Oppermann <[email protected]>
Signed-off-by: Julian Oppermann <[email protected]>
CI failure looks unrelated. I'm still missing a testcase for aborting propagation into function calls, though. |
Signed-off-by: Julian Oppermann <[email protected]>
I've added a lit test for stopping the promotion of calls in |
Failure on CUDA is caused by a test added by this PR; investigating. |
Signed-off-by: Julian Oppermann <[email protected]>
Fixes
sycl/test-e2e/KernelFusion/internalize_array_wrapper.cpp
which was temporarily deactivated in #9828.Switching to opaque pointers meant that accesses to the data structure in the testcase were no longer represented as one "deep" GEP, but rather a series of GEPs into the different nesting levels of the structure. Rather than bailing out, we now keep track of GEPs that index into an aggregate object, and exclude their users from the modulo-
LocalSize
rewriting (the pointer types still have to be changed to the desired target address space, though).In addition, perform
-simplifycfg
before internalization in order to get rid of unreachable code which, in this particular case, contained Phi nodes on the candidate accessor.