#include "Halide.h" #include <stdio.h> using namespace Halide; int main(int argc, char **argv) { Func f("f"), g("g"); Var x("x"), y("y"); f(x, y) = x + y; f.compute_root(); Param<int> inner_extent, outer_extent; RDom r(10, inner_extent, 30, outer_extent); inner_extent.set(20); outer_extent.set(40); g(x, y) = 40; g(x, y) -= f(r.x, r.y); // Calling rfactor() on the inner dimensions of a non-commutative operator // with excluding the outer dimensions like subtraction is not valid as it // may change order of computation. Var u("u"); g.update(0).rfactor(r.x, u); return 0; }