Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
yaxunl retitled this revision from "[OpenCL] Use function attribute/metadata to represent kernel attributes" to "[OpenCL] Use function metadata to represent kernel attributes". yaxunl updated the summary for this revision. yaxunl updated this revision to Diff 60545. http://reviews.llvm.org/D20979 Files: lib/CodeGen/CodeGenFunction.cpp test/CodeGenOpenCL/kernel-arg-info.cl test/CodeGenOpenCL/kernel-attributes.cl test/CodeGenOpenCL/kernel-metadata.cl Index: test/CodeGenOpenCL/kernel-metadata.cl === --- test/CodeGenOpenCL/kernel-metadata.cl +++ test/CodeGenOpenCL/kernel-metadata.cl @@ -6,10 +6,5 @@ __kernel void kernel_function() { } -// CHECK: !opencl.kernels = !{!0} -// CHECK: !0 = !{void ()* @kernel_function, !1, !2, !3, !4, !5} -// CHECK: !1 = !{!"kernel_arg_addr_space"} -// CHECK: !2 = !{!"kernel_arg_access_qual"} -// CHECK: !3 = !{!"kernel_arg_type"} -// CHECK: !4 = !{!"kernel_arg_base_type"} -// CHECK: !5 = !{!"kernel_arg_type_qual"} +// CHECK: define void @kernel_function() #{{[0-9]+}} !kernel_arg_addr_space ![[MD:[0-9]+]] !kernel_arg_access_qual ![[MD]] !kernel_arg_type ![[MD]] !kernel_arg_base_type ![[MD]] !kernel_arg_type_qual ![[MD]] { +// CHECK: ![[MD]] = !{} Index: test/CodeGenOpenCL/kernel-attributes.cl === --- test/CodeGenOpenCL/kernel-attributes.cl +++ test/CodeGenOpenCL/kernel-attributes.cl @@ -3,14 +3,12 @@ typedef unsigned int uint4 __attribute__((ext_vector_type(4))); kernel __attribute__((vec_type_hint(int))) __attribute__((reqd_work_group_size(1,2,4))) void kernel1(int a) {} +// CHECK: define void @kernel1(i32 %a) #{{[^{]+}} !vec_type_hint ![[MD1:[0-9]+]] !reqd_work_group_size ![[MD2:[0-9]+]] kernel __attribute__((vec_type_hint(uint4))) __attribute__((work_group_size_hint(8,16,32))) void kernel2(int a) {} +// CHECK: define void @kernel2(i32 %a) #{{[^{]+}} !vec_type_hint ![[MD3:[0-9]+]] !work_group_size_hint ![[MD4:[0-9]+]] -// CHECK: opencl.kernels = !{[[MDNODE0:![0-9]+]], [[MDNODE3:![0-9]+]]} - -// CHECK: [[MDNODE0]] = !{void (i32)* @kernel1, {{.*}} [[MDNODE1:![0-9]+]], [[MDNODE2:![0-9]+]]} -// CHECK: [[MDNODE1]] = !{!"vec_type_hint", i32 undef, i32 1} -// CHECK: [[MDNODE2]] = !{!"reqd_work_group_size", i32 1, i32 2, i32 4} -// CHECK: [[MDNODE3]] = !{void (i32)* @kernel2, {{.*}} [[MDNODE4:![0-9]+]], [[MDNODE5:![0-9]+]]} -// CHECK: [[MDNODE4]] = !{!"vec_type_hint", <4 x i32> undef, i32 0} -// CHECK: [[MDNODE5]] = !{!"work_group_size_hint", i32 8, i32 16, i32 32} +// CHECK: [[MD1]] = !{i32 undef, i32 1} +// CHECK: [[MD2]] = !{i32 1, i32 2, i32 4} +// CHECK: [[MD3]] = !{<4 x i32> undef, i32 0} +// CHECK: [[MD4]] = !{i32 8, i32 16, i32 32} Index: test/CodeGenOpenCL/kernel-arg-info.cl === --- test/CodeGenOpenCL/kernel-arg-info.cl +++ test/CodeGenOpenCL/kernel-arg-info.cl @@ -1,55 +1,88 @@ -// RUN: %clang_cc1 %s -cl-kernel-arg-info -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s -check-prefix ARGINFO -// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s -check-prefix NO-ARGINFO +// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s +// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown -cl-kernel-arg-info | FileCheck %s -check-prefix ARGINFO kernel void foo(__global int * restrict X, const int Y, volatile int anotherArg, __constant float * restrict Z) { *X = Y + anotherArg; } - -// CHECK: !{!"kernel_arg_addr_space", i32 1, i32 0, i32 0, i32 2} -// CHECK: !{!"kernel_arg_access_qual", !"none", !"none", !"none", !"none"} -// CHECK: !{!"kernel_arg_type", !"int*", !"int", !"int", !"float*"} -// CHECK: !{!"kernel_arg_base_type", !"int*", !"int", !"int", !"float*"} -// CHECK: !{!"kernel_arg_type_qual", !"restrict", !"const", !"volatile", !"restrict const"} -// ARGINFO: !{!"kernel_arg_name", !"X", !"Y", !"anotherArg", !"Z"} -// NO-ARGINFO-NOT: !{!"kernel_arg_name", !"X", !"Y", !"anotherArg", !"Z"} +// CHECK: define spir_kernel void @foo{{[^!]+}} +// CHECK: !kernel_arg_addr_space ![[MD11:[0-9]+]] +// CHECK: !kernel_arg_access_qual ![[MD12:[0-9]+]] +// CHECK: !kernel_arg_type ![[MD13:[0-9]+]] +// CHECK: !kernel_arg_base_type ![[MD13]] +// CHECK: !kernel_arg_type_qual ![[MD14:[0-9]+]] +// CHECK-NOT: !kernel_arg_name +// ARGINFO: !kernel_arg_name ![[MD15:[0-9]+]] kernel void foo2(read_only image1d_t img1, image2d_t img2, write_only image2d_array_t img3) { } -// CHECK: !{!"kernel_arg_addr_space", i32 1, i32 1, i32 1} -// CHECK: !{!"kernel_arg_access_qual", !"read_only", !"read_only", !"write_only"} -// CHECK: !{!"kernel_arg_type", !"image1d_t", !"image2d_t", !"image2d_array_t"} -// CHECK: !{!"kernel_arg_base_type", !"image1d_t", !"image2d_t", !"image2d_array_t"} -// CHECK: !{!"kernel_arg_type_qual", !"", !"", !""} -// ARGINFO: !{!"kernel_arg_name", !"img1", !"img2", !"im
Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
yaxunl added a comment. I updated the patch to use function metadata only. Please review. Thanks. http://reviews.llvm.org/D20979 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
Anastasia accepted this revision. Anastasia added a comment. This revision is now accepted and ready to land. LGTM! http://reviews.llvm.org/D20979 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
yaxunl added a comment. Ping! Alexey/Xiuli, are you OK with this change? Thanks. http://reviews.llvm.org/D20979 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
bader accepted this revision. bader added a comment. LGTM. Comment at: test/CodeGenOpenCL/kernel-attributes.cl:9 @@ -8,3 +10,1 @@ -// CHECK: opencl.kernels = !{[[MDNODE0:![0-9]+]], [[MDNODE3:![0-9]+]]} - AFAIK, this named metadata node were also useful for kernel functions traversal. What is the new BKM to differentiate kernel/non-kernel functions? Check for !kernel_arg_* function attribute? http://reviews.llvm.org/D20979 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
yaxunl added inline comments. Comment at: test/CodeGenOpenCL/kernel-attributes.cl:9 @@ -8,3 +10,1 @@ -// CHECK: opencl.kernels = !{[[MDNODE0:![0-9]+]], [[MDNODE3:![0-9]+]]} - bader wrote: > AFAIK, this named metadata node were also useful for kernel functions > traversal. > What is the new BKM to differentiate kernel/non-kernel functions? > Check for !kernel_arg_* function attribute? I think it could be used for that purpose, since kernel functions and only kernel functions have this function attribute. http://reviews.llvm.org/D20979 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
This revision was automatically updated to reflect the committed changes. Closed by commit rL273425: [OpenCL] Use function metadata to represent kernel attributes (authored by yaxunl). Changed prior to commit: http://reviews.llvm.org/D20979?vs=60545&id=61555#toc Repository: rL LLVM http://reviews.llvm.org/D20979 Files: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl cfe/trunk/test/CodeGenOpenCL/kernel-metadata.cl Index: cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl === --- cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl +++ cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl @@ -3,14 +3,12 @@ typedef unsigned int uint4 __attribute__((ext_vector_type(4))); kernel __attribute__((vec_type_hint(int))) __attribute__((reqd_work_group_size(1,2,4))) void kernel1(int a) {} +// CHECK: define void @kernel1(i32 %a) {{[^{]+}} !vec_type_hint ![[MD1:[0-9]+]] !reqd_work_group_size ![[MD2:[0-9]+]] kernel __attribute__((vec_type_hint(uint4))) __attribute__((work_group_size_hint(8,16,32))) void kernel2(int a) {} +// CHECK: define void @kernel2(i32 %a) {{[^{]+}} !vec_type_hint ![[MD3:[0-9]+]] !work_group_size_hint ![[MD4:[0-9]+]] -// CHECK: opencl.kernels = !{[[MDNODE0:![0-9]+]], [[MDNODE3:![0-9]+]]} - -// CHECK: [[MDNODE0]] = !{void (i32)* @kernel1, {{.*}} [[MDNODE1:![0-9]+]], [[MDNODE2:![0-9]+]]} -// CHECK: [[MDNODE1]] = !{!"vec_type_hint", i32 undef, i32 1} -// CHECK: [[MDNODE2]] = !{!"reqd_work_group_size", i32 1, i32 2, i32 4} -// CHECK: [[MDNODE3]] = !{void (i32)* @kernel2, {{.*}} [[MDNODE4:![0-9]+]], [[MDNODE5:![0-9]+]]} -// CHECK: [[MDNODE4]] = !{!"vec_type_hint", <4 x i32> undef, i32 0} -// CHECK: [[MDNODE5]] = !{!"work_group_size_hint", i32 8, i32 16, i32 32} +// CHECK: [[MD1]] = !{i32 undef, i32 1} +// CHECK: [[MD2]] = !{i32 1, i32 2, i32 4} +// CHECK: [[MD3]] = !{<4 x i32> undef, i32 0} +// CHECK: [[MD4]] = !{i32 8, i32 16, i32 32} Index: cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl === --- cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl +++ cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl @@ -1,55 +1,88 @@ -// RUN: %clang_cc1 %s -cl-kernel-arg-info -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s -check-prefix ARGINFO -// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s -check-prefix NO-ARGINFO +// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s +// RUN: %clang_cc1 %s -emit-llvm -o - -triple spir-unknown-unknown -cl-kernel-arg-info | FileCheck %s -check-prefix ARGINFO kernel void foo(__global int * restrict X, const int Y, volatile int anotherArg, __constant float * restrict Z) { *X = Y + anotherArg; } - -// CHECK: !{!"kernel_arg_addr_space", i32 1, i32 0, i32 0, i32 2} -// CHECK: !{!"kernel_arg_access_qual", !"none", !"none", !"none", !"none"} -// CHECK: !{!"kernel_arg_type", !"int*", !"int", !"int", !"float*"} -// CHECK: !{!"kernel_arg_base_type", !"int*", !"int", !"int", !"float*"} -// CHECK: !{!"kernel_arg_type_qual", !"restrict", !"const", !"volatile", !"restrict const"} -// ARGINFO: !{!"kernel_arg_name", !"X", !"Y", !"anotherArg", !"Z"} -// NO-ARGINFO-NOT: !{!"kernel_arg_name", !"X", !"Y", !"anotherArg", !"Z"} +// CHECK: define spir_kernel void @foo{{[^!]+}} +// CHECK: !kernel_arg_addr_space ![[MD11:[0-9]+]] +// CHECK: !kernel_arg_access_qual ![[MD12:[0-9]+]] +// CHECK: !kernel_arg_type ![[MD13:[0-9]+]] +// CHECK: !kernel_arg_base_type ![[MD13]] +// CHECK: !kernel_arg_type_qual ![[MD14:[0-9]+]] +// CHECK-NOT: !kernel_arg_name +// ARGINFO: !kernel_arg_name ![[MD15:[0-9]+]] kernel void foo2(read_only image1d_t img1, image2d_t img2, write_only image2d_array_t img3) { } -// CHECK: !{!"kernel_arg_addr_space", i32 1, i32 1, i32 1} -// CHECK: !{!"kernel_arg_access_qual", !"read_only", !"read_only", !"write_only"} -// CHECK: !{!"kernel_arg_type", !"image1d_t", !"image2d_t", !"image2d_array_t"} -// CHECK: !{!"kernel_arg_base_type", !"image1d_t", !"image2d_t", !"image2d_array_t"} -// CHECK: !{!"kernel_arg_type_qual", !"", !"", !""} -// ARGINFO: !{!"kernel_arg_name", !"img1", !"img2", !"img3"} -// NO-ARGINFO-NOT: !{!"kernel_arg_name", !"img1", !"img2", !"img3"} +// CHECK: define spir_kernel void @foo2{{[^!]+}} +// CHECK: !kernel_arg_addr_space ![[MD21:[0-9]+]] +// CHECK: !kernel_arg_access_qual ![[MD22:[0-9]+]] +// CHECK: !kernel_arg_type ![[MD23:[0-9]+]] +// CHECK: !kernel_arg_base_type ![[MD23]] +// CHECK: !kernel_arg_type_qual ![[MD24:[0-9]+]] +// CHECK-NOT: !kernel_arg_name +// ARGINFO: !kernel_arg_name ![[MD25:[0-9]+]] kernel void foo3(__global half * X) { } -// CHECK: !{!"kernel_arg_addr_space", i32 1} -// CHECK: !{!"kernel_arg_access_qual", !"none"} -// CHECK: !{!"kernel_arg_type", !"half*"} -// CHECK: !{!"kernel_arg_base_type", !"half*"} -// CH
RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
Hi Sam, I am now using llvm39 to enable our opencl driver, but I found this patch broke the spir target as well. The opencl.kernels metadata is required by spir spec. I think we should keep the old code for spir target. Thanks Xiuli -Original Message- From: Yaxun Liu [mailto:yaxun@amd.com] Sent: Wednesday, June 22, 2016 11:04 PM To: yaxun@amd.com; xiuli...@outlook.com; anastasia.stul...@arm.com; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes This revision was automatically updated to reflect the committed changes. Closed by commit rL273425: [OpenCL] Use function metadata to represent kernel attributes (authored by yaxunl). Changed prior to commit: http://reviews.llvm.org/D20979?vs=60545&id=61555#toc Repository: rL LLVM http://reviews.llvm.org/D20979 Files: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl cfe/trunk/test/CodeGenOpenCL/kernel-metadata.cl ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
Hi Xiuli, Could you please elaborate what do you think it broken exactly? Because we haven't actually removed opencl.kernels metadata but just changed the format of it. Basically, we are using function metadata instead of generic metadata as it was before. Thanks, Anastasia -Original Message- From: Pan Xiuli [mailto:xiuli...@outlook.com] Sent: 01 August 2016 05:54 To: reviews+d20979+public+e2872c9c869f1...@reviews.llvm.org; Anastasia Stulova; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes Hi Sam, I am now using llvm39 to enable our opencl driver, but I found this patch broke the spir target as well. The opencl.kernels metadata is required by spir spec. I think we should keep the old code for spir target. Thanks Xiuli -Original Message- From: Yaxun Liu [mailto:yaxun@amd.com] Sent: Wednesday, June 22, 2016 11:04 PM To: yaxun@amd.com; xiuli...@outlook.com; anastasia.stul...@arm.com; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes This revision was automatically updated to reflect the committed changes. Closed by commit rL273425: [OpenCL] Use function metadata to represent kernel attributes (authored by yaxunl). Changed prior to commit: http://reviews.llvm.org/D20979?vs=60545&id=61555#toc Repository: rL LLVM http://reviews.llvm.org/D20979 Files: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl cfe/trunk/test/CodeGenOpenCL/kernel-metadata.cl ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
Hi, What I mean is the spec of spir 1.2/2.0 has very clear example about how the metadata should organized. But now with this patch, the result of spir is changed and not like it before. So what I want to know is why we change the old spir example style code, but not add something alongside. Now we have metadata after each function but spir shows a opencl.kernels metadata is need for all modules: "Each SPIR module has a opencl.kernels named metadata node containing a list of metadata objects." I think this patch maybe useful for some other target, but we should not break the old spir as now we have not had a substitute one. Thanks Xiuli -Original Message- From: Anastasia Stulova [mailto:anastasia.stul...@arm.com] Sent: Tuesday, August 2, 2016 2:14 AM To: Pan Xiuli ; reviews+d20979+public+e2872c9c869f1...@reviews.llvm.org; alexey.ba...@intel.com; Liu, Yaxun (Sam) (yaxun@amd.com) Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org; nd Subject: RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes Hi Xiuli, Could you please elaborate what do you think it broken exactly? Because we haven't actually removed opencl.kernels metadata but just changed the format of it. Basically, we are using function metadata instead of generic metadata as it was before. Thanks, Anastasia -Original Message- From: Pan Xiuli [mailto:xiuli...@outlook.com] Sent: 01 August 2016 05:54 To: reviews+d20979+public+e2872c9c869f1...@reviews.llvm.org; Anastasia Stulova; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes Hi Sam, I am now using llvm39 to enable our opencl driver, but I found this patch broke the spir target as well. The opencl.kernels metadata is required by spir spec. I think we should keep the old code for spir target. Thanks Xiuli -Original Message- From: Yaxun Liu [mailto:yaxun@amd.com] Sent: Wednesday, June 22, 2016 11:04 PM To: yaxun@amd.com; xiuli...@outlook.com; anastasia.stul...@arm.com; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes This revision was automatically updated to reflect the committed changes. Closed by commit rL273425: [OpenCL] Use function metadata to represent kernel attributes (authored by yaxunl). Changed prior to commit: http://reviews.llvm.org/D20979?vs=60545&id=61555#toc Repository: rL LLVM http://reviews.llvm.org/D20979 Files: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl cfe/trunk/test/CodeGenOpenCL/kernel-metadata.cl ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes
The LLVM IR generated by Clang trunk for spir target is not conformant to SPIR spec 1.2 or 2.0 even without my change. For example, it differs from SPIR spec about LLVM version, image type name, sampler type representation, blocks representation, etc. It is the result of evolution of the original SPIR for a better solution of many issues of SPIR. If we look back at the RFC about the new kernel argument metadata, there was agreement that the original kernel argument metadata is difficult to work with, therefore the proposal to use function metadata was accepted to alleviate this issue. The new function metadata was more concise and easier to work with. For SPIR consumer, the new format conveys equivalent information as the old format. There is no reason they cannot consume this new format. If users want to generate SPIR conformant LLVM IR, they should use khronos SPIR producer instead of clang trunk. Sam -Original Message- From: Pan Xiuli [mailto:xiuli...@outlook.com] Sent: Monday, August 1, 2016 10:40 PM To: 'Anastasia Stulova' ; reviews+d20979+public+e2872c9c869f1...@reviews.llvm.org; alexey.ba...@intel.com; Liu, Yaxun (Sam) Cc: Stellard, Thomas ; cfe-commits@lists.llvm.org; 'nd' Subject: RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes Hi, What I mean is the spec of spir 1.2/2.0 has very clear example about how the metadata should organized. But now with this patch, the result of spir is changed and not like it before. So what I want to know is why we change the old spir example style code, but not add something alongside. Now we have metadata after each function but spir shows a opencl.kernels metadata is need for all modules: "Each SPIR module has a opencl.kernels named metadata node containing a list of metadata objects." I think this patch maybe useful for some other target, but we should not break the old spir as now we have not had a substitute one. Thanks Xiuli -Original Message- From: Anastasia Stulova [mailto:anastasia.stul...@arm.com] Sent: Tuesday, August 2, 2016 2:14 AM To: Pan Xiuli ; reviews+d20979+public+e2872c9c869f1...@reviews.llvm.org; alexey.ba...@intel.com; Liu, Yaxun (Sam) (yaxun@amd.com) Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org; nd Subject: RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes Hi Xiuli, Could you please elaborate what do you think it broken exactly? Because we haven't actually removed opencl.kernels metadata but just changed the format of it. Basically, we are using function metadata instead of generic metadata as it was before. Thanks, Anastasia -Original Message- From: Pan Xiuli [mailto:xiuli...@outlook.com] Sent: 01 August 2016 05:54 To: reviews+d20979+public+e2872c9c869f1...@reviews.llvm.org; Anastasia Stulova; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: RE: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes Hi Sam, I am now using llvm39 to enable our opencl driver, but I found this patch broke the spir target as well. The opencl.kernels metadata is required by spir spec. I think we should keep the old code for spir target. Thanks Xiuli -Original Message- From: Yaxun Liu [mailto:yaxun@amd.com] Sent: Wednesday, June 22, 2016 11:04 PM To: yaxun@amd.com; xiuli...@outlook.com; anastasia.stul...@arm.com; alexey.ba...@intel.com Cc: thomas.stell...@amd.com; cfe-commits@lists.llvm.org Subject: Re: [PATCH] D20979: [OpenCL] Use function metadata to represent kernel attributes This revision was automatically updated to reflect the committed changes. Closed by commit rL273425: [OpenCL] Use function metadata to represent kernel attributes (authored by yaxunl). Changed prior to commit: http://reviews.llvm.org/D20979?vs=60545&id=61555#toc Repository: rL LLVM http://reviews.llvm.org/D20979 Files: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp cfe/trunk/test/CodeGenOpenCL/kernel-arg-info.cl cfe/trunk/test/CodeGenOpenCL/kernel-attributes.cl cfe/trunk/test/CodeGenOpenCL/kernel-metadata.cl ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits