| 28 | namespace kernel { |
| 29 | template<typename Ti, typename To, af_op_t op> |
| 30 | static opencl::Kernel getScanDimKernel(const std::string key, int dim, |
| 31 | bool isFinalPass, uint threads_y, |
| 32 | bool inclusiveScan) { |
| 33 | using std::string; |
| 34 | using std::vector; |
| 35 | |
| 36 | ToNumStr<To> toNumStr; |
| 37 | vector<TemplateArg> tmpltArgs = { |
| 38 | TemplateTypename<Ti>(), |
| 39 | TemplateTypename<To>(), |
| 40 | TemplateArg(dim), |
| 41 | TemplateArg(isFinalPass), |
| 42 | TemplateArg(op), |
| 43 | TemplateArg(threads_y), |
| 44 | TemplateArg(inclusiveScan), |
| 45 | }; |
| 46 | vector<string> compileOpts = { |
| 47 | DefineKeyValue(Ti, dtype_traits<Ti>::getName()), |
| 48 | DefineKeyValue(To, dtype_traits<To>::getName()), |
| 49 | DefineKeyValue(T, "To"), |
| 50 | DefineKeyValue(kDim, dim), |
| 51 | DefineKeyValue(DIMY, threads_y), |
| 52 | DefineValue(THREADS_X), |
| 53 | DefineKeyValue(init, toNumStr(common::Binary<To, op>::init())), |
| 54 | DefineKeyFromStr(binOpName<op>()), |
| 55 | DefineKeyValue(CPLX, iscplx<Ti>()), |
| 56 | DefineKeyValue(IS_FINAL_PASS, (isFinalPass ? 1 : 0)), |
| 57 | DefineKeyValue(INCLUSIVE_SCAN, inclusiveScan), |
| 58 | }; |
| 59 | compileOpts.emplace_back(getTypeBuildDefinition<Ti>()); |
| 60 | |
| 61 | return common::getKernel(key, {{ops_cl_src, scan_dim_cl_src}}, tmpltArgs, |
| 62 | compileOpts); |
| 63 | } |
| 64 | |
| 65 | template<typename Ti, typename To, af_op_t op> |
| 66 | static void scanDimLauncher(Param out, Param tmp, const Param in, int dim, |
nothing calls this directly
no test coverage detected