[Libclc-dev] [PATCH 1/4] r600: Convert get_local_size to clc

Aaron Watry via Libclc-dev libclc-dev at lists.llvm.org
Mon Oct 29 05:58:23 PDT 2018


I'm out of town on vacation until tomorrow evening. I'll see when I have
time to take a look at these.

--Aaron

On Mon, Oct 29, 2018, 1:40 AM Jan Vesely via Libclc-dev <
libclc-dev at lists.llvm.org> wrote:

> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> ---
> This series consolidates existing llvm asm variants to clc file.
> I've verified that the code generated using llvm-5 is the same for
> get-locl-size.cl, get-global-size.cl get-num-groups.cl, and
> global-memory.cl piglits (and all of them pass on Turks).
>
>  r600/lib/OVERRIDES_3.9                 |  1 -
>  r600/lib/OVERRIDES_4.0                 |  1 -
>  r600/lib/OVERRIDES_5.0                 |  1 -
>  r600/lib/OVERRIDES_6.0                 |  1 -
>  r600/lib/SOURCES                       |  2 +-
>  r600/lib/SOURCES_3.9                   |  1 -
>  r600/lib/SOURCES_4.0                   |  1 -
>  r600/lib/SOURCES_5.0                   |  1 -
>  r600/lib/SOURCES_6.0                   |  1 -
>  r600/lib/workitem/get_local_size.39.ll | 20 --------------------
>  r600/lib/workitem/get_local_size.cl    | 15 +++++++++++++++
>  r600/lib/workitem/get_local_size.ll    | 20 --------------------
>  12 files changed, 16 insertions(+), 49 deletions(-)
>  delete mode 100644 r600/lib/workitem/get_local_size.39.ll
>  create mode 100644 r600/lib/workitem/get_local_size.cl
>  delete mode 100644 r600/lib/workitem/get_local_size.ll
>
> diff --git a/r600/lib/OVERRIDES_3.9 b/r600/lib/OVERRIDES_3.9
> index c055c6d..e1a6ae8 100644
> --- a/r600/lib/OVERRIDES_3.9
> +++ b/r600/lib/OVERRIDES_3.9
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.ll
>  workitem/get_global_size.ll
> -workitem/get_local_size.ll
>  workitem/get_num_groups.ll
> diff --git a/r600/lib/OVERRIDES_4.0 b/r600/lib/OVERRIDES_4.0
> index c055c6d..e1a6ae8 100644
> --- a/r600/lib/OVERRIDES_4.0
> +++ b/r600/lib/OVERRIDES_4.0
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.ll
>  workitem/get_global_size.ll
> -workitem/get_local_size.ll
>  workitem/get_num_groups.ll
> diff --git a/r600/lib/OVERRIDES_5.0 b/r600/lib/OVERRIDES_5.0
> index c055c6d..e1a6ae8 100644
> --- a/r600/lib/OVERRIDES_5.0
> +++ b/r600/lib/OVERRIDES_5.0
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.ll
>  workitem/get_global_size.ll
> -workitem/get_local_size.ll
>  workitem/get_num_groups.ll
> diff --git a/r600/lib/OVERRIDES_6.0 b/r600/lib/OVERRIDES_6.0
> index c055c6d..e1a6ae8 100644
> --- a/r600/lib/OVERRIDES_6.0
> +++ b/r600/lib/OVERRIDES_6.0
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.ll
>  workitem/get_global_size.ll
> -workitem/get_local_size.ll
>  workitem/get_num_groups.ll
> diff --git a/r600/lib/SOURCES b/r600/lib/SOURCES
> index e69be4a..75cf901 100644
> --- a/r600/lib/SOURCES
> +++ b/r600/lib/SOURCES
> @@ -5,6 +5,6 @@ workitem/get_global_offset.cl
>  workitem/get_group_id.cl
>  workitem/get_global_size.ll
>  workitem/get_local_id.cl
> -workitem/get_local_size.ll
> +workitem/get_local_size.cl
>  workitem/get_num_groups.ll
>  workitem/get_work_dim.cl
> diff --git a/r600/lib/SOURCES_3.9 b/r600/lib/SOURCES_3.9
> index ba09398..9f36052 100644
> --- a/r600/lib/SOURCES_3.9
> +++ b/r600/lib/SOURCES_3.9
> @@ -15,5 +15,4 @@ image/write_imageui.cl
>  image/write_image_impl.ll
>  synchronization/barrier_impl.39.ll
>  workitem/get_global_size.39.ll
> -workitem/get_local_size.39.ll
>  workitem/get_num_groups.39.ll
> diff --git a/r600/lib/SOURCES_4.0 b/r600/lib/SOURCES_4.0
> index 091990c..6ca2332 100644
> --- a/r600/lib/SOURCES_4.0
> +++ b/r600/lib/SOURCES_4.0
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.39.ll
>  workitem/get_global_size.39.ll
> -workitem/get_local_size.39.ll
>  workitem/get_num_groups.39.ll
> diff --git a/r600/lib/SOURCES_5.0 b/r600/lib/SOURCES_5.0
> index 091990c..6ca2332 100644
> --- a/r600/lib/SOURCES_5.0
> +++ b/r600/lib/SOURCES_5.0
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.39.ll
>  workitem/get_global_size.39.ll
> -workitem/get_local_size.39.ll
>  workitem/get_num_groups.39.ll
> diff --git a/r600/lib/SOURCES_6.0 b/r600/lib/SOURCES_6.0
> index 091990c..6ca2332 100644
> --- a/r600/lib/SOURCES_6.0
> +++ b/r600/lib/SOURCES_6.0
> @@ -1,4 +1,3 @@
>  synchronization/barrier_impl.39.ll
>  workitem/get_global_size.39.ll
> -workitem/get_local_size.39.ll
>  workitem/get_num_groups.39.ll
> diff --git a/r600/lib/workitem/get_local_size.39.ll
> b/r600/lib/workitem/get_local_size.39.ll
> deleted file mode 100644
> index c9f2c84..0000000
> --- a/r600/lib/workitem/get_local_size.39.ll
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -declare i32 @llvm.r600.read.local.size.x() nounwind readnone
> -declare i32 @llvm.r600.read.local.size.y() nounwind readnone
> -declare i32 @llvm.r600.read.local.size.z() nounwind readnone
> -
> -target datalayout =
> "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64"
> -
> -define i32 @get_local_size(i32 %dim) nounwind readnone alwaysinline {
> -  switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label
> %y_dim i32 2, label %z_dim]
> -x_dim:
> -  %x = call i32 @llvm.r600.read.local.size.x()
> -  ret i32 %x
> -y_dim:
> -  %y = call i32 @llvm.r600.read.local.size.y()
> -  ret i32 %y
> -z_dim:
> -  %z = call i32 @llvm.r600.read.local.size.z()
> -  ret i32 %z
> -default:
> -  ret i32 1
> -}
> diff --git a/r600/lib/workitem/get_local_size.cl b/r600/lib/workitem/
> get_local_size.cl
> new file mode 100644
> index 0000000..89e2612
> --- /dev/null
> +++ b/r600/lib/workitem/get_local_size.cl
> @@ -0,0 +1,15 @@
> +#include <clc/clc.h>
> +
> +uint __clc_r600_get_local_size_x(void)
> __asm("llvm.r600.read.local.size.x");
> +uint __clc_r600_get_local_size_y(void)
> __asm("llvm.r600.read.local.size.y");
> +uint __clc_r600_get_local_size_z(void)
> __asm("llvm.r600.read.local.size.z");
> +
> +_CLC_DEF size_t get_local_size(uint dim)
> +{
> +       switch (dim) {
> +       case 0: return __clc_r600_get_local_size_x();
> +       case 1: return __clc_r600_get_local_size_y();
> +       case 2: return __clc_r600_get_local_size_z();
> +       default: return 1;
> +       }
> +}
> diff --git a/r600/lib/workitem/get_local_size.ll
> b/r600/lib/workitem/get_local_size.ll
> deleted file mode 100644
> index 04ce076..0000000
> --- a/r600/lib/workitem/get_local_size.ll
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -declare i32 @llvm.r600.read.local.size.x() nounwind readnone
> -declare i32 @llvm.r600.read.local.size.y() nounwind readnone
> -declare i32 @llvm.r600.read.local.size.z() nounwind readnone
> -
> -target datalayout =
> "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5"
> -
> -define i32 @get_local_size(i32 %dim) nounwind readnone alwaysinline {
> -  switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label
> %y_dim i32 2, label %z_dim]
> -x_dim:
> -  %x = call i32 @llvm.r600.read.local.size.x()
> -  ret i32 %x
> -y_dim:
> -  %y = call i32 @llvm.r600.read.local.size.y()
> -  ret i32 %y
> -z_dim:
> -  %z = call i32 @llvm.r600.read.local.size.z()
> -  ret i32 %z
> -default:
> -  ret i32 1
> -}
> --
> 2.18.1
>
> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20181029/48a07991/attachment.html>


More information about the Libclc-dev mailing list