1 #ifndef HALIDE_BOUNDARY_CONDITIONS_H
2 #define HALIDE_BOUNDARY_CONDITIONS_H
49 namespace BoundaryConditions {
55 collected_args.emplace_back(a1, a2);
58 template<
typename... Args>
60 const Expr &a1,
const Expr &a2, Args &&...args) {
61 collected_args.emplace_back(a1, a2);
71 return lambda(_, func_like(_));
113 for (
int i = 0; i < func_like.dimensions(); i++) {
114 object_bounds.emplace_back(
Expr(func_like.dim(i).min()),
Expr(func_like.dim(i).extent()));
124 template<
typename T,
typename... Bounds,
127 Bounds &&...bounds) {
132 template<
typename T,
typename... Bounds,
135 Bounds &&...bounds) {
163 for (
int i = 0; i < func_like.dimensions(); i++) {
164 object_bounds.emplace_back(
Expr(func_like.dim(i).min()),
Expr(func_like.dim(i).extent()));
194 for (
int i = 0; i < func_like.dimensions(); i++) {
195 object_bounds.emplace_back(
Expr(func_like.dim(i).min()),
Expr(func_like.dim(i).extent()));
225 for (
int i = 0; i < func_like.dimensions(); i++) {
226 object_bounds.emplace_back(
Expr(func_like.dim(i).min()),
Expr(func_like.dim(i).extent()));
260 for (
int i = 0; i < func_like.dimensions(); i++) {
261 object_bounds.emplace_back(
Expr(func_like.dim(i).min()),
Expr(func_like.dim(i).extent()));