RDom::RDom(ImageParam p) { static string var_names[] = {"x", "y", "z", "w"}; std::vector<ReductionVariable> vars; for (int i = 0; i < p.dimensions(); i++) { ReductionVariable var = { p.name() + "$" + var_names[i], p.dim(i).min(), p.dim(i).extent() }; vars.push_back(var); } dom = ReductionDomain(vars); init_vars(p.name()); }
RDom::RDom(ImageParam p) { Expr min[4], extent[4]; for (int i = 0; i < 4; i++) { if (p.dimensions() > i) { min[i] = 0; extent[i] = p.extent(i); } } string names[] = {p.name() + ".x$r", p.name() + ".y$r", p.name() + ".z$r", p.name() + ".w$r"}; dom = build_domain(names[0], min[0], extent[0], names[1], min[1], extent[1], names[2], min[2], extent[2], names[3], min[3], extent[3]); RVar *vars[] = {&x, &y, &z, &w}; for (int i = 0; i < 4; i++) { if (p.dimensions() > i) { *(vars[i]) = RVar(names[i], min[i], extent[i], dom); } } }
void set_alignment_host_ptr(ImageParam &i, int align, std::map<string, int> &m) { i.set_host_alignment(align); m.insert(std::pair<string, int>(i.name()+".host", align)); }