[SYCL] Implement work group memory extension
Implement work group memory extension: https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/proposed/sycl_ext_oneapi_work_group_memory.asciidoc Two notes:
- Free function kernel support for work group memory argument will be added in a future PR.
- When the assignment operator is called in host code, the assigned to work group memory object does not actually correspond to the same underlying memory as the one that was assigned from contradicting the spec. See https://github.com/KhronosGroup/SYCL-Docs/issues/552 for a similar problem with
local_accessor
The feature needs E2E tests but since I have the implementation ready, wanted to get some early feedback while I finish up the tests.
Once we have tests, you should also move the specification document to the "experimental" folder. Also change the "Status" section according to the template.
I've made some changes to support unbounded arrays. I've modified LLVM IR -> SPIRV type lowering for unbounded arrays to instead map them to an array of length 1 rather than length zero. Relevant file is SPIRVWriter.cpp, line 456.
@intel/dpcpp-cfe-reviewers ping for review of the frontend changes and tests.
Please add FE tests for FE changes. Since you're adding a new type of argument with some special handling in the FE, I would add an AST test ensuring the expected arguments are generated and a CodeGen test for the change in integration header.
Please add FE tests for FE changes. Since you're adding a new type of argument with some special handling in the FE, I would add an AST test ensuring the expected arguments are generated and a CodeGen test for the change in integration header.
My bad. I did not notice the test you added. No further changes are necessary
@intel/llvm-gatekeepers ping for merge.