#include "Halide.h" using namespace Halide; int main(int argc, char **argv) { Func f, g; Var x, xo, xi; f(x) = x; g(x) = f(x) + f(x*x-20); g.split(x, xo, xi, 4).vectorize(xi); f.compute_at(g, xi); // The region required of f is [min(x, x*x-20), max(x, x*x-20)], // which varies nastily with the var being vectorized. Buffer<int> out = g.realize(100); for (int i = 0; i < 4; i++) { int correct = i + i*i - 20; if (out(i) != correct) { printf("out(%d) = %d instead of %d\n", i, out(i), correct); return -1; } } return 0; }