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-boun...@lists.freedesktop.org] On Behalf Of > junyan...@inbox.com > Sent: Tuesday, March 24, 2015 14:40 > To: beignet@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...@linux.intel.com> > > Signed-off-by: Junyan He <junyan...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet