[Beignet] [PATCH OpenCL 2.0] Backend: Update the workgroup instructions for llvm backend to gen.
Yang, Rong R
rong.r.yang at intel.com
Tue Mar 24 00:39:03 PDT 2015
Zhigang have add function OCLIntrinsicMap.find to handle override function name, only need one DECL_LLVM_GEN_FUNCTION for one group override functions, and in the GenWriter::emitCallInst to get the corresponding argument type. It reduce the DECL_LLVM_GEN_FUNCTION significant. Can you also use this method?
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> junyan.he at inbox.com
> Sent: Tuesday, March 24, 2015 14:40
> To: beignet at lists.freedesktop.org
> Cc: Junyan He
> Subject: [Beignet] [PATCH OpenCL 2.0] Backend: Update the workgroup
> instructions for llvm backend to gen.
>
> From: Junyan He <junyan.he at linux.intel.com>
>
> Signed-off-by: Junyan He <junyan.he at linux.intel.com>
> ---
> backend/src/llvm/llvm_gen_ocl_function.hxx | 87
> ++++++++++++++++++++++++++++
> 1 file changed, 87 insertions(+)
>
> diff --git a/backend/src/llvm/llvm_gen_ocl_function.hxx
> b/backend/src/llvm/llvm_gen_ocl_function.hxx
> index 9536a3c..947fadc 100644
> --- a/backend/src/llvm/llvm_gen_ocl_function.hxx
> +++ b/backend/src/llvm/llvm_gen_ocl_function.hxx
> @@ -160,3 +160,90 @@ DECL_LLVM_GEN_FUNCTION(REGION,
> __gen_ocl_region)
>
> // printf function
> DECL_LLVM_GEN_FUNCTION(PRINTF, __gen_ocl_printf)
> +
> +// work group function
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_INT_1D,
> +_Z30__gen_ocl_work_group_broadcastij)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_INT_2D,
> +_Z30__gen_ocl_work_group_broadcastijj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_INT_3D,
> +_Z30__gen_ocl_work_group_broadcastijjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_UINT_1D,
> +_Z30__gen_ocl_work_group_broadcastjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_UINT_2D,
> +_Z30__gen_ocl_work_group_broadcastjjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_UINT_3D,
> +_Z30__gen_ocl_work_group_broadcastjjjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_LONG_1D,
> +_Z30__gen_ocl_work_group_broadcastlj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_LONG_2D,
> +_Z30__gen_ocl_work_group_broadcastljj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_lONG_3D,
> +_Z30__gen_ocl_work_group_broadcastljjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_ULONG_1D,
> +_Z30__gen_ocl_work_group_broadcastmj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_ULONG_2D,
> +_Z30__gen_ocl_work_group_broadcastmjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_ULONG_3D,
> +_Z30__gen_ocl_work_group_broadcastmjjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_FLOAT_1D,
> +_Z30__gen_ocl_work_group_broadcastfj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_FLOAT_2D,
> +_Z30__gen_ocl_work_group_broadcastfjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_FLOAT_3D,
> +_Z30__gen_ocl_work_group_broadcastfjjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_DOUBLE_1D,
> +_Z30__gen_ocl_work_group_broadcastdj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_DOUBLE_2D,
> +_Z30__gen_ocl_work_group_broadcastdjj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_BROADCAST_DOUBLE_3D,
> +_Z30__gen_ocl_work_group_broadcastdjjj)
> +
> +// work group reduce
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_ADD_DOUBLE,
> +_Z31__gen_ocl_work_group_reduce_addd)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_ADD_FLOAT,
> +_Z31__gen_ocl_work_group_reduce_addf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_ADD_INT,
> +_Z31__gen_ocl_work_group_reduce_addi)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_ADD_UINT,
> +_Z31__gen_ocl_work_group_reduce_addj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_ADD_LONG,
> +_Z31__gen_ocl_work_group_reduce_addl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_ADD_ULONG,
> +_Z31__gen_ocl_work_group_reduce_addm)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MAXD,
> +_Z31__gen_ocl_work_group_reduce_maxd)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MAXF,
> +_Z31__gen_ocl_work_group_reduce_maxf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MAXI,
> +_Z31__gen_ocl_work_group_reduce_maxi)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MAXJ,
> +_Z31__gen_ocl_work_group_reduce_maxj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MAXL,
> +_Z31__gen_ocl_work_group_reduce_maxl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MAXM,
> +_Z31__gen_ocl_work_group_reduce_maxm)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MIND,
> +_Z31__gen_ocl_work_group_reduce_mind)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MINF,
> +_Z31__gen_ocl_work_group_reduce_minf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MINI,
> +_Z31__gen_ocl_work_group_reduce_mini)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MINJ,
> +_Z31__gen_ocl_work_group_reduce_minj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MINL,
> +_Z31__gen_ocl_work_group_reduce_minl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_REDUCE_MINM,
> +_Z31__gen_ocl_work_group_reduce_minm)
> +
> +// work group scan_exclusive
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_ADD_DO
> UBLE,
> +_Z39__gen_ocl_work_group_scan_exclusive_addd)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_ADD_FLO
> AT,
> +_Z39__gen_ocl_work_group_scan_exclusive_addf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_ADD_INT,
> +_Z39__gen_ocl_work_group_scan_exclusive_addi)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_ADD_UIN
> T,
> +_Z39__gen_ocl_work_group_scan_exclusive_addj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_ADD_LO
> NG,
> +_Z39__gen_ocl_work_group_scan_exclusive_addl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_ADD_UL
> ONG,
> +_Z39__gen_ocl_work_group_scan_exclusive_addm)
> +
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MAX_DO
> UBLE,
> +_Z39__gen_ocl_work_group_scan_exclusive_maxd)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MAX_FL
> OAT,
> +_Z39__gen_ocl_work_group_scan_exclusive_maxf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MAX_INT,
> +_Z39__gen_ocl_work_group_scan_exclusive_maxi)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MAX_UI
> NT,
> +_Z39__gen_ocl_work_group_scan_exclusive_maxj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MAX_LO
> NG,
> +_Z39__gen_ocl_work_group_scan_exclusive_maxl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MAXM_
> ULONG,
> +_Z39__gen_ocl_work_group_scan_exclusive_maxm)
> +
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MIN_DO
> UBLE,
> +_Z39__gen_ocl_work_group_scan_exclusive_mind)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MIN_FLO
> AT,
> +_Z39__gen_ocl_work_group_scan_exclusive_minf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MIN_INT,
> +_Z39__gen_ocl_work_group_scan_exclusive_mini)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MIN_UIN
> T,
> +_Z39__gen_ocl_work_group_scan_exclusive_minj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MIN_LO
> NG,
> +_Z39__gen_ocl_work_group_scan_exclusive_minl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_EXCLUSIVE_MIN_UL
> ONG,
> +_Z39__gen_ocl_work_group_scan_exclusive_minm)
> +
> +// work group scan_inclusive
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_ADD_DO
> UBLE,
> +_Z39__gen_ocl_work_group_scan_inclusive_addd)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_ADD_FLO
> AT,
> +_Z39__gen_ocl_work_group_scan_inclusive_addf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_ADD_INT,
> +_Z39__gen_ocl_work_group_scan_inclusive_addi)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_ADD_UIN
> T,
> +_Z39__gen_ocl_work_group_scan_inclusive_addj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_ADD_LO
> NG,
> +_Z39__gen_ocl_work_group_scan_inclusive_addl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_ADD_UL
> ONG,
> +_Z39__gen_ocl_work_group_scan_inclusive_addm)
> +
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MAX_DO
> UBLE,
> +_Z39__gen_ocl_work_group_scan_inclusive_maxd)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MAX_FL
> OAT,
> +_Z39__gen_ocl_work_group_scan_inclusive_maxf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MAX_INT,
> +_Z39__gen_ocl_work_group_scan_inclusive_maxi)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MAX_UI
> NT,
> +_Z39__gen_ocl_work_group_scan_inclusive_maxj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MAX_LO
> NG,
> +_Z39__gen_ocl_work_group_scan_inclusive_maxl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MAX_UL
> ONG,
> +_Z39__gen_ocl_work_group_scan_inclusive_maxm)
> +
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MIN_DO
> UBLE,
> +_Z39__gen_ocl_work_group_scan_inclusive_mind)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MIN_FLO
> AT,
> +_Z39__gen_ocl_work_group_scan_inclusive_minf)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MIN_INT,
> +_Z39__gen_ocl_work_group_scan_inclusive_mini)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MIN_UIN
> T,
> +_Z39__gen_ocl_work_group_scan_inclusive_minj)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MIN_LO
> NG,
> +_Z39__gen_ocl_work_group_scan_inclusive_minl)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_SCAN_INCLUSIVE_MIN_UL
> ONG,
> +_Z39__gen_ocl_work_group_scan_inclusive_minm)
> +
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_ALL,
> __gen_ocl_work_group_all)
> +DECL_LLVM_GEN_FUNCTION(WORK_GROUP_ANY,
> __gen_ocl_work_group_any)
> --
> 1.7.9.5
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list