Skip to content

[ESIMD] Use LLVM IR instead of GenX intrinsics for block loads/stores #10041

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

Merged
merged 16 commits into from
Jul 21, 2023

Conversation

v-klochkov
Copy link
Contributor

@v-klochkov v-klochkov commented Jun 23, 2023

This patch replaces some uses of GenX intrinsics with regular LLVM IR.

This change allowed to remove most of restrictions that previously
accompanied slm_block_load/store() and block_load/store() accepting USM ptr.
GPU RT/driver can lower 'load' instructions to one or several flat-loads
and/or gather instructions depending on the target device, alignment and length.
Same for 'store' instructions.

@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch from e7c4bc1 to c28f848 Compare June 23, 2023 03:41
@v-klochkov v-klochkov temporarily deployed to aws June 23, 2023 03:56 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws June 23, 2023 04:32 — with GitHub Actions Inactive
@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch from c28f848 to 4f4006d Compare June 23, 2023 19:42
@v-klochkov v-klochkov temporarily deployed to aws June 23, 2023 21:00 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws June 23, 2023 21:38 — with GitHub Actions Inactive
@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch 3 times, most recently from 14eb8f9 to d535109 Compare June 26, 2023 16:03
@v-klochkov v-klochkov temporarily deployed to aws June 26, 2023 16:21 — with GitHub Actions Inactive
@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch from d535109 to 7a4b87d Compare June 26, 2023 16:34
@v-klochkov v-klochkov temporarily deployed to aws June 26, 2023 17:03 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws June 26, 2023 17:59 — with GitHub Actions Inactive
@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch from 7a4b87d to 2400e79 Compare June 26, 2023 18:52
@v-klochkov v-klochkov temporarily deployed to aws June 26, 2023 19:13 — with GitHub Actions Inactive
@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch from 2400e79 to 8ff2629 Compare June 26, 2023 21:03
@v-klochkov v-klochkov temporarily deployed to aws June 26, 2023 21:42 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws June 26, 2023 23:10 — with GitHub Actions Inactive
@v-klochkov v-klochkov force-pushed the esimd_gather_llvm_ir branch from 8ff2629 to d27ccb0 Compare June 27, 2023 00:49
This patch replaces usage of GenX intrinsics with regular LLVM IR.

This change allowed to remove most of restrictions that previously
accompanied slm_block_load/store() and block_load/store().
GPU RT/driver can lower 'load' instructions to one or several flat-loads
or gather instructions depending on the target device, alignment and length.
Same for 'store' instructions.

Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
@v-klochkov v-klochkov temporarily deployed to aws June 27, 2023 01:11 — with GitHub Actions Inactive
@v-klochkov v-klochkov marked this pull request as ready for review June 27, 2023 01:22
@v-klochkov v-klochkov requested a review from a team as a code owner June 27, 2023 01:22
@v-klochkov v-klochkov temporarily deployed to aws June 27, 2023 01:51 — with GitHub Actions Inactive
… missing Flags operand to block_load/store accepting local-accessor

Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
@v-klochkov v-klochkov temporarily deployed to aws June 28, 2023 07:38 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws June 28, 2023 08:19 — with GitHub Actions Inactive
Copy link
Contributor

@sarnex sarnex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good, thanks!

@v-klochkov v-klochkov temporarily deployed to aws July 15, 2023 00:37 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 15, 2023 03:10 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 01:01 — with GitHub Actions Inactive
Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 02:02 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 02:43 — with GitHub Actions Inactive
…p test

Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 04:19 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 06:03 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 15:32 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 16:31 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 22:20 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 18, 2023 23:33 — with GitHub Actions Inactive
Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
@v-klochkov v-klochkov temporarily deployed to aws July 20, 2023 22:05 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 20, 2023 23:46 — with GitHub Actions Inactive
…not supported there

Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
@v-klochkov v-klochkov temporarily deployed to aws July 21, 2023 00:58 — with GitHub Actions Inactive
@v-klochkov v-klochkov temporarily deployed to aws July 21, 2023 01:37 — with GitHub Actions Inactive
@v-klochkov v-klochkov requested a review from turinevgeny July 21, 2023 02:22
@v-klochkov
Copy link
Contributor Author

v-klochkov commented Jul 21, 2023

@turinevgeny , @fineg74 - please re-review this additional patch: 5c876ee
It replaces 2 old routines (minLinuxDriver() and minWindowsDriver() with a new isGPUDriverGE() // GE stands for Greater or Equal.
The motivation for doing that were fails with windows/opencl and the new fails on new Gen12-CI.

@turinevgeny
Copy link
Contributor

@turinevgeny , @fineg74 - please re-review this additional patch: 5c876ee It replaces 2 old routines (minLinuxDriver() and minWindowsDriver() with a new isGPUDriverGE() // GE stands for Greater or Equal. The motivation for doing that were fails with windows/opencl and the new fails on new Gen12-CI.

Looks okay.

@v-klochkov v-klochkov merged commit 8af94a0 into intel:sycl Jul 21, 2023
@v-klochkov v-klochkov deleted the esimd_gather_llvm_ir branch July 26, 2023 22:59
mdtoguchi pushed a commit to mdtoguchi/llvm that referenced this pull request Oct 18, 2023
… - USM and SLM (intel#10041)

This patch replaces some uses of GenX intrinsics with regular LLVM IR.

This change allowed to remove most of restrictions that previously
accompanied slm_block_load/store() and block_load/store() accepting USM
ptr.
GPU RT/driver can lower 'load' instructions to one or several flat-loads
and/or gather instructions depending on the target device, alignment and
length.
Same for 'store' instructions.

---------

Signed-off-by: Vyacheslav N Klochkov <vyacheslav.n.klochkov@intel.com>
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.

4 participants