Expr 35 apps/HelloAndroid/jni/hello_generator.cpp input.dim(0).set_stride(Expr()); Expr 23 apps/HelloAndroidCamera2/jni/deinterleave_generator.cpp uvInterleaved.dim(0).set_stride(Expr()); Expr 41 apps/HelloAndroidCamera2/jni/edge_detect_generator.cpp input.dim(0).set_stride(Expr()); Expr 13 apps/HelloAndroidGL/jni/halide_gl_filter.cpp Expr kx, ky; Expr 14 apps/HelloAndroidGL/jni/halide_gl_filter.cpp Expr xx, yy; Expr 21 apps/HelloAndroidGL/jni/halide_gl_filter.cpp Expr angle; Expr 26 apps/HelloAndroidGL/jni/halide_gl_filter.cpp Expr v = 0.0f; Expr 6 apps/HelloHexagon/pipeline.cpp Expr blur5(Expr x0, Expr x1, Expr x2, Expr x3, Expr x4) { Expr 13 apps/HelloMatlab/iir_blur.cpp Func blur_cols_transpose(Func input, Expr height, Expr alpha) { Expr 25 apps/HelloMatlab/iir_blur.cpp Expr flip_ry = height - ry - 1; Expr 68 apps/HelloMatlab/iir_blur.cpp Expr width = input.width(); Expr 69 apps/HelloMatlab/iir_blur.cpp Expr height = input.height(); Expr 55 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr R = blur(x, y, 0); Expr 56 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr G = blur(x, y, 1); Expr 57 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr B = blur(x, y, 2); Expr 60 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr s = 0.5f; Expr 66 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr dR = B * (1 - R - G); Expr 67 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr dG = (1 - B) * (R - G); Expr 68 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr dB = 1 - B + 2 * G * R - R - G; Expr 70 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr bump = (frame % 1024) / 1024.0f; Expr 72 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr alpha = lerp(0.3f, 0.7f, bump); Expr 75 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr t = 0.1f; Expr 96 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr min_x = clamp(mouse_x - 20, 0, state.dim(0).extent()-1); Expr 97 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr max_x = clamp(mouse_x + 20, 0, state.dim(0).extent()-1); Expr 98 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr min_y = clamp(mouse_y - 20, 0, state.dim(1).extent()-1); Expr 99 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr max_y = clamp(mouse_y + 20, 0, state.dim(1).extent()-1); Expr 102 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr dx = clobber.x - mouse_x; Expr 103 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr dy = clobber.y - mouse_y; Expr 104 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr radius = dx * dx + dy * dy; Expr 184 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr c0 = contour(x, y, 0); Expr 185 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr c1 = contour(x, y, 1); Expr 186 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr c2 = contour(x, y, 2); Expr 188 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr R = min(c0, max(c1, c2)); Expr 189 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr G = (c0 + c1 + c2)/3; Expr 190 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr B = max(c0, max(c1, c2)); Expr 191 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr A = 1.0f; Expr 197 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr bgra = select(c == 0, cast<uint8_t>(B * 255), Expr 202 apps/HelloiOS/HelloiOS/reaction_diffusion_2_generator.cpp Expr rgba = select(c == 0, cast<uint8_t>(R * 255), Expr 20 apps/bilateral_grid/bilateral_grid_generator.cpp Expr val = clamped(x * s_sigma + r.x - s_sigma/2, y * s_sigma + r.y - s_sigma/2); Expr 23 apps/bilateral_grid/bilateral_grid_generator.cpp Expr zi = cast<int>(val * (1.0f/r_sigma) + 0.5f); Expr 49 apps/bilateral_grid/bilateral_grid_generator.cpp Expr zv = val * (1.0f/r_sigma); Expr 51 apps/bilateral_grid/bilateral_grid_generator.cpp Expr zf = zv - zi; Expr 52 apps/bilateral_grid/bilateral_grid_generator.cpp Expr xf = cast<float>(x % s_sigma) / s_sigma; Expr 53 apps/bilateral_grid/bilateral_grid_generator.cpp Expr yf = cast<float>(y % s_sigma) / s_sigma; Expr 54 apps/bilateral_grid/bilateral_grid_generator.cpp Expr xi = x/s_sigma; Expr 55 apps/bilateral_grid/bilateral_grid_generator.cpp Expr yi = y/s_sigma; Expr 10 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_toplevel(Expr arg1, Expr arg2) { Expr 14 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_namespace(Expr arg1, Expr arg2) { Expr 18 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_namespace_1(Expr arg1, Expr arg2) { Expr 21 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_namespace_2(Expr arg1, Expr arg2) { Expr 24 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_namespace_3(Expr arg1, Expr arg2) { Expr 28 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_nested_namespace_outer(Expr arg1, Expr arg2) { Expr 31 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_nested_namespace_inner(Expr arg1, Expr arg2) { Expr 35 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_nested_1(Expr arg1, Expr arg2) { Expr 38 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_nested_2(Expr arg1, Expr arg2) { Expr 41 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_nested_3(Expr arg1, Expr arg2) { Expr 44 apps/c_backend/pipeline_cpp_generator.cpp Expr make_call_cpp_extern_shared_nested_4(Expr arg1, Expr arg2) { Expr 61 apps/c_backend/pipeline_cpp_generator.cpp Expr add_all_the_things = cast<int>(0); Expr 28 apps/camera_pipe/camera_pipe_generator.cpp Expr avg(Expr a, Expr b); Expr 41 apps/camera_pipe/camera_pipe_generator.cpp Expr CameraPipe::avg(Expr a, Expr b) { Expr 48 apps/camera_pipe/camera_pipe_generator.cpp Expr a = max(input(x - 2, y), input(x + 2, y), Expr 102 apps/camera_pipe/camera_pipe_generator.cpp Expr gv_r = avg(g_gb(x, y-1), g_gb(x, y)); Expr 103 apps/camera_pipe/camera_pipe_generator.cpp Expr gvd_r = absd(g_gb(x, y-1), g_gb(x, y)); Expr 104 apps/camera_pipe/camera_pipe_generator.cpp Expr gh_r = avg(g_gr(x+1, y), g_gr(x, y)); Expr 105 apps/camera_pipe/camera_pipe_generator.cpp Expr ghd_r = absd(g_gr(x+1, y), g_gr(x, y)); Expr 109 apps/camera_pipe/camera_pipe_generator.cpp Expr gv_b = avg(g_gr(x, y+1), g_gr(x, y)); Expr 110 apps/camera_pipe/camera_pipe_generator.cpp Expr gvd_b = absd(g_gr(x, y+1), g_gr(x, y)); Expr 111 apps/camera_pipe/camera_pipe_generator.cpp Expr gh_b = avg(g_gb(x-1, y), g_gb(x, y)); Expr 112 apps/camera_pipe/camera_pipe_generator.cpp Expr ghd_b = absd(g_gb(x-1, y), g_gb(x, y)); Expr 120 apps/camera_pipe/camera_pipe_generator.cpp Expr correction; Expr 144 apps/camera_pipe/camera_pipe_generator.cpp Expr rp_b = correction + avg(r_r(x, y), r_r(x-1, y+1)); Expr 145 apps/camera_pipe/camera_pipe_generator.cpp Expr rpd_b = absd(r_r(x, y), r_r(x-1, y+1)); Expr 148 apps/camera_pipe/camera_pipe_generator.cpp Expr rn_b = correction + avg(r_r(x-1, y), r_r(x, y+1)); Expr 149 apps/camera_pipe/camera_pipe_generator.cpp Expr rnd_b = absd(r_r(x-1, y), r_r(x, y+1)); Expr 156 apps/camera_pipe/camera_pipe_generator.cpp Expr bp_r = correction + avg(b_b(x, y), b_b(x+1, y-1)); Expr 157 apps/camera_pipe/camera_pipe_generator.cpp Expr bpd_r = absd(b_b(x, y), b_b(x+1, y-1)); Expr 160 apps/camera_pipe/camera_pipe_generator.cpp Expr bn_r = correction + avg(b_b(x+1, y), b_b(x, y-1)); Expr 161 apps/camera_pipe/camera_pipe_generator.cpp Expr bnd_r = absd(b_b(x+1, y), b_b(x, y-1)); Expr 214 apps/camera_pipe/camera_pipe_generator.cpp Expr kelvin = color_temp; Expr 217 apps/camera_pipe/camera_pipe_generator.cpp Expr alpha = (1.0f/kelvin - 1.0f/3200) / (1.0f/7000 - 1.0f/3200); Expr 218 apps/camera_pipe/camera_pipe_generator.cpp Expr val = (matrix_3200(x, y) * alpha + matrix_7000(x, y) * (1 - alpha)); Expr 223 apps/camera_pipe/camera_pipe_generator.cpp Expr ir = cast<int32_t>(input(x, y, 0)); Expr 224 apps/camera_pipe/camera_pipe_generator.cpp Expr ig = cast<int32_t>(input(x, y, 1)); Expr 225 apps/camera_pipe/camera_pipe_generator.cpp Expr ib = cast<int32_t>(input(x, y, 2)); Expr 227 apps/camera_pipe/camera_pipe_generator.cpp Expr r = matrix(3, 0) + matrix(0, 0) * ir + matrix(1, 0) * ig + matrix(2, 0) * ib; Expr 228 apps/camera_pipe/camera_pipe_generator.cpp Expr g = matrix(3, 1) + matrix(0, 1) * ir + matrix(1, 1) * ig + matrix(2, 1) * ib; Expr 229 apps/camera_pipe/camera_pipe_generator.cpp Expr b = matrix(3, 2) + matrix(0, 2) * ir + matrix(1, 2) * ig + matrix(2, 2) * ib; Expr 245 apps/camera_pipe/camera_pipe_generator.cpp Expr minRaw = 0 + blackLevel; Expr 246 apps/camera_pipe/camera_pipe_generator.cpp Expr maxRaw = whiteLevel; Expr 260 apps/camera_pipe/camera_pipe_generator.cpp Expr invRange = 1.0f/(maxRaw - minRaw); Expr 261 apps/camera_pipe/camera_pipe_generator.cpp Expr b = 2.0f - pow(2.0f, contrast/100.0f); Expr 262 apps/camera_pipe/camera_pipe_generator.cpp Expr a = 2.0f - 2.0f*b; Expr 265 apps/camera_pipe/camera_pipe_generator.cpp Expr xf = clamp(cast<float>(x - minRaw)*invRange, 0.0f, 1.0f); Expr 267 apps/camera_pipe/camera_pipe_generator.cpp Expr g = pow(xf, 1.0f/gamma); Expr 269 apps/camera_pipe/camera_pipe_generator.cpp Expr z = select(g > 0.5f, Expr 274 apps/camera_pipe/camera_pipe_generator.cpp Expr val = cast(result_type, clamp(z*255.0f+0.5f, 0.0f, 255.0f)); Expr 287 apps/camera_pipe/camera_pipe_generator.cpp Expr in = input(x, y, c); Expr 288 apps/camera_pipe/camera_pipe_generator.cpp Expr u0 = in/lutResample; Expr 289 apps/camera_pipe/camera_pipe_generator.cpp Expr u = in%lutResample; Expr 290 apps/camera_pipe/camera_pipe_generator.cpp Expr y0 = curve(clamp(u0, 0, 127)); Expr 291 apps/camera_pipe/camera_pipe_generator.cpp Expr y1 = curve(clamp(u0 + 1, 0, 127)); Expr 315 apps/camera_pipe/camera_pipe_generator.cpp Expr out_width = processed.output_buffer().width(); Expr 316 apps/camera_pipe/camera_pipe_generator.cpp Expr out_height = processed.output_buffer().height(); Expr 320 apps/camera_pipe/camera_pipe_generator.cpp Expr strip_size; Expr 12 apps/fft/complex.h Halide::Expr x, y; Expr 22 apps/fft/complex.h ComplexExpr(Halide::Expr x, Halide::Expr y = 0.0f) : x(x), y(y) {} Expr 24 apps/fft/complex.h Halide::Expr re() { return x; } Expr 25 apps/fft/complex.h Halide::Expr im() { return y; } Expr 41 apps/fft/complex.h inline Halide::Expr re(ComplexExpr z) { return z.re(); } Expr 42 apps/fft/complex.h inline Halide::Expr im(ComplexExpr z) { return z.im(); } Expr 43 apps/fft/complex.h inline Halide::Expr re(Halide::Expr x) { return x; } Expr 44 apps/fft/complex.h inline Halide::Expr im(Halide::Expr x) { return 0.0f; } Expr 58 apps/fft/complex.h inline ComplexExpr operator+(ComplexExpr a, Halide::Expr b) { Expr 61 apps/fft/complex.h inline ComplexExpr operator+(Halide::Expr a, ComplexExpr b) { Expr 67 apps/fft/complex.h inline ComplexExpr operator-(ComplexExpr a, Halide::Expr b) { Expr 70 apps/fft/complex.h inline ComplexExpr operator-(Halide::Expr a, ComplexExpr b) { Expr 77 apps/fft/complex.h inline ComplexExpr operator*(ComplexExpr a, Halide::Expr b) { Expr 80 apps/fft/complex.h inline ComplexExpr operator*(Halide::Expr a, ComplexExpr b) { Expr 83 apps/fft/complex.h inline ComplexExpr operator/(ComplexExpr a, Halide::Expr b) { Expr 88 apps/fft/complex.h inline ComplexExpr expj(Halide::Expr x) { Expr 97 apps/fft/complex.h inline ComplexExpr select(Halide::Expr c, ComplexExpr t, ComplexExpr f) { Expr 101 apps/fft/complex.h inline ComplexExpr select(Halide::Expr c1, ComplexExpr t1, Expr 102 apps/fft/complex.h Halide::Expr c2, ComplexExpr t2, Expr 36 apps/fft/fft.cpp const ComplexExpr j(Expr(0), Expr(1)); Expr 77 apps/fft/fft.cpp vector<Expr> A(vector<Expr> l, const vector<T> &r) { Expr 94 apps/fft/fft.cpp refs.push_back(x(A({Expr(-i - 1)}, args))); Expr 96 apps/fft/fft.cpp refs.push_back(x(A({Expr(i)}, args))); Expr 240 apps/fft/fft.cpp ComplexExpr dft = x(A({Expr(0)}, args)); Expr 242 apps/fft/fft.cpp dft += expj((sign*2*kPi*k*n)/N) * x(A({Expr(k)}, args)); Expr 270 apps/fft/fft.cpp ComplexFunc twiddle_factors(int N, Expr gain, int sign, Expr 295 apps/fft/fft.cpp Expr gain, Expr 687 apps/fft/fft.cpp Expr gain = desc.gain; Expr 708 apps/fft/fft.cpp Expr zip_n0 = (n0 / zip_width) * zip_width * 2 + (n0 % zip_width); Expr 728 apps/fft/fft.cpp Expr unzip_n0 = (n0 / (zip_width * 2)) * zip_width + (n0 % zip_width); Expr 774 apps/fft/fft.cpp dft = ComplexFunc(constant_exterior((Func)dft, Tuple(undef_z()), Expr(), Expr(), Expr(0), Expr(N1 / 2))); Expr 925 apps/fft/fft.cpp ComplexFunc(repeat_edge((Func)dft0_unzipped, Expr(0), Expr(N0), Expr(0), Expr((N1 + 1) / 2 + 1))); Expr 939 apps/fft/fft.cpp Expr n0_X = (n0 / zip_width) * zip_width * 2 + (n0 % zip_width); Expr 940 apps/fft/fft.cpp Expr n1_sym = (N1 - n1) % N1; Expr 945 apps/fft/fft.cpp Expr n0_Y = n0_X + zip_width; Expr 963 apps/fft/fft.cpp ComplexFunc dft_padded = ComplexFunc(repeat_edge((Func)dft, Expr(), Expr(), Expr(0), Expr(N1))); Expr 967 apps/fft/fft.cpp Expr unzip_n0 = (n0 / (zip_width * 2)) * zip_width + (n0 % zip_width); Expr 16 apps/fft/fft.h Halide::Expr gain = 1.0f; Expr 32 apps/fft/funct.h typedef Halide::Expr Expr; Expr 37 apps/fft/funct.h explicit FuncT(Expr e) : Func(e) {} Expr 44 apps/fft/funct.h FuncRefT<T> operator()(std::vector<Expr> vars) const { return Func::operator()(vars); } Expr 80 apps/fft/funct.h Halide::Expr operator==(FuncRefT<T> a, T b) { return static_cast<T>(a) == b; } Expr 82 apps/fft/funct.h Halide::Expr operator!=(FuncRefT<T> a, T b) { return static_cast<T>(a) != b; } Expr 84 apps/fft/funct.h Halide::Expr operator<=(FuncRefT<T> a, T b) { return static_cast<T>(a) <= b; } Expr 86 apps/fft/funct.h Halide::Expr operator>=(FuncRefT<T> a, T b) { return static_cast<T>(a) >= b; } Expr 88 apps/fft/funct.h Halide::Expr operator<(FuncRefT<T> a, T b) { return static_cast<T>(a) < b; } Expr 90 apps/fft/funct.h Halide::Expr operator>(FuncRefT<T> a, T b) { return static_cast<T>(a) > b; } Expr 92 apps/fft/funct.h Halide::Expr operator==(T a, FuncRefT<T> b) { return a == static_cast<T>(b); } Expr 94 apps/fft/funct.h Halide::Expr operator!=(T a, FuncRefT<T> b) { return a != static_cast<T>(b); } Expr 96 apps/fft/funct.h Halide::Expr operator<=(T a, FuncRefT<T> b) { return a <= static_cast<T>(b); } Expr 98 apps/fft/funct.h Halide::Expr operator>=(T a, FuncRefT<T> b) { return a >= static_cast<T>(b); } Expr 100 apps/fft/funct.h Halide::Expr operator<(T a, FuncRefT<T> b) { return a < static_cast<T>(b); } Expr 102 apps/fft/funct.h Halide::Expr operator>(T a, FuncRefT<T> b) { return a > static_cast<T>(b); } Expr 17 apps/hexagon_benchmarks/conv3x3_generator.cpp Expr sum = cast(accumulator_type, 0); Expr 37 apps/hexagon_benchmarks/conv3x3_generator.cpp Expr input_stride = input.dim(1).stride(); Expr 40 apps/hexagon_benchmarks/conv3x3_generator.cpp Expr output_stride = output.dim(1).stride(); Expr 30 apps/hexagon_benchmarks/dilate3x3_generator.cpp Expr input_stride = input.dim(1).stride(); Expr 33 apps/hexagon_benchmarks/dilate3x3_generator.cpp Expr output_stride = output.dim(1).stride(); Expr 33 apps/hexagon_benchmarks/gaussian5x5_generator.cpp Expr input_stride = input.dim(1).stride(); Expr 36 apps/hexagon_benchmarks/gaussian5x5_generator.cpp Expr output_stride = output.dim(1).stride(); Expr 7 apps/hexagon_benchmarks/median3x3_generator.cpp static Expr mid(Expr a, Expr b, Expr c) { Expr 41 apps/hexagon_benchmarks/median3x3_generator.cpp Expr input_stride = input.dim(1).stride(); Expr 44 apps/hexagon_benchmarks/median3x3_generator.cpp Expr output_stride = output.dim(1).stride(); Expr 35 apps/hexagon_benchmarks/sobel_generator.cpp Expr input_stride = input.dim(1).stride(); Expr 38 apps/hexagon_benchmarks/sobel_generator.cpp Expr output_stride = output.dim(1).stride(); Expr 23 apps/hexagon_matmul/pipeline.cpp Expr k_extent = A.dim(0).extent(); Expr 52 apps/interpolate/interpolate.cpp Expr w = input.width()/(1 << l); Expr 53 apps/interpolate/interpolate.cpp Expr h = input.height()/(1 << l); Expr 42 apps/linear_algebra/src/blas_l1_generators.cpp void Schedule(Func result, Expr width) { Expr 47 apps/linear_algebra/src/blas_l1_generators.cpp Expr calc(Arg i) { Expr 61 apps/linear_algebra/src/blas_l1_generators.cpp Expr size = x_.width(); Expr 62 apps/linear_algebra/src/blas_l1_generators.cpp Expr size_vecs = (size / vec_size) * vec_size; Expr 63 apps/linear_algebra/src/blas_l1_generators.cpp Expr size_tail = size - size_vecs; Expr 123 apps/linear_algebra/src/blas_l1_generators.cpp Expr size = x_.width(); Expr 124 apps/linear_algebra/src/blas_l1_generators.cpp Expr size_vecs = size / vec_size; Expr 125 apps/linear_algebra/src/blas_l1_generators.cpp Expr size_tail = size - size_vecs * vec_size; Expr 190 apps/linear_algebra/src/blas_l1_generators.cpp Expr size = x_.width(); Expr 191 apps/linear_algebra/src/blas_l1_generators.cpp Expr size_vecs = size / vec_size; Expr 192 apps/linear_algebra/src/blas_l1_generators.cpp Expr size_tail = size - size_vecs * vec_size; Expr 49 apps/linear_algebra/src/blas_l2_generators.cpp const Expr size = A_.height(); Expr 50 apps/linear_algebra/src/blas_l2_generators.cpp const Expr sum_size = A_.width(); Expr 51 apps/linear_algebra/src/blas_l2_generators.cpp const Expr sum_size_vecs = sum_size / vec_size; Expr 116 apps/linear_algebra/src/blas_l2_generators.cpp const Expr size = A_.width(); Expr 117 apps/linear_algebra/src/blas_l2_generators.cpp const Expr sum_size = A_.height(); Expr 118 apps/linear_algebra/src/blas_l2_generators.cpp const Expr sum_size_cols = (sum_size / unroll_size) * unroll_size; Expr 119 apps/linear_algebra/src/blas_l2_generators.cpp const Expr tail_size = sum_size - sum_size_cols; Expr 164 apps/linear_algebra/src/blas_l2_generators.cpp const Expr size = x_.width(); Expr 211 apps/linear_algebra/src/blas_l2_generators.cpp Expr num_rows = A_.width(); Expr 212 apps/linear_algebra/src/blas_l2_generators.cpp Expr num_cols = A_.height(); Expr 32 apps/linear_algebra/src/blas_l3_generators.cpp const Expr num_rows = A_.width(); Expr 33 apps/linear_algebra/src/blas_l3_generators.cpp const Expr num_cols = B_.height(); Expr 34 apps/linear_algebra/src/blas_l3_generators.cpp const Expr sum_size = A_.height(); Expr 23 apps/local_laplacian/local_laplacian_generator.cpp Expr fx = cast<float>(x) / 256.0f; Expr 40 apps/local_laplacian/local_laplacian_generator.cpp Expr level = k * (1.0f / (levels - 1)); Expr 41 apps/local_laplacian/local_laplacian_generator.cpp Expr idx = gray(x, y)*cast<float>(levels-1)*256.0f; Expr 66 apps/local_laplacian/local_laplacian_generator.cpp Expr level = inGPyramid[j](x, y) * cast<float>(levels-1); Expr 67 apps/local_laplacian/local_laplacian_generator.cpp Expr li = clamp(cast<int>(level), 0, levels-2); Expr 68 apps/local_laplacian/local_laplacian_generator.cpp Expr lf = level - cast<float>(li); Expr 15 apps/resize/resize.cpp Expr kernel_box(Expr x) { Expr 16 apps/resize/resize.cpp Expr xx = abs(x); Expr 20 apps/resize/resize.cpp Expr kernel_linear(Expr x) { Expr 21 apps/resize/resize.cpp Expr xx = abs(x); Expr 25 apps/resize/resize.cpp Expr kernel_cubic(Expr x) { Expr 26 apps/resize/resize.cpp Expr xx = abs(x); Expr 27 apps/resize/resize.cpp Expr xx2 = xx * xx; Expr 28 apps/resize/resize.cpp Expr xx3 = xx2 * xx; Expr 36 apps/resize/resize.cpp Expr sinc(Expr x) { Expr 40 apps/resize/resize.cpp Expr kernel_lanczos(Expr x) { Expr 41 apps/resize/resize.cpp Expr value = sinc(x) * sinc(x/3); Expr 50 apps/resize/resize.cpp Expr (*kernel)(Expr); Expr 125 apps/resize/resize.cpp Expr sourcex = (x + 0.5f) / scaleFactor; Expr 126 apps/resize/resize.cpp Expr sourcey = (y + 0.5f) / scaleFactor; Expr 132 apps/resize/resize.cpp Expr beginx = cast<int>(sourcex - kernelSize + 0.5f); Expr 133 apps/resize/resize.cpp Expr beginy = cast<int>(sourcey - kernelSize + 0.5f); Expr 29 apps/templates/tests/example_generator.cpp Expr input_planar = input.stride(0) == 1; Expr 30 apps/templates/tests/example_generator.cpp Expr input_chunky = input.stride(2) == 1; Expr 31 apps/templates/tests/example_generator.cpp Expr output_planar = output.output_buffer().stride(0) == 1; Expr 32 apps/templates/tests/example_generator.cpp Expr output_chunky = output.output_buffer().stride(2) == 1; Expr 33 apps/templates/tests/example_generator.cpp Expr stride_specializations[] = { Expr 39 apps/templates/tests/example_generator.cpp for (Expr condition : stride_specializations) { Expr 48 apps/templates/tests/example_generator.cpp input.set_stride(0, Expr()); Expr 49 apps/templates/tests/example_generator.cpp output.output_buffer().set_stride(0, Expr()); Expr 23 python_bindings/python/Argument.cpp .def(p::init<std::string, Argument::Kind, h::Type, uint8_t, h::Expr, h::Expr, h::Expr>( Expr 26 python_bindings/python/Argument.cpp .def(p::init<std::string, Argument::Kind, h::Type, uint8_t, h::Expr>( Expr 27 python_bindings/python/BoundaryConditions.cpp std::vector<std::pair<h::Expr, h::Expr>> inline pyobject_to_bounds(const p::object &pybounds) { Expr 29 python_bindings/python/BoundaryConditions.cpp std::vector<std::pair<h::Expr, h::Expr>> result(intermediate.size()); Expr 30 python_bindings/python/BoundaryConditions.cpp std::transform(intermediate.begin(), intermediate.end(), result.begin(), to_pair<h::Expr, h::Expr>); Expr 37 python_bindings/python/BoundaryConditions.cpp h::Func constant_exterior0(T func_like, h::Expr value) { Expr 41 python_bindings/python/BoundaryConditions.cpp h::Func constant_exterior_bounds(h::Func func, h::Expr value, p::object bounds_) { Expr 18 python_bindings/python/Expr.cpp p::object expr_vector_to_python_tuple(const std::vector<h::Expr> &t) { Expr 23 python_bindings/python/Expr.cpp for (const h::Expr &e : t) { Expr 30 python_bindings/python/Expr.cpp std::vector<h::Expr> python_tuple_to_expr_vector(const p::object &obj) { Expr 31 python_bindings/python/Expr.cpp p::extract<h::Expr> expr_extract(obj); Expr 35 python_bindings/python/Expr.cpp return python_collection_to_vector<h::Expr>(obj); Expr 39 python_bindings/python/Expr.cpp std::string expr_repr(const h::Expr &expr) { Expr 48 python_bindings/python/Expr.cpp h::Expr *expr_from_var_constructor(h::Var &var) { Expr 49 python_bindings/python/Expr.cpp return new h::Expr(var); Expr 53 python_bindings/python/Expr.cpp using Halide::Expr; Expr 55 python_bindings/python/Expr.cpp auto expr_class = p::class_<Expr>("Expr", Expr 87 python_bindings/python/Expr.cpp .def("type", &Expr::type, p::arg("self"), Expr 96 python_bindings/python/Expr.cpp p::implicitly_convertible<int, h::Expr>(); Expr 97 python_bindings/python/Expr.cpp p::implicitly_convertible<float, h::Expr>(); Expr 98 python_bindings/python/Expr.cpp p::implicitly_convertible<double, h::Expr>(); Expr 10 python_bindings/python/Expr.h boost::python::object expr_vector_to_python_tuple(const std::vector<Halide::Expr> &t); Expr 11 python_bindings/python/Expr.h std::vector<Halide::Expr> python_tuple_to_expr_vector(const boost::python::object &obj); Expr 232 python_bindings/python/Func.cpp .def(p::init<h::Expr>(p::arg("self"))); Expr 61 python_bindings/python/Func.h hh::Expr xfactor, hh::Expr yfactor) { Expr 68 python_bindings/python/Func.h hh::Expr xfactor, hh::Expr yfactor) { Expr 59 python_bindings/python/Func_Ref.cpp .def("__iadd__", &iadd_func<FuncTupleElementRef &, h::Expr>, p::args("self", "expr"), Expr 65 python_bindings/python/Func_Ref.cpp .def("__isub__", &isub_func<FuncTupleElementRef &, h::Expr>, p::args("self", "expr"), Expr 72 python_bindings/python/Func_Ref.cpp .def("__imul__", &imul_func<FuncTupleElementRef &, h::Expr>, p::args("self", "expr"), Expr 79 python_bindings/python/Func_Ref.cpp .def("__idiv__", &idiv_func<FuncTupleElementRef &, h::Expr>, p::args("self", "expr"), Expr 108 python_bindings/python/Func_Ref.cpp add_operators_with<fterc_t, h::Expr>(func_tuple_element_ref_class); Expr 110 python_bindings/python/Func_Ref.cpp p::implicitly_convertible<FuncTupleElementRef, h::Expr>(); Expr 136 python_bindings/python/Func_Ref.cpp .def("__iadd__", &iadd_func<FuncRef &, h::Expr>, p::args("self", "expr"), Expr 142 python_bindings/python/Func_Ref.cpp .def("__isub__", &isub_func<FuncRef &, h::Expr>, p::args("self", "expr"), Expr 148 python_bindings/python/Func_Ref.cpp .def("__imul__", &imul_func<FuncRef &, h::Expr>, p::args("self", "expr"), Expr 154 python_bindings/python/Func_Ref.cpp .def("__idiv__", &idiv_func<FuncRef &, h::Expr>, p::args("self", "expr"), Expr 189 python_bindings/python/Func_Ref.cpp add_operators_with<frec_t, h::Expr>(func_ref_expr_class); Expr 191 python_bindings/python/Func_Ref.cpp p::implicitly_convertible<FuncRef, h::Expr>(); Expr 20 python_bindings/python/Function.cpp .def(p::init<h::Expr>(p::args("self", "e"))) Expr 13 python_bindings/python/IROperator.cpp h::Expr reinterpret0(h::Type t, h::Expr e) { Expr 17 python_bindings/python/IROperator.cpp h::Expr cast0(h::Type t, h::Expr e) { Expr 21 python_bindings/python/IROperator.cpp h::Expr select0(h::Expr condition, h::Expr true_value, h::Expr false_value) { Expr 25 python_bindings/python/IROperator.cpp h::Expr select1(h::Expr c1, h::Expr v1, Expr 26 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 27 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 31 python_bindings/python/IROperator.cpp h::Expr select2(h::Expr c1, h::Expr v1, Expr 32 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 33 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 34 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 39 python_bindings/python/IROperator.cpp h::Expr select3(h::Expr c1, h::Expr v1, Expr 40 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 41 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 42 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 43 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 49 python_bindings/python/IROperator.cpp h::Expr select4(h::Expr c1, h::Expr v1, Expr 50 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 51 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 52 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 53 python_bindings/python/IROperator.cpp h::Expr c5, h::Expr v5, Expr 54 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 61 python_bindings/python/IROperator.cpp h::Expr select5(h::Expr c1, h::Expr v1, Expr 62 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 63 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 64 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 65 python_bindings/python/IROperator.cpp h::Expr c5, h::Expr v5, Expr 66 python_bindings/python/IROperator.cpp h::Expr c6, h::Expr v6, Expr 67 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 75 python_bindings/python/IROperator.cpp h::Expr select6(h::Expr c1, h::Expr v1, Expr 76 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 77 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 78 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 79 python_bindings/python/IROperator.cpp h::Expr c5, h::Expr v5, Expr 80 python_bindings/python/IROperator.cpp h::Expr c6, h::Expr v6, Expr 81 python_bindings/python/IROperator.cpp h::Expr c7, h::Expr v7, Expr 82 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 91 python_bindings/python/IROperator.cpp h::Expr select7(h::Expr c1, h::Expr v1, Expr 92 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 93 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 94 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 95 python_bindings/python/IROperator.cpp h::Expr c5, h::Expr v5, Expr 96 python_bindings/python/IROperator.cpp h::Expr c6, h::Expr v6, Expr 97 python_bindings/python/IROperator.cpp h::Expr c7, h::Expr v7, Expr 98 python_bindings/python/IROperator.cpp h::Expr c8, h::Expr v8, Expr 99 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 109 python_bindings/python/IROperator.cpp h::Expr select8(h::Expr c1, h::Expr v1, Expr 110 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 111 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 112 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 113 python_bindings/python/IROperator.cpp h::Expr c5, h::Expr v5, Expr 114 python_bindings/python/IROperator.cpp h::Expr c6, h::Expr v6, Expr 115 python_bindings/python/IROperator.cpp h::Expr c7, h::Expr v7, Expr 116 python_bindings/python/IROperator.cpp h::Expr c8, h::Expr v8, Expr 117 python_bindings/python/IROperator.cpp h::Expr c9, h::Expr v9, Expr 118 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 129 python_bindings/python/IROperator.cpp h::Expr select9(h::Expr c1, h::Expr v1, Expr 130 python_bindings/python/IROperator.cpp h::Expr c2, h::Expr v2, Expr 131 python_bindings/python/IROperator.cpp h::Expr c3, h::Expr v3, Expr 132 python_bindings/python/IROperator.cpp h::Expr c4, h::Expr v4, Expr 133 python_bindings/python/IROperator.cpp h::Expr c5, h::Expr v5, Expr 134 python_bindings/python/IROperator.cpp h::Expr c6, h::Expr v6, Expr 135 python_bindings/python/IROperator.cpp h::Expr c7, h::Expr v7, Expr 136 python_bindings/python/IROperator.cpp h::Expr c8, h::Expr v8, Expr 137 python_bindings/python/IROperator.cpp h::Expr c9, h::Expr v9, Expr 138 python_bindings/python/IROperator.cpp h::Expr c10, h::Expr v10, Expr 139 python_bindings/python/IROperator.cpp h::Expr default_val) { Expr 152 python_bindings/python/IROperator.cpp h::Expr print_when0(h::Expr condition, p::tuple values_passed) { Expr 154 python_bindings/python/IROperator.cpp std::vector<h::Expr> values; Expr 159 python_bindings/python/IROperator.cpp p::extract<h::Expr &> expr_extract(o); Expr 176 python_bindings/python/IROperator.cpp h::Expr random_float0() { Expr 180 python_bindings/python/IROperator.cpp h::Expr random_float1(h::Expr seed) { Expr 184 python_bindings/python/IROperator.cpp h::Expr random_int0() { Expr 188 python_bindings/python/IROperator.cpp h::Expr random_int1(h::Expr seed) { Expr 192 python_bindings/python/IROperator.cpp h::Expr undef0(h::Type type) { Expr 196 python_bindings/python/IROperator.cpp h::Expr memoize_tag0(h::Expr result, const std::vector<h::Expr> &cache_key_values) { Expr 203 python_bindings/python/IROperator.cpp h::Expr (*max_exprs)(h::Expr, h::Expr) = &h::max; Expr 204 python_bindings/python/IROperator.cpp h::Expr (*max_expr_int)(const h::Expr &, int) = &h::max; Expr 205 python_bindings/python/IROperator.cpp h::Expr (*max_int_expr)(int, const h::Expr &) = &h::max; Expr 207 python_bindings/python/IROperator.cpp h::Expr (*min_exprs)(h::Expr, h::Expr) = &h::min; Expr 208 python_bindings/python/IROperator.cpp h::Expr (*min_expr_int)(const h::Expr &, int) = &h::min; Expr 209 python_bindings/python/IROperator.cpp h::Expr (*min_int_expr)(int, const h::Expr &) = &h::min; Expr 47 python_bindings/python/Image.cpp h::Expr buffer_call_operator_tuple(h::Buffer<T> &that, p::tuple &args_passed) { Expr 48 python_bindings/python/Image.cpp std::vector<h::Expr> expr_args; Expr 50 python_bindings/python/Image.cpp expr_args.push_back(p::extract<h::Expr>(args_passed[i])); Expr 245 python_bindings/python/Image.cpp using h::Expr; Expr 363 python_bindings/python/Image.cpp .def("__getitem__", buffer_call_operator<Expr, T, Expr>, Expr 367 python_bindings/python/Image.cpp .def("__getitem__", buffer_call_operator<Expr, T, Expr, Expr>, Expr 371 python_bindings/python/Image.cpp .def("__getitem__", buffer_call_operator<Expr, T, Expr, Expr, Expr>, Expr 374 python_bindings/python/Image.cpp .def("__getitem__", buffer_call_operator<Expr, T, Expr, Expr, Expr, Expr>, Expr 15 python_bindings/python/InlineReductions.cpp h::Expr sum0(h::Expr e, const std::string name) { Expr 19 python_bindings/python/InlineReductions.cpp h::Expr sum1(h::RDom r, h::Expr e, const std::string name) { Expr 23 python_bindings/python/InlineReductions.cpp h::Expr product0(h::Expr e, const std::string name) { Expr 27 python_bindings/python/InlineReductions.cpp h::Expr product1(h::RDom r, h::Expr e, const std::string name) { Expr 31 python_bindings/python/InlineReductions.cpp h::Expr maximum0(h::Expr e, const std::string name) { Expr 35 python_bindings/python/InlineReductions.cpp h::Expr maximum1(h::RDom r, h::Expr e, const std::string name) { Expr 39 python_bindings/python/InlineReductions.cpp h::Expr minimum0(h::Expr e, const std::string name) { Expr 43 python_bindings/python/InlineReductions.cpp h::Expr minimum1(h::RDom r, h::Expr e, const std::string name) { Expr 47 python_bindings/python/InlineReductions.cpp p::object argmin0(h::Expr e, const std::string name) { Expr 51 python_bindings/python/InlineReductions.cpp p::object argmin1(h::RDom r, h::Expr e, const std::string name) { Expr 55 python_bindings/python/InlineReductions.cpp p::object argmax0(h::Expr e, const std::string name) { Expr 59 python_bindings/python/InlineReductions.cpp p::object argmax1(h::RDom r, h::Expr e, const std::string name) { Expr 10 python_bindings/python/Lambda.cpp h::Func lambda0D(h::Expr e) { Expr 14 python_bindings/python/Lambda.cpp h::Func lambda1D(h::Var x, h::Expr e) { Expr 18 python_bindings/python/Lambda.cpp h::Func lambda2D(h::Var x, h::Var y, h::Expr e) { Expr 22 python_bindings/python/Lambda.cpp h::Func lambda3D(h::Var x, h::Var y, h::Var z, h::Expr e) { Expr 26 python_bindings/python/Lambda.cpp h::Func lambda4D(h::Var x, h::Var y, h::Var z, h::Var w, h::Expr e) { Expr 30 python_bindings/python/Lambda.cpp h::Func lambda5D(h::Var x, h::Var y, h::Var z, h::Var w, h::Var v, h::Expr e) { Expr 19 python_bindings/python/Param.cpp h::Expr imageparam_to_expr_operator0(h::ImageParam &that, p::tuple args_passed) { Expr 20 python_bindings/python/Param.cpp std::vector<h::Expr> expr_args; Expr 25 python_bindings/python/Param.cpp expr_args.push_back(p::extract<h::Expr>(args_passed[i])); Expr 31 python_bindings/python/Param.cpp h::Expr imageparam_to_expr_operator1(h::ImageParam &that, h::Expr an_expr) { Expr 32 python_bindings/python/Param.cpp std::vector<h::Expr> expr_args; Expr 279 python_bindings/python/Param.cpp h::Expr param_as_expr(h::Param<T> &that) { Expr 280 python_bindings/python/Param.cpp return static_cast<h::Expr>(that); Expr 317 python_bindings/python/Param.cpp .def(p::init<T, h::Expr, h::Expr>( Expr 321 python_bindings/python/Param.cpp .def(p::init<std::string, T, h::Expr, h::Expr>( Expr 376 python_bindings/python/Param.cpp p::implicitly_convertible<Param<T>, h::Expr>(); Expr 381 python_bindings/python/Param.cpp add_operators_with<pc_t, h::Expr>(param_class); Expr 535 python_bindings/python/Param.cpp p::object call_create_param_object(T true_val, std::string name, h::Expr min, h::Expr max) { Expr 540 python_bindings/python/Param.cpp p::object call_create_param_object(T true_val, h::Expr min, h::Expr max) { Expr 585 python_bindings/python/Param.cpp static p::object create_param4(h::Type type, p::object val, h::Expr min, h::Expr max) { Expr 586 python_bindings/python/Param.cpp return create_param1_impl_t<pixel_types_t, h::Expr, h::Expr>()(type, val, min, max); Expr 589 python_bindings/python/Param.cpp static p::object create_param5(h::Type type, std::string name, p::object val, h::Expr min, h::Expr max) { Expr 590 python_bindings/python/Param.cpp return create_param1_impl_t<pixel_types_t, std::string, h::Expr, h::Expr>()(type, val, name, min, max); Expr 44 python_bindings/python/RDom.cpp p::implicitly_convertible<RVar, h::Expr>(); Expr 47 python_bindings/python/RDom.cpp add_operators_with<decltype(rvar_class), h::Expr>(rvar_class); Expr 58 python_bindings/python/RDom.cpp std::vector<h::Expr> exprs; Expr 62 python_bindings/python/RDom.cpp p::extract<h::Expr> expr_extract(o); Expr 77 python_bindings/python/RDom.cpp std::vector<std::pair<h::Expr, h::Expr>> ranges; Expr 85 python_bindings/python/RDom.cpp h::RDom *RDom_constructor1(h::Expr min0, h::Expr extent0, Expr 87 python_bindings/python/RDom.cpp std::vector<std::pair<h::Expr, h::Expr>> ranges; Expr 92 python_bindings/python/RDom.cpp h::RDom *RDom_constructor2(h::Expr min0, h::Expr extent0, Expr 93 python_bindings/python/RDom.cpp h::Expr min1, h::Expr extent1, Expr 95 python_bindings/python/RDom.cpp std::vector<std::pair<h::Expr, h::Expr>> ranges; Expr 101 python_bindings/python/RDom.cpp h::RDom *RDom_constructor3(h::Expr min0, h::Expr extent0, Expr 102 python_bindings/python/RDom.cpp h::Expr min1, h::Expr extent1, Expr 103 python_bindings/python/RDom.cpp h::Expr min2, h::Expr extent2, Expr 105 python_bindings/python/RDom.cpp std::vector<std::pair<h::Expr, h::Expr>> ranges; Expr 112 python_bindings/python/RDom.cpp h::RDom *RDom_constructor4(h::Expr min0, h::Expr extent0, Expr 113 python_bindings/python/RDom.cpp h::Expr min1, h::Expr extent1, Expr 114 python_bindings/python/RDom.cpp h::Expr min2, h::Expr extent2, Expr 115 python_bindings/python/RDom.cpp h::Expr min3, h::Expr extent3, Expr 117 python_bindings/python/RDom.cpp std::vector<std::pair<h::Expr, h::Expr>> ranges; Expr 227 python_bindings/python/RDom.cpp p::implicitly_convertible<RDom, h::Expr>(); Expr 231 python_bindings/python/RDom.cpp add_operators_with<decltype(rdom_class), h::Expr>(rdom_class); Expr 38 python_bindings/python/Var.cpp h::Expr var_as_expr(h::Var &that) { Expr 39 python_bindings/python/Var.cpp return static_cast<h::Expr>(that); Expr 123 python_bindings/python/Var.cpp add_operators_with<decltype(var_class), h::Expr>(var_class); Expr 125 python_bindings/python/Var.cpp p::implicitly_convertible<Var, h::Expr>(); Expr 96 src/AddImageChecks.cpp vector<pair<string, Expr>> lets_overflow; Expr 97 src/AddImageChecks.cpp vector<pair<string, Expr>> lets_required; Expr 98 src/AddImageChecks.cpp vector<pair<string, Expr>> lets_constrained; Expr 99 src/AddImageChecks.cpp vector<pair<string, Expr>> lets_proposed; Expr 109 src/AddImageChecks.cpp Expr maybe_return_condition = const_false(); Expr 115 src/AddImageChecks.cpp map<string, Expr> replace_with_required; Expr 123 src/AddImageChecks.cpp Expr min_required = Variable::make(Int(32), name + ".min." + dim + ".required"); Expr 126 src/AddImageChecks.cpp Expr extent_required = Variable::make(Int(32), name + ".extent." + dim + ".required"); Expr 129 src/AddImageChecks.cpp Expr stride_required = Variable::make(Int(32), name + ".stride." + dim + ".required"); Expr 138 src/AddImageChecks.cpp map<string, Expr> replace_with_constrained; Expr 194 src/AddImageChecks.cpp Expr query_buf = Variable::make(type_of<struct halide_buffer_t *>(), Expr 197 src/AddImageChecks.cpp Expr min = Call::make(Int(32), Call::buffer_get_min, Expr 199 src/AddImageChecks.cpp Expr max = Call::make(Int(32), Call::buffer_get_max, Expr 210 src/AddImageChecks.cpp Expr handle = Variable::make(type_of<buffer_t *>(), name + ".buffer", Expr 212 src/AddImageChecks.cpp Expr inference_mode = Call::make(Bool(), Call::buffer_is_bounds_query, Expr 225 src/AddImageChecks.cpp Expr type_code = Variable::make(UInt(8), type_code_name, image, param, rdom); Expr 226 src/AddImageChecks.cpp Expr type_bits = Variable::make(UInt(8), type_bits_name, image, param, rdom); Expr 227 src/AddImageChecks.cpp Expr type_lanes = Variable::make(UInt(16), type_lanes_name, image, param, rdom); Expr 228 src/AddImageChecks.cpp Expr error = Call::make(Int(32), "halide_error_bad_type", Expr 252 src/AddImageChecks.cpp Expr actual_min = Variable::make(Int(32), actual_min_name, image, param, rdom); Expr 253 src/AddImageChecks.cpp Expr actual_extent = Variable::make(Int(32), actual_extent_name, image, param, rdom); Expr 254 src/AddImageChecks.cpp Expr actual_stride = Variable::make(Int(32), actual_stride_name, image, param, rdom); Expr 262 src/AddImageChecks.cpp Expr min_required = touched.empty() ? actual_min : touched[j].min; Expr 263 src/AddImageChecks.cpp Expr extent_required = touched.empty() ? actual_extent : (touched[j].max + 1 - touched[j].min); Expr 273 src/AddImageChecks.cpp Expr min_required_var = Variable::make(Int(32), min_required_name); Expr 274 src/AddImageChecks.cpp Expr extent_required_var = Variable::make(Int(32), extent_required_name); Expr 279 src/AddImageChecks.cpp Expr actual_max = actual_min + actual_extent - 1; Expr 280 src/AddImageChecks.cpp Expr max_required = min_required_var + extent_required_var - 1; Expr 286 src/AddImageChecks.cpp Expr oob_condition = actual_min <= min_required_var && actual_max >= max_required; Expr 288 src/AddImageChecks.cpp Expr oob_error = Call::make(Int(32), "halide_error_access_out_of_bounds", Expr 301 src/AddImageChecks.cpp Expr stride_required; Expr 318 src/AddImageChecks.cpp Expr max_size = make_const(UInt(64), t.maximum_buffer_size()); Expr 319 src/AddImageChecks.cpp Expr max_extent = make_const(UInt(64), 0x7fffffff); Expr 320 src/AddImageChecks.cpp Expr actual_size = abs(cast<int64_t>(actual_extent) * actual_stride); Expr 321 src/AddImageChecks.cpp Expr allocation_size_error = Call::make(Int(32), "halide_error_buffer_allocation_too_large", Expr 332 src/AddImageChecks.cpp Expr last_dim = Variable::make(Int(64), name + ".total_extent." + std::to_string(j-1)); Expr 333 src/AddImageChecks.cpp Expr this_dim = actual_extent * last_dim; Expr 334 src/AddImageChecks.cpp Expr this_dim_var = Variable::make(Int(64), name + ".total_extent." + dim); Expr 336 src/AddImageChecks.cpp Expr error = Call::make(Int(32), "halide_error_buffer_extents_too_large", Expr 343 src/AddImageChecks.cpp Expr negative_extent_condition = actual_extent >= 0; Expr 344 src/AddImageChecks.cpp Expr negative_extent_error = Call::make(Int(32), "halide_error_buffer_extents_negative", Expr 370 src/AddImageChecks.cpp vector<pair<Expr, Expr>> constraints; Expr 377 src/AddImageChecks.cpp Expr stride_constrained, extent_constrained, min_constrained; Expr 379 src/AddImageChecks.cpp Expr stride_orig = Variable::make(Int(32), stride_name, image, param, rdom); Expr 380 src/AddImageChecks.cpp Expr extent_orig = Variable::make(Int(32), extent_name, image, param, rdom); Expr 381 src/AddImageChecks.cpp Expr min_orig = Variable::make(Int(32), min_name, image, param, rdom); Expr 383 src/AddImageChecks.cpp Expr stride_required = Variable::make(Int(32), stride_name + ".required"); Expr 384 src/AddImageChecks.cpp Expr extent_required = Variable::make(Int(32), extent_name + ".required"); Expr 385 src/AddImageChecks.cpp Expr min_required = Variable::make(Int(32), min_name + ".required"); Expr 387 src/AddImageChecks.cpp Expr stride_proposed = Variable::make(Int(32), stride_name + ".proposed"); Expr 388 src/AddImageChecks.cpp Expr extent_proposed = Variable::make(Int(32), extent_name + ".proposed"); Expr 389 src/AddImageChecks.cpp Expr min_proposed = Variable::make(Int(32), min_name + ".proposed"); Expr 460 src/AddImageChecks.cpp Expr max_proposed = min_proposed + extent_proposed - 1; Expr 461 src/AddImageChecks.cpp Expr max_required = min_required + extent_required - 1; Expr 462 src/AddImageChecks.cpp Expr check = (min_proposed <= min_required) && (max_proposed >= max_required); Expr 463 src/AddImageChecks.cpp Expr error = Call::make(Int(32), "halide_error_constraints_make_required_region_smaller", Expr 480 src/AddImageChecks.cpp Expr var = constraints[i].first; Expr 482 src/AddImageChecks.cpp Expr constrained_var = Variable::make(Int(32), name + ".constrained"); Expr 492 src/AddImageChecks.cpp Expr error = Call::make(Int(32), "halide_error_constraint_violated", Expr 502 src/AddImageChecks.cpp Expr host_ptr = Variable::make(Handle(), host_name); Expr 503 src/AddImageChecks.cpp Expr u64t_host_ptr = reinterpret<uint64_t>(host_ptr); Expr 504 src/AddImageChecks.cpp Expr align_condition = (u64t_host_ptr % alignment_required) == 0; Expr 505 src/AddImageChecks.cpp Expr error = Call::make(Int(32), "halide_error_unaligned_host_ptr", Expr 36 src/AddParameterChecks.cpp map<string, Expr> replace_with_constrained; Expr 37 src/AddParameterChecks.cpp vector<pair<string, Expr>> lets; Expr 40 src/AddParameterChecks.cpp Expr condition; Expr 41 src/AddParameterChecks.cpp Expr value, limit_value; Expr 57 src/AddParameterChecks.cpp Expr constrained_var = Variable::make(param.type(), constrained_name); Expr 58 src/AddParameterChecks.cpp Expr constrained_value = Variable::make(param.type(), i.first, param); Expr 123 src/AddParameterChecks.cpp Expr error = Call::make(Int(32), error_call_name, Expr 36 src/AlignLoads.cpp Expr make_load(const Load *load, Expr index) { Expr 61 src/AlignLoads.cpp Expr index = mutate(op->index); Expr 108 src/AlignLoads.cpp Expr dense_base = simplify(ramp->base - shift); Expr 109 src/AlignLoads.cpp Expr dense_index = Ramp::make(dense_base, 1, lanes*stride); Expr 110 src/AlignLoads.cpp Expr dense = make_load(op, dense_index); Expr 122 src/AlignLoads.cpp Expr native_load = make_load(op, Ramp::make(ramp->base, 1, native_lanes)); Expr 132 src/AlignLoads.cpp vector<Expr> slices; Expr 135 src/AlignLoads.cpp Expr slice_base = simplify(ramp->base + i); Expr 146 src/AlignLoads.cpp Expr aligned_base = simplify(ramp->base - aligned_offset); Expr 147 src/AlignLoads.cpp Expr aligned_load = make_load(op, Ramp::make(aligned_base, 1, lanes*2)); Expr 162 src/AlignLoads.cpp Expr value = mutate(op->value); Expr 73 src/AllocationBoundsInference.cpp Expr min, max, extent; Expr 93 src/AllocationBoundsInference.cpp Expr max_plus_one = max + 1; Expr 101 src/AllocationBoundsInference.cpp Expr min_var = Variable::make(Int(32), min_name); Expr 102 src/AllocationBoundsInference.cpp Expr max_var = Variable::make(Int(32), max_name); Expr 107 src/AllocationBoundsInference.cpp Expr error_msg = Call::make(Int(32), "halide_error_explicit_bounds_too_small", Expr 13 src/ApplySplit.cpp map<string, Expr> &dim_extent_alignment) { Expr 16 src/ApplySplit.cpp Expr outer = Variable::make(Int(32), prefix + split.outer); Expr 17 src/ApplySplit.cpp Expr outer_max = Variable::make(Int(32), prefix + split.outer + ".loop_max"); Expr 19 src/ApplySplit.cpp Expr inner = Variable::make(Int(32), prefix + split.inner); Expr 20 src/ApplySplit.cpp Expr old_max = Variable::make(Int(32), prefix + split.old_var + ".loop_max"); Expr 21 src/ApplySplit.cpp Expr old_min = Variable::make(Int(32), prefix + split.old_var + ".loop_min"); Expr 22 src/ApplySplit.cpp Expr old_extent = Variable::make(Int(32), prefix + split.old_var + ".loop_extent"); Expr 26 src/ApplySplit.cpp Expr base = outer * split.factor + old_min; Expr 28 src/ApplySplit.cpp Expr base_var = Variable::make(Int(32), base_name); Expr 30 src/ApplySplit.cpp Expr old_var = Variable::make(Int(32), old_var_name); Expr 32 src/ApplySplit.cpp map<string, Expr>::iterator iter = dim_extent_alignment.find(split.old_var); Expr 59 src/ApplySplit.cpp Expr rebased = outer * split.factor + inner; Expr 61 src/ApplySplit.cpp Expr rebased_var = Variable::make(Int(32), rebased_var_name); Expr 68 src/ApplySplit.cpp Expr cond = likely(rebased_var < old_extent); Expr 94 src/ApplySplit.cpp Expr fused = Variable::make(Int(32), prefix + split.old_var); Expr 95 src/ApplySplit.cpp Expr inner_min = Variable::make(Int(32), prefix + split.inner + ".loop_min"); Expr 96 src/ApplySplit.cpp Expr outer_min = Variable::make(Int(32), prefix + split.outer + ".loop_min"); Expr 97 src/ApplySplit.cpp Expr inner_extent = Variable::make(Int(32), prefix + split.inner + ".loop_extent"); Expr 104 src/ApplySplit.cpp Expr factor = max(inner_extent, 1); Expr 105 src/ApplySplit.cpp Expr inner = fused % factor + inner_min; Expr 106 src/ApplySplit.cpp Expr outer = fused / factor + outer_min; Expr 115 src/ApplySplit.cpp map<string, Expr>::iterator inner_dim = dim_extent_alignment.find(split.inner); Expr 116 src/ApplySplit.cpp map<string, Expr>::iterator outer_dim = dim_extent_alignment.find(split.outer); Expr 130 src/ApplySplit.cpp vector<std::pair<string, Expr>> compute_loop_bounds_after_split(const Split &split, string prefix) { Expr 135 src/ApplySplit.cpp vector<std::pair<string, Expr>> let_stmts; Expr 137 src/ApplySplit.cpp Expr old_var_extent = Variable::make(Int(32), prefix + split.old_var + ".loop_extent"); Expr 138 src/ApplySplit.cpp Expr old_var_max = Variable::make(Int(32), prefix + split.old_var + ".loop_max"); Expr 139 src/ApplySplit.cpp Expr old_var_min = Variable::make(Int(32), prefix + split.old_var + ".loop_min"); Expr 141 src/ApplySplit.cpp Expr inner_extent = split.factor; Expr 142 src/ApplySplit.cpp Expr outer_extent = (old_var_max - old_var_min + split.factor)/split.factor; Expr 151 src/ApplySplit.cpp Expr inner_extent = Variable::make(Int(32), prefix + split.inner + ".loop_extent"); Expr 152 src/ApplySplit.cpp Expr outer_extent = Variable::make(Int(32), prefix + split.outer + ".loop_extent"); Expr 153 src/ApplySplit.cpp Expr fused_extent = inner_extent * outer_extent; Expr 27 src/ApplySplit.h Expr value; Expr 32 src/ApplySplit.h ApplySplitResult(const std::string &n, Expr val, Type t) Expr 34 src/ApplySplit.h ApplySplitResult(Expr val) : name(""), value(val), type(Predicate) {} Expr 48 src/ApplySplit.h std::map<std::string, Expr> &dim_extent_alignment); Expr 52 src/ApplySplit.h std::vector<std::pair<std::string, Expr>> compute_loop_bounds_after_split( Expr 58 src/Argument.h Expr def, min, max; Expr 62 src/Argument.h Expr _def = Expr(), Expr 63 src/Argument.h Expr _min = Expr(), Expr 64 src/Argument.h Expr _max = Expr()) : Expr 108 src/AssociativeOpsTable.cpp Expr x0 = Variable::make(t, "x0"); \ Expr 109 src/AssociativeOpsTable.cpp Expr y0 = Variable::make(t, "y0"); \ Expr 110 src/AssociativeOpsTable.cpp Expr x1 = Variable::make(t, "x1"); \ Expr 111 src/AssociativeOpsTable.cpp Expr y1 = Variable::make(t, "y1"); \ Expr 112 src/AssociativeOpsTable.cpp Expr k0 = Variable::make(t, "k0"); \ Expr 113 src/AssociativeOpsTable.cpp Expr zero = make_const(t, 0); \ Expr 114 src/AssociativeOpsTable.cpp Expr one = make_const(t, 1); \ Expr 115 src/AssociativeOpsTable.cpp Expr neg_one = make_const(t, -1); \ Expr 116 src/AssociativeOpsTable.cpp Expr tmax = t.max(); \ Expr 117 src/AssociativeOpsTable.cpp Expr tmin = t.min(); \ Expr 215 src/AssociativeOpsTable.cpp Expr k0_uint16 = Variable::make(UInt(16), "k0"); Expr 216 src/AssociativeOpsTable.cpp Expr k0_uint32 = Variable::make(UInt(32), "k0"); Expr 217 src/AssociativeOpsTable.cpp Expr k0_uint64 = Variable::make(UInt(64), "k0"); Expr 235 src/AssociativeOpsTable.cpp Expr k0_uint32 = Variable::make(UInt(32), "k0"); Expr 236 src/AssociativeOpsTable.cpp Expr k0_uint64 = Variable::make(UInt(64), "k0"); Expr 253 src/AssociativeOpsTable.cpp Expr k0_uint64 = Variable::make(UInt(64), "k0"); Expr 321 src/AssociativeOpsTable.cpp const vector<AssociativePattern> &get_ops_table(const vector<Expr> &exprs) { Expr 33 src/AssociativeOpsTable.h std::vector<Expr> ops; Expr 35 src/AssociativeOpsTable.h std::vector<Expr> identities; Expr 41 src/AssociativeOpsTable.h AssociativePattern(const std::vector<Expr> &ops, const std::vector<Expr> &ids, bool is_commutative) Expr 43 src/AssociativeOpsTable.h AssociativePattern(Expr op, Expr id, bool is_commutative) Expr 62 src/AssociativeOpsTable.h const std::vector<AssociativePattern> &get_ops_table(const std::vector<Expr> &exprs); Expr 44 src/Associativity.cpp const vector<Expr> &args; Expr 86 src/Associativity.cpp ConvertSelfRef(const string &f, const vector<Expr> &args, int idx, Expr 92 src/Associativity.cpp Expr x_part; // Undefined if there is no self-reference at value_index Expr 95 src/Associativity.cpp bool associative_op_pattern_match(Expr e, Expr 96 src/Associativity.cpp const Expr &op, Expr 100 src/Associativity.cpp map<string, Expr> &match) { Expr 102 src/Associativity.cpp map<string, Expr> result; Expr 159 src/Associativity.cpp const vector<string> &op_y_names, const vector<Expr> &x_parts, Expr 160 src/Associativity.cpp const vector<Expr> &exprs, AssociativeOp &assoc_op) { Expr 173 src/Associativity.cpp map<string, Expr> pattern_match; Expr 188 src/Associativity.cpp vector<pair<Expr, Expr>> replacement; // find -> replacement Expr 196 src/Associativity.cpp Expr y_part = y_iter->second; Expr 209 src/Associativity.cpp Expr e = exprs[index]; Expr 228 src/Associativity.cpp bool extract_associative_op(const vector<Expr> exprs, const vector<string> &op_x_names, Expr 229 src/Associativity.cpp const vector<string> &op_y_names, const vector<Expr> &x_parts, Expr 240 src/Associativity.cpp assoc_op.xs[0] = {"", Expr()}; Expr 308 src/Associativity.cpp AssociativeOp prove_associativity(const string &f, vector<Expr> args, vector<Expr> exprs) { Expr 311 src/Associativity.cpp for (Expr &arg : args) { Expr 324 src/Associativity.cpp vector<Expr> x_parts(exprs.size()); Expr 384 src/Associativity.cpp vector<Expr> sub_exprs = get_subvector(exprs, subgraphs[i]); Expr 387 src/Associativity.cpp vector<Expr> sub_x_parts = get_subvector(x_parts, subgraphs[i]); Expr 446 src/Associativity.cpp std::string print_args(const string &f, const vector<Expr> &args, const vector<Expr> &exprs) { Expr 472 src/Associativity.cpp void check_associativity(const string &f, vector<Expr> args, vector<Expr> exprs, Expr 480 src/Associativity.cpp map<string, Expr> replacement; Expr 505 src/Associativity.cpp Expr expected_op = substitute(replacement, assoc_op.pattern.ops[i]); Expr 530 src/Associativity.cpp Expr x = Variable::make(t, "x"); Expr 531 src/Associativity.cpp Expr y = Variable::make(t, "y"); Expr 532 src/Associativity.cpp Expr x_idx = Variable::make(Int(32), "x_idx"); Expr 533 src/Associativity.cpp Expr f_call_0 = Call::make(t, "f", {x_idx}, Call::CallType::Halide, nullptr, 0); Expr 575 src/Associativity.cpp Expr x = Variable::make(t, "x"); Expr 576 src/Associativity.cpp Expr y = Variable::make(t, "y"); Expr 577 src/Associativity.cpp Expr x_idx = Variable::make(Int(32), "x_idx"); Expr 578 src/Associativity.cpp Expr f_call_0 = Call::make(t, "f", {x_idx}, Call::CallType::Halide, nullptr, 0); Expr 600 src/Associativity.cpp Expr x = Variable::make(t, "x"); Expr 601 src/Associativity.cpp Expr y = Variable::make(t, "y"); Expr 602 src/Associativity.cpp Expr z = Variable::make(t, "z"); Expr 603 src/Associativity.cpp Expr rx = Variable::make(t, "rx"); Expr 605 src/Associativity.cpp vector<Expr> xs(4), ys(4), zs(4); Expr 612 src/Associativity.cpp Expr f_call_0 = Call::make(t, "f", {x}, Call::CallType::Halide, nullptr, 0); Expr 613 src/Associativity.cpp Expr f_call_1 = Call::make(t, "f", {x}, Call::CallType::Halide, nullptr, 1); Expr 614 src/Associativity.cpp Expr f_call_2 = Call::make(t, "f", {x}, Call::CallType::Halide, nullptr, 2); Expr 615 src/Associativity.cpp Expr g_call_0 = Call::make(t, "g", {rx}, Call::CallType::Halide, nullptr, 0); Expr 616 src/Associativity.cpp Expr g_call_1 = Call::make(t, "g", {rx}, Call::CallType::Halide, nullptr, 1); Expr 649 src/Associativity.cpp {Replacement("", Expr()), Replacement("", Expr()), Replacement("x2", f_call_2)}, Expr 682 src/Associativity.cpp {Replacement("", Expr())}, Expr 733 src/Associativity.cpp Expr ry = Variable::make(t, "ry"); Expr 734 src/Associativity.cpp Expr f_xy_call_0 = Call::make(t, "f", {x, y}, Call::CallType::Halide, nullptr, 0); Expr 735 src/Associativity.cpp Expr f_xy_call_1 = Call::make(t, "f", {x, y}, Call::CallType::Halide, nullptr, 1); Expr 736 src/Associativity.cpp Expr f_xy_call_2 = Call::make(t, "f", {x, y}, Call::CallType::Halide, nullptr, 2); Expr 737 src/Associativity.cpp Expr f_xy_call_3 = Call::make(t, "f", {x, y}, Call::CallType::Halide, nullptr, 3); Expr 738 src/Associativity.cpp Expr g_xy_call_0 = Call::make(t, "g", {rx, ry}, Call::CallType::Halide, nullptr, 0); Expr 755 src/Associativity.cpp {Replacement("x0", f_xy_call_0), Replacement("", Expr()), Replacement("x2", f_xy_call_2), Replacement("x3", f_xy_call_3)}, Expr 56 src/Associativity.h Expr expr; Expr 59 src/Associativity.h Replacement(const std::string &var, Expr expr) : var(var), expr(expr) {} Expr 96 src/Associativity.h const std::string &f, std::vector<Expr> args, std::vector<Expr> exprs); Expr 8 src/BoundaryConditions.cpp const std::vector<std::pair<Expr, Expr>> &bounds) { Expr 15 src/BoundaryConditions.cpp std::vector<Expr> actuals; Expr 18 src/BoundaryConditions.cpp Expr min = bounds[i].first; Expr 19 src/BoundaryConditions.cpp Expr extent = bounds[i].second; Expr 41 src/BoundaryConditions.cpp const std::vector<std::pair<Expr, Expr>> &bounds) { Expr 49 src/BoundaryConditions.cpp Expr out_of_bounds = cast<bool>(false); Expr 52 src/BoundaryConditions.cpp Expr min = bounds[i].first; Expr 53 src/BoundaryConditions.cpp Expr extent = bounds[i].second; Expr 67 src/BoundaryConditions.cpp std::vector<Expr> def; Expr 79 src/BoundaryConditions.cpp Func constant_exterior(const Func &source, Expr value, Expr 80 src/BoundaryConditions.cpp const std::vector<std::pair<Expr, Expr>> &bounds) { Expr 86 src/BoundaryConditions.cpp const std::vector<std::pair<Expr, Expr>> &bounds) { Expr 93 src/BoundaryConditions.cpp std::vector<Expr> actuals; Expr 96 src/BoundaryConditions.cpp Expr min = bounds[i].first; Expr 97 src/BoundaryConditions.cpp Expr extent = bounds[i].second; Expr 100 src/BoundaryConditions.cpp Expr coord = arg_var - min; // Enforce zero origin. Expr 127 src/BoundaryConditions.cpp const std::vector<std::pair<Expr, Expr>> &bounds) { Expr 134 src/BoundaryConditions.cpp std::vector<Expr> actuals; Expr 138 src/BoundaryConditions.cpp Expr min = bounds[i].first; Expr 139 src/BoundaryConditions.cpp Expr extent = bounds[i].second; Expr 142 src/BoundaryConditions.cpp Expr coord = arg_var - min; // Enforce zero origin. Expr 168 src/BoundaryConditions.cpp const std::vector<std::pair<Expr, Expr>> &bounds) { Expr 175 src/BoundaryConditions.cpp std::vector<Expr> actuals; Expr 179 src/BoundaryConditions.cpp Expr min = bounds[i].first; Expr 180 src/BoundaryConditions.cpp Expr extent = bounds[i].second; Expr 183 src/BoundaryConditions.cpp Expr limit = extent - 1; Expr 184 src/BoundaryConditions.cpp Expr coord = arg_var - min; // Enforce zero origin. Expr 85 src/BoundaryConditions.h const std::vector<std::pair<Expr, Expr>> &bounds); Expr 86 src/BoundaryConditions.h EXPORT Func constant_exterior(const Func &source, Expr value, Expr 87 src/BoundaryConditions.h const std::vector<std::pair<Expr, Expr>> &bounds); Expr 91 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> object_bounds; Expr 93 src/BoundaryConditions.h object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) }); Expr 99 src/BoundaryConditions.h inline NO_INLINE Func constant_exterior(const T &func_like, Expr value) { Expr 104 src/BoundaryConditions.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Bounds...>::value>::type* = nullptr> Expr 107 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> collected_bounds; Expr 112 src/BoundaryConditions.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Bounds...>::value>::type* = nullptr> Expr 113 src/BoundaryConditions.h inline NO_INLINE Func constant_exterior(const T &func_like, Expr value, Expr 133 src/BoundaryConditions.h const std::vector<std::pair<Expr, Expr>> &bounds); Expr 137 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> object_bounds; Expr 139 src/BoundaryConditions.h object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) }); Expr 147 src/BoundaryConditions.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Bounds...>::value>::type* = nullptr> Expr 149 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> collected_bounds; Expr 169 src/BoundaryConditions.h const std::vector<std::pair<Expr, Expr>> &bounds); Expr 173 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> object_bounds; Expr 175 src/BoundaryConditions.h object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) }); Expr 182 src/BoundaryConditions.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Bounds...>::value>::type* = nullptr> Expr 184 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> collected_bounds; Expr 204 src/BoundaryConditions.h const std::vector<std::pair<Expr, Expr>> &bounds); Expr 208 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> object_bounds; Expr 210 src/BoundaryConditions.h object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) }); Expr 217 src/BoundaryConditions.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Bounds...>::value>::type* = nullptr> Expr 219 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> collected_bounds; Expr 242 src/BoundaryConditions.h const std::vector<std::pair<Expr, Expr>> &bounds); Expr 246 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> object_bounds; Expr 248 src/BoundaryConditions.h object_bounds.push_back({ Expr(func_like.dim(i).min()), Expr(func_like.dim(i).extent()) }); Expr 255 src/BoundaryConditions.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Bounds...>::value>::type* = nullptr> Expr 257 src/BoundaryConditions.h std::vector<std::pair<Expr, Expr>> collected_bounds; Expr 26 src/Bounds.cpp int static_sign(Expr x) { Expr 32 src/Bounds.cpp Expr zero = make_zero(x.type()); Expr 43 src/Bounds.cpp Expr find_constant_bound(Expr e, Direction d) { Expr 50 src/Bounds.cpp Expr a = find_constant_bound(min->a, d); Expr 51 src/Bounds.cpp Expr b = find_constant_bound(min->b, d); Expr 60 src/Bounds.cpp Expr a = find_constant_bound(max->a, d); Expr 61 src/Bounds.cpp Expr b = find_constant_bound(max->b, d); Expr 70 src/Bounds.cpp Expr a = find_constant_bound(cast->value, d); Expr 75 src/Bounds.cpp return Expr(); Expr 171 src/Bounds.cpp Expr lower_bound = find_constant_bound(a.min, Direction::Lower); Expr 172 src/Bounds.cpp Expr upper_bound = find_constant_bound(a.max, Direction::Upper); Expr 177 src/Bounds.cpp Expr test = Expr 238 src/Bounds.cpp Expr no_overflow = (cast<int>(a.max) + cast<int>(b.max) == cast<int>(interval.max)); Expr 245 src/Bounds.cpp Expr no_overflow = (cast<int>(a.min) + cast<int>(b.min) == cast<int>(interval.min)); Expr 277 src/Bounds.cpp Expr no_overflow = (cast<int>(a.max) - cast<int>(b.min) == cast<int>(interval.max)); Expr 284 src/Bounds.cpp Expr no_overflow = (cast<int>(a.min) - cast<int>(b.max) == cast<int>(interval.min)); Expr 319 src/Bounds.cpp Expr e1 = a.has_lower_bound() ? a.min * b.min : a.min; Expr 320 src/Bounds.cpp Expr e2 = a.has_upper_bound() ? a.max * b.min : a.max; Expr 329 src/Bounds.cpp Expr cmp = b.min >= make_zero(b.min.type().element_of()); Expr 347 src/Bounds.cpp Expr test1 = (cast<int>(a.min) * cast<int>(b.min) == cast<int>(a.min * b.min)); Expr 348 src/Bounds.cpp Expr test2 = (cast<int>(a.min) * cast<int>(b.max) == cast<int>(a.min * b.max)); Expr 349 src/Bounds.cpp Expr test3 = (cast<int>(a.max) * cast<int>(b.min) == cast<int>(a.max * b.min)); Expr 350 src/Bounds.cpp Expr test4 = (cast<int>(a.max) * cast<int>(b.max) == cast<int>(a.max * b.max)); Expr 373 src/Bounds.cpp Expr e1 = a.has_lower_bound() ? a.min / b.min : a.min; Expr 374 src/Bounds.cpp Expr e2 = a.has_upper_bound() ? a.max / b.max : a.max; Expr 383 src/Bounds.cpp Expr cmp = b.min > make_zero(b.min.type().element_of()); Expr 552 src/Bounds.cpp Expr load_min = Expr 565 src/Bounds.cpp Expr var = Variable::make(op->base.type(), var_name); Expr 566 src/Bounds.cpp Expr lane = op->base + var * op->stride; Expr 583 src/Bounds.cpp std::vector<Expr> new_args(op->args.size()); Expr 604 src/Bounds.cpp Expr call = Call::make(t, op->name, new_args, op->call_type, Expr 634 src/Bounds.cpp Expr equivalent_select = Select::make(op->args[0], op->args[1], op->args[2]); Expr 639 src/Bounds.cpp Expr simplified = simplify(op); Expr 698 src/Bounds.cpp val.min = Expr(); Expr 708 src/Bounds.cpp val.max = Expr(); Expr 739 src/Bounds.cpp for (Expr i : op->vectors) { Expr 783 src/Bounds.cpp Interval bounds_of_expr_in_scope(Expr expr, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 805 src/Bounds.cpp Expr min = Min::make(a[i].min, b[i].min); Expr 806 src/Bounds.cpp Expr max_a = a[i].min + a[i].extent; Expr 807 src/Bounds.cpp Expr max_b = b[i].min + b[i].extent; Expr 808 src/Bounds.cpp Expr max_plus_one = Max::make(max_a, max_b); Expr 809 src/Bounds.cpp Expr extent = max_plus_one - min; Expr 885 src/Bounds.cpp a.used = Expr(); Expr 889 src/Bounds.cpp a.used = Expr(); Expr 938 src/Bounds.cpp Expr overlap = ((a_maybe_unused ? a.used : const_true()) && Expr 960 src/Bounds.cpp Expr condition = const_true(); Expr 1016 src/Bounds.cpp for (Expr e : op->args) { Expr 1046 src/Bounds.cpp bool is_small_enough_to_substitute(Expr e) { Expr 1116 src/Bounds.cpp Expr c = op->condition; Expr 1127 src/Bounds.cpp Expr a, b; Expr 1138 src/Bounds.cpp Expr inner_min, inner_max; Expr 1270 src/Bounds.cpp Expr min_val, max_val; Expr 1312 src/Bounds.cpp map<string, Box> boxes_touched(Expr e, Stmt s, bool consider_calls, bool consider_provides, Expr 1348 src/Bounds.cpp Box box_touched(Expr e, Stmt s, bool consider_calls, bool consider_provides, Expr 1355 src/Bounds.cpp map<string, Box> boxes_required(Expr e, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 1359 src/Bounds.cpp Box box_required(Expr e, string fn, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 1364 src/Bounds.cpp return boxes_touched(Expr(), s, true, false, "", scope, fb); Expr 1368 src/Bounds.cpp return box_touched(Expr(), s, true, false, fn, scope, fb); Expr 1371 src/Bounds.cpp map<string, Box> boxes_provided(Expr e, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 1375 src/Bounds.cpp Box box_provided(Expr e, string fn, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 1380 src/Bounds.cpp return boxes_touched(Expr(), s, false, true, "", scope, fb); Expr 1384 src/Bounds.cpp return box_touched(Expr(), s, false, true, fn, scope, fb); Expr 1387 src/Bounds.cpp map<string, Box> boxes_touched(Expr e, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 1391 src/Bounds.cpp Box box_touched(Expr e, string fn, const Scope<Interval> &scope, const FuncValueBounds &fb) { Expr 1396 src/Bounds.cpp return boxes_touched(Expr(), s, true, true, "", scope, fb); Expr 1400 src/Bounds.cpp return box_touched(Expr(), s, true, true, fn, scope, fb); Expr 1461 src/Bounds.cpp void check(const Scope<Interval> &scope, Expr e, Expr correct_min, Expr correct_max) { Expr 1481 src/Bounds.cpp scope.push("x", Interval(Expr(0), Expr(10))); Expr 1538 src/Bounds.cpp Expr u8_1 = cast<uint8_t>(Load::make(Int(8), "buf", x, Buffer<>(), Parameter(), const_true())); Expr 1539 src/Bounds.cpp Expr u8_2 = cast<uint8_t>(Load::make(Int(8), "buf", x + 17, Buffer<>(), Parameter(), const_true())); Expr 1543 src/Bounds.cpp vector<Expr> input_site_1 = {2*x}; Expr 1544 src/Bounds.cpp vector<Expr> input_site_2 = {2*x+1}; Expr 1545 src/Bounds.cpp vector<Expr> output_site = {x+1}; Expr 1567 src/Bounds.cpp Box r2({Interval(Expr(5), Expr(19))}); Expr 30 src/Bounds.h Interval bounds_of_expr_in_scope(Expr expr, Expr 39 src/Bounds.h Expr find_constant_bound(Expr e, Direction d); Expr 45 src/Bounds.h Expr used; Expr 86 src/Bounds.h std::map<std::string, Box> boxes_required(Expr e, Expr 98 src/Bounds.h std::map<std::string, Box> boxes_provided(Expr e, Expr 110 src/Bounds.h std::map<std::string, Box> boxes_touched(Expr e, Expr 120 src/Bounds.h Box box_required(Expr e, std::string fn, Expr 127 src/Bounds.h Box box_provided(Expr e, std::string fn, Expr 134 src/Bounds.h Box box_touched(Expr e, std::string fn, Expr 44 src/BoundsInference.cpp bool depends_on_bounds_inference(Expr e) { Expr 116 src/BoundsInference.cpp Expr cond; // Condition on params only (can't depend on loop variable) Expr 117 src/BoundsInference.cpp Expr value; Expr 119 src/BoundsInference.cpp CondValue(const Expr &c, const Expr &v) : cond(c), value(v) {} Expr 142 src/BoundsInference.cpp vector<Expr> predicates = def.split_predicate(); Expr 147 src/BoundsInference.cpp vector<vector<Expr>> vecs(2); Expr 154 src/BoundsInference.cpp for (const Expr &val : vecs[i]) { Expr 156 src/BoundsInference.cpp Expr cond_val = Call::make(val.type(), Expr 175 src/BoundsInference.cpp Expr s_cond = specializations[i-1].condition; Expr 204 src/BoundsInference.cpp Expr val = vec[0].value; Expr 309 src/BoundsInference.cpp Expr min = Variable::make(Int(32), last_stage + dim + ".min"); Expr 310 src/BoundsInference.cpp Expr max = Variable::make(Int(32), last_stage + dim + ".max"); Expr 342 src/BoundsInference.cpp Expr outer_query = Variable::make(type_of<struct halide_buffer_t *>(), outer_query_name); Expr 344 src/BoundsInference.cpp Expr inner_query = Variable::make(type_of<struct halide_buffer_t *>(), inner_query_name); Expr 346 src/BoundsInference.cpp Expr outer_min = Call::make(Int(32), Call::buffer_get_min, Expr 348 src/BoundsInference.cpp Expr outer_max = Call::make(Int(32), Call::buffer_get_max, Expr 351 src/BoundsInference.cpp Expr inner_min = Call::make(Int(32), Call::buffer_get_min, Expr 353 src/BoundsInference.cpp Expr inner_max = Call::make(Int(32), Call::buffer_get_max, Expr 357 src/BoundsInference.cpp Expr shift = Min::make(0, outer_max - inner_max); Expr 358 src/BoundsInference.cpp Expr new_min = inner_min + shift; Expr 359 src/BoundsInference.cpp Expr new_max = inner_max + shift; Expr 382 src/BoundsInference.cpp Expr inner_query = Variable::make(type_of<struct halide_buffer_t *>(), inner_query_name); Expr 384 src/BoundsInference.cpp Expr new_min = Call::make(Int(32), Call::buffer_get_min, Expr 386 src/BoundsInference.cpp Expr new_max = Call::make(Int(32), Call::buffer_get_max, Expr 410 src/BoundsInference.cpp Expr min_required = Variable::make(Int(32), min_var); Expr 411 src/BoundsInference.cpp Expr max_required = Variable::make(Int(32), max_var); Expr 440 src/BoundsInference.cpp Expr max_plus_one = max_required + 1; Expr 478 src/BoundsInference.cpp vector<Expr> bounds_inference_args; Expr 480 src/BoundsInference.cpp vector<pair<string, Expr>> lets; Expr 487 src/BoundsInference.cpp Expr null_handle = make_zero(Handle()); Expr 489 src/BoundsInference.cpp vector<Expr> buffers_to_annotate; Expr 501 src/BoundsInference.cpp Expr buf = builder.build(); Expr 513 src/BoundsInference.cpp Expr in_buf = Variable::make(type_of<struct halide_buffer_t *>(), name + ".buffer"); Expr 518 src/BoundsInference.cpp Expr alloca_size = Call::make(Int(32), Call::size_of_halide_buffer_t, {}, Call::Intrinsic); Expr 519 src/BoundsInference.cpp Expr query_buf = Call::make(type_of<struct halide_buffer_t *>(), Call::alloca, Expr 521 src/BoundsInference.cpp Expr query_shape = Call::make(type_of<struct halide_dimension_t *>(), Call::alloca, Expr 527 src/BoundsInference.cpp Expr buf = Variable::make(type_of<struct halide_buffer_t *>(), query_name, b, p, ReductionDomain()); Expr 545 src/BoundsInference.cpp Expr min = Variable::make(Int(32), prefix + ".min"); Expr 546 src/BoundsInference.cpp Expr max = Variable::make(Int(32), prefix + ".max"); Expr 551 src/BoundsInference.cpp Expr output_buffer_t = builder.build(); Expr 567 src/BoundsInference.cpp Expr sizeof_buffer_t = Expr 581 src/BoundsInference.cpp Expr e = func.make_call_to_extern_definition(bounds_inference_args, target); Expr 585 src/BoundsInference.cpp Expr result = Variable::make(Int(32), result_name); Expr 586 src/BoundsInference.cpp Expr error = Call::make(Int(32), "halide_error_bounds_inference_call_failed", Expr 740 src/BoundsInference.cpp Expr buf = Variable::make(type_of<struct halide_buffer_t *>(), buf_name); Expr 741 src/BoundsInference.cpp Expr min = Call::make(Int(32), Call::buffer_get_min, Expr 743 src/BoundsInference.cpp Expr max = Call::make(Int(32), Call::buffer_get_max, Expr 816 src/BoundsInference.cpp Expr min = Variable::make(Int(32), buffer_name + ".min." + std::to_string(d), buf); Expr 817 src/BoundsInference.cpp Expr extent = Variable::make(Int(32), buffer_name + ".extent." + std::to_string(d), buf); Expr 820 src/BoundsInference.cpp Expr min_constraint = buf.min_constraint(d); Expr 821 src/BoundsInference.cpp Expr extent_constraint = buf.extent_constraint(d); Expr 851 src/BoundsInference.cpp vector<pair<string, Expr>> lets; Expr 960 src/BoundsInference.cpp Expr val = Variable::make(Int(32), var); Expr 19 src/Buffer.cpp Expr buffer_accessor(const Buffer<> &buf, const std::vector<Expr> &args) { Expr 20 src/Buffer.cpp std::vector<Expr> int_args; Expr 21 src/Buffer.cpp for (Expr e : args) { Expr 22 src/Buffer.h EXPORT Expr buffer_accessor(const Buffer<> &buf, const std::vector<Expr> &args); Expr 432 src/Buffer.h Expr operator()(Expr first, Args... rest) const { Expr 433 src/Buffer.h std::vector<Expr> args = {first, rest...}; Expr 438 src/Buffer.h Expr operator()(const std::vector<Expr> &args) const { Expr 24 src/CSE.cpp bool should_extract(Expr e) { Expr 69 src/CSE.cpp Expr expr; Expr 77 src/CSE.cpp map<Expr, int, ExprCompare> shallow_numbering; Expr 91 src/CSE.cpp ExprWithCompareCache with_cache(Expr e) { Expr 95 src/CSE.cpp Expr mutate(Expr e) { Expr 98 src/CSE.cpp map<Expr, int, ExprCompare>::iterator iter = shallow_numbering.find(e); Expr 125 src/CSE.cpp Expr old_e = e; Expr 153 src/CSE.cpp Expr value = mutate(let->value); Expr 159 src/CSE.cpp Expr body = mutate(let->body); Expr 168 src/CSE.cpp Expr predicate = op->predicate; Expr 173 src/CSE.cpp Expr index = mutate(op->index); Expr 182 src/CSE.cpp Expr predicate = op->predicate; Expr 187 src/CSE.cpp Expr value = mutate(op->value); Expr 188 src/CSE.cpp Expr index = mutate(op->index); Expr 206 src/CSE.cpp void include(const Expr &e) { Expr 217 src/CSE.cpp map<Expr, int, ExprCompare>::iterator iter = gvn.shallow_numbering.find(e); Expr 234 src/CSE.cpp map<Expr, Expr, ExprCompare> replacements; Expr 235 src/CSE.cpp Replacer(const map<Expr, Expr, ExprCompare> &r) : replacements(r) {} Expr 239 src/CSE.cpp Expr mutate(Expr e) { Expr 240 src/CSE.cpp map<Expr, Expr, ExprCompare>::iterator iter = replacements.find(e); Expr 247 src/CSE.cpp Expr new_e = IRMutator::mutate(e); Expr 260 src/CSE.cpp Expr mutate(Expr e) { Expr 267 src/CSE.cpp Expr common_subexpression_elimination(Expr e) { Expr 282 src/CSE.cpp vector<pair<string, Expr>> lets; Expr 283 src/CSE.cpp vector<Expr> new_version(gvn.entries.size()); Expr 284 src/CSE.cpp map<Expr, Expr, ExprCompare> replacements; Expr 287 src/CSE.cpp Expr old = e.expr; Expr 305 src/CSE.cpp Expr value = lets[i-1].second; Expr 348 src/CSE.cpp Expr value = mutate(let->value); Expr 349 src/CSE.cpp Expr body = mutate(let->body); Expr 357 src/CSE.cpp void check(Expr in, Expr correct) { Expr 358 src/CSE.cpp Expr result = common_subexpression_elimination(in); Expr 369 src/CSE.cpp Expr ssa_block(vector<Expr> exprs) { Expr 370 src/CSE.cpp Expr e = exprs.back(); Expr 381 src/CSE.cpp Expr x = Variable::make(Int(32), "x"); Expr 382 src/CSE.cpp Expr y = Variable::make(Int(32), "y"); Expr 384 src/CSE.cpp Expr t[32], tf[32]; Expr 389 src/CSE.cpp Expr e, correct; Expr 421 src/CSE.cpp Expr e1 = ssa_block({x*x, // a = x*x Expr 424 src/CSE.cpp Expr e2 = ssa_block({x*x, // a again Expr 445 src/CSE.cpp Expr result = common_subexpression_elimination(e); Expr 448 src/CSE.cpp Expr pred = x*x + y*y > 0; Expr 449 src/CSE.cpp Expr index = select(x*x + y*y > 0, x*x + y*y + 2, x*x + y*y + 10); Expr 450 src/CSE.cpp Expr load = Load::make(Int(32), "buf", index, Buffer<>(), Parameter(), const_true()); Expr 451 src/CSE.cpp Expr pred_load = Load::make(Int(32), "buf", index, Buffer<>(), Parameter(), pred); Expr 454 src/CSE.cpp Expr t2 = Variable::make(Bool(), "t2"); Expr 455 src/CSE.cpp Expr cse_load = Load::make(Int(32), "buf", t[3], Buffer<>(), Parameter(), const_true()); Expr 456 src/CSE.cpp Expr cse_pred_load = Load::make(Int(32), "buf", t[3], Buffer<>(), Parameter(), t2); Expr 467 src/CSE.cpp Expr pred = x*x + y*y > 0; Expr 468 src/CSE.cpp Expr index = select(x*x + y*y > 0, x*x + y*y + 2, x*x + y*y + 10); Expr 469 src/CSE.cpp Expr load = Load::make(Int(32), "buf", index, Buffer<>(), Parameter(), const_true()); Expr 470 src/CSE.cpp Expr pred_load = Load::make(Int(32), "buf", index, Buffer<>(), Parameter(), pred); Expr 473 src/CSE.cpp Expr t2 = Variable::make(Bool(), "t2"); Expr 474 src/CSE.cpp Expr cse_load = Load::make(Int(32), "buf", select(t2, t[1] + 2, t[1] + 10), Buffer<>(), Parameter(), const_true()); Expr 475 src/CSE.cpp Expr cse_pred_load = Load::make(Int(32), "buf", select(t2, t[1] + 2, t[1] + 10), Buffer<>(), Parameter(), t2); Expr 486 src/CSE.cpp Expr handle_a = reinterpret(type_of<int *>(), make_zero(UInt(64))); Expr 487 src/CSE.cpp Expr handle_b = reinterpret(type_of<float *>(), make_zero(UInt(64))); Expr 488 src/CSE.cpp Expr handle_c = reinterpret(type_of<float *>(), make_zero(UInt(64))); Expr 491 src/CSE.cpp Expr t0 = Variable::make(handle_b.type(), "t0"); Expr 21 src/CSE.h EXPORT Expr common_subexpression_elimination(Expr); Expr 113 src/CanonicalizeGPUVars.cpp Expr min = mutate(op->min); Expr 114 src/CanonicalizeGPUVars.cpp Expr extent = mutate(op->extent); Expr 141 src/CanonicalizeGPUVars.cpp Expr new_var = Variable::make(Int(32), name); Expr 160 src/CanonicalizeGPUVars.cpp Expr value = mutate(op->value); Expr 165 src/CanonicalizeGPUVars.cpp Expr new_var = Variable::make(Int(32), name); Expr 180 src/CanonicalizeGPUVars.cpp Expr condition = mutate(op->condition); Expr 63 src/CodeGen_ARM.cpp Expr vector = Variable::make(t, "*"); Expr 64 src/CodeGen_ARM.cpp Expr w_vector = Variable::make(w, "*"); Expr 65 src/CodeGen_ARM.cpp Expr ws_vector = Variable::make(ws, "*"); Expr 68 src/CodeGen_ARM.cpp Expr tmin = simplify(cast(w, t.min())); Expr 69 src/CodeGen_ARM.cpp Expr tmax = simplify(cast(w, t.max())); Expr 70 src/CodeGen_ARM.cpp Expr tsmin = simplify(cast(ws, t.min())); Expr 71 src/CodeGen_ARM.cpp Expr tsmax = simplify(cast(ws, t.max())); Expr 73 src/CodeGen_ARM.cpp Pattern p("", "", intrin_lanes, Expr(), Pattern::NarrowArgs); Expr 156 src/CodeGen_ARM.cpp i32_sat((wild_i64x2 * wild_i64x2 + (1<<30)) / Expr(int64_t(1) << 31)), Expr 159 src/CodeGen_ARM.cpp i32_sat((wild_i64x_ * wild_i64x_ + (1<<30)) / Expr(int64_t(1) << 31)), Expr 231 src/CodeGen_ARM.cpp Value *CodeGen_ARM::call_pattern(const Pattern &p, Type t, const vector<Expr> &args) { Expr 255 src/CodeGen_ARM.cpp vector<Expr> matches; Expr 288 src/CodeGen_ARM.cpp Expr constant = matches[1]; Expr 324 src/CodeGen_ARM.cpp Expr replacement = cast(t, Expr 337 src/CodeGen_ARM.cpp Expr a, b; Expr 381 src/CodeGen_ARM.cpp vector<Expr> matches; Expr 408 src/CodeGen_ARM.cpp Expr CodeGen_ARM::sorted_avg(Expr a, Expr b) { Expr 419 src/CodeGen_ARM.cpp vector<Expr> matches; Expr 440 src/CodeGen_ARM.cpp vector<Expr> matches; Expr 655 src/CodeGen_ARM.cpp Expr rhs = op->value; Expr 656 src/CodeGen_ARM.cpp vector<pair<string, Expr>> lets; Expr 745 src/CodeGen_ARM.cpp Expr slice_base = simplify(ramp->base + i * num_vecs); Expr 746 src/CodeGen_ARM.cpp Expr slice_ramp = Ramp::make(slice_base, ramp->stride, intrin_type.lanes() * num_vecs); Expr 845 src/CodeGen_ARM.cpp Expr base = ramp->base; Expr 902 src/CodeGen_ARM.cpp Expr slice_base = simplify(base + i*ramp->stride); Expr 903 src/CodeGen_ARM.cpp Expr slice_ramp = Ramp::make(slice_base, ramp->stride, intrin_lanes); Expr 948 src/CodeGen_ARM.cpp Expr a = sub->a, b = sub->b; Expr 950 src/CodeGen_ARM.cpp Expr na = lossless_cast(narrow, a); Expr 951 src/CodeGen_ARM.cpp Expr nb = lossless_cast(narrow, b); Expr 961 src/CodeGen_ARM.cpp Expr absd = Call::make(UInt(narrow.bits(), narrow.lanes()), Call::absd, Expr 21 src/CodeGen_ARM.h Expr sorted_avg(Expr a, Expr b); Expr 45 src/CodeGen_ARM.h Expr pattern; ///< The pattern to match against Expr 53 src/CodeGen_ARM.h Pattern(const std::string &i32, const std::string &i64, int l, Expr p, PatternType t = Simple) : Expr 63 src/CodeGen_ARM.h llvm::Value *call_pattern(const Pattern &p, Type t, const std::vector<Expr> &args); Expr 321 src/CodeGen_C.cpp string CodeGen_C::print_reinterpret(Type type, Expr e) { Expr 677 src/CodeGen_C.cpp string CodeGen_C::print_expr(Expr e) { Expr 728 src/CodeGen_C.cpp void CodeGen_C::visit_binop(Type t, Expr a, Expr b, const char * op) { Expr 830 src/CodeGen_C.cpp oss << Expr(op); Expr 929 src/CodeGen_C.cpp Expr e = lower_lerp(op->args[0], op->args[1], op->args[2]); Expr 933 src/CodeGen_C.cpp Expr a = op->args[0]; Expr 934 src/CodeGen_C.cpp Expr b = op->args[1]; Expr 935 src/CodeGen_C.cpp Expr e = select(a < b, b - a, a - b); Expr 971 src/CodeGen_C.cpp Expr a0 = op->args[0]; Expr 1189 src/CodeGen_C.cpp Expr body = op->body; Expr 1198 src/CodeGen_C.cpp Expr new_var = Variable::make(op->value.type(), id_value); Expr 1228 src/CodeGen_C.cpp Expr new_var = Variable::make(op->value.type(), id_value); Expr 1318 src/CodeGen_C.cpp size_id = print_expr(Expr(static_cast<int32_t>(constant_size))); Expr 1360 src/CodeGen_C.cpp Expr conditional_size = Select::make(op->condition, Expr 1362 src/CodeGen_C.cpp Expr(static_cast<int32_t>(0))); Expr 1462 src/CodeGen_C.cpp Expr e = Select::make(alpha > 4.0f, print_when(x < 1, 3), 2); Expr 1469 src/CodeGen_C.cpp Expr buf = Variable::make(Handle(), "buf.buffer"); Expr 72 src/CodeGen_C.h std::string print_expr(Expr); Expr 90 src/CodeGen_C.h virtual std::string print_reinterpret(Type, Expr); Expr 180 src/CodeGen_C.h void visit_binop(Type t, Expr a, Expr b, const char *op); Expr 49 src/CodeGen_GPU_Dev.cpp bool CodeGen_GPU_Dev::is_block_uniform(Expr expr) { Expr 53 src/CodeGen_GPU_Dev.h static bool is_block_uniform(Expr expr); Expr 34 src/CodeGen_GPU_Host.cpp Expr num_threads[4]; Expr 35 src/CodeGen_GPU_Host.cpp Expr num_blocks[4]; Expr 36 src/CodeGen_GPU_Host.cpp Expr shared_mem_size; Expr 207 src/CodeGen_GPU_Host.cpp CodeGen_CPU::create_assertion(did_succeed, Expr(), result); Expr 248 src/CodeGen_GPU_Host.cpp Value *zero_int32 = codegen(Expr(cast<int>(0))); Expr 361 src/CodeGen_GPU_Host.cpp Expr buf = Variable::make(type_of<buffer_t *>(), name + ".buffer"); Expr 362 src/CodeGen_GPU_Host.cpp Expr get_dev = Call::make(UInt(64), Call::buffer_get_device, {buf}, Call::Extern); Expr 124 src/CodeGen_Hexagon.cpp Expr hvx_mode = target.has_feature(Target::HVX_128) ? 128 : 64; Expr 125 src/CodeGen_Hexagon.cpp Expr hvx_lock = Call::make(Int(32), "halide_qurt_hvx_lock", {hvx_mode}, Call::Extern); Expr 127 src/CodeGen_Hexagon.cpp Expr hvx_lock_result_var = Variable::make(Int(32), hvx_lock_result_name); Expr 131 src/CodeGen_Hexagon.cpp Expr dummy_obj = reinterpret(Handle(), cast<uint64_t>(1)); Expr 132 src/CodeGen_Hexagon.cpp Expr hvx_unlock = Call::make(Int(32), Call::register_destructor, Expr 133 src/CodeGen_Hexagon.cpp {Expr("halide_qurt_hvx_unlock_as_destructor"), dummy_obj}, Call::Intrinsic); Expr 140 src/CodeGen_Hexagon.cpp bool is_dense_ramp(Expr x) { Expr 158 src/CodeGen_Hexagon.cpp Expr predicate = mutate(op->predicate); Expr 159 src/CodeGen_Hexagon.cpp Expr index = mutate(op->index); Expr 162 src/CodeGen_Hexagon.cpp Expr condition = Shuffle::make({predicate}, {0}); Expr 1217 src/CodeGen_Hexagon.cpp string type_suffix(Expr a, bool signed_variants = true) { Expr 1221 src/CodeGen_Hexagon.cpp string type_suffix(Expr a, Expr b, bool signed_variants = true) { Expr 1225 src/CodeGen_Hexagon.cpp string type_suffix(const vector<Expr> &ops, bool signed_variants = true) { Expr 1237 src/CodeGen_Hexagon.cpp vector<Expr> args, bool maybe) { Expr 1329 src/CodeGen_Hexagon.cpp Expr maybe_scalar(Expr x) { Expr 1370 src/CodeGen_Hexagon.cpp << Expr(op) << "\n"; Expr 1376 src/CodeGen_Hexagon.cpp Expr CodeGen_Hexagon::mulhi_shr(Expr a, Expr b, int shr) { Expr 1382 src/CodeGen_Hexagon.cpp Expr p_wide = Call::make(wide_ty, "halide.hexagon.mpy" + type_suffix(a, b), Expr 1387 src/CodeGen_Hexagon.cpp Expr p = Call::make(ty, "halide.hexagon.trunclo" + type_suffix(p_wide, false), Expr 1401 src/CodeGen_Hexagon.cpp Expr CodeGen_Hexagon::sorted_avg(Expr a, Expr b) { Expr 1444 src/CodeGen_Hexagon.cpp << "see https://github.com/halide/Halide/issues/1582\n" << Expr(op) << "\n"; Expr 1467 src/CodeGen_Hexagon.cpp Expr b = maybe_scalar(op->args[1]); Expr 1506 src/CodeGen_Hexagon.cpp Expr equiv = -Cast::make(op->type, op->args[0]); Expr 1525 src/CodeGen_Hexagon.cpp Expr extent_0_bytes = op->args[2] * op->args[3] * op->type.bytes(); Expr 1534 src/CodeGen_Hexagon.cpp Expr stride_1_bytes = op->args[5] * op->type.bytes(); Expr 1575 src/CodeGen_Hexagon.cpp Expr equiv = Expr 1592 src/CodeGen_Hexagon.cpp Expr equiv = Expr 1603 src/CodeGen_Hexagon.cpp internal_assert(op->condition.type().is_scalar()) << Expr(op) << "\n"; Expr 1637 src/CodeGen_Hexagon.cpp Expr ge = Not::make(GT::make(op->b, op->a)); Expr 1647 src/CodeGen_Hexagon.cpp Expr le = Not::make(GT::make(op->a, op->b)); Expr 1657 src/CodeGen_Hexagon.cpp Expr lt = GT::make(op->b, op->a); Expr 1666 src/CodeGen_Hexagon.cpp Expr eq = Not::make(EQ::make(op->a, op->b)); Expr 27 src/CodeGen_Hexagon.h Expr mulhi_shr(Expr a, Expr b, int shr); Expr 28 src/CodeGen_Hexagon.h Expr sorted_avg(Expr a, Expr b); Expr 88 src/CodeGen_Hexagon.h std::vector<Expr>, bool maybe = false); Expr 217 src/CodeGen_Internal.cpp Expr lower_euclidean_div(Expr a, Expr b) { Expr 221 src/CodeGen_Internal.cpp Expr q = Call::make(a.type(), Call::div_round_to_zero, {a, b}, Call::PureIntrinsic); Expr 238 src/CodeGen_Internal.cpp Expr r = a - q*b; Expr 239 src/CodeGen_Internal.cpp Expr bs = b >> (a.type().bits() - 1); Expr 240 src/CodeGen_Internal.cpp Expr rs = r >> (a.type().bits() - 1); Expr 248 src/CodeGen_Internal.cpp Expr lower_euclidean_mod(Expr a, Expr b) { Expr 252 src/CodeGen_Internal.cpp Expr r = Call::make(a.type(), Call::mod_round_to_zero, {a, b}, Call::PureIntrinsic); Expr 261 src/CodeGen_Internal.cpp Expr sign_mask = r >> (a.type().bits()-1); Expr 280 src/CodeGen_Internal.cpp Expr predicate = mutate(op->predicate); Expr 281 src/CodeGen_Internal.cpp Expr index = mutate(op->index); Expr 282 src/CodeGen_Internal.cpp Expr condition; Expr 285 src/CodeGen_Internal.cpp Expr unpredicated_load = Load::make(op->type, op->name, index, op->image, op->param, Expr 291 src/CodeGen_Internal.cpp Expr index_var = Variable::make(index.type(), index_name); Expr 293 src/CodeGen_Internal.cpp Expr predicate_var = Variable::make(predicate.type(), predicate_name); Expr 295 src/CodeGen_Internal.cpp vector<Expr> lanes; Expr 298 src/CodeGen_Internal.cpp Expr idx_i = Shuffle::make({index_var}, {i}); Expr 299 src/CodeGen_Internal.cpp Expr pred_i = Shuffle::make({predicate_var}, {i}); Expr 300 src/CodeGen_Internal.cpp Expr unpredicated_load = Load::make(op->type.element_of(), op->name, idx_i, op->image, op->param, Expr 318 src/CodeGen_Internal.cpp Expr predicate = mutate(op->predicate); Expr 319 src/CodeGen_Internal.cpp Expr value = mutate(op->value); Expr 320 src/CodeGen_Internal.cpp Expr index = mutate(op->index); Expr 327 src/CodeGen_Internal.cpp Expr value_var = Variable::make(value.type(), value_name); Expr 329 src/CodeGen_Internal.cpp Expr index_var = Variable::make(index.type(), index_name); Expr 331 src/CodeGen_Internal.cpp Expr predicate_var = Variable::make(predicate.type(), predicate_name); Expr 335 src/CodeGen_Internal.cpp Expr pred_i = Shuffle::make({predicate_var}, {i}); Expr 336 src/CodeGen_Internal.cpp Expr value_i = Shuffle::make({value_var}, {i}); Expr 337 src/CodeGen_Internal.cpp Expr index_i = Shuffle::make({index_var}, {i}); Expr 61 src/CodeGen_Internal.h Expr lower_euclidean_div(Expr a, Expr b); Expr 62 src/CodeGen_Internal.h Expr lower_euclidean_mod(Expr a, Expr b); Expr 842 src/CodeGen_LLVM.cpp Constant* CodeGen_LLVM::embed_constant_expr(Expr e) { Expr 921 src/CodeGen_LLVM.cpp Expr def = args[arg].def; Expr 922 src/CodeGen_LLVM.cpp Expr min = args[arg].min; Expr 923 src/CodeGen_LLVM.cpp Expr max = args[arg].max; Expr 927 src/CodeGen_LLVM.cpp def = min = max = Expr(); Expr 1089 src/CodeGen_LLVM.cpp Value *CodeGen_LLVM::codegen(Expr e) { Expr 1204 src/CodeGen_LLVM.cpp Expr CodeGen_LLVM::mulhi_shr(Expr a, Expr b, int shr) { Expr 1208 src/CodeGen_LLVM.cpp Expr p_wide = cast(wide_ty, a) * cast(wide_ty, b); Expr 1212 src/CodeGen_LLVM.cpp Expr CodeGen_LLVM::sorted_avg(Expr a, Expr b) { Expr 1219 src/CodeGen_LLVM.cpp user_assert(!is_zero(op->b)) << "Division by constant zero in expression: " << Expr(op) << "\n"; Expr 1249 src/CodeGen_LLVM.cpp Expr num = op->a; Expr 1252 src/CodeGen_LLVM.cpp Expr sign = num >> make_const(op->type, op->type.bits() - 1); Expr 1260 src/CodeGen_LLVM.cpp Expr mult = make_const(num.type(), multiplier); Expr 1290 src/CodeGen_LLVM.cpp Expr num = op->a; Expr 1293 src/CodeGen_LLVM.cpp Expr mult = make_const(num.type(), multiplier); Expr 1294 src/CodeGen_LLVM.cpp Expr val = mulhi_shr(num, mult, method == 1 ? shift : 0); Expr 1345 src/CodeGen_LLVM.cpp Expr a = Variable::make(op->a.type(), a_name); Expr 1346 src/CodeGen_LLVM.cpp Expr b = Variable::make(op->b.type(), b_name); Expr 1355 src/CodeGen_LLVM.cpp Expr a = Variable::make(op->a.type(), a_name); Expr 1356 src/CodeGen_LLVM.cpp Expr b = Variable::make(op->b.type(), b_name); Expr 1471 src/CodeGen_LLVM.cpp Expr promote_64(Expr e) { Expr 1488 src/CodeGen_LLVM.cpp Value *CodeGen_LLVM::codegen_buffer_pointer(string buffer, Halide::Type type, Expr index) { Expr 1494 src/CodeGen_LLVM.cpp Value *CodeGen_LLVM::codegen_buffer_pointer(Value *base_address, Halide::Type type, Expr index) { Expr 1551 src/CodeGen_LLVM.cpp void CodeGen_LLVM::add_tbaa_metadata(llvm::Instruction *inst, string buffer, Expr index) { Expr 1644 src/CodeGen_LLVM.cpp Expr base_a = ramp->base, base_b = ramp->base + ramp->lanes; Expr 1645 src/CodeGen_LLVM.cpp Expr stride_a = make_one(base_a.type()); Expr 1646 src/CodeGen_LLVM.cpp Expr stride_b = make_one(base_b.type()); Expr 1674 src/CodeGen_LLVM.cpp Expr ramp_a = Ramp::make(base_a, stride_a, ramp->lanes); Expr 1675 src/CodeGen_LLVM.cpp Expr ramp_b = Ramp::make(base_b, stride_b, ramp->lanes); Expr 1676 src/CodeGen_LLVM.cpp Expr load_a = Load::make(op->type, op->name, ramp_a, op->image, op->param, op->predicate); Expr 1677 src/CodeGen_LLVM.cpp Expr load_b = Load::make(op->type, op->name, ramp_b, op->image, op->param, op->predicate); Expr 1693 src/CodeGen_LLVM.cpp Expr flipped_base = ramp->base - ramp->lanes + 1; Expr 1694 src/CodeGen_LLVM.cpp Expr flipped_stride = make_one(flipped_base.type()); Expr 1695 src/CodeGen_LLVM.cpp Expr flipped_index = Ramp::make(flipped_base, flipped_stride, ramp->lanes); Expr 1696 src/CodeGen_LLVM.cpp Expr flipped_load = Load::make(op->type, op->name, flipped_index, op->image, op->param, op->predicate); Expr 1726 src/CodeGen_LLVM.cpp Expr idx = extract_lane(op->index, i); Expr 1756 src/CodeGen_LLVM.cpp Expr broadcast = Broadcast::make(op->base, op->lanes); Expr 1757 src/CodeGen_LLVM.cpp Expr ramp = Ramp::make(make_zero(op->base.type()), op->stride, op->lanes); Expr 1794 src/CodeGen_LLVM.cpp Expr unbroadcast(Expr e) { Expr 1875 src/CodeGen_LLVM.cpp void CodeGen_LLVM::scalarize(Expr e) { Expr 1924 src/CodeGen_LLVM.cpp Expr slice_base = simplify(ramp->base + i); Expr 1925 src/CodeGen_LLVM.cpp Expr slice_stride = make_one(slice_base.type()); Expr 1926 src/CodeGen_LLVM.cpp Expr slice_index = slice_lanes == 1 ? slice_base : Ramp::make(slice_base, slice_stride, slice_lanes); Expr 1969 src/CodeGen_LLVM.cpp debug(4) << "Vectorize predicated dense vector load:\n\t" << Expr(load) << "\n"; Expr 2011 src/CodeGen_LLVM.cpp Expr slice_base = simplify(ramp->base + i); Expr 2012 src/CodeGen_LLVM.cpp Expr slice_stride = make_one(slice_base.type()); Expr 2013 src/CodeGen_LLVM.cpp Expr slice_index = slice_lanes == 1 ? slice_base : Ramp::make(slice_base, slice_stride, slice_lanes); Expr 2039 src/CodeGen_LLVM.cpp debug(4) << "Predicated dense vector load with stride -1\n\t" << Expr(op) << "\n"; Expr 2050 src/CodeGen_LLVM.cpp Expr flipped_base = ramp->base - ramp->lanes + 1; Expr 2051 src/CodeGen_LLVM.cpp Expr flipped_stride = make_one(flipped_base.type()); Expr 2052 src/CodeGen_LLVM.cpp Expr flipped_index = Ramp::make(flipped_base, flipped_stride, ramp->lanes); Expr 2053 src/CodeGen_LLVM.cpp Expr flipped_load = Load::make(op->type, op->name, flipped_index, op->image, Expr 2059 src/CodeGen_LLVM.cpp Expr load_expr = Load::make(op->type, op->name, op->index, op->image, Expr 2062 src/CodeGen_LLVM.cpp Expr pred_load = Call::make(load_expr.type(), Expr 2092 src/CodeGen_LLVM.cpp Value *char_ptr = codegen(Expr(filename)); Expr 2177 src/CodeGen_LLVM.cpp Expr x = Variable::make(op->args[0].type(), x_name); Expr 2184 src/CodeGen_LLVM.cpp Expr a = op->args[0]; Expr 2185 src/CodeGen_LLVM.cpp Expr b = op->args[1]; Expr 2208 src/CodeGen_LLVM.cpp Expr a_var = Variable::make(op->args[0].type(), a_name); Expr 2209 src/CodeGen_LLVM.cpp Expr b_var = Variable::make(op->args[1].type(), b_name); Expr 2264 src/CodeGen_LLVM.cpp Expr cond = op->args[0]; Expr 2462 src/CodeGen_LLVM.cpp Expr arg = op->args[1]; Expr 2518 src/CodeGen_LLVM.cpp Expr cond; Expr 2645 src/CodeGen_LLVM.cpp Expr x = op->args[0]; Expr 2646 src/CodeGen_LLVM.cpp Expr y = op->args[1]; Expr 2647 src/CodeGen_LLVM.cpp Expr e = Internal::halide_exp(Internal::halide_log(x) * y); Expr 2651 src/CodeGen_LLVM.cpp Expr e = Internal::halide_log(op->args[0]); Expr 2655 src/CodeGen_LLVM.cpp Expr e = Internal::halide_exp(op->args[0]); Expr 2737 src/CodeGen_LLVM.cpp Expr halide_arg = takes_user_context ? op->args[i-1] : op->args[i]; Expr 2873 src/CodeGen_LLVM.cpp void CodeGen_LLVM::create_assertion(Value *cond, Expr message, llvm::Value *error_code) { Expr 3068 src/CodeGen_LLVM.cpp create_assertion(did_succeed, Expr(), result); Expr 3079 src/CodeGen_LLVM.cpp Expr v = reinterpret(UInt(64, op->value.type().lanes()), op->value); Expr 3134 src/CodeGen_LLVM.cpp Expr slice_base = simplify(ramp->base + i); Expr 3135 src/CodeGen_LLVM.cpp Expr slice_stride = make_one(slice_base.type()); Expr 3136 src/CodeGen_LLVM.cpp Expr slice_index = slice_lanes == 1 ? slice_base : Ramp::make(slice_base, slice_stride, slice_lanes); Expr 3227 src/CodeGen_LLVM.cpp for (Expr i : op->vectors) { Expr 3233 src/CodeGen_LLVM.cpp for (Expr i : op->vectors) { Expr 3286 src/CodeGen_LLVM.cpp const string &name, vector<Expr> args) { Expr 3489 src/CodeGen_LLVM.cpp ModulusRemainder CodeGen_LLVM::get_alignment_info(Expr e) { Expr 204 src/CodeGen_LLVM.h Expr wild_i8x8, wild_i16x4, wild_i32x2; // 64-bit signed ints Expr 205 src/CodeGen_LLVM.h Expr wild_u8x8, wild_u16x4, wild_u32x2; // 64-bit unsigned ints Expr 206 src/CodeGen_LLVM.h Expr wild_i8x16, wild_i16x8, wild_i32x4, wild_i64x2; // 128-bit signed ints Expr 207 src/CodeGen_LLVM.h Expr wild_u8x16, wild_u16x8, wild_u32x4, wild_u64x2; // 128-bit unsigned ints Expr 208 src/CodeGen_LLVM.h Expr wild_i8x32, wild_i16x16, wild_i32x8, wild_i64x4; // 256-bit signed ints Expr 209 src/CodeGen_LLVM.h Expr wild_u8x32, wild_u16x16, wild_u32x8, wild_u64x4; // 256-bit unsigned ints Expr 211 src/CodeGen_LLVM.h Expr wild_f32x2; // 64-bit floats Expr 212 src/CodeGen_LLVM.h Expr wild_f32x4, wild_f64x2; // 128-bit floats Expr 213 src/CodeGen_LLVM.h Expr wild_f32x8, wild_f64x4; // 256-bit floats Expr 216 src/CodeGen_LLVM.h Expr wild_u1x_, wild_i8x_, wild_u8x_, wild_i16x_, wild_u16x_; Expr 217 src/CodeGen_LLVM.h Expr wild_i32x_, wild_u32x_, wild_i64x_, wild_u64x_; Expr 218 src/CodeGen_LLVM.h Expr wild_f32x_, wild_f64x_; Expr 219 src/CodeGen_LLVM.h Expr min_i8, max_i8, max_u8; Expr 220 src/CodeGen_LLVM.h Expr min_i16, max_i16, max_u16; Expr 221 src/CodeGen_LLVM.h Expr min_i32, max_i32, max_u32; Expr 222 src/CodeGen_LLVM.h Expr min_i64, max_i64, max_u64; Expr 223 src/CodeGen_LLVM.h Expr min_f32, max_f32, min_f64, max_f64; Expr 228 src/CodeGen_LLVM.h llvm::Value *codegen(Expr); Expr 235 src/CodeGen_LLVM.h void scalarize(Expr); Expr 265 src/CodeGen_LLVM.h void create_assertion(llvm::Value *condition, Expr message, llvm::Value *error_code = nullptr); Expr 286 src/CodeGen_LLVM.h llvm::Value *codegen_buffer_pointer(std::string buffer, Type type, Expr index); Expr 287 src/CodeGen_LLVM.h llvm::Value *codegen_buffer_pointer(llvm::Value *base_address, Type type, Expr index); Expr 297 src/CodeGen_LLVM.h void add_tbaa_metadata(llvm::Instruction *inst, std::string buffer, Expr index); Expr 309 src/CodeGen_LLVM.h virtual Expr mulhi_shr(Expr a, Expr b, int shr); Expr 311 src/CodeGen_LLVM.h virtual Expr sorted_avg(Expr a, Expr b); Expr 415 src/CodeGen_LLVM.h const std::string &name, std::vector<Expr>); Expr 452 src/CodeGen_LLVM.h ModulusRemainder get_alignment_info(Expr e); Expr 481 src/CodeGen_LLVM.h llvm::Constant *embed_constant_expr(Expr e); Expr 90 src/CodeGen_Metal_Dev.cpp string CodeGen_Metal_Dev::CodeGen_Metal_C::print_reinterpret(Type type, Expr e) { Expr 199 src/CodeGen_Metal_Dev.cpp Expr is_ramp_one(Expr e) { Expr 202 src/CodeGen_Metal_Dev.cpp return Expr(); Expr 209 src/CodeGen_Metal_Dev.cpp return Expr(); Expr 222 src/CodeGen_Metal_Dev.cpp Expr ramp_base = is_ramp_one(op->index); Expr 293 src/CodeGen_Metal_Dev.cpp Expr ramp_base = is_ramp_one(op->index); Expr 64 src/CodeGen_Metal_Dev.h std::string print_reinterpret(Type type, Expr e); Expr 78 src/CodeGen_OpenCL_Dev.cpp string CodeGen_OpenCL_Dev::CodeGen_OpenCL_C::print_reinterpret(Type type, Expr e) { Expr 155 src/CodeGen_OpenCL_Dev.cpp Expr is_ramp1(Expr e) { Expr 158 src/CodeGen_OpenCL_Dev.cpp return Expr(); Expr 166 src/CodeGen_OpenCL_Dev.cpp return Expr(); Expr 185 src/CodeGen_OpenCL_Dev.cpp Expr equiv = -Cast::make(op->type, op->args[0]); Expr 190 src/CodeGen_OpenCL_Dev.cpp Expr equiv = Cast::make(op->type, op->args[0]); Expr 226 src/CodeGen_OpenCL_Dev.cpp Expr ramp_base = is_ramp1(op->index); Expr 295 src/CodeGen_OpenCL_Dev.cpp Expr ramp_base = is_ramp1(op->index); Expr 55 src/CodeGen_OpenCL_Dev.h std::string print_reinterpret(Type type, Expr e); Expr 335 src/CodeGen_OpenGLCompute_Dev.cpp Expr extent = 1; Expr 336 src/CodeGen_OpenGLCompute_Dev.cpp for (Expr e : op->extents) { Expr 72 src/CodeGen_OpenGL_Dev.cpp Expr call_builtin(const Type &result_type, const string &func, Expr 73 src/CodeGen_OpenGL_Dev.cpp const vector<Expr> &args) { Expr 75 src/CodeGen_OpenGL_Dev.cpp vector<Expr> new_args(args.size()); Expr 83 src/CodeGen_OpenGL_Dev.cpp Expr val = Call::make(float_type, func, new_args, Call::Extern); Expr 181 src/CodeGen_OpenGL_Dev.cpp Expr val = Div::make(Cast::make(float_type, op->a), Cast::make(float_type, op->b)); Expr 355 src/CodeGen_OpenGL_Dev.cpp Expr value = op->value; Expr 411 src/CodeGen_OpenGL_Dev.cpp vector<Expr> evaluate_vector_select(const Select *op) { Expr 413 src/CodeGen_OpenGL_Dev.cpp vector<Expr> result(lanes); Expr 415 src/CodeGen_OpenGL_Dev.cpp Expr cond = extract_lane(op->condition, i); Expr 416 src/CodeGen_OpenGL_Dev.cpp Expr true_value = extract_lane(op->true_value, i); Expr 417 src/CodeGen_OpenGL_Dev.cpp Expr false_value = extract_lane(op->false_value, i); Expr 461 src/CodeGen_OpenGL_Dev.cpp vector<Expr> result = evaluate_vector_select(op); Expr 478 src/CodeGen_OpenGL_Dev.cpp string CodeGen_GLSL::get_vector_suffix(Expr e) { Expr 479 src/CodeGen_OpenGL_Dev.cpp vector<Expr> matches; Expr 480 src/CodeGen_OpenGL_Dev.cpp Expr w = Variable::make(Int(32), "*"); Expr 502 src/CodeGen_OpenGL_Dev.cpp vector<string> CodeGen_GLSL::print_lanes(Expr e) { Expr 608 src/CodeGen_OpenGL_Dev.cpp Expr c = op->args[4]; Expr 698 src/CodeGen_OpenGL_Dev.cpp Expr zero_val = op->args[0]; Expr 699 src/CodeGen_OpenGL_Dev.cpp Expr one_val = op->args[1]; Expr 700 src/CodeGen_OpenGL_Dev.cpp Expr weight = op->args[2]; Expr 716 src/CodeGen_OpenGL_Dev.cpp Expr e = call_builtin(result_type, "mix", {zero_val, one_val, weight}); Expr 975 src/CodeGen_OpenGL_Dev.cpp void check(Expr e, const string &result) { Expr 996 src/CodeGen_OpenGL_Dev.cpp vector<Expr> e; Expr 1013 src/CodeGen_OpenGL_Dev.cpp check(Min::make(Expr(1), Expr(5)), Expr 1017 src/CodeGen_OpenGL_Dev.cpp check(Max::make(Expr(1), Expr(5)), Expr 1027 src/CodeGen_OpenGL_Dev.cpp check(Variable::make(Int(32), "x") / Expr(3), Expr 1107 src/CodeGen_OpenGL_Dev.cpp Expr load4 = Call::make(Float(32, 4), Call::glsl_texture_load, Expr 120 src/CodeGen_OpenGL_Dev.h std::string get_vector_suffix(Expr e); Expr 122 src/CodeGen_OpenGL_Dev.h std::vector<std::string> print_lanes(Expr expr); Expr 172 src/CodeGen_PTX_Dev.cpp Expr simt_idx = Call::make(Int(32), simt_intrinsic(loop->name), std::vector<Expr>(), Call::Extern); Expr 223 src/CodeGen_PTX_Dev.cpp Expr trap = Call::make(Int(32), "halide_ptx_trap", {}, Call::Extern); Expr 27 src/CodeGen_Posix.cpp Value *CodeGen_Posix::codegen_allocation_size(const std::string &name, Type type, const std::vector<Expr> &extents) { Expr 30 src/CodeGen_Posix.cpp Expr overflow = make_zero(UInt(64)); Expr 31 src/CodeGen_Posix.cpp Expr total_size = make_const(UInt(64), type.lanes() * type.bytes()); Expr 40 src/CodeGen_Posix.cpp Expr total_size_hi = make_zero(UInt(64)); Expr 42 src/CodeGen_Posix.cpp Expr low_mask = make_const(UInt(64), (uint64_t)(0xffffffff)); Expr 44 src/CodeGen_Posix.cpp Expr next_extent = cast(UInt(32), extents[i]); Expr 60 src/CodeGen_Posix.cpp Expr max_size = make_const(UInt(64), target.maximum_buffer_size()); Expr 61 src/CodeGen_Posix.cpp Expr size_check = (overflow == 0) && (total_size <= max_size); Expr 83 src/CodeGen_Posix.cpp const std::vector<Expr> &extents, Expr condition, Expr 84 src/CodeGen_Posix.cpp Expr new_expr, std::string free_function) { Expr 97 src/CodeGen_Posix.cpp llvm_size = codegen(Expr(constant_bytes)); Expr 189 src/CodeGen_Posix.cpp for (Expr e : extents) { Expr 216 src/CodeGen_Posix.cpp std::vector<Expr>(), Call::Extern)); Expr 88 src/CodeGen_Posix.h llvm::Value *codegen_allocation_size(const std::string &name, Type type, const std::vector<Expr> &extents); Expr 104 src/CodeGen_Posix.h const std::vector<Expr> &extents, Expr 105 src/CodeGen_Posix.h Expr condition, Expr new_expr, std::string free_function); Expr 50 src/CodeGen_PowerPC.cpp vector<Expr> matches; Expr 57 src/CodeGen_PowerPC.cpp Expr pattern; Expr 38 src/CodeGen_X86.cpp bool should_use_pmaddwd(Expr a, Expr b, vector<Expr> &result) { Expr 50 src/CodeGen_X86.cpp vector<Expr> args = {lossless_cast(narrow, ma->a), Expr 67 src/CodeGen_X86.cpp vector<Expr> matches; Expr 77 src/CodeGen_X86.cpp vector<Expr> matches; Expr 210 src/CodeGen_X86.cpp vector<Expr> matches; Expr 218 src/CodeGen_X86.cpp Expr pattern; Expr 302 src/CodeGen_X86.cpp Expr top_bits = cast(signed_type, op->value / 2); Expr 306 src/CodeGen_X86.cpp Expr bottom_bit = cast(signed_type, op->value % 2); Expr 319 src/CodeGen_X86.cpp Expr CodeGen_X86::mulhi_shr(Expr a, Expr b, int shr) { Expr 323 src/CodeGen_X86.cpp Expr p; Expr 403 src/CodeGen_X86.cpp Expr equiv = cast(op->type, Expr 32 src/CodeGen_X86.h Expr mulhi_shr(Expr a, Expr b, int shr); Expr 18 src/ConciseCasts.h inline Expr f64(Expr e) { Expr 22 src/ConciseCasts.h inline Expr f32(Expr e) { Expr 26 src/ConciseCasts.h inline Expr i64(Expr e) { Expr 30 src/ConciseCasts.h inline Expr i32(Expr e) { Expr 34 src/ConciseCasts.h inline Expr i16(Expr e) { Expr 38 src/ConciseCasts.h inline Expr i8(Expr e) { Expr 42 src/ConciseCasts.h inline Expr u64(Expr e) { Expr 46 src/ConciseCasts.h inline Expr u32(Expr e) { Expr 50 src/ConciseCasts.h inline Expr u16(Expr e) { Expr 54 src/ConciseCasts.h inline Expr u8(Expr e) { Expr 58 src/ConciseCasts.h inline Expr i8_sat(Expr e) { Expr 62 src/ConciseCasts.h inline Expr u8_sat(Expr e) { Expr 66 src/ConciseCasts.h inline Expr i16_sat(Expr e) { Expr 70 src/ConciseCasts.h inline Expr u16_sat(Expr e) { Expr 74 src/ConciseCasts.h inline Expr i32_sat(Expr e) { Expr 78 src/ConciseCasts.h inline Expr u32_sat(Expr e) { Expr 82 src/ConciseCasts.h inline Expr i64_sat(Expr e) { Expr 86 src/ConciseCasts.h inline Expr u64_sat(Expr e) { Expr 16 src/Debug.h struct Expr; Expr 19 src/Debug.h EXPORT std::ostream &operator<<(std::ostream &stream, const Expr &); Expr 16 src/DebugArguments.cpp Expr scalar_var = Variable::make(arg.type, arg.name); Expr 17 src/DebugArguments.cpp Expr buffer_var = Variable::make(type_of<halide_buffer_t *>(), arg.name + ".buffer"); Expr 18 src/DebugArguments.cpp Expr value; Expr 26 src/DebugToFile.cpp vector<Expr> args; Expr 38 src/DebugToFile.cpp Expr num_elements = 1; Expr 70 src/DebugToFile.cpp Expr buf = Variable::make(Handle(), f.name() + ".buffer"); Expr 73 src/DebugToFile.cpp Expr call = Call::make(Int(32), Call::debug_to_file, args, Call::Intrinsic); Expr 75 src/DebugToFile.cpp Expr call_result_var = Variable::make(Int(32), call_result_name); Expr 119 src/DebugToFile.cpp Expr min = Variable::make(Int(32), out.name() + ".min." + dim); Expr 120 src/DebugToFile.cpp Expr extent = Variable::make(Int(32), out.name() + ".extent." + dim); Expr 19 src/Definition.cpp Expr predicate; Expr 20 src/Definition.cpp std::vector<Expr> values, args; Expr 31 src/Definition.cpp for (Expr val : values) { Expr 34 src/Definition.cpp for (Expr arg : args) { Expr 88 src/Definition.cpp Definition::Definition(const std::vector<Expr> &args, const std::vector<Expr> &values, Expr 137 src/Definition.cpp std::vector<Expr> &Definition::args() { Expr 141 src/Definition.cpp const std::vector<Expr> &Definition::args() const { Expr 145 src/Definition.cpp std::vector<Expr> &Definition::values() { Expr 149 src/Definition.cpp const std::vector<Expr> &Definition::values() const { Expr 153 src/Definition.cpp Expr &Definition::predicate() { Expr 157 src/Definition.cpp const Expr &Definition::predicate() const { Expr 161 src/Definition.cpp std::vector<Expr> Definition::split_predicate() const { Expr 162 src/Definition.cpp std::vector<Expr> predicates; Expr 183 src/Definition.cpp const Specialization &Definition::add_specialization(Expr condition) { Expr 47 src/Definition.h EXPORT Definition(const std::vector<Expr> &args, const std::vector<Expr> &values, Expr 81 src/Definition.h EXPORT const std::vector<Expr> &args() const; Expr 82 src/Definition.h EXPORT std::vector<Expr> &args(); Expr 87 src/Definition.h EXPORT const std::vector<Expr> &values() const; Expr 88 src/Definition.h EXPORT std::vector<Expr> &values(); Expr 93 src/Definition.h EXPORT const Expr &predicate() const; Expr 94 src/Definition.h EXPORT Expr &predicate(); Expr 99 src/Definition.h EXPORT std::vector<Expr> split_predicate() const; Expr 113 src/Definition.h EXPORT const Specialization &add_specialization(Expr condition); Expr 119 src/Definition.h Expr condition; Expr 157 src/Deinterleave.cpp Scope<Expr> internal; Expr 258 src/Deinterleave.cpp std::vector<Expr> args(op->args.size()); Expr 270 src/Deinterleave.cpp Expr new_value = mutate(op->value); Expr 273 src/Deinterleave.cpp Expr new_var = Variable::make(new_type, new_name); Expr 275 src/Deinterleave.cpp Expr body = mutate(op->body); Expr 295 src/Deinterleave.cpp std::vector<Expr> new_vectors(op->vectors.size() / lane_stride); Expr 321 src/Deinterleave.cpp Expr extract_odd_lanes(Expr e, const Scope<int> &lets) { Expr 331 src/Deinterleave.cpp Expr extract_even_lanes(Expr e, const Scope<int> &lets) { Expr 341 src/Deinterleave.cpp Expr extract_even_lanes(Expr e) { Expr 347 src/Deinterleave.cpp Expr extract_odd_lanes(Expr e) { Expr 353 src/Deinterleave.cpp Expr extract_mod3_lanes(Expr e, int lane, const Scope<int> &lets) { Expr 363 src/Deinterleave.cpp Expr extract_lane(Expr e, int lane) { Expr 383 src/Deinterleave.cpp Expr deinterleave_expr(Expr e) { Expr 388 src/Deinterleave.cpp Expr a = extract_even_lanes(e, vector_lets); Expr 389 src/Deinterleave.cpp Expr b = extract_odd_lanes(e, vector_lets); Expr 392 src/Deinterleave.cpp Expr a = extract_mod3_lanes(e, 0, vector_lets); Expr 393 src/Deinterleave.cpp Expr b = extract_mod3_lanes(e, 1, vector_lets); Expr 394 src/Deinterleave.cpp Expr c = extract_mod3_lanes(e, 2, vector_lets); Expr 397 src/Deinterleave.cpp Expr a = extract_even_lanes(e, vector_lets); Expr 398 src/Deinterleave.cpp Expr b = extract_odd_lanes(e, vector_lets); Expr 399 src/Deinterleave.cpp Expr aa = extract_even_lanes(a, vector_lets); Expr 400 src/Deinterleave.cpp Expr ab = extract_odd_lanes(a, vector_lets); Expr 401 src/Deinterleave.cpp Expr ba = extract_even_lanes(b, vector_lets); Expr 402 src/Deinterleave.cpp Expr bb = extract_odd_lanes(b, vector_lets); Expr 412 src/Deinterleave.cpp Expr value = mutate(op->value); Expr 452 src/Deinterleave.cpp expr = visit_let<Let, Expr>(op); Expr 492 src/Deinterleave.cpp Expr idx = mutate(op->index); Expr 496 src/Deinterleave.cpp Expr predicate = mutate(op->predicate); Expr 530 src/Deinterleave.cpp Expr idx = mutate(op->index); Expr 536 src/Deinterleave.cpp Expr value = mutate(op->value); Expr 542 src/Deinterleave.cpp Expr predicate = mutate(op->predicate); Expr 602 src/Deinterleave.cpp Expr base; Expr 603 src/Deinterleave.cpp std::vector<Expr> args(stores.size()); Expr 604 src/Deinterleave.cpp std::vector<Expr> predicates(stores.size()); Expr 619 src/Deinterleave.cpp Expr diff = simplify(ri->base - r0->base); Expr 690 src/Deinterleave.cpp Expr index = Ramp::make(base, make_one(base.type()), t.lanes()); Expr 691 src/Deinterleave.cpp Expr value = Shuffle::make_interleave(args); Expr 692 src/Deinterleave.cpp Expr predicate = Shuffle::make_interleave(predicates); Expr 724 src/Deinterleave.cpp void check(Expr a, Expr even, Expr odd) { Expr 726 src/Deinterleave.cpp Expr correct_even = extract_even_lanes(a); Expr 727 src/Deinterleave.cpp Expr correct_odd = extract_odd_lanes(a); Expr 738 src/Deinterleave.cpp std::pair<Expr, Expr> result; Expr 739 src/Deinterleave.cpp Expr x = Variable::make(Int(32), "x"); Expr 740 src/Deinterleave.cpp Expr ramp = Ramp::make(x + 4, 3, 8); Expr 741 src/Deinterleave.cpp Expr ramp_a = Ramp::make(x + 4, 6, 4); Expr 742 src/Deinterleave.cpp Expr ramp_b = Ramp::make(x + 7, 6, 4); Expr 743 src/Deinterleave.cpp Expr broadcast = Broadcast::make(x + 4, 16); Expr 744 src/Deinterleave.cpp Expr broadcast_a = Broadcast::make(x + 4, 8); Expr 745 src/Deinterleave.cpp Expr broadcast_b = broadcast_a; Expr 17 src/Deinterleave.h EXPORT Expr extract_odd_lanes(Expr a); Expr 20 src/Deinterleave.h EXPORT Expr extract_even_lanes(Expr a); Expr 23 src/Deinterleave.h EXPORT Expr extract_lane(Expr vec, int lane); Expr 103 src/EarlyFree.cpp Expr buf = Variable::make(Handle(), func + ".buffer"); Expr 25 src/EliminateBoolVectors.cpp Expr a = mutate(op->a); Expr 26 src/EliminateBoolVectors.cpp Expr b = mutate(op->b); Expr 66 src/EliminateBoolVectors.cpp Expr a = mutate(op->a); Expr 67 src/EliminateBoolVectors.cpp Expr b = mutate(op->b); Expr 98 src/EliminateBoolVectors.cpp Expr a = mutate(op->a); Expr 124 src/EliminateBoolVectors.cpp Expr predicate = mutate(op->predicate); Expr 125 src/EliminateBoolVectors.cpp Expr value = op->value; Expr 133 src/EliminateBoolVectors.cpp Expr index = mutate(op->index); Expr 143 src/EliminateBoolVectors.cpp Expr cond = mutate(op->condition); Expr 144 src/EliminateBoolVectors.cpp Expr true_value = mutate(op->true_value); Expr 145 src/EliminateBoolVectors.cpp Expr false_value = mutate(op->false_value); Expr 171 src/EliminateBoolVectors.cpp Expr value = mutate(op->value); Expr 194 src/EliminateBoolVectors.cpp Expr value = mutate(op->value); Expr 216 src/EliminateBoolVectors.cpp void visit(const Let *op) { expr = visit_let<Expr>(op); } Expr 224 src/EliminateBoolVectors.cpp Expr eliminate_bool_vectors(Expr e) { Expr 27 src/EliminateBoolVectors.h EXPORT Expr eliminate_bool_vectors(Expr s); Expr 264 src/Expr.h struct Expr : public Internal::IRHandle { Expr 266 src/Expr.h Expr() : Internal::IRHandle() {} Expr 269 src/Expr.h Expr(const Internal::BaseExprNode *n) : IRHandle(n) {} Expr 274 src/Expr.h EXPORT explicit Expr(int8_t x) : IRHandle(Internal::IntImm::make(Int(8), x)) {} Expr 275 src/Expr.h EXPORT explicit Expr(int16_t x) : IRHandle(Internal::IntImm::make(Int(16), x)) {} Expr 276 src/Expr.h EXPORT Expr(int32_t x) : IRHandle(Internal::IntImm::make(Int(32), x)) {} Expr 277 src/Expr.h EXPORT explicit Expr(int64_t x) : IRHandle(Internal::IntImm::make(Int(64), x)) {} Expr 278 src/Expr.h EXPORT explicit Expr(uint8_t x) : IRHandle(Internal::UIntImm::make(UInt(8), x)) {} Expr 279 src/Expr.h EXPORT explicit Expr(uint16_t x) : IRHandle(Internal::UIntImm::make(UInt(16), x)) {} Expr 280 src/Expr.h EXPORT explicit Expr(uint32_t x) : IRHandle(Internal::UIntImm::make(UInt(32), x)) {} Expr 281 src/Expr.h EXPORT explicit Expr(uint64_t x) : IRHandle(Internal::UIntImm::make(UInt(64), x)) {} Expr 282 src/Expr.h EXPORT Expr(float16_t x) : IRHandle(Internal::FloatImm::make(Float(16), (double)x)) {} Expr 283 src/Expr.h EXPORT Expr(float x) : IRHandle(Internal::FloatImm::make(Float(32), x)) {} Expr 284 src/Expr.h EXPORT explicit Expr(double x) : IRHandle(Internal::FloatImm::make(Float(64), x)) {} Expr 288 src/Expr.h EXPORT Expr(const std::string &s) : IRHandle(Internal::StringImm::make(s)) {} Expr 299 src/Expr.h bool operator()(const Expr &a, const Expr &b) const { Expr 20 src/ExprUsesVar.h Scope<Expr> scope; Expr 44 src/ExprUsesVar.h ExprUsesVars(const Scope<T> &v, const Scope<Expr> *s = nullptr) : vars(v), result(false) { Expr 66 src/ExprUsesVar.h const Scope<Expr> &s = Scope<Expr>::empty_scope()) { Expr 73 src/ExprUsesVar.h inline bool expr_uses_var(Expr e, const std::string &v) { Expr 87 src/ExprUsesVar.h inline bool expr_uses_vars(Expr e, const Scope<T> &v, Expr 88 src/ExprUsesVar.h const Scope<Expr> &s = Scope<Expr>::empty_scope()) { Expr 98 src/ExprUsesVar.h const Scope<Expr> &s = Scope<Expr>::empty_scope()) { Expr 18 src/Extern.h Halide::Expr name(const Halide::Expr &a1) { \ Expr 24 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2) { \ Expr 31 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2,const Halide::Expr &a3) { \ Expr 39 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2, const Halide::Expr &a3, const Halide::Expr &a4) { \ Expr 48 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2, const Halide::Expr &a3, const Halide::Expr &a4, const Halide::Expr &a5) { \ Expr 58 src/Extern.h Halide::Expr name(const Halide::Expr &a1) { \ Expr 64 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2) { \ Expr 71 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2, const Halide::Expr &a3) { \ Expr 79 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2, const Halide::Expr &a3, const Halide::Expr &a4) { \ Expr 88 src/Extern.h Halide::Expr name(const Halide::Expr &a1, const Halide::Expr &a2, const Halide::Expr &a3, const Halide::Expr &a4, const Halide::Expr &a5) { \ Expr 116 src/FastIntegerDivide.cpp Expr fast_integer_divide(Expr numerator, Expr denominator) { Expr 131 src/FastIntegerDivide.cpp Expr result; Expr 133 src/FastIntegerDivide.cpp Expr mul, shift; Expr 175 src/FastIntegerDivide.cpp Expr mul, shift; Expr 202 src/FastIntegerDivide.cpp Expr xsign = select(numerator > 0, cast(t, 0), cast(t, -1)); Expr 231 src/FastIntegerDivide.cpp Expr fast_integer_modulo(Expr numerator, Expr denominator) { Expr 42 src/FastIntegerDivide.h EXPORT Expr fast_integer_divide(Expr numerator, Expr denominator); Expr 47 src/FastIntegerDivide.h EXPORT Expr fast_integer_modulo(Expr numerator, Expr denominator); Expr 51 src/Func.cpp Func::Func(Expr e) : func(make_entity_name(this, "Halide::Func", 'f')) { Expr 74 src/Func.cpp Expr Func::value() const { Expr 91 src/Func.cpp const std::vector<Expr> &Func::update_args(int idx) const { Expr 103 src/Func.cpp Expr Func::update_value(int idx) const { Expr 199 src/Func.cpp FuncRef Func::operator()(vector<Expr> args) const { Expr 233 src/Func.cpp std::pair<int, int> Func::add_implicit_vars(vector<Expr> &args) const { Expr 236 src/Func.cpp std::vector<Expr>::iterator iter = args.begin(); Expr 371 src/Func.cpp vector<Expr> args; Expr 388 src/Func.cpp Expr substitute_self_reference(Expr val, const string &func, const Function &substitute, Expr 396 src/Func.cpp void substitute_var_in_exprs(const string &name, Expr value, vector<Expr> &exprs) { Expr 402 src/Func.cpp void apply_split_result(const vector<pair<string, Expr>> &bounds_let_stmts, Expr 404 src/Func.cpp vector<Expr> &predicates, vector<Expr> &args, Expr 405 src/Func.cpp vector<Expr> &values) { Expr 434 src/Func.cpp vector<Expr> &predicates, vector<Expr> &args, Expr 435 src/Func.cpp vector<Expr> &values, map<string, Expr> &dim_extent_alignment) { Expr 440 src/Func.cpp Expr old_max, old_min, old_extent; Expr 456 src/Func.cpp vector<pair<string, Expr>> bounds_let_stmts = compute_loop_bounds_after_split(s, ""); Expr 467 src/Func.cpp vector<Expr> &predicates, vector<Expr> &args, Expr 468 src/Func.cpp vector<Expr> &values, map<string, Expr> &dim_extent_alignment) { Expr 475 src/Func.cpp Expr inner_min, inner_extent, outer_min, outer_extent; Expr 484 src/Func.cpp Expr extent = iter_outer->extent * iter_inner->extent; Expr 491 src/Func.cpp vector<pair<string, Expr>> bounds_let_stmts = compute_loop_bounds_after_split(s, ""); Expr 504 src/Func.cpp vector<Expr> &predicates, vector<Expr> &args, Expr 505 src/Func.cpp vector<Expr> &values, map<string, Expr> &dim_extent_alignment) { Expr 515 src/Func.cpp vector<pair<string, Expr>> bounds_let_stmts = compute_loop_bounds_after_split(s, ""); Expr 525 src/Func.cpp vector<Expr> &predicates, vector<Expr> &args, Expr 526 src/Func.cpp vector<Expr> &values, map<string, Expr> &dim_extent_alignment) { Expr 535 src/Func.cpp vector<pair<string, Expr>> bounds_let_stmts = compute_loop_bounds_after_split(s, ""); Expr 546 src/Func.cpp vector<Expr> &predicates, vector<Expr> &args, Expr 547 src/Func.cpp vector<Expr> &values) { Expr 548 src/Func.cpp map<string, Expr> dim_extent_alignment; Expr 553 src/Func.cpp vector<pair<string, Expr>> rvar_bounds; Expr 597 src/Func.cpp vector<Expr> &args = definition.args(); Expr 598 src/Func.cpp vector<Expr> &values = definition.values(); Expr 612 src/Func.cpp vector<Expr> predicates = definition.split_predicate(); Expr 747 src/Func.cpp vector<Expr> init_vals(values.size()); Expr 756 src/Func.cpp vector<Expr> update_args(args.size() + vars_rename.size()); Expr 761 src/Func.cpp map<string, Expr> substitution_map; Expr 774 src/Func.cpp Expr arg = substitute(substitution_map, args[i]); Expr 779 src/Func.cpp for (const Expr &pred : predicates) { Expr 780 src/Func.cpp Expr subs_pred = substitute(substitution_map, pred); Expr 793 src/Func.cpp vector<Expr> update_vals(values.size()); Expr 795 src/Func.cpp Expr val = substitute(substitution_map, values[i]); Expr 845 src/Func.cpp vector<Expr> f_store_args(dim_vars.size()); Expr 851 src/Func.cpp vector<Expr> f_load_args; Expr 860 src/Func.cpp vector<Expr> f_values(values.size()); Expr 864 src/Func.cpp map<string, Expr> replacement; Expr 870 src/Func.cpp Expr prev_val = Call::make(intm.output_types()[i], func_name, Expr 884 src/Func.cpp Expr prev_val = Call::make(intm.output_types()[0], func_name, Expr 887 src/Func.cpp Expr val = substitute(prover_result.ys[0].var, intm(f_load_args), prover_result.pattern.ops[0]); Expr 905 src/Func.cpp void Stage::split(const string &old, const string &outer, const string &inner, Expr factor, bool exact, TailStrategy tail) { Expr 1016 src/Func.cpp Stage &Stage::split(VarOrRVar old, VarOrRVar outer, VarOrRVar inner, Expr factor, TailStrategy tail) { Expr 1094 src/Func.cpp Split split = {fused_name, outer_name, inner_name, Expr(), true, TailStrategy::RoundUp, Split::FuseVars}; Expr 1113 src/Func.cpp Stage Stage::specialize(Expr condition) { Expr 1402 src/Func.cpp Stage &Stage::parallel(VarOrRVar var, Expr factor, TailStrategy tail) { Expr 1414 src/Func.cpp Stage &Stage::vectorize(VarOrRVar var, Expr factor, TailStrategy tail) { Expr 1427 src/Func.cpp Stage &Stage::unroll(VarOrRVar var, Expr factor, TailStrategy tail) { Expr 1444 src/Func.cpp Expr xfactor, Expr yfactor, Expr 1454 src/Func.cpp Expr xfactor, Expr yfactor, Expr 1588 src/Func.cpp Stage &Stage::gpu_tile(VarOrRVar x, VarOrRVar bx, Var tx, Expr x_size, Expr 1598 src/Func.cpp Stage &Stage::gpu_tile(VarOrRVar x, VarOrRVar bx, RVar tx, Expr x_size, Expr 1608 src/Func.cpp Stage &Stage::gpu_tile(VarOrRVar x, VarOrRVar tx, Expr x_size, Expr 1622 src/Func.cpp Expr x_size, Expr y_size, Expr 1639 src/Func.cpp Expr x_size, Expr y_size, Expr 1647 src/Func.cpp Expr x_size, Expr y_size, Expr 1656 src/Func.cpp Expr x_size, Expr y_size, Expr z_size, Expr 1688 src/Func.cpp Expr x_size, Expr y_size, Expr z_size, Expr 1694 src/Func.cpp Stage &Stage::gpu_tile(VarOrRVar x, Expr x_size, TailStrategy tail, DeviceAPI device_api) { Expr 1707 src/Func.cpp Expr x_size, Expr y_size, Expr 1718 src/Func.cpp Expr x_size, Expr y_size, Expr z_size, Expr 1735 src/Func.cpp Stage &Stage::prefetch(const Func &f, VarOrRVar var, Expr offset, PrefetchBoundStrategy strategy) { Expr 1741 src/Func.cpp Stage &Stage::prefetch(const Internal::Parameter ¶m, VarOrRVar var, Expr offset, PrefetchBoundStrategy strategy) { Expr 1855 src/Func.cpp Func &Func::split(VarOrRVar old, VarOrRVar outer, VarOrRVar inner, Expr factor, TailStrategy tail) { Expr 1884 src/Func.cpp Stage Func::specialize(Expr c) { Expr 1918 src/Func.cpp Func &Func::parallel(VarOrRVar var, Expr factor, TailStrategy tail) { Expr 1924 src/Func.cpp Func &Func::vectorize(VarOrRVar var, Expr factor, TailStrategy tail) { Expr 1930 src/Func.cpp Func &Func::unroll(VarOrRVar var, Expr factor, TailStrategy tail) { Expr 1936 src/Func.cpp Func &Func::bound(Var var, Expr min, Expr extent) { Expr 1959 src/Func.cpp Bound b = {var.name(), min, extent, Expr(), Expr()}; Expr 1964 src/Func.cpp Func &Func::bound_extent(Var var, Expr extent) { Expr 1965 src/Func.cpp return bound(var, Expr(), extent); Expr 1968 src/Func.cpp Func &Func::align_bounds(Var var, Expr modulus, Expr remainder) { Expr 1994 src/Func.cpp Bound b = {var.name(), Expr(), Expr(), modulus, remainder}; Expr 2002 src/Func.cpp Expr xfactor, Expr yfactor, Expr 2011 src/Func.cpp Expr xfactor, Expr yfactor, Expr 2084 src/Func.cpp Func &Func::gpu_tile(VarOrRVar x, VarOrRVar bx, Var tx, Expr x_size, TailStrategy tail, DeviceAPI device_api) { Expr 2090 src/Func.cpp Func &Func::gpu_tile(VarOrRVar x, VarOrRVar bx, RVar tx, Expr x_size, TailStrategy tail, DeviceAPI device_api) { Expr 2096 src/Func.cpp Func &Func::gpu_tile(VarOrRVar x, VarOrRVar tx, Expr x_size, TailStrategy tail, DeviceAPI device_api) { Expr 2105 src/Func.cpp Expr x_size, Expr y_size, Expr 2116 src/Func.cpp Expr x_size, Expr y_size, Expr 2127 src/Func.cpp Expr x_size, Expr y_size, Expr 2139 src/Func.cpp Expr x_size, Expr y_size, Expr z_size, Expr 2150 src/Func.cpp Expr x_size, Expr y_size, Expr z_size, Expr 2159 src/Func.cpp Func &Func::gpu_tile(VarOrRVar x, Expr x_size, TailStrategy tail, DeviceAPI device_api) { Expr 2166 src/Func.cpp Expr x_size, Expr y_size, Expr 2175 src/Func.cpp Expr x_size, Expr y_size, Expr z_size, Expr 2218 src/Func.cpp Func &Func::prefetch(const Func &f, VarOrRVar var, Expr offset, PrefetchBoundStrategy strategy) { Expr 2224 src/Func.cpp Func &Func::prefetch(const Internal::Parameter ¶m, VarOrRVar var, Expr offset, PrefetchBoundStrategy strategy) { Expr 2269 src/Func.cpp Func &Func::align_storage(Var dim, Expr alignment) { Expr 2284 src/Func.cpp Func &Func::fold_storage(Var dim, Expr factor, bool fold_forward) { Expr 2386 src/Func.cpp CountImplicitVars(const vector<Expr> &e) : count(0) { Expr 2403 src/Func.cpp FuncRef::FuncRef(Internal::Function f, const vector<Expr> &a, int placeholder_pos, Expr 2418 src/Func.cpp vector<Expr> FuncRef::args_with_implicit_vars(const vector<Expr> &e) const { Expr 2419 src/Func.cpp vector<Expr> a = args; Expr 2450 src/Func.cpp vector<Expr>::iterator iter = a.begin() + implicit_placeholder_pos; Expr 2478 src/Func.cpp Stage FuncRef::operator=(Expr e) { Expr 2492 src/Func.cpp vector<Expr> expanded_args = args_with_implicit_vars(e.as_vector()); Expr 2515 src/Func.cpp return (*this) = Expr(e); Expr 2523 src/Func.cpp Func define_base_case(Internal::Function func, const vector<Expr> &a, const Tuple &e) { Expr 2544 src/Func.cpp Func define_base_case(Internal::Function func, const vector<Expr> &a, Expr e) { Expr 2552 src/Func.cpp vector<Expr> init_values(e.size()); Expr 2556 src/Func.cpp vector<Expr> expanded_args = args_with_implicit_vars(e.as_vector()); Expr 2559 src/Func.cpp vector<Expr> values(e.size()); Expr 2567 src/Func.cpp Stage FuncRef::func_ref_update(Expr e, int init_val) { Expr 2568 src/Func.cpp vector<Expr> expanded_args = args_with_implicit_vars({e}); Expr 2570 src/Func.cpp return self_ref = BinaryOp()(Expr(self_ref), e); Expr 2573 src/Func.cpp Stage FuncRef::operator+=(Expr e) { Expr 2574 src/Func.cpp return func_ref_update<std::plus<Expr>>(e, 0); Expr 2581 src/Func.cpp return func_ref_update<std::plus<Expr>>(e, 0); Expr 2587 src/Func.cpp return (*this) += Expr(e); Expr 2593 src/Func.cpp Stage FuncRef::operator*=(Expr e) { Expr 2594 src/Func.cpp return func_ref_update<std::multiplies<Expr>>(e, 1); Expr 2601 src/Func.cpp return func_ref_update<std::multiplies<Expr>>(e, 1); Expr 2607 src/Func.cpp return (*this) *= Expr(e); Expr 2613 src/Func.cpp Stage FuncRef::operator-=(Expr e) { Expr 2614 src/Func.cpp return func_ref_update<std::minus<Expr>>(e, 0); Expr 2621 src/Func.cpp return func_ref_update<std::minus<Expr>>(e, 0); Expr 2627 src/Func.cpp return (*this) -= Expr(e); Expr 2633 src/Func.cpp Stage FuncRef::operator/=(Expr e) { Expr 2634 src/Func.cpp return func_ref_update<std::divides<Expr>>(e, 1); Expr 2641 src/Func.cpp return func_ref_update<std::divides<Expr>>(e, 1); Expr 2647 src/Func.cpp return (*this) /= Expr(e); Expr 2653 src/Func.cpp FuncRef::operator Expr() const { Expr 2683 src/Func.cpp const FuncRef &ref, const std::vector<Expr>& args, int idx) Expr 2690 src/Func.cpp Tuple FuncTupleElementRef::values_with_undefs(Expr e) const { Expr 2691 src/Func.cpp vector<Expr> values(func_ref.size()); Expr 2703 src/Func.cpp Stage FuncTupleElementRef::operator=(Expr e) { Expr 2707 src/Func.cpp Stage FuncTupleElementRef::operator+=(Expr e) { Expr 2711 src/Func.cpp Stage FuncTupleElementRef::operator*=(Expr e) { Expr 2715 src/Func.cpp Stage FuncTupleElementRef::operator-=(Expr e) { Expr 2719 src/Func.cpp Stage FuncTupleElementRef::operator/=(Expr e) { Expr 2727 src/Func.cpp FuncTupleElementRef::operator Expr() const { Expr 61 src/Func.h Expr factor, bool exact, TailStrategy tail); Expr 175 src/Func.h EXPORT Stage &split(VarOrRVar old, VarOrRVar outer, VarOrRVar inner, Expr factor, TailStrategy tail = TailStrategy::Auto); Expr 181 src/Func.h EXPORT Stage ¶llel(VarOrRVar var, Expr task_size, TailStrategy tail = TailStrategy::Auto); Expr 182 src/Func.h EXPORT Stage &vectorize(VarOrRVar var, Expr factor, TailStrategy tail = TailStrategy::Auto); Expr 183 src/Func.h EXPORT Stage &unroll(VarOrRVar var, Expr factor, TailStrategy tail = TailStrategy::Auto); Expr 186 src/Func.h VarOrRVar xi, VarOrRVar yi, Expr Expr 187 src/Func.h xfactor, Expr yfactor, Expr 191 src/Func.h Expr xfactor, Expr yfactor, Expr 203 src/Func.h EXPORT Stage specialize(Expr condition); Expr 227 src/Func.h EXPORT Stage &gpu_tile(VarOrRVar x, VarOrRVar bx, Var tx, Expr x_size, Expr 230 src/Func.h EXPORT Stage &gpu_tile(VarOrRVar x, VarOrRVar bx, RVar tx, Expr x_size, Expr 234 src/Func.h EXPORT Stage &gpu_tile(VarOrRVar x, VarOrRVar tx, Expr x_size, Expr 240 src/Func.h Expr x_size, Expr y_size, Expr 246 src/Func.h Expr x_size, Expr y_size, Expr 251 src/Func.h Expr x_size, Expr y_size, Expr 258 src/Func.h Expr x_size, Expr y_size, Expr z_size, Expr 263 src/Func.h Expr x_size, Expr y_size, Expr z_size, Expr 271 src/Func.h EXPORT Stage &gpu_tile(VarOrRVar x, Expr x_size, Expr 276 src/Func.h Expr x_size, Expr y_size, Expr 281 src/Func.h Expr x_size, Expr y_size, Expr z_size, Expr 288 src/Func.h EXPORT Stage &prefetch(const Func &f, VarOrRVar var, Expr offset = 1, Expr 290 src/Func.h EXPORT Stage &prefetch(const Internal::Parameter ¶m, VarOrRVar var, Expr offset = 1, Expr 293 src/Func.h Stage &prefetch(const T &image, VarOrRVar var, Expr offset = 1, Expr 315 src/Func.h std::vector<Expr> args; Expr 316 src/Func.h std::vector<Expr> args_with_implicit_vars(const std::vector<Expr> &e) const; Expr 328 src/Func.h Stage func_ref_update(Expr e, int init_val); Expr 331 src/Func.h FuncRef(Internal::Function, const std::vector<Expr> &, Expr 339 src/Func.h EXPORT Stage operator=(Expr); Expr 351 src/Func.h EXPORT Stage operator+=(Expr); Expr 362 src/Func.h EXPORT Stage operator-=(Expr); Expr 373 src/Func.h EXPORT Stage operator*=(Expr); Expr 384 src/Func.h EXPORT Stage operator/=(Expr); Expr 396 src/Func.h EXPORT operator Expr() const; Expr 418 src/Func.h std::vector<Expr> args; // args to the function Expr 423 src/Func.h Tuple values_with_undefs(Expr e) const; Expr 426 src/Func.h FuncTupleElementRef(const FuncRef &ref, const std::vector<Expr>& args, int idx); Expr 432 src/Func.h EXPORT Stage operator=(Expr e); Expr 440 src/Func.h EXPORT Stage operator+=(Expr e); Expr 448 src/Func.h EXPORT Stage operator-=(Expr e); Expr 456 src/Func.h EXPORT Stage operator*=(Expr e); Expr 464 src/Func.h EXPORT Stage operator/=(Expr e); Expr 473 src/Func.h EXPORT operator Expr() const; Expr 503 src/Func.h std::pair<int, int> add_implicit_vars(std::vector<Expr> &) const; Expr 530 src/Func.h EXPORT explicit Func(Expr e); Expr 887 src/Func.h EXPORT Expr value() const; Expr 901 src/Func.h EXPORT const std::vector<Expr> &update_args(int idx = 0) const; Expr 907 src/Func.h EXPORT Expr update_value(int idx = 0) const; Expr 991 src/Func.h EXPORT FuncRef operator()(std::vector<Expr>) const; Expr 994 src/Func.h NO_INLINE typename std::enable_if<Internal::all_are_convertible<Expr, Args...>::value, FuncRef>::type Expr 995 src/Func.h operator()(Expr x, Args&&... args) const { Expr 996 src/Func.h std::vector<Expr> collected_args{x, std::forward<Args>(args)...}; Expr 1109 src/Func.h EXPORT Func &split(VarOrRVar old, VarOrRVar outer, VarOrRVar inner, Expr factor, TailStrategy tail = TailStrategy::Auto); Expr 1128 src/Func.h EXPORT Func ¶llel(VarOrRVar var, Expr task_size, TailStrategy tail = TailStrategy::Auto); Expr 1149 src/Func.h EXPORT Func &vectorize(VarOrRVar var, Expr factor, TailStrategy tail = TailStrategy::Auto); Expr 1155 src/Func.h EXPORT Func &unroll(VarOrRVar var, Expr factor, TailStrategy tail = TailStrategy::Auto); Expr 1165 src/Func.h EXPORT Func &bound(Var var, Expr min, Expr extent); Expr 1175 src/Func.h EXPORT Func &align_bounds(Var var, Expr modulus, Expr remainder = 0); Expr 1183 src/Func.h EXPORT Func &bound_extent(Var var, Expr extent); Expr 1191 src/Func.h Expr xfactor, Expr yfactor, Expr 1198 src/Func.h Expr xfactor, Expr yfactor, Expr 1388 src/Func.h EXPORT Stage specialize(Expr condition); Expr 1478 src/Func.h EXPORT Func &gpu_tile(VarOrRVar x, VarOrRVar bx, Var tx, Expr x_size, Expr 1481 src/Func.h EXPORT Func &gpu_tile(VarOrRVar x, VarOrRVar bx, RVar tx, Expr x_size, Expr 1485 src/Func.h EXPORT Func &gpu_tile(VarOrRVar x, VarOrRVar tx, Expr x_size, Expr 1491 src/Func.h Expr x_size, Expr y_size, Expr 1497 src/Func.h Expr x_size, Expr y_size, Expr 1502 src/Func.h Expr x_size, Expr y_size, Expr 1509 src/Func.h Expr x_size, Expr y_size, Expr z_size, Expr 1514 src/Func.h Expr x_size, Expr y_size, Expr z_size, Expr 1519 src/Func.h EXPORT Func &gpu_tile(VarOrRVar x, Expr x_size, Expr 1523 src/Func.h EXPORT Func &gpu_tile(VarOrRVar x, VarOrRVar y, Expr x_size, Expr y_size, Expr 1528 src/Func.h Expr x_size, Expr y_size, Expr z_size, Expr 1578 src/Func.h EXPORT Func &prefetch(const Func &f, VarOrRVar var, Expr offset = 1, Expr 1580 src/Func.h EXPORT Func &prefetch(const Internal::Parameter ¶m, VarOrRVar var, Expr offset = 1, Expr 1583 src/Func.h Func &prefetch(const T &image, VarOrRVar var, Expr offset = 1, Expr 1625 src/Func.h EXPORT Func &align_storage(Var dim, Expr alignment); Expr 1657 src/Func.h EXPORT Func &fold_storage(Var dim, Expr extent, bool fold_forward = true); Expr 2007 src/Func.h NO_INLINE T evaluate(Expr e) { Expr 2050 src/Func.h NO_INLINE T evaluate_may_gpu(Expr e) { Expr 371 src/Function.cpp void Function::define(const vector<string> &args, vector<Expr> values) { Expr 474 src/Function.cpp void Function::define_update(const vector<Expr> &_args, vector<Expr> values) { Expr 523 src/Function.cpp vector<Expr> args(_args.size()); Expr 757 src/Function.cpp const std::vector<Expr> &Function::values() const { Expr 812 src/Function.cpp Expr Function::make_call_to_extern_definition(const std::vector<Expr> &args, Expr 31 src/Function.h Expr expr; Expr 38 src/Function.h ExternFuncArgument(Expr e): arg_type(ExprArg), expr(e) {} Expr 113 src/Function.h EXPORT void define(const std::vector<std::string> &args, std::vector<Expr> values); Expr 123 src/Function.h EXPORT void define_update(const std::vector<Expr> &args, std::vector<Expr> values); Expr 153 src/Function.h EXPORT const std::vector<Expr> &values() const; Expr 205 src/Function.h EXPORT Expr make_call_to_extern_definition(const std::vector<Expr> &args, Expr 62 src/FuseGPUThreadLoops.cpp vector<Expr>(), Call::Extern)); Expr 68 src/FuseGPUThreadLoops.cpp Expr block_extent[4]; Expr 72 src/FuseGPUThreadLoops.cpp void found_for(int dim, Expr extent) { Expr 122 src/FuseGPUThreadLoops.cpp Expr extent(int d) const { Expr 205 src/FuseGPUThreadLoops.cpp Expr var = Variable::make(Int(32), "." + thread_names[dim]); Expr 211 src/FuseGPUThreadLoops.cpp Expr cond = var < op->extent; Expr 236 src/FuseGPUThreadLoops.cpp Expr size; Expr 260 src/FuseGPUThreadLoops.cpp Expr max_size_bytes; // In bytes Expr 357 src/FuseGPUThreadLoops.cpp Expr predicate = mutate(op->predicate); Expr 358 src/FuseGPUThreadLoops.cpp Expr index = mutate(op->index); Expr 364 src/FuseGPUThreadLoops.cpp Expr base = Variable::make(Int(32), op->name + ".shared_offset"); Expr 377 src/FuseGPUThreadLoops.cpp Expr predicate = mutate(op->predicate); Expr 378 src/FuseGPUThreadLoops.cpp Expr index = mutate(op->index); Expr 379 src/FuseGPUThreadLoops.cpp Expr value = mutate(op->value); Expr 384 src/FuseGPUThreadLoops.cpp Expr base = Variable::make(Int(32), op->name + ".shared_offset"); Expr 398 src/FuseGPUThreadLoops.cpp Expr value = mutate(op->value); Expr 421 src/FuseGPUThreadLoops.cpp Expr alloc_size = simplify(alloc.size); Expr 451 src/FuseGPUThreadLoops.cpp Expr size = alloc_size * alloc.type.bytes(); Expr 452 src/FuseGPUThreadLoops.cpp Expr dist = mem_allocs[free_spaces[i]].max_size_bytes - size; Expr 553 src/FuseGPUThreadLoops.cpp Expr total_size = Variable::make(Int(32), "group_" + std::to_string(mem_allocs.size()-1) + ".shared_offset"); Expr 560 src/FuseGPUThreadLoops.cpp Expr group_offset = Variable::make(Int(32), "group_" + std::to_string(i) + ".shared_offset"); Expr 564 src/FuseGPUThreadLoops.cpp Expr offset = (group_offset / new_elem_size); Expr 568 src/FuseGPUThreadLoops.cpp Expr offset = 0; Expr 696 src/FuseGPUThreadLoops.cpp Expr adjusted = Variable::make(Int(32), op->name) + op->min; Expr 16 src/FuzzFloatStores.cpp Expr value = op->value; Expr 17 src/FuzzFloatStores.cpp Expr mask = make_one(t.with_code(Type::UInt)); Expr 100 src/Generator.cpp Expr def, min, max; Expr 163 src/Generator.cpp std::vector<Expr> args_expr; Expr 187 src/Generator.cpp void ValueTracker::track_values(const std::string &name, const std::vector<Expr> &values) { Expr 188 src/Generator.cpp std::vector<std::vector<Expr>> &history = values_history[name]; Expr 203 src/Generator.cpp Expr oldval = history[i].back(); Expr 204 src/Generator.cpp Expr newval = values[i]; Expr 232 src/Generator.cpp std::vector<Expr> parameter_constraints(const Parameter &p) { Expr 234 src/Generator.cpp std::vector<Expr> values; Expr 235 src/Generator.cpp values.push_back(Expr(p.host_alignment())); Expr 1538 src/Generator.cpp const std::vector<Expr> &GIOBase::exprs() const { Expr 1567 src/Generator.cpp for (const Expr &e : exprs()) { Expr 1669 src/Generator.cpp Expr e = Internal::Variable::make(type(), array_name(i), parameters_[i]); Expr 247 src/Generator.h std::map<std::string, std::vector<std::vector<Expr>>> values_history; Expr 251 src/Generator.h EXPORT void track_values(const std::string &name, const std::vector<Expr> &values); Expr 254 src/Generator.h EXPORT std::vector<Expr> parameter_constraints(const Parameter &p); Expr 422 src/Generator.h operator Expr() const { return make_const(type_of<T>(), this->value()); } Expr 1015 src/Generator.h const Expr expr_; Expr 1021 src/Generator.h StubInput(const Expr &e) : kind_(IOKind::Scalar), expr_(e) {} Expr 1040 src/Generator.h Expr expr() const { Expr 1105 src/Generator.h EXPORT const std::vector<Expr> &exprs() const; Expr 1127 src/Generator.h std::vector<Expr> exprs_; Expr 1165 src/Generator.h inline const std::vector<Expr> &GIOBase::get_values<Expr>() const { Expr 1315 src/Generator.h Expr operator()(Args&&... args) const { Expr 1319 src/Generator.h Expr operator()(std::vector<Expr> args) const { Expr 1386 src/Generator.h Expr operator()(Args&&... args) const { Expr 1390 src/Generator.h Expr operator()(std::vector<Expr> args) const { Expr 1401 src/Generator.h class GeneratorInput_Scalar : public GeneratorInputImpl<T, Expr> { Expr 1403 src/Generator.h using Super = GeneratorInputImpl<T, Expr>; Expr 1434 src/Generator.h operator Expr() const { Expr 1454 src/Generator.h const Expr min_, max_; Expr 1471 src/Generator.h : Super(name, def), min_(Expr()), max_(Expr()) { Expr 1477 src/Generator.h : Super(array_size, name, def), min_(Expr()), max_(Expr()) { Expr 2182 src/Generator.h using Expr = Halide::Expr; Expr 2196 src/Generator.h template <typename T> static Expr cast(Expr e) { return Halide::cast<T>(e); } Expr 2197 src/Generator.h static inline Expr cast(Halide::Type t, Expr e) { return Halide::cast(t, e); } Expr 2538 src/Generator.h std::vector<StubInput> build_input(size_t i, const Expr &arg) { Expr 2547 src/Generator.h std::vector<StubInput> build_input(size_t i, const std::vector<Expr> &arg) { Expr 2568 src/Generator.h Expr e(arg); Expr 2585 src/Generator.h Expr e(value); Expr 2884 src/Generator.h static std::vector<StubInput> to_stub_input_vector(const Expr &e) { Expr 606 src/HexagonOffload.cpp std::map<std::string, Expr> state_bufs; Expr 614 src/HexagonOffload.cpp Expr state_var(const std::string& name, Type type) { Expr 620 src/HexagonOffload.cpp Expr state_var_ptr(const std::string& name, Type type) { Expr 621 src/HexagonOffload.cpp Expr &buf = state_bufs[name]; Expr 630 src/HexagonOffload.cpp Expr module_state() { Expr 634 src/HexagonOffload.cpp Expr module_state_ptr() { Expr 640 src/HexagonOffload.cpp Expr buffer_ptr(const uint8_t* buffer, size_t size, const char* name) { Expr 643 src/HexagonOffload.cpp Expr buf = Variable::make(type_of<halide_buffer_t *>(), string(name) + ".buffer", code); Expr 705 src/HexagonOffload.cpp Expr host_ptr = reinterpret<uint64_t>(Variable::make(Handle(), i.first)); Expr 706 src/HexagonOffload.cpp Expr error = Call::make(Int(32), "halide_error_unaligned_host_ptr", Expr 712 src/HexagonOffload.cpp Expr buf = Variable::make(Handle(), i.first + ".buffer"); Expr 713 src/HexagonOffload.cpp Expr host_ptr = Call::make(Handle(), "_halide_hexagon_buffer_get_host", {buf}, Call::Extern); Expr 714 src/HexagonOffload.cpp Expr device_ptr = Call::make(Handle(), "_halide_hexagon_buffer_get_device", {buf}, Call::Extern); Expr 734 src/HexagonOffload.cpp std::vector<Expr> arg_sizes; Expr 735 src/HexagonOffload.cpp std::vector<Expr> arg_ptrs; Expr 736 src/HexagonOffload.cpp std::vector<Expr> arg_flags; Expr 743 src/HexagonOffload.cpp Expr buf = Variable::make(type_of<halide_buffer_t *>(), i.first + ".buffer"); Expr 744 src/HexagonOffload.cpp Expr device = Call::make(UInt(64), Call::buffer_get_device, {buf}, Call::Extern); Expr 745 src/HexagonOffload.cpp Expr host = Call::make(Handle(), Call::buffer_get_host, {buf}, Call::Extern); Expr 746 src/HexagonOffload.cpp Expr pseudo_buffer = Call::make(Handle(), Call::make_struct, {device, host}, Call::Intrinsic); Expr 748 src/HexagonOffload.cpp arg_sizes.push_back(Expr((uint64_t)(pseudo_buffer.type().bytes()))); Expr 759 src/HexagonOffload.cpp Expr arg = Variable::make(i.second, i.first); Expr 760 src/HexagonOffload.cpp Expr arg_ptr = Call::make(type_of<void *>(), Call::make_struct, {arg}, Call::Intrinsic); Expr 761 src/HexagonOffload.cpp arg_sizes.push_back(Expr((uint64_t) i.second.bytes())); Expr 767 src/HexagonOffload.cpp arg_sizes.push_back(Expr((uint64_t) 0)); Expr 770 src/HexagonOffload.cpp std::vector<Expr> params; Expr 813 src/HexagonOffload.cpp Expr buf_var = Variable::make(type_of<struct halide_buffer_t *>(), "hexagon_code.buffer"); Expr 814 src/HexagonOffload.cpp Expr code_size = Call::make(Int(32), Call::buffer_get_extent, { buf_var, 0 }, Call::Extern); Expr 815 src/HexagonOffload.cpp Expr code_ptr = Call::make(Handle(), Call::buffer_get_host, { buf_var }, Call::Extern); Expr 25 src/HexagonOptimize.cpp Expr native_interleave(Expr x) { Expr 36 src/HexagonOptimize.cpp Expr native_deinterleave(Expr x) { Expr 47 src/HexagonOptimize.cpp bool is_native_interleave_op(Expr x, const char *name) { Expr 53 src/HexagonOptimize.cpp bool is_native_interleave(Expr x) { Expr 57 src/HexagonOptimize.cpp bool is_native_deinterleave(Expr x) { Expr 64 src/HexagonOptimize.cpp Expr bc(Expr x) { return Broadcast::make(x, 0); } Expr 103 src/HexagonOptimize.cpp Expr with_lanes(Expr x, int lanes) { Expr 145 src/HexagonOptimize.cpp Expr pattern; // The pattern to match against Expr 149 src/HexagonOptimize.cpp Pattern(const string &intrin, Expr p, int flags = 0) Expr 153 src/HexagonOptimize.cpp Expr wild_u8 = Variable::make(UInt(8), "*"); Expr 154 src/HexagonOptimize.cpp Expr wild_u16 = Variable::make(UInt(16), "*"); Expr 155 src/HexagonOptimize.cpp Expr wild_u32 = Variable::make(UInt(32), "*"); Expr 156 src/HexagonOptimize.cpp Expr wild_u64 = Variable::make(UInt(64), "*"); Expr 157 src/HexagonOptimize.cpp Expr wild_i8 = Variable::make(Int(8), "*"); Expr 158 src/HexagonOptimize.cpp Expr wild_i16 = Variable::make(Int(16), "*"); Expr 159 src/HexagonOptimize.cpp Expr wild_i32 = Variable::make(Int(32), "*"); Expr 160 src/HexagonOptimize.cpp Expr wild_i64 = Variable::make(Int(64), "*"); Expr 162 src/HexagonOptimize.cpp Expr wild_u8x = Variable::make(Type(Type::UInt, 8, 0), "*"); Expr 163 src/HexagonOptimize.cpp Expr wild_u16x = Variable::make(Type(Type::UInt, 16, 0), "*"); Expr 164 src/HexagonOptimize.cpp Expr wild_u32x = Variable::make(Type(Type::UInt, 32, 0), "*"); Expr 165 src/HexagonOptimize.cpp Expr wild_u64x = Variable::make(Type(Type::UInt, 64, 0), "*"); Expr 166 src/HexagonOptimize.cpp Expr wild_i8x = Variable::make(Type(Type::Int, 8, 0), "*"); Expr 167 src/HexagonOptimize.cpp Expr wild_i16x = Variable::make(Type(Type::Int, 16, 0), "*"); Expr 168 src/HexagonOptimize.cpp Expr wild_i32x = Variable::make(Type(Type::Int, 32, 0), "*"); Expr 169 src/HexagonOptimize.cpp Expr wild_i64x = Variable::make(Type(Type::Int, 64, 0), "*"); Expr 175 src/HexagonOptimize.cpp Expr apply_patterns(Expr x, const vector<Pattern> &patterns, const Target &target, IRMutator *op_mutator) { Expr 177 src/HexagonOptimize.cpp vector<Expr> matches; Expr 186 src/HexagonOptimize.cpp for (Expr i : matches) { Expr 238 src/HexagonOptimize.cpp for (Expr &op : matches) { Expr 255 src/HexagonOptimize.cpp Expr lossless_negate(Expr x) { Expr 258 src/HexagonOptimize.cpp Expr a = lossless_negate(m->a); Expr 262 src/HexagonOptimize.cpp Expr b = lossless_negate(m->b); Expr 270 src/HexagonOptimize.cpp return Expr(); Expr 274 src/HexagonOptimize.cpp Expr apply_commutative_patterns(const T *op, const vector<Pattern> &patterns, const Target &target, IRMutator *mutator) { Expr 275 src/HexagonOptimize.cpp Expr ret = apply_patterns(op, patterns, target, mutator); Expr 279 src/HexagonOptimize.cpp Expr commuted = T::make(op->b, op->a); Expr 343 src/HexagonOptimize.cpp Expr new_expr = apply_commutative_patterns(op, scalar_muls, target, this); Expr 359 src/HexagonOptimize.cpp static Expr halide_hexagon_add_2mpy(Type result_type, string suffix, Expr v0, Expr v1, Expr c0, Expr c1) { Expr 360 src/HexagonOptimize.cpp Expr call = Call::make(result_type, "halide.hexagon.add_2mpy" + suffix, {v0, v1, c0, c1}, Call::PureExtern); Expr 364 src/HexagonOptimize.cpp static Expr halide_hexagon_add_2mpy(Type result_type, string suffix, Expr v01, Expr c01) { Expr 368 src/HexagonOptimize.cpp static Expr halide_hexagon_add_4mpy(Type result_type, string suffix, Expr v01, Expr c01) { Expr 372 src/HexagonOptimize.cpp typedef pair<Expr, Expr> MulExpr; Expr 376 src/HexagonOptimize.cpp static Expr unbroadcast_lossless_cast(Type ty, Expr x) { Expr 383 src/HexagonOptimize.cpp return Expr(); Expr 391 src/HexagonOptimize.cpp static int find_mpy_ops(Expr op, Type a_ty, Type b_ty, int max_mpy_count, Expr 392 src/HexagonOptimize.cpp vector<MulExpr> &mpys, Expr &rest) { Expr 400 src/HexagonOptimize.cpp Expr maybe_mul = op; Expr 410 src/HexagonOptimize.cpp Expr a = unbroadcast_lossless_cast(a_ty, mul->a); Expr 411 src/HexagonOptimize.cpp Expr b = unbroadcast_lossless_cast(b_ty, mul->b); Expr 433 src/HexagonOptimize.cpp Expr add_b = Mul::make(simplify(-mul_b->a), mul_b->b); Expr 439 src/HexagonOptimize.cpp Expr add_b = Mul::make(mul_b->a, simplify(-mul_b->b)); Expr 449 src/HexagonOptimize.cpp Expr as_a = unbroadcast_lossless_cast(a_ty, op); Expr 450 src/HexagonOptimize.cpp Expr as_b = unbroadcast_lossless_cast(b_ty, op); Expr 469 src/HexagonOptimize.cpp Expr rest; Expr 487 src/HexagonOptimize.cpp Expr a0123 = Shuffle::make_interleave({mpys[0].first, mpys[1].first, mpys[2].first, mpys[3].first}); Expr 493 src/HexagonOptimize.cpp Expr b0123 = Shuffle::make_interleave({mpys[0].second, mpys[1].second, mpys[2].second, mpys[3].second}); Expr 496 src/HexagonOptimize.cpp Expr new_expr = halide_hexagon_add_4mpy(op->type, suffix, a0123, b0123); Expr 515 src/HexagonOptimize.cpp rest = Expr(); Expr 528 src/HexagonOptimize.cpp Expr a0123 = Shuffle::make_interleave({mpys[0].first, mpys[1].first, mpys[2].first, mpys[3].first}); Expr 529 src/HexagonOptimize.cpp Expr b0123 = Shuffle::make_interleave({mpys[0].second, mpys[1].second, mpys[2].second, mpys[3].second}); Expr 535 src/HexagonOptimize.cpp Expr new_expr = halide_hexagon_add_4mpy(op->type, suffix, a0123, b0123); Expr 558 src/HexagonOptimize.cpp Expr rest; Expr 574 src/HexagonOptimize.cpp Expr a01 = Shuffle::make_interleave({mpys[0].first, mpys[1].first}); Expr 580 src/HexagonOptimize.cpp Expr new_expr; Expr 582 src/HexagonOptimize.cpp Expr b01 = Shuffle::make_interleave({mpys[0].second, mpys[1].second}); Expr 664 src/HexagonOptimize.cpp Expr new_expr = apply_commutative_patterns(op, adds, target, this); Expr 676 src/HexagonOptimize.cpp Expr neg_b = lossless_negate(op->b); Expr 689 src/HexagonOptimize.cpp Expr new_expr = apply_patterns(op, subs, target, this); Expr 706 src/HexagonOptimize.cpp static const pair<string, Expr> cl[] = { Expr 710 src/HexagonOptimize.cpp vector<Expr> matches; Expr 758 src/HexagonOptimize.cpp { "halide.hexagon.trunc_mpy.vw.vw", i32((wild_i64x*wild_i64x)/Expr(static_cast<int64_t>(1) << 32)), Pattern::NarrowOps }, Expr 768 src/HexagonOptimize.cpp { "halide.hexagon.trunc_satdw_mpy2.vw.vw", i32_sat((wild_i64x*wild_i64x)/Expr(static_cast<int64_t>(1) << 31)), Pattern::NarrowOps }, Expr 769 src/HexagonOptimize.cpp { "halide.hexagon.trunc_satdw_mpy2_rnd.vw.vw", i32_sat((wild_i64x*wild_i64x + (1 << 30))/Expr(static_cast<int64_t>(1) << 31)), Pattern::NarrowOps }, Expr 834 src/HexagonOptimize.cpp static const vector<pair<Expr, Expr>> cast_rewrites = { Expr 855 src/HexagonOptimize.cpp Expr cast = op; Expr 857 src/HexagonOptimize.cpp Expr new_expr = apply_patterns(cast, casts, target, this); Expr 865 src/HexagonOptimize.cpp vector<Expr> matches; Expr 869 src/HexagonOptimize.cpp Expr replacement = with_lanes(i.second, op->type.lanes()); Expr 895 src/HexagonOptimize.cpp Expr e = op->args[0]; Expr 931 src/HexagonOptimize.cpp bool yields_removable_interleave(Expr x) { Expr 950 src/HexagonOptimize.cpp bool yields_interleave(Expr x) { Expr 979 src/HexagonOptimize.cpp bool yields_removable_interleave(const vector<Expr> &exprs) { Expr 981 src/HexagonOptimize.cpp for (const Expr &i : exprs) { Expr 993 src/HexagonOptimize.cpp Expr remove_interleave(Expr x) { Expr 1009 src/HexagonOptimize.cpp Expr body = remove_interleave(let->body); Expr 1023 src/HexagonOptimize.cpp Expr a = mutate(op->a); Expr 1024 src/HexagonOptimize.cpp Expr b = mutate(op->b); Expr 1072 src/HexagonOptimize.cpp Expr true_value = mutate(op->true_value); Expr 1073 src/HexagonOptimize.cpp Expr false_value = mutate(op->false_value); Expr 1077 src/HexagonOptimize.cpp Expr cond = mutate(op->condition); Expr 1098 src/HexagonOptimize.cpp static bool uses_var(Expr e, const string &var) { Expr 1104 src/HexagonOptimize.cpp Expr value = mutate(op->value); Expr 1144 src/HexagonOptimize.cpp Expr deinterleaved = remove_interleave(value); Expr 1149 src/HexagonOptimize.cpp Expr interleaved = Variable::make(deinterleaved.type(), deinterleaved_name); Expr 1184 src/HexagonOptimize.cpp Expr value = mutate(op->value); Expr 1232 src/HexagonOptimize.cpp for (Expr i : op->args) { Expr 1246 src/HexagonOptimize.cpp Expr arg = mutate(op->args[0]); Expr 1266 src/HexagonOptimize.cpp vector<Expr> args(op->args); Expr 1270 src/HexagonOptimize.cpp for (Expr &i : args) { Expr 1271 src/HexagonOptimize.cpp Expr new_i = mutate(i); Expr 1310 src/HexagonOptimize.cpp for (Expr &i : args) { Expr 1322 src/HexagonOptimize.cpp for (Expr &i : args) { Expr 1331 src/HexagonOptimize.cpp Expr arg = args[0].as<Call>()->args[0]; Expr 1354 src/HexagonOptimize.cpp Expr condition = mutate(op->condition); Expr 1380 src/HexagonOptimize.cpp Expr predicate = mutate(op->predicate); Expr 1381 src/HexagonOptimize.cpp Expr value = mutate(op->value); Expr 1382 src/HexagonOptimize.cpp Expr index = mutate(op->index); Expr 1474 src/HexagonOptimize.cpp std::vector<Expr> args = arg->args; Expr 1475 src/HexagonOptimize.cpp for (Expr &j : args) { Expr 1492 src/HexagonOptimize.cpp Expr span_of_bounds(Interval bounds) { Expr 1522 src/HexagonOptimize.cpp std::vector<std::pair<string, Expr>> lets; Expr 1557 src/HexagonOptimize.cpp Expr index = mutate(op->index); Expr 1570 src/HexagonOptimize.cpp Expr index_span = span_of_bounds(index_bounds); Expr 1578 src/HexagonOptimize.cpp Expr base = simplify(index_bounds.min); Expr 1584 src/HexagonOptimize.cpp Expr lut = Load::make(op->type.with_lanes(const_extent), op->name, Expr 27 src/HexagonOptimize.h EXPORT Expr native_deinterleave(Expr x); Expr 28 src/HexagonOptimize.h EXPORT Expr native_interleave(Expr x); Expr 29 src/HexagonOptimize.h EXPORT bool is_native_deinterleave(Expr x); Expr 30 src/HexagonOptimize.h EXPORT bool is_native_interleave(Expr x); Expr 8 src/IR.cpp Expr Cast::make(Type t, const Expr &v) { Expr 18 src/IR.cpp Expr Add::make(const Expr &a, const Expr &b) { Expr 30 src/IR.cpp Expr Sub::make(const Expr &a, const Expr &b) { Expr 42 src/IR.cpp Expr Mul::make(const Expr &a, const Expr &b) { Expr 54 src/IR.cpp Expr Div::make(const Expr &a, const Expr &b) { Expr 66 src/IR.cpp Expr Mod::make(const Expr &a, const Expr &b) { Expr 78 src/IR.cpp Expr Min::make(const Expr &a, const Expr &b) { Expr 90 src/IR.cpp Expr Max::make(const Expr &a, const Expr &b) { Expr 102 src/IR.cpp Expr EQ::make(const Expr &a, const Expr &b) { Expr 114 src/IR.cpp Expr NE::make(const Expr &a, const Expr &b) { Expr 126 src/IR.cpp Expr LT::make(const Expr &a, const Expr &b) { Expr 139 src/IR.cpp Expr LE::make(const Expr &a, const Expr &b) { Expr 151 src/IR.cpp Expr GT::make(const Expr &a, const Expr &b) { Expr 164 src/IR.cpp Expr GE::make(const Expr &a, const Expr &b) { Expr 176 src/IR.cpp Expr And::make(const Expr &a, const Expr &b) { Expr 190 src/IR.cpp Expr Or::make(const Expr &a, const Expr &b) { Expr 204 src/IR.cpp Expr Not::make(const Expr &a) { Expr 214 src/IR.cpp Expr Select::make(const Expr &condition, const Expr &true_value, const Expr &false_value) { Expr 232 src/IR.cpp Expr Load::make(Type type, const std::string &name, const Expr &index, Buffer<> image, Parameter param, const Expr &predicate) { Expr 249 src/IR.cpp Expr Ramp::make(const Expr &base, const Expr &stride, int lanes) { Expr 265 src/IR.cpp Expr Broadcast::make(const Expr &value, int lanes) { Expr 277 src/IR.cpp Expr Let::make(const std::string &name, const Expr &value, const Expr &body) { Expr 289 src/IR.cpp Stmt LetStmt::make(const std::string &name, const Expr &value, const Stmt &body) { Expr 300 src/IR.cpp Stmt AssertStmt::make(const Expr &condition, const Expr &message) { Expr 328 src/IR.cpp Stmt For::make(const std::string &name, const Expr &min, const Expr &extent, ForType for_type, DeviceAPI device_api, const Stmt &body) { Expr 345 src/IR.cpp Stmt Store::make(const std::string &name, const Expr &value, const Expr &index, Parameter param, const Expr &predicate) { Expr 362 src/IR.cpp Stmt Provide::make(const std::string &name, const std::vector<Expr> &values, const std::vector<Expr> &args) { Expr 378 src/IR.cpp Stmt Allocate::make(const std::string &name, Type type, const std::vector<Expr> &extents, Expr 379 src/IR.cpp const Expr &condition, const Stmt &body, Expr 380 src/IR.cpp const Expr &new_expr, const std::string &free_function) { Expr 400 src/IR.cpp int32_t Allocate::constant_allocation_size(const std::vector<Expr> &extents, const std::string &name) { Expr 441 src/IR.cpp Stmt Realize::make(const std::string &name, const std::vector<Type> &types, const Region &bounds, const Expr &condition, const Stmt &body) { Expr 508 src/IR.cpp Stmt IfThenElse::make(const Expr &condition, const Stmt &then_case, const Stmt &else_case) { Expr 519 src/IR.cpp Stmt Evaluate::make(const Expr &v) { Expr 527 src/IR.cpp Expr Call::make(Function func, const std::vector<Expr> &args, int idx) { Expr 537 src/IR.cpp Expr Call::make(Type type, const std::string &name, const std::vector<Expr> &args, CallType call_type, Expr 573 src/IR.cpp Expr Variable::make(Type type, const std::string &name, Buffer<> image, Parameter param, ReductionDomain reduction_domain) { Expr 584 src/IR.cpp Expr Shuffle::make(const std::vector<Expr> &vectors, Expr 590 src/IR.cpp for (Expr i : vectors) { Expr 605 src/IR.cpp Expr Shuffle::make_interleave(const std::vector<Expr> &vectors) { Expr 614 src/IR.cpp for (Expr i : vectors) { Expr 629 src/IR.cpp Expr Shuffle::make_concat(const std::vector<Expr> &vectors) { Expr 647 src/IR.cpp Expr Shuffle::make_slice(const Expr &vector, int begin, int stride, int size) { Expr 660 src/IR.cpp Expr Shuffle::make_extract_element(const Expr &vector, int i) { Expr 672 src/IR.cpp for (Expr i : vectors) { Expr 711 src/IR.cpp for (Expr i : vectors ) { Expr 722 src/IR.cpp for (Expr i : vectors ) { Expr 29 src/IR.h Expr value; Expr 31 src/IR.h EXPORT static Expr make(Type t, const Expr &v); Expr 38 src/IR.h Expr a, b; Expr 40 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 47 src/IR.h Expr a, b; Expr 49 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 56 src/IR.h Expr a, b; Expr 58 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 65 src/IR.h Expr a, b; Expr 67 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 76 src/IR.h Expr a, b; Expr 78 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 85 src/IR.h Expr a, b; Expr 87 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 94 src/IR.h Expr a, b; Expr 96 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 103 src/IR.h Expr a, b; Expr 105 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 112 src/IR.h Expr a, b; Expr 114 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 121 src/IR.h Expr a, b; Expr 123 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 130 src/IR.h Expr a, b; Expr 132 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 139 src/IR.h Expr a, b; Expr 141 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 148 src/IR.h Expr a, b; Expr 150 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 157 src/IR.h Expr a, b; Expr 159 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 166 src/IR.h Expr a, b; Expr 168 src/IR.h EXPORT static Expr make(const Expr &a, const Expr &b); Expr 175 src/IR.h Expr a; Expr 177 src/IR.h EXPORT static Expr make(const Expr &a); Expr 186 src/IR.h Expr condition, true_value, false_value; Expr 188 src/IR.h EXPORT static Expr make(const Expr &condition, const Expr &true_value, const Expr &false_value); Expr 201 src/IR.h Expr predicate, index; Expr 210 src/IR.h EXPORT static Expr make(Type type, const std::string &name, Expr 211 src/IR.h const Expr &index, Buffer<> image, Expr 212 src/IR.h Parameter param, const Expr &predicate); Expr 223 src/IR.h Expr base, stride; Expr 226 src/IR.h EXPORT static Expr make(const Expr &base, const Expr &stride, int lanes); Expr 235 src/IR.h Expr value; Expr 238 src/IR.h EXPORT static Expr make(const Expr &value, int lanes); Expr 248 src/IR.h Expr value, body; Expr 250 src/IR.h EXPORT static Expr make(const std::string &name, const Expr &value, const Expr &body); Expr 259 src/IR.h Expr value; Expr 262 src/IR.h EXPORT static Stmt make(const std::string &name, const Expr &value, const Stmt &body); Expr 271 src/IR.h Expr condition; Expr 272 src/IR.h Expr message; Expr 274 src/IR.h EXPORT static Stmt make(const Expr &condition, const Expr &message); Expr 310 src/IR.h Expr predicate, value, index; Expr 314 src/IR.h EXPORT static Stmt make(const std::string &name, const Expr &value, const Expr &index, Expr 315 src/IR.h Parameter param, const Expr &predicate); Expr 327 src/IR.h std::vector<Expr> values; Expr 328 src/IR.h std::vector<Expr> args; Expr 330 src/IR.h EXPORT static Stmt make(const std::string &name, const std::vector<Expr> &values, const std::vector<Expr> &args); Expr 345 src/IR.h std::vector<Expr> extents; Expr 346 src/IR.h Expr condition; Expr 355 src/IR.h Expr new_expr; Expr 359 src/IR.h EXPORT static Stmt make(const std::string &name, Type type, const std::vector<Expr> &extents, Expr 360 src/IR.h const Expr &condition, const Stmt &body, Expr 361 src/IR.h const Expr &new_expr = Expr(), const std::string &free_function = std::string()); Expr 368 src/IR.h EXPORT static int32_t constant_allocation_size(const std::vector<Expr> &extents, const std::string &name); Expr 386 src/IR.h Expr min, extent; Expr 388 src/IR.h Range(const Expr &min, const Expr &extent) : min(min), extent(extent) { Expr 406 src/IR.h Expr condition; Expr 409 src/IR.h EXPORT static Stmt make(const std::string &name, const std::vector<Type> &types, const Region &bounds, const Expr &condition, const Stmt &body); Expr 430 src/IR.h Expr condition; Expr 433 src/IR.h EXPORT static Stmt make(const Expr &condition, const Stmt &then_case, const Stmt &else_case = Stmt()); Expr 440 src/IR.h Expr value; Expr 442 src/IR.h EXPORT static Stmt make(const Expr &v); Expr 455 src/IR.h std::vector<Expr> args; Expr 559 src/IR.h EXPORT static Expr make(Type type, const std::string &name, const std::vector<Expr> &args, CallType call_type, Expr 564 src/IR.h EXPORT static Expr make(Function func, const std::vector<Expr> &args, int idx = 0); Expr 567 src/IR.h static Expr make(Buffer<> image, const std::vector<Expr> &args) { Expr 572 src/IR.h static Expr make(Parameter param, const std::vector<Expr> &args) { Expr 614 src/IR.h static Expr make(Type type, const std::string &name) { Expr 618 src/IR.h static Expr make(Type type, const std::string &name, Parameter param) { Expr 622 src/IR.h static Expr make(Type type, const std::string &name, Buffer<> image) { Expr 626 src/IR.h static Expr make(Type type, const std::string &name, ReductionDomain reduction_domain) { Expr 630 src/IR.h EXPORT static Expr make(Type type, const std::string &name, Buffer<> image, Expr 650 src/IR.h Expr min, extent; Expr 655 src/IR.h EXPORT static Stmt make(const std::string &name, const Expr &min, const Expr &extent, ForType for_type, DeviceAPI device_api, const Stmt &body); Expr 669 src/IR.h std::vector<Expr> vectors; Expr 676 src/IR.h EXPORT static Expr make(const std::vector<Expr> &vectors, Expr 681 src/IR.h EXPORT static Expr make_interleave(const std::vector<Expr> &vectors); Expr 685 src/IR.h EXPORT static Expr make_concat(const std::vector<Expr> &vectors); Expr 689 src/IR.h EXPORT static Expr make_slice(const Expr &vector, int begin, int stride, int size); Expr 693 src/IR.h EXPORT static Expr make_extract_element(const Expr &vector, int i); Expr 28 src/IREquality.cpp CmpResult compare_expr(const Expr &a, const Expr &b); Expr 39 src/IREquality.cpp Expr expr; Expr 45 src/IREquality.cpp CmpResult compare_expr_vector(const std::vector<Expr> &a, const std::vector<Expr> &b); Expr 108 src/IREquality.cpp IRComparer::CmpResult IRComparer::compare_expr(const Expr &a, const Expr &b) { Expr 223 src/IREquality.cpp IRComparer::CmpResult IRComparer::compare_expr_vector(const vector<Expr> &a, const vector<Expr> &b) { Expr 265 src/IREquality.cpp void visit_binary_operator(IRComparer *cmp, const T *op, Expr expr) { Expr 469 src/IREquality.cpp bool equal(const Expr &a, const Expr &b) { Expr 473 src/IREquality.cpp bool graph_equal(const Expr &a, const Expr &b) { Expr 487 src/IREquality.cpp bool IRDeepCompare::operator()(const Expr &a, const Expr &b) const { Expr 518 src/IREquality.cpp void check_equal(const Expr &a, const Expr &b) { Expr 528 src/IREquality.cpp void check_not_equal(const Expr &a, const Expr &b) { Expr 544 src/IREquality.cpp Expr x = Variable::make(Int(32), "x"); Expr 553 src/IREquality.cpp Expr e1 = x, e2 = x; Expr 16 src/IREquality.h EXPORT bool operator()(const Expr &a, const Expr &b) const; Expr 25 src/IREquality.h Expr a, b; Expr 30 src/IREquality.h uint32_t hash(const Expr &a, const Expr &b) const { Expr 46 src/IREquality.h void insert(const Expr &a, const Expr &b) { Expr 52 src/IREquality.h bool contains(const Expr &a, const Expr &b) const { Expr 61 src/IREquality.h entries[i].a = Expr(); Expr 62 src/IREquality.h entries[i].b = Expr(); Expr 94 src/IREquality.h Expr expr; Expr 98 src/IREquality.h ExprWithCompareCache(const Expr &e, IRCompareCache *c) : expr(e), cache(c) {} Expr 109 src/IREquality.h EXPORT bool equal(const Expr &a, const Expr &b); Expr 111 src/IREquality.h EXPORT bool graph_equal(const Expr &a, const Expr &b); Expr 17 src/IRMatch.cpp vector<Expr> matches; Expr 18 src/IRMatch.cpp Expr w = Variable::make(Int(32), "*"); Expr 19 src/IRMatch.cpp Expr fw = Variable::make(Float(32), "*"); Expr 20 src/IRMatch.cpp Expr x = Variable::make(Int(32), "x"); Expr 21 src/IRMatch.cpp Expr y = Variable::make(Int(32), "y"); Expr 22 src/IRMatch.cpp Expr fx = Variable::make(Float(32), "fx"); Expr 23 src/IRMatch.cpp Expr fy = Variable::make(Float(32), "fy"); Expr 25 src/IRMatch.cpp Expr vec_wild = Variable::make(Int(32, 4), "*"); Expr 55 src/IRMatch.cpp vector<Expr> *matches; Expr 56 src/IRMatch.cpp map<string, Expr> *var_matches; Expr 57 src/IRMatch.cpp Expr expr; Expr 59 src/IRMatch.cpp IRMatch(Expr e, vector<Expr> &m) : result(true), matches(&m), var_matches(nullptr), expr(e) { Expr 61 src/IRMatch.cpp IRMatch(Expr e, map<string, Expr> &m) : result(true), matches(nullptr), var_matches(&m), expr(e) { Expr 128 src/IRMatch.cpp Expr &match = (*var_matches)[op->name]; Expr 254 src/IRMatch.cpp bool expr_match(Expr pattern, Expr expr, vector<Expr> &matches) { Expr 269 src/IRMatch.cpp bool expr_match(Expr pattern, Expr expr, map<string, Expr> &matches) { Expr 30 src/IRMatch.h EXPORT bool expr_match(Expr pattern, Expr expr, std::vector<Expr> &result); Expr 44 src/IRMatch.h EXPORT bool expr_match(Expr pattern, Expr expr, std::map<std::string, Expr> &result); Expr 9 src/IRMutator.cpp Expr IRMutator::mutate(Expr e) { Expr 13 src/IRMutator.cpp expr = Expr(); Expr 25 src/IRMutator.cpp expr = Expr(); Expr 31 src/IRMutator.cpp void mutate_binary_operator(IRMutator *mutator, const T *op, Expr *expr, Stmt *stmt) { Expr 32 src/IRMutator.cpp Expr a = mutator->mutate(op->a); Expr 33 src/IRMutator.cpp Expr b = mutator->mutate(op->b); Expr 48 src/IRMutator.cpp Expr old_min = bounds[i].min; Expr 49 src/IRMutator.cpp Expr old_extent = bounds[i].extent; Expr 50 src/IRMutator.cpp Expr new_min = mutator->mutate(old_min); Expr 51 src/IRMutator.cpp Expr new_extent = mutator->mutate(old_extent); Expr 72 src/IRMutator.cpp Expr value = mutate(op->value); Expr 97 src/IRMutator.cpp Expr a = mutate(op->a); Expr 103 src/IRMutator.cpp Expr cond = mutate(op->condition); Expr 104 src/IRMutator.cpp Expr t = mutate(op->true_value); Expr 105 src/IRMutator.cpp Expr f = mutate(op->false_value); Expr 116 src/IRMutator.cpp Expr predicate = mutate(op->predicate); Expr 117 src/IRMutator.cpp Expr index = mutate(op->index); Expr 126 src/IRMutator.cpp Expr base = mutate(op->base); Expr 127 src/IRMutator.cpp Expr stride = mutate(op->stride); Expr 137 src/IRMutator.cpp Expr value = mutate(op->value); Expr 143 src/IRMutator.cpp vector<Expr > new_args(op->args.size()); Expr 148 src/IRMutator.cpp Expr old_arg = op->args[i]; Expr 149 src/IRMutator.cpp Expr new_arg = mutate(old_arg); Expr 163 src/IRMutator.cpp Expr value = mutate(op->value); Expr 164 src/IRMutator.cpp Expr body = mutate(op->body); Expr 174 src/IRMutator.cpp Expr value = mutate(op->value); Expr 185 src/IRMutator.cpp Expr condition = mutate(op->condition); Expr 186 src/IRMutator.cpp Expr message = mutate(op->message); Expr 205 src/IRMutator.cpp Expr min = mutate(op->min); Expr 206 src/IRMutator.cpp Expr extent = mutate(op->extent); Expr 218 src/IRMutator.cpp Expr predicate = mutate(op->predicate); Expr 219 src/IRMutator.cpp Expr value = mutate(op->value); Expr 220 src/IRMutator.cpp Expr index = mutate(op->index); Expr 229 src/IRMutator.cpp vector<Expr> new_args(op->args.size()); Expr 230 src/IRMutator.cpp vector<Expr> new_values(op->values.size()); Expr 235 src/IRMutator.cpp Expr old_arg = op->args[i]; Expr 236 src/IRMutator.cpp Expr new_arg = mutate(old_arg); Expr 242 src/IRMutator.cpp Expr old_value = op->values[i]; Expr 243 src/IRMutator.cpp Expr new_value = mutate(old_value); Expr 256 src/IRMutator.cpp std::vector<Expr> new_extents; Expr 263 src/IRMutator.cpp Expr condition = mutate(op->condition); Expr 264 src/IRMutator.cpp Expr new_expr; Expr 290 src/IRMutator.cpp Expr condition = mutate(op->condition); Expr 327 src/IRMutator.cpp Expr condition = mutate(op->condition); Expr 340 src/IRMutator.cpp Expr v = mutate(op->value); Expr 349 src/IRMutator.cpp vector<Expr > new_vectors(op->vectors.size()); Expr 353 src/IRMutator.cpp Expr old_vector = op->vectors[i]; Expr 354 src/IRMutator.cpp Expr new_vector = mutate(old_vector); Expr 377 src/IRMutator.cpp Expr IRGraphMutator::mutate(Expr e) { Expr 382 src/IRMutator.cpp Expr new_e = IRMutator::mutate(e); Expr 31 src/IRMutator.h EXPORT virtual Expr mutate(Expr expr); Expr 38 src/IRMutator.h Expr expr; Expr 94 src/IRMutator.h std::map<Expr, Expr, ExprCompare> expr_replacements; Expr 99 src/IRMutator.h EXPORT Expr mutate(Expr e); Expr 19 src/IROperator.cpp Expr evaluate_polynomial(const Expr &x, float *coeff, int n) { Expr 22 src/IROperator.cpp Expr x2 = x * x; Expr 24 src/IROperator.cpp Expr even_terms = coeff[0]; Expr 25 src/IROperator.cpp Expr odd_terms = coeff[1]; Expr 53 src/IROperator.cpp bool is_const(const Expr &e) { Expr 70 src/IROperator.cpp bool is_const(const Expr &e, int64_t value) { Expr 92 src/IROperator.cpp const int64_t *as_const_int(const Expr &e) { Expr 104 src/IROperator.cpp const uint64_t *as_const_uint(const Expr &e) { Expr 116 src/IROperator.cpp const double *as_const_float(const Expr &e) { Expr 128 src/IROperator.cpp bool is_const_power_of_two_integer(const Expr &e, int *bits) { Expr 157 src/IROperator.cpp bool is_positive_const(const Expr &e) { Expr 174 src/IROperator.cpp bool is_negative_const(const Expr &e) { Expr 190 src/IROperator.cpp bool is_negative_negatable_const(const Expr &e, Type T) { Expr 208 src/IROperator.cpp bool is_negative_negatable_const(const Expr &e) { Expr 212 src/IROperator.cpp bool is_undef(const Expr &e) { Expr 217 src/IROperator.cpp bool is_zero(const Expr &e) { Expr 230 src/IROperator.cpp bool is_one(const Expr &e) { Expr 243 src/IROperator.cpp bool is_two(const Expr &e) { Expr 255 src/IROperator.cpp Expr make_const_helper(Type t, T val) { Expr 266 src/IROperator.cpp return Expr(); Expr 271 src/IROperator.cpp Expr make_const(Type t, int64_t val) { Expr 275 src/IROperator.cpp Expr make_const(Type t, uint64_t val) { Expr 279 src/IROperator.cpp Expr make_const(Type t, double val) { Expr 284 src/IROperator.cpp Expr make_bool(bool val, int w) { Expr 288 src/IROperator.cpp Expr make_zero(Type t) { Expr 296 src/IROperator.cpp Expr make_one(Type t) { Expr 300 src/IROperator.cpp Expr make_two(Type t) { Expr 304 src/IROperator.cpp Expr const_true(int w) { Expr 308 src/IROperator.cpp Expr const_false(int w) { Expr 312 src/IROperator.cpp Expr lossless_cast(Type t, const Expr &e) { Expr 324 src/IROperator.cpp return Expr(); Expr 329 src/IROperator.cpp Expr v = lossless_cast(t.element_of(), b->value); Expr 333 src/IROperator.cpp return Expr(); Expr 341 src/IROperator.cpp return Expr(); Expr 349 src/IROperator.cpp return Expr(); Expr 357 src/IROperator.cpp return Expr(); Expr 361 src/IROperator.cpp return Expr(); Expr 379 src/IROperator.cpp void match_types(Expr &a, Expr &b) { Expr 428 src/IROperator.cpp void range_reduce_log(const Expr &input, Expr *reduced, Expr *exponent) { Expr 431 src/IROperator.cpp Expr int_version = reinterpret(int_type, input); Expr 438 src/IROperator.cpp Expr non_exponent_mask = make_const(int_type, 0x807fffff); Expr 441 src/IROperator.cpp Expr no_exponent = int_version & non_exponent_mask; Expr 446 src/IROperator.cpp Expr new_exponent = no_exponent >> 22; Expr 448 src/IROperator.cpp Expr new_biased_exponent = 127 - new_exponent; Expr 449 src/IROperator.cpp Expr old_biased_exponent = int_version >> 23; Expr 452 src/IROperator.cpp Expr blended = (int_version & non_exponent_mask) | (new_biased_exponent << 23); Expr 457 src/IROperator.cpp Expr halide_log(const Expr &x_full) { Expr 461 src/IROperator.cpp Expr nan = Call::make(type, "nan_f32", {}, Call::PureExtern); Expr 462 src/IROperator.cpp Expr neg_inf = Call::make(type, "neg_inf_f32", {}, Call::PureExtern); Expr 464 src/IROperator.cpp Expr use_nan = x_full < 0.0f; // log of a negative returns nan Expr 465 src/IROperator.cpp Expr use_neg_inf = x_full == 0.0f; // log of zero is -inf Expr 466 src/IROperator.cpp Expr exceptional = use_nan | use_neg_inf; Expr 470 src/IROperator.cpp Expr patched = select(exceptional, make_one(type), x_full); Expr 471 src/IROperator.cpp Expr reduced, exponent; Expr 488 src/IROperator.cpp Expr x1 = reduced - 1.0f; Expr 489 src/IROperator.cpp Expr result = evaluate_polynomial(x1, coeff, sizeof(coeff)/sizeof(coeff[0])); Expr 501 src/IROperator.cpp Expr halide_exp(const Expr &x_full) { Expr 509 src/IROperator.cpp Expr scaled = x_full * one_over_ln2; Expr 510 src/IROperator.cpp Expr k_real = floor(scaled); Expr 511 src/IROperator.cpp Expr k = cast(Int(32, type.lanes()), k_real); Expr 513 src/IROperator.cpp Expr x = x_full - k_real * ln2_part1; Expr 525 src/IROperator.cpp Expr result = evaluate_polynomial(x, coeff, sizeof(coeff)/sizeof(coeff[0])); Expr 529 src/IROperator.cpp Expr biased = k + fpbias; Expr 531 src/IROperator.cpp Expr inf = Call::make(type, "inf_f32", {}, Call::PureExtern); Expr 535 src/IROperator.cpp Expr two_to_the_n = reinterpret(type, biased << 23); Expr 548 src/IROperator.cpp Expr halide_erf(const Expr &x_full) { Expr 552 src/IROperator.cpp Expr sign = select(x_full < 0, -1.0f, 1.0f); Expr 553 src/IROperator.cpp Expr x = abs(x_full); Expr 564 src/IROperator.cpp Expr approx1 = evaluate_polynomial(x, c1, sizeof(c1)/sizeof(c1[0])); Expr 577 src/IROperator.cpp Expr approx2 = evaluate_polynomial(x*x, c2, sizeof(c2)/sizeof(c2[0])); Expr 581 src/IROperator.cpp Expr y = select(x > 1.0f, approx1, approx2); Expr 583 src/IROperator.cpp Expr result = common_subexpression_elimination(sign * y); Expr 588 src/IROperator.cpp Expr raise_to_integer_power(const Expr &e, int64_t p) { Expr 589 src/IROperator.cpp Expr result; Expr 598 src/IROperator.cpp Expr y = raise_to_integer_power(e, p>>1); Expr 605 src/IROperator.cpp void split_into_ands(const Expr &cond, std::vector<Expr> &result) { Expr 618 src/IROperator.cpp Expr BufferBuilder::build() const { Expr 619 src/IROperator.cpp std::vector<Expr> args(10); Expr 623 src/IROperator.cpp Expr sz = Call::make(Int(32), Call::size_of_halide_buffer_t, {}, Call::Intrinsic); Expr 628 src/IROperator.cpp Expr shape_var = Variable::make(type_of<halide_dimension_t *>(), shape_var_name); Expr 659 src/IROperator.cpp std::vector<Expr> shape; Expr 679 src/IROperator.cpp for (const Expr &e : shape) { Expr 683 src/IROperator.cpp Expr shape_arg = Call::make(type_of<halide_dimension_t *>(), Call::make_struct, shape, Call::Intrinsic); Expr 692 src/IROperator.cpp Expr flags = make_zero(UInt(64)); Expr 705 src/IROperator.cpp Expr e = Call::make(type_of<struct halide_buffer_t *>(), Call::buffer_init, args, Call::Extern); Expr 716 src/IROperator.cpp Expr fast_log(const Expr &x) { Expr 719 src/IROperator.cpp Expr reduced, exponent; Expr 722 src/IROperator.cpp Expr x1 = reduced - 1.0f; Expr 734 src/IROperator.cpp Expr result = evaluate_polynomial(x1, coeff, sizeof(coeff)/sizeof(coeff[0])); Expr 740 src/IROperator.cpp Expr fast_exp(const Expr &x_full) { Expr 743 src/IROperator.cpp Expr scaled = x_full / logf(2.0); Expr 744 src/IROperator.cpp Expr k_real = floor(scaled); Expr 745 src/IROperator.cpp Expr k = cast<int>(k_real); Expr 746 src/IROperator.cpp Expr x = x_full - k_real * logf(2.0); Expr 755 src/IROperator.cpp Expr result = evaluate_polynomial(x, coeff, sizeof(coeff)/sizeof(coeff[0])); Expr 759 src/IROperator.cpp Expr biased = clamp(k + fpbias, 0, 255); Expr 763 src/IROperator.cpp Expr two_to_the_n = reinterpret<float>(biased << 23); Expr 768 src/IROperator.cpp Expr stringify(const std::vector<Expr> &args) { Expr 773 src/IROperator.cpp Expr combine_strings(const std::vector<Expr> &args) { Expr 775 src/IROperator.cpp std::vector<Expr> strings(args.size()*2); Expr 779 src/IROperator.cpp strings[i*2+1] = Expr(" "); Expr 781 src/IROperator.cpp strings[i*2+1] = Expr("\n"); Expr 788 src/IROperator.cpp Expr print(const std::vector<Expr> &args) { Expr 789 src/IROperator.cpp Expr combined_string = combine_strings(args); Expr 792 src/IROperator.cpp Expr print_call = Expr 797 src/IROperator.cpp Expr result = Expr 803 src/IROperator.cpp Expr print_when(const Expr &condition, const std::vector<Expr> &args) { Expr 804 src/IROperator.cpp Expr p = print(args); Expr 811 src/IROperator.cpp Expr require(const Expr &condition, const std::vector<Expr> &args) { Expr 816 src/IROperator.cpp Expr requirement_failed_error = Expr 824 src/IROperator.cpp Expr failure_value = cast(args[0].type(), requirement_failed_error); Expr 833 src/IROperator.cpp Expr memoize_tag_helper(const Expr &result, const std::vector<Expr> &cache_key_values) { Expr 834 src/IROperator.cpp std::vector<Expr> args; Expr 843 src/IROperator.cpp Expr saturating_cast(Type t, Expr e) { Expr 861 src/IROperator.cpp Expr min_bound; Expr 865 src/IROperator.cpp Expr max_bound = lossless_cast(e.type(), t.max()); Expr 21 src/IROperator.h EXPORT bool is_const(const Expr &e); Expr 25 src/IROperator.h EXPORT bool is_const(const Expr &e, int64_t v); Expr 29 src/IROperator.h EXPORT const int64_t *as_const_int(const Expr &e); Expr 33 src/IROperator.h EXPORT const uint64_t *as_const_uint(const Expr &e); Expr 37 src/IROperator.h EXPORT const double *as_const_float(const Expr &e); Expr 42 src/IROperator.h EXPORT bool is_const_power_of_two_integer(const Expr &e, int *bits); Expr 46 src/IROperator.h EXPORT bool is_positive_const(const Expr &e); Expr 50 src/IROperator.h EXPORT bool is_negative_const(const Expr &e); Expr 58 src/IROperator.h EXPORT bool is_negative_negatable_const(const Expr &e); Expr 61 src/IROperator.h EXPORT bool is_undef(const Expr &e); Expr 65 src/IROperator.h EXPORT bool is_zero(const Expr &e); Expr 69 src/IROperator.h EXPORT bool is_one(const Expr &e); Expr 73 src/IROperator.h EXPORT bool is_two(const Expr &e); Expr 81 src/IROperator.h EXPORT Expr make_const(Type t, int64_t val); Expr 82 src/IROperator.h EXPORT Expr make_const(Type t, uint64_t val); Expr 83 src/IROperator.h EXPORT Expr make_const(Type t, double val); Expr 84 src/IROperator.h inline Expr make_const(Type t, int32_t val) {return make_const(t, (int64_t)val);} Expr 85 src/IROperator.h inline Expr make_const(Type t, uint32_t val) {return make_const(t, (uint64_t)val);} Expr 86 src/IROperator.h inline Expr make_const(Type t, int16_t val) {return make_const(t, (int64_t)val);} Expr 87 src/IROperator.h inline Expr make_const(Type t, uint16_t val) {return make_const(t, (uint64_t)val);} Expr 88 src/IROperator.h inline Expr make_const(Type t, int8_t val) {return make_const(t, (int64_t)val);} Expr 89 src/IROperator.h inline Expr make_const(Type t, uint8_t val) {return make_const(t, (uint64_t)val);} Expr 90 src/IROperator.h inline Expr make_const(Type t, bool val) {return make_const(t, (uint64_t)val);} Expr 91 src/IROperator.h inline Expr make_const(Type t, float val) {return make_const(t, (double)val);} Expr 92 src/IROperator.h inline Expr make_const(Type t, float16_t val) {return make_const(t, (double)val);} Expr 106 src/IROperator.h EXPORT Expr make_bool(bool val, int lanes = 1); Expr 109 src/IROperator.h EXPORT Expr make_zero(Type t); Expr 112 src/IROperator.h EXPORT Expr make_one(Type t); Expr 115 src/IROperator.h EXPORT Expr make_two(Type t); Expr 119 src/IROperator.h EXPORT Expr const_true(int lanes = 1); Expr 123 src/IROperator.h EXPORT Expr const_false(int lanes = 1); Expr 128 src/IROperator.h EXPORT Expr lossless_cast(Type t, const Expr &e); Expr 154 src/IROperator.h EXPORT void match_types(Expr &a, Expr &b); Expr 158 src/IROperator.h EXPORT Expr halide_log(const Expr &a); Expr 159 src/IROperator.h EXPORT Expr halide_exp(const Expr &a); Expr 160 src/IROperator.h EXPORT Expr halide_erf(const Expr &a); Expr 165 src/IROperator.h EXPORT Expr raise_to_integer_power(const Expr &a, int64_t b); Expr 169 src/IROperator.h EXPORT void split_into_ands(const Expr &cond, std::vector<Expr> &result); Expr 182 src/IROperator.h Expr buffer_memory, shape_memory; Expr 183 src/IROperator.h Expr host, device, device_interface; Expr 186 src/IROperator.h std::vector<Expr> mins, extents, strides; Expr 187 src/IROperator.h Expr host_dirty, device_dirty; Expr 188 src/IROperator.h EXPORT Expr build() const; Expr 195 src/IROperator.h inline Expr cast(const Expr &a) { Expr 200 src/IROperator.h inline Expr cast(Type t, const Expr &a) { Expr 238 src/IROperator.h inline Expr operator+(Expr a, Expr b) { Expr 248 src/IROperator.h inline Expr operator+(const Expr &a, int b) { Expr 257 src/IROperator.h inline Expr operator+(int a, const Expr &b) { Expr 266 src/IROperator.h inline Expr &operator+=(Expr &a, const Expr &b) { Expr 274 src/IROperator.h inline Expr operator-(Expr a, Expr b) { Expr 283 src/IROperator.h inline Expr operator-(const Expr &a, int b) { Expr 292 src/IROperator.h inline Expr operator-(int a, const Expr &b) { Expr 303 src/IROperator.h inline Expr operator-(const Expr &a) { Expr 311 src/IROperator.h inline Expr &operator-=(Expr &a, const Expr &b) { Expr 319 src/IROperator.h inline Expr operator*(Expr a, Expr b) { Expr 328 src/IROperator.h inline Expr operator*(const Expr &a, int b) { Expr 337 src/IROperator.h inline Expr operator*(int a, const Expr &b) { Expr 346 src/IROperator.h inline Expr &operator*=(Expr &a, const Expr &b) { Expr 356 src/IROperator.h inline Expr operator/(Expr a, Expr b) { Expr 367 src/IROperator.h inline Expr &operator/=(Expr &a, const Expr &b) { Expr 378 src/IROperator.h inline Expr operator/(const Expr &a, int b) { Expr 387 src/IROperator.h inline Expr operator/(int a, const Expr &b) { Expr 399 src/IROperator.h inline Expr operator%(Expr a, Expr b) { Expr 409 src/IROperator.h inline Expr operator%(const Expr &a, int b) { Expr 418 src/IROperator.h inline Expr operator%(int a, const Expr &b) { Expr 428 src/IROperator.h inline Expr operator>(Expr a, Expr b) { Expr 438 src/IROperator.h inline Expr operator>(const Expr &a, int b) { Expr 448 src/IROperator.h inline Expr operator>(int a, const Expr &b) { Expr 457 src/IROperator.h inline Expr operator<(Expr a, Expr b) { Expr 467 src/IROperator.h inline Expr operator<(const Expr &a, int b) { Expr 477 src/IROperator.h inline Expr operator<(int a, const Expr &b) { Expr 486 src/IROperator.h inline Expr operator<=(Expr a, Expr b) { Expr 496 src/IROperator.h inline Expr operator<=(const Expr &a, int b) { Expr 506 src/IROperator.h inline Expr operator<=(int a, const Expr &b) { Expr 515 src/IROperator.h inline Expr operator>=(Expr a, Expr b) { Expr 525 src/IROperator.h inline Expr operator>=(const Expr &a, int b) { Expr 535 src/IROperator.h inline Expr operator>=(int a, const Expr &b) { Expr 544 src/IROperator.h inline Expr operator==(Expr a, Expr b) { Expr 554 src/IROperator.h inline Expr operator==(const Expr &a, int b) { Expr 564 src/IROperator.h inline Expr operator==(int a, const Expr &b) { Expr 573 src/IROperator.h inline Expr operator!=(Expr a, Expr b) { Expr 583 src/IROperator.h inline Expr operator!=(const Expr &a, int b) { Expr 593 src/IROperator.h inline Expr operator!=(int a, const Expr &b) { Expr 600 src/IROperator.h inline Expr operator&&(Expr a, Expr b) { Expr 608 src/IROperator.h inline Expr operator&&(const Expr &a, bool b) { Expr 617 src/IROperator.h inline Expr operator&&(bool a, const Expr &b) { Expr 623 src/IROperator.h inline Expr operator||(Expr a, Expr b) { Expr 631 src/IROperator.h inline Expr operator||(const Expr &a, bool b) { Expr 640 src/IROperator.h inline Expr operator||(bool a, const Expr &b) { Expr 647 src/IROperator.h inline Expr operator!(const Expr &a) { Expr 655 src/IROperator.h inline Expr max(Expr a, Expr b) { Expr 667 src/IROperator.h inline Expr max(const Expr &a, int b) { Expr 679 src/IROperator.h inline Expr max(int a, const Expr &b) { Expr 685 src/IROperator.h inline Expr max(float a, const Expr &b) {return max(Expr(a), b);} Expr 686 src/IROperator.h inline Expr max(const Expr &a, float b) {return max(a, Expr(b));} Expr 695 src/IROperator.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Rest...>::value>::type* = nullptr> Expr 696 src/IROperator.h inline Expr max(const A &a, const B &b, const C &c, Rest&&... rest) { Expr 700 src/IROperator.h inline Expr min(Expr a, Expr b) { Expr 712 src/IROperator.h inline Expr min(const Expr &a, int b) { Expr 723 src/IROperator.h inline Expr min(int a, const Expr &b) { Expr 729 src/IROperator.h inline Expr min(float a, const Expr &b) {return min(Expr(a), b);} Expr 730 src/IROperator.h inline Expr min(const Expr &a, float b) {return min(a, Expr(b));} Expr 739 src/IROperator.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Rest...>::value>::type* = nullptr> Expr 740 src/IROperator.h inline Expr min(const A &a, const B &b, const C &c, Rest&&... rest) { Expr 748 src/IROperator.h inline Expr operator+(const Expr &a, float b) {return a + Expr(b);} Expr 749 src/IROperator.h inline Expr operator+(float a, const Expr &b) {return Expr(a) + b;} Expr 750 src/IROperator.h inline Expr operator-(const Expr &a, float b) {return a - Expr(b);} Expr 751 src/IROperator.h inline Expr operator-(float a, const Expr &b) {return Expr(a) - b;} Expr 752 src/IROperator.h inline Expr operator*(const Expr &a, float b) {return a * Expr(b);} Expr 753 src/IROperator.h inline Expr operator*(float a, const Expr &b) {return Expr(a) * b;} Expr 754 src/IROperator.h inline Expr operator/(const Expr &a, float b) {return a / Expr(b);} Expr 755 src/IROperator.h inline Expr operator/(float a, const Expr &b) {return Expr(a) / b;} Expr 756 src/IROperator.h inline Expr operator%(const Expr &a, float b) {return a % Expr(b);} Expr 757 src/IROperator.h inline Expr operator%(float a, const Expr &b) {return Expr(a) % b;} Expr 758 src/IROperator.h inline Expr operator>(const Expr &a, float b) {return a > Expr(b);} Expr 759 src/IROperator.h inline Expr operator>(float a, const Expr &b) {return Expr(a) > b;} Expr 760 src/IROperator.h inline Expr operator<(const Expr &a, float b) {return a < Expr(b);} Expr 761 src/IROperator.h inline Expr operator<(float a, const Expr &b) {return Expr(a) < b;} Expr 762 src/IROperator.h inline Expr operator>=(const Expr &a, float b) {return a >= Expr(b);} Expr 763 src/IROperator.h inline Expr operator>=(float a, const Expr &b) {return Expr(a) >= b;} Expr 764 src/IROperator.h inline Expr operator<=(const Expr &a, float b) {return a <= Expr(b);} Expr 765 src/IROperator.h inline Expr operator<=(float a, const Expr &b) {return Expr(a) <= b;} Expr 766 src/IROperator.h inline Expr operator==(const Expr &a, float b) {return a == Expr(b);} Expr 767 src/IROperator.h inline Expr operator==(float a, const Expr &b) {return Expr(a) == b;} Expr 768 src/IROperator.h inline Expr operator!=(const Expr &a, float b) {return a != Expr(b);} Expr 769 src/IROperator.h inline Expr operator!=(float a, const Expr &b) {return Expr(a) != b;} Expr 774 src/IROperator.h inline Expr clamp(const Expr &a, const Expr &min_val, const Expr &max_val) { Expr 777 src/IROperator.h Expr n_min_val = lossless_cast(a.type(), min_val); Expr 780 src/IROperator.h Expr n_max_val = lossless_cast(a.type(), max_val); Expr 790 src/IROperator.h inline Expr abs(const Expr &a) { Expr 807 src/IROperator.h inline Expr absd(Expr a, Expr b) { Expr 827 src/IROperator.h inline Expr select(Expr condition, Expr true_value, Expr false_value) { Expr 859 src/IROperator.h typename std::enable_if<Halide::Internal::all_are_convertible<Expr, Args...>::value>::type* = nullptr> Expr 860 src/IROperator.h inline Expr select(const Expr &c0, const Expr &v0, const Expr &c1, const Expr &v1, Args&&... args) { Expr 870 src/IROperator.h inline Expr sin(const Expr &x) { Expr 886 src/IROperator.h inline Expr asin(const Expr &x) { Expr 902 src/IROperator.h inline Expr cos(const Expr &x) { Expr 918 src/IROperator.h inline Expr acos(const Expr &x) { Expr 934 src/IROperator.h inline Expr tan(const Expr &x) { Expr 950 src/IROperator.h inline Expr atan(const Expr &x) { Expr 966 src/IROperator.h inline Expr atan2(Expr y, Expr x) { Expr 987 src/IROperator.h inline Expr sinh(const Expr &x) { Expr 1003 src/IROperator.h inline Expr asinh(const Expr &x) { Expr 1019 src/IROperator.h inline Expr cosh(const Expr &x) { Expr 1035 src/IROperator.h inline Expr acosh(const Expr &x) { Expr 1051 src/IROperator.h inline Expr tanh(const Expr &x) { Expr 1067 src/IROperator.h inline Expr atanh(const Expr &x) { Expr 1083 src/IROperator.h inline Expr sqrt(const Expr &x) { Expr 1099 src/IROperator.h inline Expr hypot(const Expr &x, const Expr &y) { Expr 1110 src/IROperator.h inline Expr exp(const Expr &x) { Expr 1130 src/IROperator.h inline Expr log(const Expr &x) { Expr 1149 src/IROperator.h inline Expr pow(Expr x, Expr y) { Expr 1174 src/IROperator.h inline Expr erf(const Expr &x) { Expr 1183 src/IROperator.h EXPORT Expr fast_log(const Expr &x); Expr 1189 src/IROperator.h EXPORT Expr fast_exp(const Expr &x); Expr 1195 src/IROperator.h inline Expr fast_pow(Expr x, Expr y) { Expr 1208 src/IROperator.h inline Expr fast_inverse(const Expr &x) { Expr 1216 src/IROperator.h inline Expr fast_inverse_sqrt(const Expr &x) { Expr 1225 src/IROperator.h inline Expr floor(const Expr &x) { Expr 1243 src/IROperator.h inline Expr ceil(const Expr &x) { Expr 1262 src/IROperator.h inline Expr round(const Expr &x) { Expr 1279 src/IROperator.h inline Expr trunc(const Expr &x) { Expr 1295 src/IROperator.h inline Expr is_nan(const Expr &x) { Expr 1314 src/IROperator.h inline Expr fract(const Expr &x) { Expr 1320 src/IROperator.h inline Expr reinterpret(Type t, const Expr &e) { Expr 1333 src/IROperator.h inline Expr reinterpret(const Expr &e) { Expr 1340 src/IROperator.h inline Expr operator&(Expr x, Expr y) { Expr 1359 src/IROperator.h inline Expr operator|(Expr x, Expr y) { Expr 1378 src/IROperator.h inline Expr operator^(Expr x, Expr y) { Expr 1395 src/IROperator.h inline Expr operator~(const Expr &x) { Expr 1410 src/IROperator.h inline Expr operator<<(Expr x, Expr y) { Expr 1417 src/IROperator.h inline Expr operator<<(const Expr &x, int y) { Expr 1421 src/IROperator.h inline Expr operator<<(int x, const Expr &y) { Expr 1436 src/IROperator.h inline Expr operator>>(Expr x, Expr y) { Expr 1443 src/IROperator.h inline Expr operator>>(const Expr &x, int y) { Expr 1447 src/IROperator.h inline Expr operator>>(int x, const Expr &y) { Expr 1519 src/IROperator.h inline Expr lerp(Expr zero_val, Expr one_val, Expr weight) { Expr 1561 src/IROperator.h inline Expr popcount(const Expr &x) { Expr 1569 src/IROperator.h inline Expr count_leading_zeros(const Expr &x) { Expr 1577 src/IROperator.h inline Expr count_trailing_zeros(const Expr &x) { Expr 1587 src/IROperator.h inline Expr div_round_to_zero(Expr x, Expr y) { Expr 1606 src/IROperator.h inline Expr mod_round_to_zero(Expr x, Expr y) { Expr 1649 src/IROperator.h inline Expr random_float(const Expr &seed = Expr()) { Expr 1654 src/IROperator.h std::vector<Expr> args; Expr 1671 src/IROperator.h inline Expr random_uint(const Expr &seed = Expr()) { Expr 1676 src/IROperator.h std::vector<Expr> args; Expr 1691 src/IROperator.h inline Expr random_int(const Expr &seed = Expr()) { Expr 1697 src/IROperator.h inline NO_INLINE void collect_print_args(std::vector<Expr> &args) { Expr 1701 src/IROperator.h inline NO_INLINE void collect_print_args(std::vector<Expr> &args, const char *arg, Args&&... more_args) { Expr 1702 src/IROperator.h args.push_back(Expr(std::string(arg))); Expr 1707 src/IROperator.h inline NO_INLINE void collect_print_args(std::vector<Expr> &args, const Expr &arg, Args&&... more_args) { Expr 1718 src/IROperator.h EXPORT Expr print(const std::vector<Expr> &values); Expr 1721 src/IROperator.h inline NO_INLINE Expr print(const Expr &a, Args&&... args) { Expr 1722 src/IROperator.h std::vector<Expr> collected_args = {a}; Expr 1731 src/IROperator.h EXPORT Expr print_when(const Expr &condition, const std::vector<Expr> &values); Expr 1734 src/IROperator.h inline NO_INLINE Expr print_when(const Expr &condition, const Expr &a, Args&&... args) { Expr 1735 src/IROperator.h std::vector<Expr> collected_args = {a}; Expr 1763 src/IROperator.h EXPORT Expr require(const Expr &condition, const std::vector<Expr> &values); Expr 1766 src/IROperator.h inline NO_INLINE Expr require(const Expr &condition, const Expr &value, Args&&... args) { Expr 1767 src/IROperator.h std::vector<Expr> collected_args = {value}; Expr 1793 src/IROperator.h inline Expr undef(Type t) { Expr 1795 src/IROperator.h std::vector<Expr>(), Expr 1800 src/IROperator.h inline Expr undef() { Expr 1805 src/IROperator.h EXPORT Expr memoize_tag_helper(const Expr &result, const std::vector<Expr> &cache_key_values); Expr 1836 src/IROperator.h inline NO_INLINE Expr memoize_tag(const Expr &result, Args&&... args) { Expr 1837 src/IROperator.h std::vector<Expr> collected_args{std::forward<Args>(args)...}; Expr 1855 src/IROperator.h inline Expr likely(const Expr &e) { Expr 1862 src/IROperator.h inline Expr likely_if_innermost(const Expr &e) { Expr 1872 src/IROperator.h Expr saturating_cast(const Expr &e) { Expr 1878 src/IROperator.h EXPORT Expr saturating_cast(Type t, Expr e); Expr 43 src/IRPrinter.cpp ostream &operator<<(ostream &stream, const Expr &ir) { Expr 103 src/IRPrinter.cpp Expr x = Variable::make(Int(32), "x"); Expr 104 src/IRPrinter.cpp Expr y = Variable::make(Int(32), "y"); Expr 111 src/IRPrinter.cpp vector<Expr> args(1); args[0] = x % 3; Expr 112 src/IRPrinter.cpp Expr call = Call::make(i32, "buf", args, Call::Extern); Expr 254 src/IRPrinter.cpp void IRPrinter::print(Expr ir) { Expr 262 src/IRPrinter.cpp void IRPrinter::print_list(const std::vector<Expr> &exprs) { Expr 26 src/IRPrinter.h EXPORT std::ostream &operator<<(std::ostream &stream, const Expr &); Expr 74 src/IRPrinter.h EXPORT void print(Expr); Expr 81 src/IRPrinter.h EXPORT void print_list(const std::vector<Expr> &exprs); Expr 236 src/IRVisitor.cpp for (Expr i : op->vectors) { Expr 241 src/IRVisitor.cpp void IRGraphVisitor::include(const Expr &e) { Expr 473 src/IRVisitor.cpp for (Expr i : op->vectors) { Expr 79 src/IRVisitor.h EXPORT virtual void include(const Expr &); Expr 23 src/ImageParam.cpp std::vector<Expr> args_expr; Expr 50 src/ImageParam.cpp Expr ImageParam::operator()(std::vector<Expr> args_passed) const { Expr 54 src/ImageParam.cpp Expr ImageParam::operator()(std::vector<Var> args_passed) const { Expr 59 src/ImageParam.h NO_INLINE Expr operator()(Args&&... args) const { Expr 62 src/ImageParam.h EXPORT Expr operator()(std::vector<Expr>) const; Expr 63 src/ImageParam.h EXPORT Expr operator()(std::vector<Var>) const; Expr 53 src/InferArguments.cpp void visit_exprs(const vector<Expr>& v) { Expr 54 src/InferArguments.cpp for (Expr i : v) { Expr 59 src/InferArguments.cpp void visit_expr(Expr e) { Expr 91 src/InferArguments.cpp Expr def, min, max; Expr 18 src/InjectHostDevBufferCopies.cpp Stmt call_extern_and_assert(const string& name, const vector<Expr>& args) { Expr 19 src/InjectHostDevBufferCopies.cpp Expr call = Call::make(Int(32), name, args, Call::Extern); Expr 21 src/InjectHostDevBufferCopies.cpp Expr call_result_var = Variable::make(Int(32), call_result_name); Expr 190 src/InjectHostDevBufferCopies.cpp Expr make_device_interface_call(DeviceAPI device_api) { Expr 215 src/InjectHostDevBufferCopies.cpp std::vector<Expr> no_args; Expr 220 src/InjectHostDevBufferCopies.cpp Expr buf = Variable::make(type_of<struct halide_buffer_t *>(), buf_name + ".buffer"); Expr 221 src/InjectHostDevBufferCopies.cpp Expr device_interface = make_device_interface_call(target_device_api); Expr 227 src/InjectHostDevBufferCopies.cpp {Expr(is_device_and_host ? "halide_device_and_host_free_as_destructor" Expr 240 src/InjectHostDevBufferCopies.cpp std::vector<Expr> args; Expr 241 src/InjectHostDevBufferCopies.cpp Expr buffer = Variable::make(type_of<struct halide_buffer_t *>(), buf_name + ".buffer"); Expr 361 src/InjectHostDevBufferCopies.cpp Expr buffer = Variable::make(type_of<struct halide_buffer_t *>(), i.first + ".buffer"); Expr 366 src/InjectHostDevBufferCopies.cpp Expr set_host_dirty = Call::make(Int(32), Call::buffer_set_host_dirty, Expr 373 src/InjectHostDevBufferCopies.cpp Expr set_device_dirty = Call::make(Int(32), Call::buffer_set_device_dirty, Expr 595 src/InjectHostDevBufferCopies.cpp std::vector<Expr> create_buffer_args; Expr 604 src/InjectHostDevBufferCopies.cpp Expr buf = NullifyHostField(op->name).mutate(buffer_init_let->value); Expr 633 src/InjectHostDevBufferCopies.cpp Expr value = NullifyHostField(buf_name).mutate(op->value); Expr 645 src/InjectHostDevBufferCopies.cpp Expr cond = mutate(op->condition); Expr 16 src/InjectHostDevBufferCopies.h EXPORT Stmt call_extern_and_assert(const std::string& name, const std::vector<Expr>& args); Expr 40 src/InjectImageIntrinsics.cpp Expr value_arg = mutate(provide->values[0]); Expr 41 src/InjectImageIntrinsics.cpp vector<Expr> args = { Expr 72 src/InjectImageIntrinsics.cpp vector<Expr> padded_call_args = call->args; Expr 82 src/InjectImageIntrinsics.cpp vector<Expr> args(2); Expr 105 src/InjectImageIntrinsics.cpp Expr min = Variable::make(Int(32), min_name); Expr 117 src/InjectImageIntrinsics.cpp Expr load_call = Expr 28 src/InjectOpenGLIntrinsics.cpp vector<Expr> call_args = call->args; Expr 44 src/InjectOpenGLIntrinsics.cpp vector<Expr> args(5); Expr 69 src/InjectOpenGLIntrinsics.cpp Expr c_coordinate = mutate(call_args[2 + 2 * 2]); Expr 73 src/InjectOpenGLIntrinsics.cpp vector<Expr>(&args[0], &args[5]), Expr 84 src/InjectOpenGLIntrinsics.cpp vector<Expr> args(call->args); Expr 102 src/Inline.cpp vector<Expr> args(op->args.size()); Expr 107 src/Inline.cpp Expr body = qualify(func.name() + ".", func.values()[op->value_index]); Expr 156 src/Inline.cpp Expr inline_function(Expr e, Function f) { Expr 18 src/Inline.h Expr inline_function(Expr, Function); Expr 20 src/InlineReductions.cpp vector<Expr> call_args; Expr 36 src/InlineReductions.cpp Expr value = mutate(op->value); Expr 38 src/InlineReductions.cpp Expr body = mutate(op->body); Expr 104 src/InlineReductions.cpp Expr sum(Expr e, const std::string &name) { Expr 108 src/InlineReductions.cpp Expr sum(RDom r, Expr e, const std::string &name) { Expr 119 src/InlineReductions.cpp Expr product(Expr e, const std::string &name) { Expr 123 src/InlineReductions.cpp Expr product(RDom r, Expr e, const std::string &name) { Expr 134 src/InlineReductions.cpp Expr maximum(Expr e, const std::string &name) { Expr 138 src/InlineReductions.cpp Expr maximum(RDom r, Expr e, const std::string &name) { Expr 150 src/InlineReductions.cpp Expr minimum(Expr e, const std::string &name) { Expr 154 src/InlineReductions.cpp Expr minimum(RDom r, Expr e, const std::string &name) { Expr 166 src/InlineReductions.cpp Tuple argmax(Expr e, const std::string &name) { Expr 170 src/InlineReductions.cpp Tuple argmax(RDom r, Expr e, const std::string &name) { Expr 178 src/InlineReductions.cpp Tuple initial_tup(vector<Expr>(v.rdom.dimensions()+1)); Expr 179 src/InlineReductions.cpp Tuple update_tup(vector<Expr>(v.rdom.dimensions()+1)); Expr 189 src/InlineReductions.cpp Expr better = e > f(v.free_vars)[value_index]; Expr 195 src/InlineReductions.cpp Tuple argmin(Expr e, const std::string &name) { Expr 199 src/InlineReductions.cpp Tuple argmin(RDom r, Expr e, const std::string &name) { Expr 207 src/InlineReductions.cpp Tuple initial_tup(vector<Expr>(v.rdom.dimensions()+1)); Expr 208 src/InlineReductions.cpp Tuple update_tup(vector<Expr>(v.rdom.dimensions()+1)); Expr 218 src/InlineReductions.cpp Expr better = e < f(v.free_vars)[value_index]; Expr 36 src/InlineReductions.h EXPORT Expr sum(Expr, const std::string &s = "sum"); Expr 37 src/InlineReductions.h EXPORT Expr product(Expr, const std::string &s = "product"); Expr 38 src/InlineReductions.h EXPORT Expr maximum(Expr, const std::string &s = "maximum"); Expr 39 src/InlineReductions.h EXPORT Expr minimum(Expr, const std::string &s = "minimum"); Expr 52 src/InlineReductions.h EXPORT Expr sum(RDom, Expr, const std::string &s = "sum"); Expr 53 src/InlineReductions.h EXPORT Expr product(RDom, Expr, const std::string &s = "product"); Expr 54 src/InlineReductions.h EXPORT Expr maximum(RDom, Expr, const std::string &s = "maximum"); Expr 55 src/InlineReductions.h EXPORT Expr minimum(RDom, Expr, const std::string &s = "minimum"); Expr 64 src/InlineReductions.h EXPORT Tuple argmax(Expr, const std::string &s = "argmax"); Expr 65 src/InlineReductions.h EXPORT Tuple argmin(Expr, const std::string &s = "argmin"); Expr 66 src/InlineReductions.h EXPORT Tuple argmax(RDom, Expr, const std::string &s = "argmax"); Expr 67 src/InlineReductions.h EXPORT Tuple argmin(RDom, Expr, const std::string &s = "argmin"); Expr 11 src/Interval.cpp Expr Interval::make_max(Expr a, Expr b) { Expr 52 src/Interval.cpp Expr Interval::make_min(Expr a, Expr b) { Expr 98 src/Interval.cpp void Interval::include(Expr e) { Expr 116 src/Interval.cpp Expr Interval::pos_inf = Variable::make(Handle(), "pos_inf"); Expr 117 src/Interval.cpp Expr Interval::neg_inf = Variable::make(Handle(), "neg_inf"); Expr 133 src/Interval.cpp Expr x = Variable::make(Int(32), "x"); Expr 17 src/Interval.h static Expr pos_inf, neg_inf; Expr 21 src/Interval.h Expr min, max; Expr 27 src/Interval.h Interval(Expr min, Expr max) : min(min), max(max) { Expr 38 src/Interval.h static Interval single_point(Expr e) {return Interval(e, e);} Expr 50 src/Interval.h bool is_single_point(Expr e) const {return min.same_as(e) && max.same_as(e);} Expr 68 src/Interval.h EXPORT void include(Expr e); Expr 77 src/Interval.h EXPORT static Expr make_max(Expr a, Expr b); Expr 80 src/Interval.h EXPORT static Expr make_min(Expr a, Expr b); Expr 17 src/Lambda.h inline Func lambda(Expr e) { Expr 27 src/Lambda.h inline Func lambda(Var x, Expr e) { Expr 37 src/Lambda.h inline Func lambda(Var x, Var y, Expr e) { Expr 47 src/Lambda.h inline Func lambda(Var x, Var y, Var z, Expr e) { Expr 57 src/Lambda.h inline Func lambda(Var x, Var y, Var z, Var w, Expr e) { Expr 67 src/Lambda.h inline Func lambda(Var x, Var y, Var z, Var w, Var v, Expr e) { Expr 11 src/Lerp.cpp Expr lower_lerp(Expr zero_val, Expr one_val, Expr weight) { Expr 13 src/Lerp.cpp Expr result; Expr 20 src/Lerp.cpp Expr bias_value = make_zero(result_type); Expr 40 src/Lerp.cpp Expr half_weight; Expr 49 src/Lerp.cpp Expr typed_weight; Expr 50 src/Lerp.cpp Expr inverse_typed_weight; Expr 61 src/Lerp.cpp cast<double>(Expr(65535.0f)) * cast<double>(Expr(65537.0f)) * Expr 143 src/Lerp.cpp Expr zero_expand = Cast::make(UInt(2 * bits, computation_type.lanes()), Expr 145 src/Lerp.cpp Expr one_expand = Cast::make(UInt(2 * bits, one_val.type().lanes()), Expr 148 src/Lerp.cpp Expr rounding = Cast::make(UInt(2 * bits), 1) << Cast::make(UInt(2 * bits), (bits - 1)); Expr 149 src/Lerp.cpp Expr divisor = Cast::make(UInt(2 * bits), 1) << Cast::make(UInt(2 * bits), bits); Expr 151 src/Lerp.cpp Expr prod_sum = zero_expand * inverse_typed_weight + Expr 153 src/Lerp.cpp Expr divided = ((prod_sum / divisor) + prod_sum) / divisor; Expr 15 src/Lerp.h Expr EXPORT lower_lerp(Expr zero_val, Expr one_val, Expr weight); Expr 26 src/LoopCarry.cpp Expr is_linear(Expr e, const Scope<Expr> &linear) { Expr 28 src/LoopCarry.cpp return Expr(); Expr 39 src/LoopCarry.cpp Expr la = is_linear(add->a, linear); Expr 40 src/LoopCarry.cpp Expr lb = is_linear(add->b, linear); Expr 48 src/LoopCarry.cpp return Expr(); Expr 51 src/LoopCarry.cpp Expr la = is_linear(sub->a, linear); Expr 52 src/LoopCarry.cpp Expr lb = is_linear(sub->b, linear); Expr 58 src/LoopCarry.cpp return Expr(); Expr 61 src/LoopCarry.cpp Expr la = is_linear(mul->a, linear); Expr 62 src/LoopCarry.cpp Expr lb = is_linear(mul->b, linear); Expr 70 src/LoopCarry.cpp return Expr(); Expr 73 src/LoopCarry.cpp Expr la = is_linear(r->base, linear); Expr 74 src/LoopCarry.cpp Expr lb = is_linear(r->stride, linear); Expr 78 src/LoopCarry.cpp return Expr(); Expr 83 src/LoopCarry.cpp return Expr(); Expr 126 src/LoopCarry.cpp Expr scratch_index(int i, Type t) { Expr 139 src/LoopCarry.cpp const Scope<Expr> &linear; Expr 145 src/LoopCarry.cpp Expr step = linear.get(op->name); Expr 155 src/LoopCarry.cpp expr = Expr(op) + step; Expr 166 src/LoopCarry.cpp StepForwards(const Scope<Expr> &s) : linear(s) {} Expr 169 src/LoopCarry.cpp Expr step_forwards(Expr e, const Scope<Expr> &linear) { Expr 173 src/LoopCarry.cpp return Expr(); Expr 187 src/LoopCarry.cpp Scope<Expr> linear; Expr 188 src/LoopCarry.cpp vector<pair<string, Expr>> containing_lets; Expr 201 src/LoopCarry.cpp Expr value = mutate(op->value); Expr 202 src/LoopCarry.cpp Expr step = is_linear(value, linear); Expr 271 src/LoopCarry.cpp if (graph_equal(Expr(load), Expr(v[0]))) { Expr 282 src/LoopCarry.cpp vector<Expr> indices, next_indices, predicates, next_predicates; Expr 304 src/LoopCarry.cpp << i << ": -> " << Expr(loads[i][0]) << "\n" Expr 305 src/LoopCarry.cpp << j << ": -> " << Expr(loads[j][0]) << "\n"; Expr 387 src/LoopCarry.cpp vector<Expr> initial_scratch_values; Expr 391 src/LoopCarry.cpp Expr scratch_idx = scratch_index(i, orig_load->type); Expr 392 src/LoopCarry.cpp Expr load_from_scratch = Load::make(orig_load->type, scratch, scratch_idx, Expr 418 src/LoopCarry.cpp vector<pair<string, Expr>> initial_lets; Expr 420 src/LoopCarry.cpp Expr call = Call::make(Int(32), unique_name('b'), initial_scratch_values, Call::PureIntrinsic); Expr 434 src/LoopCarry.cpp Expr scratch_idx = scratch_index(i, initial_scratch_values[i].type()); Expr 107 src/Memoization.cpp void record(const Expr &expr) { Expr 137 src/Memoization.cpp Expr size_expr; Expr 138 src/Memoization.cpp Expr value_expr; Expr 148 src/Memoization.cpp Expr key_size_expr; Expr 204 src/Memoization.cpp Expr key_size() { return cast<int32_t>(key_size_expr); }; Expr 211 src/Memoization.cpp Expr index = Expr(0); Expr 262 src/Memoization.cpp Expr generate_lookup(std::string key_allocation_name, std::string computed_bounds_name, Expr 264 src/Memoization.cpp std::vector<Expr> args; Expr 269 src/Memoization.cpp std::vector<Expr> buffers; Expr 285 src/Memoization.cpp std::vector<Expr> args; Expr 290 src/Memoization.cpp std::vector<Expr> buffers; Expr 372 src/Memoization.cpp Expr min = Variable::make(Int(32), prefix + ".min"); Expr 373 src/Memoization.cpp Expr max = Variable::make(Int(32), prefix + ".max"); Expr 377 src/Memoization.cpp Expr computed_bounds = builder.build(); Expr 403 src/Memoization.cpp Expr cache_miss = Variable::make(Bool(), cache_miss_name); Expr 489 src/Memoization.cpp std::vector<Expr> args = call->args; Expr 503 src/Memoization.cpp Expr value = mutate(let->value); Expr 451 src/Module.cpp std::vector<Expr> wrapper_args; Expr 507 src/Module.cpp Expr can_use = (target == base_target) ? Expr 542 src/Module.cpp Expr indirect_result = Call::make(Int(32), Call::call_cached_indirect_function, wrapper_args, Call::Intrinsic); Expr 544 src/Module.cpp Expr private_result_var = Variable::make(Int(32), private_result_name); Expr 32 src/Module.h Expr _def = Expr(), Expr 33 src/Module.h Expr _min = Expr(), Expr 34 src/Module.h Expr _max = Expr()) : Argument(_name, _kind, _type, _dimensions, _def, _min, _max) {} Expr 13 src/ModulusRemainder.cpp ModulusRemainder analyze(Expr e); Expr 66 src/ModulusRemainder.cpp ModulusRemainder modulus_remainder(Expr e) { Expr 71 src/ModulusRemainder.cpp ModulusRemainder modulus_remainder(Expr e, const Scope<ModulusRemainder> &scope) { Expr 78 src/ModulusRemainder.cpp bool reduce_expr_modulo(Expr expr, int modulus, int *remainder) { Expr 95 src/ModulusRemainder.cpp bool reduce_expr_modulo(Expr expr, int modulus, int *remainder, const Scope<ModulusRemainder> &scope) { Expr 106 src/ModulusRemainder.cpp ModulusRemainder ComputeModulusRemainder::analyze(Expr e) { Expr 112 src/ModulusRemainder.cpp void check(Expr e, int m, int r) { Expr 127 src/ModulusRemainder.cpp Expr x = Variable::make(Int(32), "x"); Expr 128 src/ModulusRemainder.cpp Expr y = Variable::make(Int(32), "y"); Expr 32 src/ModulusRemainder.h EXPORT ModulusRemainder modulus_remainder(Expr e); Expr 37 src/ModulusRemainder.h EXPORT ModulusRemainder modulus_remainder(Expr e, const Scope<ModulusRemainder> &scope); Expr 42 src/ModulusRemainder.h EXPORT bool reduce_expr_modulo(Expr e, int modulus, int *remainder); Expr 43 src/ModulusRemainder.h EXPORT bool reduce_expr_modulo(Expr e, int modulus, int *remainder, const Scope<ModulusRemainder> &scope); Expr 167 src/Monotonic.cpp void visit_eq(Expr a, Expr b) { Expr 187 src/Monotonic.cpp void visit_lt(Expr a, Expr b) { Expr 391 src/Monotonic.cpp Monotonic is_monotonic(Expr e, const std::string &var) { Expr 399 src/Monotonic.cpp void check_increasing(Expr e) { Expr 404 src/Monotonic.cpp void check_decreasing(Expr e) { Expr 409 src/Monotonic.cpp void check_constant(Expr e) { Expr 414 src/Monotonic.cpp void check_unknown(Expr e) { Expr 422 src/Monotonic.cpp Expr x = Variable::make(Int(32), "x"); Expr 423 src/Monotonic.cpp Expr y = Variable::make(Int(32), "y"); Expr 19 src/Monotonic.h EXPORT Monotonic is_monotonic(Expr e, const std::string &var); Expr 45 src/OutputImageParam.cpp Expr OutputImageParam::left() const { Expr 50 src/OutputImageParam.cpp Expr OutputImageParam::right() const { Expr 55 src/OutputImageParam.cpp Expr OutputImageParam::top() const { Expr 60 src/OutputImageParam.cpp Expr OutputImageParam::bottom() const { Expr 65 src/OutputImageParam.cpp Expr OutputImageParam::width() const { Expr 70 src/OutputImageParam.cpp Expr OutputImageParam::height() const { Expr 75 src/OutputImageParam.cpp Expr OutputImageParam::channels() const { Expr 25 src/OutputImageParam.h void add_implicit_args_if_placeholder(std::vector<Expr> &args, Expr 26 src/OutputImageParam.h Expr last_arg, Expr 58 src/OutputImageParam.h OutputImageParam set_min(int i, Expr e) {dim(i).set_min(e); return *this;} Expr 60 src/OutputImageParam.h OutputImageParam set_extent(int i, Expr e) {dim(i).set_extent(e); return *this;} Expr 62 src/OutputImageParam.h OutputImageParam set_bounds(int i, Expr a, Expr b) {dim(i).set_bounds(a, b); return *this;} Expr 64 src/OutputImageParam.h OutputImageParam set_stride(int i, Expr e) {dim(i).set_stride(e); return *this;} Expr 66 src/OutputImageParam.h Expr min(int i) const {return dim(i).min();} Expr 68 src/OutputImageParam.h Expr extent(int i) const {return dim(i).extent();} Expr 70 src/OutputImageParam.h Expr stride(int i) const {return dim(i).stride();} Expr 85 src/OutputImageParam.h EXPORT Expr left() const; Expr 89 src/OutputImageParam.h EXPORT Expr right() const; Expr 93 src/OutputImageParam.h EXPORT Expr top() const; Expr 97 src/OutputImageParam.h EXPORT Expr bottom() const; Expr 101 src/OutputImageParam.h EXPORT Expr width() const; Expr 105 src/OutputImageParam.h EXPORT Expr height() const; Expr 109 src/OutputImageParam.h EXPORT Expr channels() const; Expr 45 src/ParallelRVar.cpp vector<vector<Expr>> loads; Expr 95 src/ParallelRVar.cpp const vector<Expr> &values = r.values(); Expr 96 src/ParallelRVar.cpp const vector<Expr> &args = r.args(); Expr 106 src/ParallelRVar.cpp vector<Expr> other_store(args.size()); Expr 114 src/ParallelRVar.cpp Expr distinct_v = (Variable::make(Int(32), v) != Expr 119 src/ParallelRVar.cpp Expr hazard = const_true(); Expr 128 src/ParallelRVar.cpp Expr check = const_true(); Expr 144 src/ParallelRVar.cpp Expr pred = simplify(r.predicate()); Expr 146 src/ParallelRVar.cpp Expr this_pred = pred; Expr 147 src/ParallelRVar.cpp Expr other_pred = renamer.mutate(pred); Expr 68 src/Param.h Param(T val, Expr min, Expr max) : Expr 76 src/Param.h Param(const std::string &n, T val, Expr min, Expr max) : Expr 117 src/Param.h void set_range(Expr min, Expr max) { Expr 122 src/Param.h void set_min_value(Expr min) { Expr 129 src/Param.h void set_max_value(Expr max) { Expr 136 src/Param.h Expr get_min_value() const { Expr 140 src/Param.h Expr get_max_value() const { Expr 147 src/Param.h operator Expr() const { Expr 154 src/Param.h return Expr(*this); Expr 169 src/Param.h inline Expr user_context_value() { Expr 19 src/Parameter.cpp std::vector<Expr> min_constraint; Expr 20 src/Parameter.cpp std::vector<Expr> extent_constraint; Expr 21 src/Parameter.cpp std::vector<Expr> stride_constraint; Expr 22 src/Parameter.cpp Expr min_value, max_value; Expr 150 src/Parameter.cpp Expr Parameter::get_scalar_expr() const { Expr 155 src/Parameter.cpp case 32: return Expr(get_scalar<float>()); Expr 156 src/Parameter.cpp case 64: return Expr(get_scalar<double>()); Expr 160 src/Parameter.cpp case 8: return Expr(get_scalar<int8_t>()); Expr 161 src/Parameter.cpp case 16: return Expr(get_scalar<int16_t>()); Expr 162 src/Parameter.cpp case 32: return Expr(get_scalar<int32_t>()); Expr 163 src/Parameter.cpp case 64: return Expr(get_scalar<int64_t>()); Expr 168 src/Parameter.cpp case 8: return Expr(get_scalar<uint8_t>()); Expr 169 src/Parameter.cpp case 16: return Expr(get_scalar<uint16_t>()); Expr 170 src/Parameter.cpp case 32: return Expr(get_scalar<uint32_t>()); Expr 171 src/Parameter.cpp case 64: return Expr(get_scalar<uint64_t>()); Expr 176 src/Parameter.cpp case 64: return Expr(get_scalar<uint64_t>()); Expr 180 src/Parameter.cpp return Expr(); Expr 215 src/Parameter.cpp void Parameter::set_min_constraint(int dim, Expr e) { Expr 221 src/Parameter.cpp void Parameter::set_extent_constraint(int dim, Expr e) { Expr 227 src/Parameter.cpp void Parameter::set_stride_constraint(int dim, Expr e) { Expr 237 src/Parameter.cpp Expr Parameter::min_constraint(int dim) const { Expr 243 src/Parameter.cpp Expr Parameter::extent_constraint(int dim) const { Expr 249 src/Parameter.cpp Expr Parameter::stride_constraint(int dim) const { Expr 258 src/Parameter.cpp void Parameter::set_min_value(Expr e) { Expr 270 src/Parameter.cpp Expr Parameter::get_min_value() const { Expr 275 src/Parameter.cpp void Parameter::set_max_value(Expr e) { Expr 287 src/Parameter.cpp Expr Parameter::get_max_value() const { Expr 302 src/Parameter.cpp Expr Dimension::min() const { Expr 308 src/Parameter.cpp Expr Dimension::extent() const { Expr 314 src/Parameter.cpp Expr Dimension::max() const { Expr 318 src/Parameter.cpp Expr Dimension::stride() const { Expr 324 src/Parameter.cpp Dimension Dimension::set_extent(Expr extent) { Expr 329 src/Parameter.cpp Dimension Dimension::set_min(Expr min) { Expr 334 src/Parameter.cpp Dimension Dimension::set_stride(Expr stride) { Expr 340 src/Parameter.cpp Dimension Dimension::set_bounds(Expr min, Expr extent) { Expr 352 src/Parameter.cpp void check_call_arg_types(const std::string &name, std::vector<Expr> *args, int dims) { Expr 92 src/Parameter.h EXPORT Expr get_scalar_expr() const; Expr 128 src/Parameter.h EXPORT void set_min_constraint(int dim, Expr e); Expr 129 src/Parameter.h EXPORT void set_extent_constraint(int dim, Expr e); Expr 130 src/Parameter.h EXPORT void set_stride_constraint(int dim, Expr e); Expr 132 src/Parameter.h EXPORT Expr min_constraint(int dim) const; Expr 133 src/Parameter.h EXPORT Expr extent_constraint(int dim) const; Expr 134 src/Parameter.h EXPORT Expr stride_constraint(int dim) const; Expr 141 src/Parameter.h EXPORT void set_min_value(Expr e); Expr 142 src/Parameter.h EXPORT Expr get_min_value() const; Expr 143 src/Parameter.h EXPORT void set_max_value(Expr e); Expr 144 src/Parameter.h EXPORT Expr get_max_value() const; Expr 152 src/Parameter.h EXPORT Expr min() const; Expr 156 src/Parameter.h EXPORT Expr extent() const; Expr 160 src/Parameter.h EXPORT Expr max() const; Expr 164 src/Parameter.h EXPORT Expr stride() const; Expr 169 src/Parameter.h EXPORT Dimension set_min(Expr e); Expr 192 src/Parameter.h EXPORT Dimension set_extent(Expr e); Expr 198 src/Parameter.h EXPORT Dimension set_stride(Expr e); Expr 201 src/Parameter.h EXPORT Dimension set_bounds(Expr min, Expr extent); Expr 228 src/Parameter.h void check_call_arg_types(const std::string &name, std::vector<Expr> *args, int dims); Expr 65 src/PartitionLoops.cpp Expr index = mutate(op->index); Expr 67 src/PartitionLoops.cpp Expr value = mutate(op->value); Expr 68 src/PartitionLoops.cpp Expr predicate = mutate(op->predicate); Expr 107 src/PartitionLoops.cpp bool has_likely_tag(Expr e) { Expr 206 src/PartitionLoops.cpp Expr condition; Expr 208 src/PartitionLoops.cpp Expr old_expr; Expr 210 src/PartitionLoops.cpp Expr likely_value; Expr 213 src/PartitionLoops.cpp Expr unlikely_value; Expr 238 src/PartitionLoops.cpp bool expr_uses_invalid_buffers(Expr e, const Scope<int> &invalid_buffers) { Expr 256 src/PartitionLoops.cpp void new_simplification(Expr condition, Expr old, Expr likely_val, Expr unlikely_val) { Expr 340 src/PartitionLoops.cpp Expr relaxed = and_condition_over_domain(s.condition, varying); Expr 401 src/PartitionLoops.cpp Expr mutate(Expr e) { Expr 470 src/PartitionLoops.cpp vector<Expr> min_vals, max_vals; Expr 494 src/PartitionLoops.cpp Expr m = s.interval.min; Expr 509 src/PartitionLoops.cpp Expr m = s.interval.max; Expr 535 src/PartitionLoops.cpp for (Expr min_val : min_vals) { Expr 536 src/PartitionLoops.cpp for (Expr max_val : max_vals) { Expr 537 src/PartitionLoops.cpp Expr test = simplify(common_subexpression_elimination(min_val - 1 < max_val + 1)); Expr 596 src/PartitionLoops.cpp Expr min_steady = op->min, max_steady = op->extent + op->min; Expr 597 src/PartitionLoops.cpp Expr prologue_val, epilogue_val; Expr 651 src/PartitionLoops.cpp Expr loop_var = Variable::make(Int(32), op->name); Expr 707 src/PartitionLoops.cpp bool expr_contains_load(Expr e) { Expr 723 src/PartitionLoops.cpp vector<pair<string, Expr> > lifted_lets; Expr 773 src/PartitionLoops.cpp Expr new_var = Variable::make(op->value.type(), new_name); Expr 848 src/PartitionLoops.cpp Expr condition = Variable::make(op->condition.type(), condition_name); Expr 888 src/PartitionLoops.cpp bool is_trivial(Expr e) { Expr 893 src/PartitionLoops.cpp Expr condition = mutate(op->condition); Expr 894 src/PartitionLoops.cpp Expr true_value = mutate(op->true_value); Expr 895 src/PartitionLoops.cpp Expr false_value = mutate(op->false_value); Expr 901 src/PartitionLoops.cpp Expr var = Variable::make(true_value.type(), var_name); Expr 910 src/PartitionLoops.cpp Expr var = Variable::make(false_value.type(), var_name); Expr 86 src/Prefetch.cpp Expr buf_min_i = Variable::make(Int(32), name + ".min." + dim_name); Expr 87 src/Prefetch.cpp Expr buf_extent_i = Variable::make(Int(32), name + ".extent." + dim_name); Expr 88 src/Prefetch.cpp Expr buf_max_i = buf_min_i + buf_extent_i - 1; Expr 108 src/Prefetch.cpp bool should_substitute_let(Expr e) { Expr 153 src/Prefetch.cpp Expr let = visit_let<Let, Expr>(op); Expr 170 src/Prefetch.cpp Expr extent = box[i].max - box[i].min + 1; Expr 196 src/Prefetch.cpp Expr loop_var = Variable::make(Int(32), op->name); Expr 213 src/Prefetch.cpp Expr fetch_at = loop_var + p.offset; Expr 235 src/Prefetch.cpp Expr predicate = prefetch_box.used.defined() ? prefetch_box.used : const_true(); Expr 286 src/Prefetch.cpp Expr new_offset = call->args[1]; Expr 288 src/Prefetch.cpp Expr stride = call->args[i+1]; Expr 294 src/Prefetch.cpp vector<Expr> args = {base, new_offset}; Expr 305 src/Prefetch.cpp << "Before:\n" << Expr(call) << "\nAfter:\n" << stmt << "\n"; Expr 319 src/Prefetch.cpp Expr max_byte_size; Expr 334 src/Prefetch.cpp vector<Expr> extents; Expr 335 src/Prefetch.cpp Expr new_offset = call->args[1]; Expr 337 src/Prefetch.cpp Expr extent = call->args[i]; Expr 338 src/Prefetch.cpp Expr stride = call->args[i+1]; Expr 339 src/Prefetch.cpp Expr stride_bytes = stride * elem_size; Expr 344 src/Prefetch.cpp Expr is_negative_stride = (stride < 0); Expr 345 src/Prefetch.cpp Expr outer_var = Variable::make(Int(32), index_name); Expr 346 src/Prefetch.cpp Expr outer_extent; Expr 354 src/Prefetch.cpp Expr abs_stride_bytes = Call::make(stride_bytes.type(), Call::abs, {stride_bytes}, Call::PureIntrinsic); Expr 361 src/Prefetch.cpp vector<Expr> args = {base, new_offset, Expr(1), simplify(max_byte_size / elem_size)}; Expr 368 src/Prefetch.cpp << "Before:\n" << Expr(call) << "\nAfter:\n" << stmt << "\n"; Expr 373 src/Prefetch.cpp SplitPrefetch(Expr bytes) : max_byte_size(bytes) {} Expr 384 src/Prefetch.cpp Expr max_byte_size; Expr 32 src/PrintLoopNest.cpp Scope<Expr> constants; Expr 85 src/PrintLoopNest.cpp Expr min_val = op->min, extent_val = op->extent; Expr 98 src/PrintLoopNest.cpp Expr max_val = simplify(min_val + extent_val - 1); Expr 43 src/Profiling.cpp Expr size; Expr 70 src/Profiling.cpp Expr compute_allocation_size(const vector<Expr> &extents, Expr 71 src/Profiling.cpp const Expr &condition, Expr 77 src/Profiling.cpp Expr cond = simplify(condition); Expr 95 src/Profiling.cpp Expr size = cast<uint64_t>(extents[0]); Expr 106 src/Profiling.cpp vector<Expr> new_extents; Expr 112 src/Profiling.cpp Expr condition = mutate(op->condition); Expr 115 src/Profiling.cpp Expr size = compute_allocation_size(new_extents, condition, op->type, op->name, on_stack); Expr 132 src/Profiling.cpp Expr new_expr; Expr 146 src/Profiling.cpp Expr profiler_pipeline_state = Variable::make(Handle(), "profiler_pipeline_state"); Expr 148 src/Profiling.cpp Expr set_task = Call::make(Int(32), "halide_profiler_memory_allocate", Expr 164 src/Profiling.cpp Expr profiler_pipeline_state = Variable::make(Handle(), "profiler_pipeline_state"); Expr 169 src/Profiling.cpp Expr set_task = Call::make(Int(32), "halide_profiler_memory_free", Expr 199 src/Profiling.cpp Expr profiler_token = Variable::make(Int(32), "profiler_token"); Expr 200 src/Profiling.cpp Expr profiler_state = Variable::make(Handle(), "profiler_state"); Expr 203 src/Profiling.cpp Expr set_task = Call::make(Int(32), "halide_profiler_set_current_func", Expr 221 src/Profiling.cpp Expr state = Variable::make(Handle(), "profiler_state"); Expr 247 src/Profiling.cpp Expr get_state = Call::make(Handle(), "halide_profiler_get_state", {}, Call::Extern); Expr 271 src/Profiling.cpp Expr func_names_buf = Variable::make(Handle(), "profiling_func_names"); Expr 273 src/Profiling.cpp Expr start_profiler = Call::make(Int(32), "halide_profiler_pipeline_start", Expr 276 src/Profiling.cpp Expr get_state = Call::make(Handle(), "halide_profiler_get_state", {}, Call::Extern); Expr 278 src/Profiling.cpp Expr get_pipeline_state = Call::make(Handle(), "halide_profiler_get_pipeline_state", {pipeline_name}, Call::Extern); Expr 280 src/Profiling.cpp Expr profiler_token = Variable::make(Int(32), "profiler_token"); Expr 282 src/Profiling.cpp Expr stop_profiler = Call::make(Int(32), Call::register_destructor, Expr 283 src/Profiling.cpp {Expr("halide_profiler_pipeline_end"), get_state}, Call::Intrinsic); Expr 287 src/Profiling.cpp Expr func_stack_peak_buf = Variable::make(Handle(), "profiling_func_stack_peak_buf"); Expr 289 src/Profiling.cpp Expr profiler_pipeline_state = Variable::make(Handle(), "profiler_pipeline_state"); Expr 295 src/Profiling.cpp Expr profiler_state = Variable::make(Handle(), "profiler_state"); Expr 23 src/Qualify.cpp Expr value = mutate(op->value); Expr 24 src/Qualify.cpp Expr body = mutate(op->body); Expr 31 src/Qualify.cpp Expr qualify(const string &prefix, Expr value) { Expr 15 src/Qualify.h Expr qualify(const std::string &prefix, Expr value); Expr 16 src/RDom.cpp RVar::operator Expr() const { Expr 24 src/RDom.cpp Expr RVar::min() const { Expr 28 src/RDom.cpp return Expr(); Expr 32 src/RDom.cpp Expr RVar::extent() const { Expr 36 src/RDom.cpp return Expr(); Expr 101 src/RDom.cpp void RDom::initialize_from_ranges(const std::vector<std::pair<Expr, Expr>> &ranges, string name) { Expr 194 src/RDom.cpp RDom::operator Expr() const { Expr 200 src/RDom.cpp return Expr(x); Expr 212 src/RDom.cpp void RDom::where(Expr predicate) { Expr 233 src/RDom.cpp Expr pred = simplify(dom.domain().predicate()); Expr 46 src/RDom.h EXPORT Expr min() const; Expr 50 src/RDom.h EXPORT Expr extent() const; Expr 59 src/RDom.h EXPORT operator Expr() const; Expr 184 src/RDom.h EXPORT void initialize_from_ranges(const std::vector<std::pair<Expr, Expr>> &ranges, std::string name = ""); Expr 187 src/RDom.h NO_INLINE void initialize_from_ranges(std::vector<std::pair<Expr, Expr>> &ranges, Expr min, Expr extent, Args&&... args) { Expr 199 src/RDom.h NO_INLINE RDom(const std::vector<std::pair<Expr, Expr>> &ranges, std::string name = "") { Expr 204 src/RDom.h NO_INLINE RDom(Expr min, Expr extent, Args&&... args) { Expr 207 src/RDom.h std::vector<std::pair<Expr, Expr>> ranges; Expr 244 src/RDom.h EXPORT operator Expr() const; Expr 309 src/RDom.h EXPORT void where(Expr predicate); Expr 20 src/Random.cpp Expr rng32(Expr x) { Expr 66 src/Random.cpp Expr random_int(const vector<Expr> &e) { Expr 70 src/Random.cpp Expr result = rng32(cast(UInt(32), e[0])); Expr 88 src/Random.cpp Expr random_float(const vector<Expr> &e) { Expr 89 src/Random.cpp Expr result = random_int(e); Expr 101 src/Random.cpp vector<Expr> args = op->args; Expr 117 src/Random.cpp vector<Expr> extra_args; Expr 128 src/Random.cpp Expr lower_random(Expr e, const vector<string> &free_vars, int tag) { Expr 16 src/Random.h Expr random_float(const std::vector<Expr> &); Expr 21 src/Random.h Expr random_int(const std::vector<Expr> &); Expr 26 src/Random.h Expr lower_random(Expr e, const std::vector<std::string> &free_vars, int tag); Expr 15 src/Reduction.cpp void check(Expr pred, std::vector<Expr> &expected) { Expr 16 src/Reduction.cpp std::vector<Expr> result; Expr 47 src/Reduction.cpp Expr x = Var("x"), y = Var("y"), z = Var("z"), w = Var("w"); Expr 50 src/Reduction.cpp std::vector<Expr> expected; Expr 56 src/Reduction.cpp std::vector<Expr> expected; Expr 62 src/Reduction.cpp std::vector<Expr> expected; Expr 69 src/Reduction.cpp std::vector<Expr> expected; Expr 77 src/Reduction.cpp std::vector<Expr> expected; Expr 83 src/Reduction.cpp std::vector<Expr> expected; Expr 95 src/Reduction.cpp Expr predicate; Expr 173 src/Reduction.cpp Expr predicate; Expr 175 src/Reduction.cpp DropSelfReferences(Expr p, const ReductionDomain &d) : Expr 180 src/Reduction.cpp void ReductionDomain::set_predicate(Expr p) { Expr 186 src/Reduction.cpp void ReductionDomain::where(Expr predicate) { Expr 190 src/Reduction.cpp Expr ReductionDomain::predicate() const { Expr 194 src/Reduction.cpp std::vector<Expr> ReductionDomain::split_predicate() const { Expr 195 src/Reduction.cpp std::vector<Expr> predicates; Expr 18 src/Reduction.h Expr min, extent; Expr 74 src/Reduction.h EXPORT void where(Expr predicate); Expr 77 src/Reduction.h EXPORT Expr predicate() const; Expr 80 src/Reduction.h EXPORT void set_predicate(Expr); Expr 85 src/Reduction.h EXPORT std::vector<Expr> split_predicate() const; Expr 15 src/RemoveUndef.cpp Expr predicate; Expr 23 src/RemoveUndef.cpp expr = Expr(); Expr 31 src/RemoveUndef.cpp Expr a = mutate(op->a); Expr 33 src/RemoveUndef.cpp Expr b = mutate(op->b); Expr 45 src/RemoveUndef.cpp Expr value = mutate(op->value); Expr 71 src/RemoveUndef.cpp Expr a = mutate(op->a); Expr 80 src/RemoveUndef.cpp Expr cond = mutate(op->condition); Expr 81 src/RemoveUndef.cpp Expr t = mutate(op->true_value); Expr 82 src/RemoveUndef.cpp Expr f = mutate(op->false_value); Expr 85 src/RemoveUndef.cpp expr = Expr(); Expr 90 src/RemoveUndef.cpp expr = Expr(); Expr 99 src/RemoveUndef.cpp f = Expr(); Expr 120 src/RemoveUndef.cpp Expr pred = mutate(op->predicate); Expr 121 src/RemoveUndef.cpp Expr index = mutate(op->index); Expr 131 src/RemoveUndef.cpp Expr base = mutate(op->base); Expr 133 src/RemoveUndef.cpp Expr stride = mutate(op->stride); Expr 144 src/RemoveUndef.cpp Expr value = mutate(op->value); Expr 152 src/RemoveUndef.cpp expr = Expr(); Expr 156 src/RemoveUndef.cpp vector<Expr> new_args(op->args.size()); Expr 161 src/RemoveUndef.cpp Expr old_arg = op->args[i]; Expr 162 src/RemoveUndef.cpp Expr new_arg = mutate(old_arg); Expr 177 src/RemoveUndef.cpp Expr value = mutate(op->value); Expr 181 src/RemoveUndef.cpp Expr body = mutate(op->body); Expr 198 src/RemoveUndef.cpp Expr value = mutate(op->value); Expr 218 src/RemoveUndef.cpp Expr condition = mutate(op->condition); Expr 224 src/RemoveUndef.cpp Expr message = mutate(op->message); Expr 248 src/RemoveUndef.cpp Expr min = mutate(op->min); Expr 253 src/RemoveUndef.cpp Expr extent = mutate(op->extent); Expr 270 src/RemoveUndef.cpp predicate = Expr(); Expr 272 src/RemoveUndef.cpp Expr pred = mutate(op->predicate); Expr 273 src/RemoveUndef.cpp Expr value = mutate(op->value); Expr 279 src/RemoveUndef.cpp Expr index = mutate(op->index); Expr 288 src/RemoveUndef.cpp predicate = Expr(); Expr 299 src/RemoveUndef.cpp predicate = Expr(); Expr 301 src/RemoveUndef.cpp vector<Expr> new_args(op->args.size()); Expr 302 src/RemoveUndef.cpp vector<Expr> new_values(op->values.size()); Expr 303 src/RemoveUndef.cpp vector<Expr> args_predicates; Expr 304 src/RemoveUndef.cpp vector<Expr> values_predicates; Expr 309 src/RemoveUndef.cpp Expr old_arg = op->args[i]; Expr 310 src/RemoveUndef.cpp predicate = Expr(); Expr 311 src/RemoveUndef.cpp Expr new_arg = mutate(old_arg); Expr 330 src/RemoveUndef.cpp Expr old_value = op->values[i]; Expr 331 src/RemoveUndef.cpp predicate = Expr(); Expr 332 src/RemoveUndef.cpp Expr new_value = mutate(old_value); Expr 357 src/RemoveUndef.cpp predicate = Expr(); Expr 366 src/RemoveUndef.cpp std::vector<Expr> new_extents; Expr 379 src/RemoveUndef.cpp Expr condition = mutate(op->condition); Expr 382 src/RemoveUndef.cpp Expr new_expr; Expr 407 src/RemoveUndef.cpp Expr old_min = op->bounds[i].min; Expr 408 src/RemoveUndef.cpp Expr old_extent = op->bounds[i].extent; Expr 409 src/RemoveUndef.cpp Expr new_min = mutate(old_min); Expr 414 src/RemoveUndef.cpp Expr new_extent = mutate(old_extent); Expr 427 src/RemoveUndef.cpp Expr condition = mutate(op->condition); Expr 455 src/RemoveUndef.cpp Expr condition = mutate(op->condition); Expr 484 src/RemoveUndef.cpp Expr v = mutate(op->value); Expr 170 src/Schedule.h Expr factor; Expr 217 src/Schedule.h Expr min, extent, modulus, remainder; Expr 224 src/Schedule.h Expr alignment; Expr 225 src/Schedule.h Expr fold_factor; Expr 232 src/Schedule.h Expr offset; Expr 35 src/ScheduleFunctions.cpp Expr value; Expr 55 src/ScheduleFunctions.cpp bool contains_impure_call(const Expr &expr) { Expr 65 src/ScheduleFunctions.cpp const vector<Expr> &site, Expr 66 src/ScheduleFunctions.cpp const vector<Expr> &values, Expr 67 src/ScheduleFunctions.cpp const vector<Expr> &predicates, Expr 82 src/ScheduleFunctions.cpp map<string, Expr> dim_extent_alignment; Expr 122 src/ScheduleFunctions.cpp Container c = {Container::For, i, prefix + dim.var, Expr()}; Expr 145 src/ScheduleFunctions.cpp for (Expr pred : predicates) { Expr 211 src/ScheduleFunctions.cpp Expr min = Variable::make(Int(32), nest[i].name + ".loop_min"); Expr 212 src/ScheduleFunctions.cpp Expr extent = Variable::make(Int(32), nest[i].name + ".loop_extent"); Expr 223 src/ScheduleFunctions.cpp vector<std::pair<string, Expr>> let_stmts = compute_loop_bounds_after_split(split, prefix); Expr 240 src/ScheduleFunctions.cpp Expr max = Variable::make(Int(32), var + ".max"); Expr 241 src/ScheduleFunctions.cpp Expr min = Variable::make(Int(32), var + ".min"); // Inject instance name here? (compute instance names during lowering) Expr 253 src/ScheduleFunctions.cpp Expr rmin = Variable::make(Int(32), p + ".min"); Expr 254 src/ScheduleFunctions.cpp Expr rmax = Variable::make(Int(32), p + ".max"); Expr 273 src/ScheduleFunctions.cpp vector<Expr> site(def.args().size()); Expr 274 src/ScheduleFunctions.cpp vector<Expr> values(def.values().size()); Expr 276 src/ScheduleFunctions.cpp Expr v = def.values()[i]; Expr 284 src/ScheduleFunctions.cpp Expr s = def.args()[i]; Expr 298 src/ScheduleFunctions.cpp Expr c = s.condition; Expr 307 src/ScheduleFunctions.cpp Expr specialize_fail_error = Expr 332 src/ScheduleFunctions.cpp vector<Expr> extern_call_args; Expr 337 src/ScheduleFunctions.cpp vector<pair<string, Expr>> lets; Expr 342 src/ScheduleFunctions.cpp vector<pair<Expr, int>> buffers_to_annotate; Expr 343 src/ScheduleFunctions.cpp vector<Expr> buffers_contents_to_annotate; Expr 355 src/ScheduleFunctions.cpp Expr buffer = Variable::make(type_of<struct halide_buffer_t *>(), buf_name); Expr 364 src/ScheduleFunctions.cpp Expr buf = Variable::make(type_of<struct halide_buffer_t *>(), b.name() + ".buffer", p); Expr 370 src/ScheduleFunctions.cpp Expr buf = Variable::make(type_of<struct halide_buffer_t *>(), p.name() + ".buffer", p); Expr 394 src/ScheduleFunctions.cpp Expr buffer = Variable::make(type_of<struct halide_buffer_t *>(), buf_name); Expr 415 src/ScheduleFunctions.cpp Expr src_buffer = Variable::make(type_of<struct halide_buffer_t *>(), src_buf_name); Expr 417 src/ScheduleFunctions.cpp Expr alloca_size = Call::make(Int(32), Call::size_of_halide_buffer_t, {}, Call::Intrinsic); Expr 418 src/ScheduleFunctions.cpp Expr output_buffer_t = Call::make(type_of<struct halide_buffer_t *>(), Call::alloca, Expr 421 src/ScheduleFunctions.cpp vector<Expr> args(5); Expr 427 src/ScheduleFunctions.cpp vector<Expr> mins, extents; Expr 431 src/ScheduleFunctions.cpp Expr min = Variable::make(Int(32), var + ".min"); Expr 432 src/ScheduleFunctions.cpp Expr max = Variable::make(Int(32), var + ".max"); Expr 454 src/ScheduleFunctions.cpp Expr buffer = p.first; Expr 458 src/ScheduleFunctions.cpp Expr sizeof_buffer_t = cast<uint64_t>(Call::make(Int(32), Call::size_of_halide_buffer_t, {}, Call::Intrinsic)); Expr 462 src/ScheduleFunctions.cpp Expr shape = Call::make(type_of<halide_dimension_t *>(), Call::buffer_get_shape, {buffer}, Call::Extern); Expr 463 src/ScheduleFunctions.cpp Expr shape_size = Expr((uint64_t)(sizeof(halide_dimension_t) * dimensions)); Expr 487 src/ScheduleFunctions.cpp Expr e = f.make_call_to_extern_definition(extern_call_args, target); Expr 491 src/ScheduleFunctions.cpp Expr result = Variable::make(Int(32), result_name); Expr 492 src/ScheduleFunctions.cpp Expr error = Call::make(Int(32), "halide_error_extern_stage_failed", Expr 551 src/ScheduleFunctions.cpp Expr min_var = Variable::make(Int(32), min_name); Expr 552 src/ScheduleFunctions.cpp Expr max_var = Variable::make(Int(32), max_name); Expr 561 src/ScheduleFunctions.cpp Expr max_val = (b.extent + b.min) - 1; Expr 562 src/ScheduleFunctions.cpp Expr min_val = b.min; Expr 564 src/ScheduleFunctions.cpp Expr check = (min_val <= min_var) && (max_val >= max_var); Expr 565 src/ScheduleFunctions.cpp Expr error_msg = Call::make(Int(32), "halide_error_explicit_bounds_too_small", Expr 659 src/ScheduleFunctions.cpp Expr min = Variable::make(Int(32), name + "." + arg + ".min_realized"); Expr 660 src/ScheduleFunctions.cpp Expr extent = Variable::make(Int(32), name + "." + arg + ".extent_realized"); Expr 703 src/ScheduleFunctions.cpp vector<pair<string, Expr>> lets; Expr 35 src/ScheduleParam.h operator Expr() const { Expr 75 src/ScheduleParam.h Expr scalar_expr; Expr 40 src/Simplify.cpp bool is_simple_const(const Expr &e) { Expr 55 src/Simplify.cpp bool is_var_relop_simple_const(const Expr &e, string* name) { Expr 75 src/Simplify.cpp bool is_var_simple_const_comparison(const Expr &e, string* name) { Expr 94 src/Simplify.cpp Expr signed_integer_overflow_error(Type t) { Expr 102 src/Simplify.cpp Expr indeterminate_expression_error(Type t) { Expr 114 src/Simplify.cpp bool propagate_indeterminate_expression(const Expr &e, Type t, Expr *expr) { Expr 127 src/Simplify.cpp bool propagate_indeterminate_expression(const Expr &e0, const Expr &e1, Type t, Expr *expr) { Expr 132 src/Simplify.cpp bool propagate_indeterminate_expression(const Expr &e0, const Expr &e1, const Expr &e2, Type t, Expr *expr) { Expr 164 src/Simplify.cpp bool expr_is_pure(const Expr &e) { Expr 194 src/Simplify.cpp Expr mutate(Expr e) { Expr 198 src/Simplify.cpp Expr new_e = IRMutator::mutate(e); Expr 231 src/Simplify.cpp Expr replacement; Expr 266 src/Simplify.cpp bool const_float(const Expr &e, double *f) { Expr 277 src/Simplify.cpp bool const_int(const Expr &e, int64_t *i) { Expr 288 src/Simplify.cpp bool const_uint(const Expr &e, uint64_t *u) { Expr 305 src/Simplify.cpp bool const_int_bounds(const Expr &e, int64_t *min_val, int64_t *max_val) { Expr 446 src/Simplify.cpp Expr is_round_up_div(const Expr &e, int64_t factor) { Expr 447 src/Simplify.cpp if (!no_overflow(e.type())) return Expr(); Expr 449 src/Simplify.cpp if (!div) return Expr(); Expr 450 src/Simplify.cpp if (!is_const(div->b, factor)) return Expr(); Expr 452 src/Simplify.cpp if (!add) return Expr(); Expr 453 src/Simplify.cpp if (!is_const(add->b, factor-1)) return Expr(); Expr 459 src/Simplify.cpp Expr is_round_up(const Expr &e, int64_t *factor) { Expr 460 src/Simplify.cpp if (!no_overflow(e.type())) return Expr(); Expr 462 src/Simplify.cpp if (!mul) return Expr(); Expr 463 src/Simplify.cpp if (!const_int(mul->b, factor)) return Expr(); Expr 468 src/Simplify.cpp Expr value = mutate(op->value); Expr 588 src/Simplify.cpp Expr a = mutate(op->a); Expr 589 src/Simplify.cpp Expr b = mutate(op->b); Expr 945 src/Simplify.cpp Expr ratio = make_const(a.type(), div_imp(ia, ib)); Expr 956 src/Simplify.cpp Expr a = mutate(op->a); Expr 957 src/Simplify.cpp Expr b = mutate(op->b); Expr 1359 src/Simplify.cpp Expr x = add_a_a->a, a = add_a_a->b, b = add_b_a->b, c = div_a->b; Expr 1376 src/Simplify.cpp Expr x = div_a->a, b = add_b_a->b, c = div_a->b; Expr 1387 src/Simplify.cpp Expr x = add_a_a->a, a = add_a_a->b, c = div_a->b; Expr 1398 src/Simplify.cpp Expr x = div_a->a, b = sub_b_a->b, c = div_a->b; Expr 1409 src/Simplify.cpp Expr x = sub_a_a->a, a = sub_a_a->b, c = div_a->b; Expr 1423 src/Simplify.cpp Expr x = sub_a_a->a, a = sub_a_a->b, b = add_b_a->b, c = div_a->b; Expr 1437 src/Simplify.cpp Expr x = add_a_a->a, a = add_a_a->b, b = sub_b_a->b, c = div_a->b; Expr 1447 src/Simplify.cpp Expr a = mutate(op->a); Expr 1448 src/Simplify.cpp Expr b = mutate(op->b); Expr 1513 src/Simplify.cpp Expr m = broadcast_b->value; Expr 1516 src/Simplify.cpp Expr m = broadcast_a->value; Expr 1550 src/Simplify.cpp Expr a = mutate(op->a); Expr 1551 src/Simplify.cpp Expr b = mutate(op->b); Expr 1719 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1729 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1740 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1750 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1762 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1773 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1784 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1795 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1806 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1817 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1828 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1840 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1849 src/Simplify.cpp Expr ratio = make_const(op->type, div_imp(ia, ib)); Expr 1973 src/Simplify.cpp Expr a = mutate(op->a); Expr 1974 src/Simplify.cpp Expr b = mutate(op->b); Expr 2088 src/Simplify.cpp Expr new_base = make_const(ramp_a->base.type(), mod_imp((int64_t)mod_rem.remainder, ib)); Expr 2100 src/Simplify.cpp Expr new_base = make_const(t, mod_imp((int64_t)mod_rem.remainder, ib)); Expr 2110 src/Simplify.cpp Expr a = mutate(op->a); Expr 2111 src/Simplify.cpp Expr b = mutate(op->b); Expr 2159 src/Simplify.cpp Expr a_round_up = is_round_up(a, &a_round_up_factor); Expr 2160 src/Simplify.cpp Expr b_round_up = is_round_up(b, &b_round_up_factor); Expr 2431 src/Simplify.cpp Expr factor = make_const(op->type, ia); Expr 2443 src/Simplify.cpp Expr factor = make_const(op->type, ia); Expr 2456 src/Simplify.cpp Expr ratio = make_const(op->type, ib / ia); Expr 2457 src/Simplify.cpp Expr factor = make_const(op->type, ia); Expr 2501 src/Simplify.cpp Expr a = mutate(op->a), b = mutate(op->b); Expr 2793 src/Simplify.cpp Expr factor = make_const(op->type, ia); Expr 2805 src/Simplify.cpp Expr factor = make_const(op->type, ia); Expr 2818 src/Simplify.cpp Expr ratio = make_const(op->type, ib / ia); Expr 2819 src/Simplify.cpp Expr factor = make_const(op->type, ia); Expr 2863 src/Simplify.cpp Expr delta = mutate(op->a - op->b); Expr 2874 src/Simplify.cpp Expr zero = make_zero(delta.type()); Expr 2883 src/Simplify.cpp Expr deltai = extract_lane(delta, i); Expr 2960 src/Simplify.cpp Expr a = mutate(op->a), b = mutate(op->b); Expr 2978 src/Simplify.cpp Expr delta = mutate(a - b); Expr 3044 src/Simplify.cpp Expr bases_lt = (ramp_a->base < ramp_b->base); Expr 3132 src/Simplify.cpp Expr one = make_one(a.type()); Expr 3137 src/Simplify.cpp Expr lt_a = mutate(min_a->a < b); Expr 3138 src/Simplify.cpp Expr lt_b = mutate(min_a->b < b); Expr 3148 src/Simplify.cpp Expr lt_a = mutate(max_a->a < b); Expr 3149 src/Simplify.cpp Expr lt_b = mutate(max_a->b < b); Expr 3159 src/Simplify.cpp Expr lt_a = mutate(a < min_b->a); Expr 3160 src/Simplify.cpp Expr lt_b = mutate(a < min_b->b); Expr 3170 src/Simplify.cpp Expr lt_a = mutate(a < max_b->a); Expr 3171 src/Simplify.cpp Expr lt_b = mutate(a < max_b->b); Expr 3296 src/Simplify.cpp Expr a = mutate(op->a); Expr 3297 src/Simplify.cpp Expr b = mutate(op->b); Expr 3491 src/Simplify.cpp Expr a = mutate(op->a), b = mutate(op->b); Expr 3669 src/Simplify.cpp Expr a = mutate(op->a); Expr 3703 src/Simplify.cpp Expr condition = mutate(op->condition); Expr 3704 src/Simplify.cpp Expr true_value = mutate(op->true_value); Expr 3705 src/Simplify.cpp Expr false_value = mutate(op->false_value); Expr 3857 src/Simplify.cpp Expr base = mutate(op->base); Expr 3858 src/Simplify.cpp Expr stride = mutate(op->stride); Expr 3871 src/Simplify.cpp Expr condition = mutate(op->condition); Expr 3903 src/Simplify.cpp vector<Expr> stack; Expr 3907 src/Simplify.cpp Expr next = stack.back(); Expr 3978 src/Simplify.cpp Expr predicate = mutate(op->predicate); Expr 3979 src/Simplify.cpp Expr index = mutate(op->index); Expr 3988 src/Simplify.cpp Expr load = Load::make(op->type.element_of(), op->name, b_index->value, op->image, op->param, b_pred->value); Expr 4005 src/Simplify.cpp Expr a = mutate(op->args[0]), b = mutate(op->args[1]); Expr 4044 src/Simplify.cpp Expr a = mutate(op->args[0]), b = mutate(op->args[1]); Expr 4069 src/Simplify.cpp Expr a = mutate(op->args[0]), b = mutate(op->args[1]); Expr 4080 src/Simplify.cpp Expr a = mutate(op->args[0]); Expr 4107 src/Simplify.cpp Expr arg = mutate(op->args[0]); Expr 4119 src/Simplify.cpp vector<Expr> new_args; Expr 4122 src/Simplify.cpp Expr arg = mutate(op->args[i]); Expr 4168 src/Simplify.cpp Expr arg = mutate(op->args[0]); Expr 4181 src/Simplify.cpp Expr arg = mutate(op->args[0]); Expr 4194 src/Simplify.cpp Expr arg = mutate(op->args[0]); Expr 4207 src/Simplify.cpp Expr arg0 = mutate(op->args[0]); Expr 4208 src/Simplify.cpp Expr arg1 = mutate(op->args[1]); Expr 4225 src/Simplify.cpp Expr arg = mutate(op->args[0]); Expr 4257 src/Simplify.cpp vector<Expr> args(op->args); Expr 4271 src/Simplify.cpp Expr extent_0 = args[i]; Expr 4272 src/Simplify.cpp Expr stride_0 = args[i + 1]; Expr 4274 src/Simplify.cpp Expr extent_1 = args[j]; Expr 4275 src/Simplify.cpp Expr stride_1 = args[j + 1]; Expr 4278 src/Simplify.cpp Expr new_extent = mutate(extent_0 * extent_1); Expr 4279 src/Simplify.cpp Expr new_stride = stride_0; Expr 4317 src/Simplify.cpp vector<Expr> new_vectors; Expr 4319 src/Simplify.cpp for (Expr vector : op->vectors) { Expr 4320 src/Simplify.cpp Expr new_vector = mutate(vector); Expr 4330 src/Simplify.cpp vector<Expr> load_predicates; Expr 4331 src/Simplify.cpp vector<Expr> load_indices; Expr 4333 src/Simplify.cpp for (Expr e : new_vectors) { Expr 4346 src/Simplify.cpp Expr shuffled_index = Shuffle::make(load_indices, op->indices); Expr 4349 src/Simplify.cpp Expr shuffled_predicate; Expr 4373 src/Simplify.cpp Expr check = mutate(b1->value - b2->value); Expr 4403 src/Simplify.cpp Expr diff = mutate(new_vectors[i] - new_vectors[i-1]); Expr 4406 src/Simplify.cpp Expr check = mutate(b->value * terms - r->stride); Expr 4465 src/Simplify.cpp Expr diff; Expr 4472 src/Simplify.cpp Expr check = mutate(b->value - r->stride * new_vectors[i-1].type().lanes()); Expr 4487 src/Simplify.cpp Expr stride = mutate(new_vectors[1] - new_vectors[0]); Expr 4494 src/Simplify.cpp Expr check = mutate(new_vectors[i] - new_vectors[i - 1] - stride); Expr 4515 src/Simplify.cpp Expr hoist_slice_vector(Expr e) { Expr 4530 src/Simplify.cpp const std::vector<Expr> &slices_a = shuffle_a->vectors; Expr 4531 src/Simplify.cpp const std::vector<Expr> &slices_b = shuffle_b->vectors; Expr 4542 src/Simplify.cpp vector<Expr> new_slices; Expr 4557 src/Simplify.cpp Expr value = mutate(op->value); Expr 4561 src/Simplify.cpp Expr new_value = value; Expr 4563 src/Simplify.cpp Expr new_var = Variable::make(new_value.type(), new_name); Expr 4564 src/Simplify.cpp Expr replacement = new_var; Expr 4596 src/Simplify.cpp new_value = Expr(); Expr 4600 src/Simplify.cpp new_value = Expr(); Expr 4649 src/Simplify.cpp Expr op_a = var_a ? shuffle->vectors[0] : new_var; Expr 4650 src/Simplify.cpp Expr op_b = var_a ? new_var : shuffle->vectors[1]; Expr 4660 src/Simplify.cpp new_value = Expr(); Expr 4661 src/Simplify.cpp replacement = Expr(); Expr 4748 src/Simplify.cpp expr = simplify_let<Let, Expr>(op); Expr 4785 src/Simplify.cpp Expr new_min = mutate(op->min); Expr 4786 src/Simplify.cpp Expr new_extent = mutate(op->extent); Expr 4822 src/Simplify.cpp Expr predicate = mutate(op->predicate); Expr 4823 src/Simplify.cpp Expr value = mutate(op->value); Expr 4824 src/Simplify.cpp Expr index = mutate(op->index); Expr 4846 src/Simplify.cpp std::vector<Expr> new_extents; Expr 4853 src/Simplify.cpp Expr condition = mutate(op->condition); Expr 4854 src/Simplify.cpp Expr new_expr; Expr 4881 src/Simplify.cpp Expr value = mutate(op->value); Expr 4884 src/Simplify.cpp vector<pair<string, Expr>> lets; Expr 4942 src/Simplify.cpp Expr new_var = Variable::make(let_first->value.type(), var_name); Expr 4985 src/Simplify.cpp Expr simplify(Expr e, bool simplify_lets, Expr 5000 src/Simplify.cpp Expr mutate(Expr e) { Expr 5009 src/Simplify.cpp bool can_prove(Expr e) { Expr 5017 src/Simplify.cpp void check(const Expr &a, const Expr &b) { Expr 5019 src/Simplify.cpp Expr simpler = simplify(a); Expr 5041 src/Simplify.cpp void check_in_bounds(const Expr &a, const Expr &b, const Scope<Interval> &bi) { Expr 5043 src/Simplify.cpp Expr simpler = simplify(a, true, bi); Expr 5054 src/Simplify.cpp Expr interleave_vectors(const vector<Expr> &e) { Expr 5058 src/Simplify.cpp Expr concat_vectors(const vector<Expr> &e) { Expr 5062 src/Simplify.cpp Expr slice(const Expr &e, int begin, int stride, int w) { Expr 5066 src/Simplify.cpp Expr ramp(const Expr &base, const Expr &stride, int w) { Expr 5070 src/Simplify.cpp Expr broadcast(const Expr &base, int w) { Expr 5075 src/Simplify.cpp Expr x = Var("x"); Expr 5118 src/Simplify.cpp check(cast(Float(64), 0.5f), Expr(0.5)); Expr 5120 src/Simplify.cpp (x + Expr(-0.5)) * (x + Expr(-0.5))); Expr 5136 src/Simplify.cpp Expr x = Var("x"), y = Var("y"), z = Var("z"), w = Var("w"), v = Var("v"); Expr 5137 src/Simplify.cpp Expr xf = cast<float>(x); Expr 5138 src/Simplify.cpp Expr yf = cast<float>(y); Expr 5139 src/Simplify.cpp Expr t = const_true(), f = const_false(); Expr 5144 src/Simplify.cpp check(Expr(ramp(x, 2, 3)) + Expr(ramp(y, 4, 3)), ramp(x+y, 6, 3)); Expr 5145 src/Simplify.cpp check(Expr(broadcast(4.0f, 5)) + Expr(ramp(3.25f, 4.5f, 5)), ramp(7.25f, 4.5f, 5)); Expr 5146 src/Simplify.cpp check(Expr(ramp(3.25f, 4.5f, 5)) + Expr(broadcast(4.0f, 5)), ramp(7.25f, 4.5f, 5)); Expr 5147 src/Simplify.cpp check(Expr(broadcast(3, 3)) + Expr(broadcast(1, 3)), broadcast(4, 3)); Expr 5162 src/Simplify.cpp check(Expr(ramp(x, 2, 3)) - Expr(ramp(y, 4, 3)), ramp(x-y, -2, 3)); Expr 5163 src/Simplify.cpp check(Expr(broadcast(4.0f, 5)) - Expr(ramp(3.25f, 4.5f, 5)), ramp(0.75f, -4.5f, 5)); Expr 5164 src/Simplify.cpp check(Expr(ramp(3.25f, 4.5f, 5)) - Expr(broadcast(4.0f, 5)), ramp(-0.75f, 4.5f, 5)); Expr 5165 src/Simplify.cpp check(Expr(broadcast(3, 3)) - Expr(broadcast(1, 3)), broadcast(2, 3)); Expr 5202 src/Simplify.cpp check(Expr(2.0f)*4.0f, 8.0f); Expr 5203 src/Simplify.cpp check(Expr(2)*4, 8); Expr 5206 src/Simplify.cpp check(Expr(broadcast(4.0f, 5)) * Expr(ramp(3.0f, 4.0f, 5)), ramp(12.0f, 16.0f, 5)); Expr 5207 src/Simplify.cpp check(Expr(ramp(3.0f, 4.0f, 5)) * Expr(broadcast(2.0f, 5)), ramp(6.0f, 8.0f, 5)); Expr 5208 src/Simplify.cpp check(Expr(broadcast(3, 3)) * Expr(broadcast(2, 3)), broadcast(6, 3)); Expr 5223 src/Simplify.cpp check(Expr(7)/3, 2); Expr 5224 src/Simplify.cpp check(Expr(6.0f)/2.0f, 3.0f); Expr 5314 src/Simplify.cpp check(Expr(23) / 4, Expr(5)); Expr 5315 src/Simplify.cpp check(Expr(-23) / 4, Expr(-6)); Expr 5316 src/Simplify.cpp check(Expr(-23) / -4, Expr(6)); Expr 5317 src/Simplify.cpp check(Expr(23) / -4, Expr(-5)); Expr 5318 src/Simplify.cpp check(Expr(-2000000000) / 1000000001, Expr(-2)); Expr 5319 src/Simplify.cpp check(Expr(23) % 4, Expr(3)); Expr 5320 src/Simplify.cpp check(Expr(-23) % 4, Expr(1)); Expr 5321 src/Simplify.cpp check(Expr(-23) % -4, Expr(1)); Expr 5322 src/Simplify.cpp check(Expr(23) % -4, Expr(3)); Expr 5323 src/Simplify.cpp check(Expr(-2000000000) % 1000000001, Expr(2)); Expr 5325 src/Simplify.cpp check(Expr(3) + Expr(8), 11); Expr 5326 src/Simplify.cpp check(Expr(3.25f) + Expr(7.75f), 11.0f); Expr 5328 src/Simplify.cpp check(Expr(7) % 2, 1); Expr 5329 src/Simplify.cpp check(Expr(7.25f) % 2.0f, 1.25f); Expr 5330 src/Simplify.cpp check(Expr(-7.25f) % 2.0f, 0.75f); Expr 5331 src/Simplify.cpp check(Expr(-7.25f) % -2.0f, -1.25f); Expr 5332 src/Simplify.cpp check(Expr(7.25f) % -2.0f, -0.75f); Expr 5336 src/Simplify.cpp Expr x = Var("x"), y = Var("y"), z = Var("z"); Expr 5338 src/Simplify.cpp check(Expr(broadcast(y, 4)) / Expr(broadcast(x, 4)), Expr 5339 src/Simplify.cpp Expr(broadcast(y/x, 4))); Expr 5340 src/Simplify.cpp check(Expr(ramp(x, 4, 4)) / 2, ramp(x/2, 2, 4)); Expr 5341 src/Simplify.cpp check(Expr(ramp(x, -4, 7)) / 2, ramp(x/2, -2, 7)); Expr 5342 src/Simplify.cpp check(Expr(ramp(x, 4, 5)) / -2, ramp(x/-2, -2, 5)); Expr 5343 src/Simplify.cpp check(Expr(ramp(x, -8, 5)) / -2, ramp(x/-2, 4, 5)); Expr 5345 src/Simplify.cpp check(Expr(ramp(4*x, 1, 4)) / 4, broadcast(x, 4)); Expr 5346 src/Simplify.cpp check(Expr(ramp(x*4, 1, 3)) / 4, broadcast(x, 3)); Expr 5347 src/Simplify.cpp check(Expr(ramp(x*8, 2, 4)) / 8, broadcast(x, 4)); Expr 5348 src/Simplify.cpp check(Expr(ramp(x*8, 3, 3)) / 8, broadcast(x, 3)); Expr 5349 src/Simplify.cpp check(Expr(ramp(0, 1, 8)) % 16, Expr(ramp(0, 1, 8))); Expr 5350 src/Simplify.cpp check(Expr(ramp(8, 1, 8)) % 16, Expr(ramp(8, 1, 8))); Expr 5351 src/Simplify.cpp check(Expr(ramp(9, 1, 8)) % 16, Expr(ramp(9, 1, 8)) % 16); Expr 5352 src/Simplify.cpp check(Expr(ramp(16, 1, 8)) % 16, Expr(ramp(0, 1, 8))); Expr 5353 src/Simplify.cpp check(Expr(ramp(0, 1, 8)) % 8, Expr(ramp(0, 1, 8))); Expr 5354 src/Simplify.cpp check(Expr(ramp(x*8+17, 1, 4)) % 8, Expr(ramp(1, 1, 4))); Expr 5355 src/Simplify.cpp check(Expr(ramp(x*8+17, 1, 8)) % 8, Expr(ramp(1, 1, 8) % 8)); Expr 5358 src/Simplify.cpp check(Expr(broadcast(x, 4)) % Expr(broadcast(y, 4)), Expr 5359 src/Simplify.cpp Expr(broadcast(x % y, 4))); Expr 5360 src/Simplify.cpp check(Expr(ramp(x, 2, 4)) % (broadcast(2, 4)), Expr 5362 src/Simplify.cpp check(Expr(ramp(2*x+1, 4, 4)) % (broadcast(2, 4)), Expr 5369 src/Simplify.cpp Expr test = select(ramp(const_true(), const_true(), 2), Expr 5373 src/Simplify.cpp Expr expected = !(ramp(const_true(), const_true(), 2)) || Expr 5379 src/Simplify.cpp Expr test = select(ramp(const_true(), const_true(), 2), Expr 5383 src/Simplify.cpp Expr expected = (!ramp(const_true(), const_true(), 2)) && Expr 5390 src/Simplify.cpp Expr x = Var("x"), y = Var("y"), z = Var("z"); Expr 5392 src/Simplify.cpp check(min(Expr(7), 3), 3); Expr 5393 src/Simplify.cpp check(min(Expr(4.25f), 1.25f), 1.25f); Expr 5405 src/Simplify.cpp check(max(Expr(7), 3), 7); Expr 5406 src/Simplify.cpp check(max(Expr(4.25f), 1.25f), 4.25f); Expr 5583 src/Simplify.cpp Expr one = broadcast(cast(Int(16), 1), 64); Expr 5584 src/Simplify.cpp Expr three = broadcast(cast(Int(16), 3), 64); Expr 5585 src/Simplify.cpp Expr four = broadcast(cast(Int(16), 4), 64); Expr 5586 src/Simplify.cpp Expr five = broadcast(cast(Int(16), 5), 64); Expr 5587 src/Simplify.cpp Expr v1 = Variable::make(Int(16).with_lanes(64), "x"); Expr 5588 src/Simplify.cpp Expr v2 = Variable::make(Int(16).with_lanes(64), "y"); Expr 5591 src/Simplify.cpp std::vector<Expr> clamped = { Expr 5664 src/Simplify.cpp Expr t1 = clamp(v1, one, four); Expr 5665 src/Simplify.cpp Expr t2 = clamp(v1, -five, -four); Expr 5670 src/Simplify.cpp Expr xv = Variable::make(Int(16).with_lanes(64), "x"); Expr 5671 src/Simplify.cpp Expr yv = Variable::make(Int(16).with_lanes(64), "y"); Expr 5672 src/Simplify.cpp Expr zv = Variable::make(Int(16).with_lanes(64), "z"); Expr 5695 src/Simplify.cpp Expr x = Var("x"), y = Var("y"), z = Var("z"), w = Var("w"); Expr 5696 src/Simplify.cpp Expr xf = cast<float>(x); Expr 5697 src/Simplify.cpp Expr yf = cast<float>(y); Expr 5698 src/Simplify.cpp Expr t = const_true(), f = const_false(); Expr 5699 src/Simplify.cpp Expr b1 = Variable::make(Bool(), "b1"); Expr 5700 src/Simplify.cpp Expr b2 = Variable::make(Bool(), "b2"); Expr 5750 src/Simplify.cpp check(!Expr(broadcast(x > y, 4)), Expr 5817 src/Simplify.cpp Expr i = Variable::make(Int(32), "i"); Expr 5943 src/Simplify.cpp Expr foo = x + 3*y; Expr 5944 src/Simplify.cpp Expr foo_simple = x + y*3; Expr 5962 src/Simplify.cpp Stmt then_clause = AssertStmt::make(b2, Expr(22)); Expr 5963 src/Simplify.cpp Stmt else_clause = AssertStmt::make(b2, Expr(33)); Expr 6008 src/Simplify.cpp Expr b[12]; Expr 6034 src/Simplify.cpp Expr nasty = ((((((((((((((((((((((((((((((((((((((((((((b[0] && b[1]) || (b[2] && b[1])) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[6]) || (b[2] && b[6]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[3]) || (b[2] && b[3]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[7]) || (b[2] && b[7]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[4]) || (b[2] && b[4]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[8]) || (b[2] && b[8]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[5]) || (b[2] && b[5]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[10]) || (b[2] && b[10]))) || b[0]) || b[2]) || b[0]) || b[2]) && ((b[0] && b[9]) || (b[2] && b[9]))) || b[0]) || b[2]); Expr 6058 src/Simplify.cpp Expr overflowing[] = { Expr 6078 src/Simplify.cpp Expr not_overflowing[] = { Expr 6095 src/Simplify.cpp for (Expr e : overflowing) { Expr 6099 src/Simplify.cpp for (Expr e : not_overflowing) { Expr 6105 src/Simplify.cpp void check_ind_expr(Expr e, bool expect_error) { Expr 6106 src/Simplify.cpp Expr e2 = simplify(e); Expr 6115 src/Simplify.cpp void check_indeterminate_ops(Expr e, bool e_is_zero, bool e_is_indeterminate) { Expr 6116 src/Simplify.cpp Expr b = cast<bool>(e); Expr 6117 src/Simplify.cpp Expr t = const_true(), f = const_false(); Expr 6118 src/Simplify.cpp Expr one = cast(e.type(), 1); Expr 6119 src/Simplify.cpp Expr zero = cast(e.type(), 0); Expr 6193 src/Simplify.cpp check_indeterminate_ops(Expr(i1), !i1, false); Expr 6196 src/Simplify.cpp Expr e1(i1), e2(i2); Expr 6197 src/Simplify.cpp Expr r = (e1 / e2); Expr 6204 src/Simplify.cpp Expr m = (e1 % e2); Expr 6213 src/Simplify.cpp Expr e1(u1), e2(u2); Expr 6214 src/Simplify.cpp Expr r = (e1 / e2); Expr 6221 src/Simplify.cpp Expr m = (e1 % e2); Expr 6234 src/Simplify.cpp Expr x = Var("x"), y = Var("y"), z = Var("z"), w = Var("w"), v = Var("v"); Expr 6235 src/Simplify.cpp Expr xf = cast<float>(x); Expr 6236 src/Simplify.cpp Expr yf = cast<float>(y); Expr 6237 src/Simplify.cpp Expr t = const_true(), f = const_false(); Expr 6257 src/Simplify.cpp check(cast(UInt(32), x) & Expr((uint32_t)0xaaaaaaaa), Expr 6258 src/Simplify.cpp cast(UInt(32), x) & Expr((uint32_t)0xaaaaaaaa)); Expr 6270 src/Simplify.cpp check(Let::make("v", ramp(x*2+7, 3, 4), v + Expr(broadcast(2, 4))), Expr 6274 src/Simplify.cpp check(Let::make("v", broadcast(x, 4), v + Expr(broadcast(2, 4))), Expr 6298 src/Simplify.cpp Expr base = Variable::make(Handle(), "buf"); Expr 6349 src/Simplify.cpp Expr vec = ramp(x, 1, 16); Expr 6360 src/Simplify.cpp Expr e = interleave_vectors({ramp(x, 2, 4), ramp(x, 2, 4)}); Expr 6381 src/Simplify.cpp Expr load1 = Load::make(Float(32, 4), "buf", ramp(x, 2, 4), Buffer<>(), Parameter(), const_true(4)); Expr 6382 src/Simplify.cpp Expr load2 = Load::make(Float(32, 4), "buf", ramp(x+1, 2, 4), Buffer<>(), Parameter(), const_true(4)); Expr 6383 src/Simplify.cpp Expr load12 = Load::make(Float(32, 8), "buf", ramp(x, 1, 8), Buffer<>(), Parameter(), const_true(8)); Expr 6387 src/Simplify.cpp Expr e = interleave_vectors({load2, load1}); Expr 6391 src/Simplify.cpp Expr load3 = Load::make(Float(32, 4), "buf2", ramp(x+1, 2, 4), Buffer<>(), Parameter(), const_true(4)); Expr 6399 src/Simplify.cpp std::vector<Expr> loads; Expr 6410 src/Simplify.cpp Expr e = x; Expr 6419 src/Simplify.cpp Expr e = Broadcast::make(-16, 2) < (ramp(Cast::make(UInt(16), 7), Cast::make(UInt(16), 11), 2) - Broadcast::make(1, 2)); Expr 6420 src/Simplify.cpp Expr expected = Broadcast::make(-16, 2) < (ramp(make_const(UInt(16), 7), make_const(UInt(16), 11), 2) - Broadcast::make(1, 2)); Expr 6425 src/Simplify.cpp Expr pred = ramp(x*y + x*z, 2, 8) > 2; Expr 6426 src/Simplify.cpp Expr index = ramp(x + y, 1, 8); Expr 6427 src/Simplify.cpp Expr value = Load::make(index.type(), "f", index, Buffer<>(), Parameter(), const_true(index.type().lanes())); Expr 6436 src/Simplify.cpp Expr one = cast<uint16_t>(1); Expr 6438 src/Simplify.cpp Expr r1, r2, r3; Expr 6445 src/Simplify.cpp r3 = min(one, Expr(two), one); Expr 6453 src/Simplify.cpp r3 = max(one, Expr(two), one); Expr 6458 src/Simplify.cpp Expr x = Variable::make(UInt(32), "x"); Expr 6459 src/Simplify.cpp Expr y = Variable::make(UInt(32), "y"); Expr 6462 src/Simplify.cpp Expr e = simplify(max(ramp(x, y, 2), broadcast(x, 2)) - max(broadcast(y, 2), ramp(y, y, 2))); Expr 6463 src/Simplify.cpp Expr expected = max(ramp(x, y, 2), broadcast(x, 2)) - max(ramp(y, y, 2), broadcast(y, 2)); Expr 27 src/Simplify.h EXPORT Expr simplify(Expr, bool simplify_lets = true, Expr 34 src/Simplify.h EXPORT bool can_prove(Expr e); Expr 21 src/SimplifySpecializations.cpp void substitute_value_in_var(const string &var, Expr value, vector<Definition> &definitions) { Expr 36 src/SimplifySpecializations.cpp Expr mutate(Expr e) { Expr 53 src/SimplifySpecializations.cpp Expr fact; Expr 54 src/SimplifySpecializations.cpp SimplifyUsingFact(Expr f) : fact(f) {} Expr 57 src/SimplifySpecializations.cpp void simplify_using_fact(Expr fact, vector<Definition> &definitions) { Expr 84 src/SimplifySpecializations.cpp Expr old_c = it->condition; Expr 85 src/SimplifySpecializations.cpp Expr c = simplify(it->condition); Expr 125 src/SimplifySpecializations.cpp Expr c = specializations[i-1].condition; Expr 45 src/SkipStages.cpp Expr predicate; Expr 85 src/SkipStages.cpp void visit_let(const std::string &name, Expr value, T body) { Expr 124 src/SkipStages.cpp Expr make_and(Expr a, Expr b) { Expr 136 src/SkipStages.cpp Expr make_or(Expr a, Expr b) { Expr 148 src/SkipStages.cpp Expr make_select(Expr a, Expr b, Expr c) { Expr 166 src/SkipStages.cpp Expr make_not(Expr a) { Expr 177 src/SkipStages.cpp void visit_conditional(Expr condition, T true_case, T false_case) { Expr 178 src/SkipStages.cpp Expr old_predicate = predicate; Expr 182 src/SkipStages.cpp Expr true_predicate = predicate; Expr 186 src/SkipStages.cpp Expr false_predicate = predicate; Expr 240 src/SkipStages.cpp ProductionGuarder(const string &b, Expr compute_p, Expr alloc_p): Expr 244 src/SkipStages.cpp Expr compute_predicate; Expr 245 src/SkipStages.cpp Expr alloc_predicate; Expr 355 src/SkipStages.cpp Expr compute_predicate = simplify(common_subexpression_elimination(find_compute.predicate)); Expr 373 src/SkipStages.cpp Expr alloc_predicate = simplify(common_subexpression_elimination(find_alloc.predicate)); Expr 45 src/SlidingWindow.cpp bool expr_depends_on_var(Expr e, string v) { Expr 54 src/SlidingWindow.cpp const Scope<Expr> &scope; Expr 66 src/SlidingWindow.cpp ExpandExpr(const Scope<Expr> &s) : scope(s) {} Expr 71 src/SlidingWindow.cpp Expr expand_expr(Expr e, const Scope<Expr> &scope) { Expr 73 src/SlidingWindow.cpp Expr result = ee.mutate(e); Expr 85 src/SlidingWindow.cpp Expr loop_min; Expr 86 src/SlidingWindow.cpp Scope<Expr> scope; Expr 88 src/SlidingWindow.cpp map<string, Expr> replacements; Expr 121 src/SlidingWindow.cpp Expr min_required, max_required; Expr 133 src/SlidingWindow.cpp Expr min_req = scope.get(var + ".min"); Expr 134 src/SlidingWindow.cpp Expr max_req = scope.get(var + ".max"); Expr 143 src/SlidingWindow.cpp min_required = Expr(); Expr 144 src/SlidingWindow.cpp max_required = Expr(); Expr 210 src/SlidingWindow.cpp Expr loop_var_expr = Variable::make(Int(32), loop_var); Expr 212 src/SlidingWindow.cpp Expr prev_max_plus_one = substitute(loop_var, loop_var_expr - 1, max_required) + 1; Expr 213 src/SlidingWindow.cpp Expr prev_min_minus_one = substitute(loop_var, loop_var_expr - 1, min_required) - 1; Expr 227 src/SlidingWindow.cpp Expr new_min, new_max; Expr 236 src/SlidingWindow.cpp Expr early_stages_min_required = new_min; Expr 237 src/SlidingWindow.cpp Expr early_stages_max_required = new_max; Expr 266 src/SlidingWindow.cpp Expr var = Variable::make(Int(32), n); Expr 270 src/SlidingWindow.cpp Expr var = Variable::make(Int(32), n); Expr 280 src/SlidingWindow.cpp Expr min = expand_expr(op->min, scope); Expr 281 src/SlidingWindow.cpp Expr extent = expand_expr(op->extent, scope); Expr 306 src/SlidingWindow.cpp Expr value = op->value; Expr 308 src/SlidingWindow.cpp map<string, Expr>::iterator iter = replacements.find(op->name); Expr 323 src/SlidingWindow.cpp SlidingWindowOnFunctionAndLoop(Function f, string v, Expr v_min) : func(f), loop_var(v), loop_min(v_min) {} Expr 31 src/Solve.cpp SolveExpression(const string &v, const Scope<Expr> &es) : Expr 36 src/Solve.cpp Expr mutate(Expr e) { Expr 37 src/Solve.cpp map<Expr, CacheEntry, ExprCompare>::iterator iter = cache.find(e); Expr 43 src/Solve.cpp Expr new_e = IRMutator::mutate(e); Expr 71 src/Solve.cpp Expr expr; Expr 74 src/Solve.cpp map<Expr, CacheEntry, ExprCompare> cache; Expr 80 src/Solve.cpp const Scope<Expr> &external_scope; Expr 84 src/Solve.cpp Expr negate(Expr e) { Expr 104 src/Solve.cpp void fail(Expr e) { Expr 114 src/Solve.cpp Expr a = mutate(op->a); Expr 120 src/Solve.cpp Expr b = mutate(op->b); Expr 139 src/Solve.cpp expr = Expr(); Expr 200 src/Solve.cpp Expr a = mutate(op->a); Expr 206 src/Solve.cpp Expr b = mutate(op->b); Expr 219 src/Solve.cpp expr = Expr(); Expr 291 src/Solve.cpp Expr a = mutate(op->a); Expr 299 src/Solve.cpp Expr b = mutate(op->b); Expr 315 src/Solve.cpp expr = Expr(); Expr 363 src/Solve.cpp Expr a = mutate(op->a); Expr 369 src/Solve.cpp Expr b = mutate(op->b); Expr 390 src/Solve.cpp expr = Expr(); Expr 476 src/Solve.cpp Expr a = mutate(op->a); Expr 482 src/Solve.cpp Expr b = mutate(op->b); Expr 497 src/Solve.cpp expr = Expr(); Expr 547 src/Solve.cpp Expr a = mutate(op->a); Expr 553 src/Solve.cpp Expr b = mutate(op->b); Expr 569 src/Solve.cpp bool is_eq = Expr(op).as<EQ>() != nullptr; Expr 570 src/Solve.cpp bool is_ne = Expr(op).as<NE>() != nullptr; Expr 571 src/Solve.cpp bool is_lt = Expr(op).as<LT>() != nullptr; Expr 572 src/Solve.cpp bool is_le = Expr(op).as<LE>() != nullptr; Expr 573 src/Solve.cpp bool is_ge = Expr(op).as<GE>() != nullptr; Expr 574 src/Solve.cpp bool is_gt = Expr(op).as<GT>() != nullptr; Expr 576 src/Solve.cpp expr = Expr(); Expr 606 src/Solve.cpp Expr div = Div::make(b, mul_a->b); Expr 607 src/Solve.cpp Expr rem = Mod::make(b, mul_a->b); Expr 707 src/Solve.cpp Expr e = external_scope.get(op->name); Expr 720 src/Solve.cpp Expr value = mutate(op->value); Expr 743 src/Solve.cpp Scope<Expr> scope; Expr 804 src/Solve.cpp debug(3) << "And intersecting: " << Expr(op) << "\n" Expr 809 src/Solve.cpp debug(3) << "And union:" << Expr(op) << "\n" Expr 822 src/Solve.cpp debug(3) << "Or intersecting:" << Expr(op) << "\n" Expr 827 src/Solve.cpp debug(3) << "Or union:" << Expr(op) << "\n" Expr 879 src/Solve.cpp Expr cond = lt->a <= (lt->b - 1); Expr 885 src/Solve.cpp Expr cond = gt->a >= (gt->b + 1); Expr 896 src/Solve.cpp std::map<Expr, Interval, IRDeepCompare> cache_f, cache_t; Expr 899 src/Solve.cpp void cached_solve(Expr cond) { Expr 936 src/Solve.cpp Expr a = max_a->a, b = max_a->b, c = le->b; Expr 941 src/Solve.cpp Expr b_var = Variable::make(b.type(), b_name); Expr 942 src/Solve.cpp Expr c_var = Variable::make(c.type(), c_name); Expr 954 src/Solve.cpp Expr a = min_a->a, b = min_a->b, c = le->b; Expr 955 src/Solve.cpp Expr b_var = Variable::make(b.type(), b_name); Expr 956 src/Solve.cpp Expr c_var = Variable::make(c.type(), c_name); Expr 994 src/Solve.cpp Expr a = max_a->a, b = max_a->b, c = ge->b; Expr 995 src/Solve.cpp Expr b_var = Variable::make(b.type(), b_name); Expr 996 src/Solve.cpp Expr c_var = Variable::make(c.type(), c_name); Expr 1008 src/Solve.cpp Expr a = min_a->a, b = min_a->b, c = ge->b; Expr 1009 src/Solve.cpp Expr b_var = Variable::make(b.type(), b_name); Expr 1010 src/Solve.cpp Expr c_var = Variable::make(c.type(), c_name); Expr 1026 src/Solve.cpp Expr cond; Expr 1039 src/Solve.cpp Expr cond; Expr 1076 src/Solve.cpp Scope<Expr> bound_vars; Expr 1087 src/Solve.cpp Interval get_bounds(Expr a) { Expr 1097 src/Solve.cpp Expr make_bigger(Expr a) { Expr 1101 src/Solve.cpp Expr make_smaller(Expr a) { Expr 1123 src/Solve.cpp Expr a, b; Expr 1164 src/Solve.cpp Expr delta = simplify(op->a - op->b); Expr 1229 src/Solve.cpp Expr body; Expr 1232 src/Solve.cpp Expr value = mutate(op->value); Expr 1234 src/Solve.cpp Expr flipped_value = mutate(op->value); Expr 1248 src/Solve.cpp Expr min_var, max_var; Expr 1314 src/Solve.cpp SolverResult solve_expression(Expr e, const std::string &variable, const Scope<Expr> &scope) { Expr 1316 src/Solve.cpp Expr new_e = solver.mutate(e); Expr 1326 src/Solve.cpp Interval solve_for_inner_interval(Expr c, const std::string &var) { Expr 1340 src/Solve.cpp Interval solve_for_outer_interval(Expr c, const std::string &var) { Expr 1354 src/Solve.cpp Expr and_condition_over_domain(Expr e, const Scope<Interval> &varying) { Expr 1363 src/Solve.cpp void check_solve(Expr a, Expr b) { Expr 1371 src/Solve.cpp void check_interval(Expr a, Interval i, bool outer) { Expr 1388 src/Solve.cpp void check_outer_interval(Expr a, Expr min, Expr max) { Expr 1392 src/Solve.cpp void check_inner_interval(Expr a, Expr min, Expr max) { Expr 1396 src/Solve.cpp void check_and_condition(Expr orig, Expr result, Interval i) { Expr 1399 src/Solve.cpp Expr cond = and_condition_over_domain(orig, s); Expr 1408 src/Solve.cpp Expr x = Variable::make(Int(32), "x"); Expr 1409 src/Solve.cpp Expr y = Variable::make(Int(32), "y"); Expr 1410 src/Solve.cpp Expr z = Variable::make(Int(32), "z"); Expr 1430 src/Solve.cpp Expr e = y+1; Expr 1444 src/Solve.cpp Expr in[] = {x*den < num, x*den <= num, x*den == num, x*den != num, x*den >= num, x*den > num, Expr 1449 src/Solve.cpp Expr out = simplify(solved.result); Expr 1451 src/Solve.cpp Expr in_val = substitute("x", i, in[j]); Expr 1452 src/Solve.cpp Expr out_val = substitute("x", i, out); Expr 1465 src/Solve.cpp Expr e = x + y; Expr 1490 src/Solve.cpp Expr c = Variable::make(Bool(), "c"); Expr 1540 src/Solve.cpp Expr a16 = Load::make(Int(16), "a", {x}, Buffer<>(), Parameter(), const_true()); Expr 1541 src/Solve.cpp Expr b16 = Load::make(Int(16), "b", {x}, Buffer<>(), Parameter(), const_true()); Expr 1542 src/Solve.cpp Expr lhs = pow(cast<int32_t>(a16), 2) + pow(cast<int32_t>(b16), 2); Expr 1546 src/Solve.cpp Expr cond = and_condition_over_domain(lhs < 0, s); Expr 1552 src/Solve.cpp Expr t = Variable::make(Int(32), "t"); Expr 1553 src/Solve.cpp Expr test = (x <= min(max((y - min(((z*x) + t), t)), 1), 0)); Expr 1559 src/Solve.cpp Expr t = Variable::make(Int(32), "t"); Expr 1576 src/Solve.cpp Expr x = Variable::make(UInt(32), "x"); Expr 1577 src/Solve.cpp Expr y = Variable::make(UInt(32), "y"); Expr 1578 src/Solve.cpp Expr z = Variable::make(UInt(32), "z"); Expr 1584 src/Solve.cpp Expr expr = Add::make(z, Sub::make(x, y)); Expr 14 src/Solve.h Expr result; Expr 27 src/Solve.h Expr e, const std::string &variable, Expr 28 src/Solve.h const Scope<Expr> &scope = Scope<Expr>::empty_scope()); Expr 34 src/Solve.h EXPORT Interval solve_for_outer_interval(Expr c, const std::string &variable); Expr 38 src/Solve.h EXPORT Interval solve_for_inner_interval(Expr c, const std::string &variable); Expr 47 src/Solve.h Expr and_condition_over_domain(Expr c, const Scope<Interval> &varying); Expr 114 src/SplitTuples.cpp vector<Expr> args; Expr 115 src/SplitTuples.cpp for (Expr e : op->args) { Expr 155 src/SplitTuples.cpp vector<Expr> args; Expr 156 src/SplitTuples.cpp for (Expr e : op->args) { Expr 168 src/SplitTuples.cpp vector<pair<string, Expr>> lets; Expr 173 src/SplitTuples.cpp Expr val = mutate(op->values[i]); Expr 112 src/StmtToHtml.cpp void print_list(const std::vector<Expr> &args) { Expr 120 src/StmtToHtml.cpp void print_list(const string &l, const std::vector<Expr> &args, const string &r) { Expr 142 src/StmtToHtml.cpp stream << Expr(op); Expr 148 src/StmtToHtml.cpp stream << Expr(op); Expr 154 src/StmtToHtml.cpp stream << Expr(op); Expr 210 src/StmtToHtml.cpp void visit_binary_op(Expr a, Expr b, const char *op) { Expr 272 src/StmtToHtml.cpp print_list(symbol("ramp") + "(", {op->base, op->stride, Expr(op->lanes)}, ")"); Expr 321 src/StmtToHtml.cpp std::vector<Expr> args; Expr 573 src/StmtToHtml.cpp std::vector<Expr> args = op->vectors; Expr 577 src/StmtToHtml.cpp std::vector<Expr> args = op->vectors; Expr 583 src/StmtToHtml.cpp std::vector<Expr> args = op->vectors; Expr 593 src/StmtToHtml.cpp void print(Expr ir) { Expr 39 src/StorageFlattening.cpp Expr flatten_args(const string &name, const vector<Expr> &args, Expr 42 src/StorageFlattening.cpp Expr idx = target.has_feature(Target::LargeBuffers) ? make_zero(Int(64)) : 0; Expr 43 src/StorageFlattening.cpp vector<Expr> mins(args.size()), strides(args.size()); Expr 79 src/StorageFlattening.cpp Expr base = target.has_feature(Target::LargeBuffers) ? make_zero(Int(64)) : 0; Expr 103 src/StorageFlattening.cpp vector<Expr> extents; Expr 108 src/StorageFlattening.cpp Expr condition = mutate(op->condition); Expr 123 src/StorageFlattening.cpp Expr alignment = storage_dims[i].alignment; Expr 147 src/StorageFlattening.cpp vector<Expr> min_var(dims), extent_var(dims), stride_var(dims); Expr 173 src/StorageFlattening.cpp Expr stride = stride_var[prev_j] * extent_var[prev_j]; Expr 209 src/StorageFlattening.cpp Expr idx = mutate(flatten_args(op->name, op->args, Buffer<>(), output_buf)); Expr 210 src/StorageFlattening.cpp Expr value = mutate(op->values[0]); Expr 218 src/StorageFlattening.cpp Expr idx = mutate(flatten_args(op->name, op->args, op->image, op->param)); Expr 230 src/StorageFlattening.cpp vector<Expr> prefetch_min(op->bounds.size()); Expr 231 src/StorageFlattening.cpp vector<Expr> prefetch_extent(op->bounds.size()); Expr 232 src/StorageFlattening.cpp vector<Expr> prefetch_stride(op->bounds.size()); Expr 239 src/StorageFlattening.cpp Expr base_offset = mutate(flatten_args(op->name, prefetch_min, Buffer<>(), op->param)); Expr 240 src/StorageFlattening.cpp Expr base_address = Variable::make(Handle(), op->name); Expr 241 src/StorageFlattening.cpp vector<Expr> args = {base_address, base_offset}; Expr 325 src/StorageFlattening.cpp vector<Expr> extents; Expr 326 src/StorageFlattening.cpp for (Expr e : op->extents) { Expr 57 src/StorageFolding.cpp Expr factor; Expr 66 src/StorageFolding.cpp vector<Expr> args = op->args; Expr 79 src/StorageFolding.cpp vector<Expr> args = op->args; Expr 86 src/StorageFolding.cpp FoldStorageOfFunction(string f, int d, Expr e) : Expr 125 src/StorageFolding.cpp Expr min = simplify(box[i-1].min); Expr 126 src/StorageFolding.cpp Expr max = simplify(box[i-1].max); Expr 129 src/StorageFolding.cpp Expr explicit_factor; Expr 154 src/StorageFolding.cpp Expr condition; Expr 155 src/StorageFolding.cpp Expr loop_var = Variable::make(Int(32), op->name); Expr 157 src/StorageFolding.cpp Expr min_next = substitute(op->name, loop_var + 1, min); Expr 164 src/StorageFolding.cpp Expr max_next = substitute(op->name, loop_var + 1, max); Expr 171 src/StorageFolding.cpp Expr error = Call::make(Int(32), "halide_error_bad_fold", Expr 181 src/StorageFolding.cpp Expr extent = simplify(max - min + 1); Expr 182 src/StorageFolding.cpp Expr factor; Expr 184 src/StorageFolding.cpp Expr error = Call::make(Int(32), "halide_error_fold_factor_too_small", Expr 195 src/StorageFolding.cpp Expr max_extent = simplify(bounds_of_expr_in_scope(extent, scope).max); Expr 218 src/StorageFolding.cpp Expr next_var = Variable::make(Int(32), op->name) + 1; Expr 219 src/StorageFolding.cpp Expr next_min = substitute(op->name, next_var, min); Expr 257 src/StorageFolding.cpp Expr factor; Expr 333 src/StorageFolding.cpp Expr f = folder.dims_folded[i].factor; Expr 354 src/StorageFolding.cpp Scope<Expr> scope; Expr 356 src/StorageFolding.cpp Expr value = simplify(mutate(op->value)); Expr 13 src/Substitute.cpp const map<string, Expr> &replace; Expr 16 src/Substitute.cpp Expr find_replacement(const string &s) { Expr 17 src/Substitute.cpp map<string, Expr>::const_iterator iter = replace.find(s); Expr 21 src/Substitute.cpp return Expr(); Expr 26 src/Substitute.cpp Substitute(const map<string, Expr> &m) : replace(m) {} Expr 31 src/Substitute.cpp Expr r = find_replacement(v->name); Expr 40 src/Substitute.cpp Expr new_value = mutate(op->value); Expr 42 src/Substitute.cpp Expr new_body = mutate(op->body); Expr 54 src/Substitute.cpp Expr new_value = mutate(op->value); Expr 69 src/Substitute.cpp Expr new_min = mutate(op->min); Expr 70 src/Substitute.cpp Expr new_extent = mutate(op->extent); Expr 86 src/Substitute.cpp Expr substitute(const string &name, const Expr &replacement, const Expr &expr) { Expr 87 src/Substitute.cpp map<string, Expr> m; Expr 93 src/Substitute.cpp Stmt substitute(const string &name, const Expr &replacement, const Stmt &stmt) { Expr 94 src/Substitute.cpp map<string, Expr> m; Expr 100 src/Substitute.cpp Expr substitute(const map<string, Expr> &m, const Expr &expr) { Expr 105 src/Substitute.cpp Stmt substitute(const map<string, Expr> &m, const Stmt &stmt) { Expr 113 src/Substitute.cpp Expr find, replacement; Expr 117 src/Substitute.cpp Expr mutate(Expr e) { Expr 126 src/Substitute.cpp Expr substitute(const Expr &find, const Expr &replacement, const Expr &expr) { Expr 133 src/Substitute.cpp Stmt substitute(const Expr &find, const Expr &replacement, const Stmt &stmt) { Expr 143 src/Substitute.cpp Expr value; Expr 157 src/Substitute.cpp GraphSubstitute(const string &var, const Expr &value) : var(var), value(value) {} Expr 163 src/Substitute.cpp Expr find, replace; Expr 168 src/Substitute.cpp Expr mutate(Expr e) { Expr 173 src/Substitute.cpp GraphSubstituteExpr(const Expr &find, const Expr &replace) : find(find), replace(replace) {} Expr 176 src/Substitute.cpp Expr graph_substitute(const string &name, const Expr &replacement, const Expr &expr) { Expr 180 src/Substitute.cpp Stmt graph_substitute(const string &name, const Expr &replacement, const Stmt &stmt) { Expr 184 src/Substitute.cpp Expr graph_substitute(const Expr &find, const Expr &replacement, const Expr &expr) { Expr 188 src/Substitute.cpp Stmt graph_substitute(const Expr &find, const Expr &replacement, const Stmt &stmt) { Expr 197 src/Substitute.cpp Expr value = mutate(op->value); Expr 198 src/Substitute.cpp Expr body = mutate(op->body); Expr 203 src/Substitute.cpp Expr substitute_in_all_lets(const Expr &expr) { Expr 22 src/Substitute.h EXPORT Expr substitute(const std::string &name, const Expr &replacement, const Expr &expr); Expr 26 src/Substitute.h EXPORT Stmt substitute(const std::string &name, const Expr &replacement, const Stmt &stmt); Expr 30 src/Substitute.h EXPORT Expr substitute(const std::map<std::string, Expr> &replacements, const Expr &expr); Expr 31 src/Substitute.h EXPORT Stmt substitute(const std::map<std::string, Expr> &replacements, const Stmt &stmt); Expr 36 src/Substitute.h EXPORT Expr substitute(const Expr &find, const Expr &replacement, const Expr &expr); Expr 37 src/Substitute.h EXPORT Stmt substitute(const Expr &find, const Expr &replacement, const Stmt &stmt); Expr 43 src/Substitute.h Expr graph_substitute(const std::string &name, const Expr &replacement, const Expr &expr); Expr 44 src/Substitute.h Stmt graph_substitute(const std::string &name, const Expr &replacement, const Stmt &stmt); Expr 45 src/Substitute.h Expr graph_substitute(const Expr &find, const Expr &replacement, const Expr &expr); Expr 46 src/Substitute.h Stmt graph_substitute(const Expr &find, const Expr &replacement, const Stmt &stmt); Expr 55 src/Substitute.h Expr substitute_in_all_lets(const Expr &expr); Expr 16 src/Tracing.cpp vector<Expr> value; Expr 17 src/Tracing.cpp vector<Expr> coordinates; Expr 20 src/Tracing.cpp Expr parent_id, value_index, dimensions; Expr 22 src/Tracing.cpp Expr build() { Expr 23 src/Tracing.cpp Expr values = Call::make(type_of<void *>(), Call::make_struct, Expr 25 src/Tracing.cpp Expr coords = Call::make(type_of<int32_t *>(), Call::make_struct, Expr 27 src/Tracing.cpp Expr idx = value_index; Expr 32 src/Tracing.cpp vector<Expr> args = {Expr(func), Expr 74 src/Tracing.cpp Expr trace_parent; Expr 88 src/Tracing.cpp Expr value_var = Variable::make(op->type, value_var_name); Expr 98 src/Tracing.cpp Expr trace = builder.build(); Expr 119 src/Tracing.cpp const vector<Expr> &values = op->values; Expr 120 src/Tracing.cpp vector<Expr> traces(op->values.size()); Expr 130 src/Tracing.cpp Expr value_var = Variable::make(t, value_var_name); Expr 135 src/Tracing.cpp Expr trace = builder.build(); Expr 145 src/Tracing.cpp vector<Expr> args = op->args; Expr 146 src/Tracing.cpp vector<pair<string, Expr>> lets; Expr 183 src/Tracing.cpp Expr call_before = builder.build(); Expr 186 src/Tracing.cpp Expr call_after = builder.build(); Expr 216 src/Tracing.cpp Expr min = Variable::make(Int(32), f.name() + ".s0." + f_args[i] + ".min"); Expr 217 src/Tracing.cpp Expr max = Variable::make(Int(32), f.name() + ".s0." + f_args[i] + ".max"); Expr 218 src/Tracing.cpp Expr extent = (max + 1) - min; Expr 226 src/Tracing.cpp Expr begin_op_call = builder.build(); Expr 231 src/Tracing.cpp Expr end_op_call = builder.build(); Expr 273 src/Tracing.cpp Expr min = Variable::make(Int(32), output_buf.name() + ".min." + d); Expr 274 src/Tracing.cpp Expr extent = Variable::make(Int(32), output_buf.name() + ".extent." + d); Expr 293 src/Tracing.cpp Expr pipeline_start = builder.build(); Expr 297 src/Tracing.cpp Expr pipeline_end = builder.build(); Expr 58 src/TrimNoOps.cpp bool loads_from_buffer(Expr e, string buf) { Expr 68 src/TrimNoOps.cpp Expr make_and(Expr a, Expr b) { Expr 74 src/TrimNoOps.cpp Expr make_or(Expr a, Expr b) { Expr 98 src/TrimNoOps.cpp Expr equivalent_load = Load::make(op->value.type(), op->name, op->index, Expr 100 src/TrimNoOps.cpp Expr is_no_op = equivalent_load == op->value; Expr 117 src/TrimNoOps.cpp Expr old_condition = condition; Expr 133 src/TrimNoOps.cpp Expr total_condition = condition; Expr 174 src/TrimNoOps.cpp Expr condition = const_true(); Expr 187 src/TrimNoOps.cpp bool provably_true_over_domain(Expr test) { Expr 238 src/TrimNoOps.cpp Expr a = mutate(op->a); Expr 239 src/TrimNoOps.cpp Expr b = mutate(op->b); Expr 240 src/TrimNoOps.cpp Expr test = a <= b; Expr 255 src/TrimNoOps.cpp Expr a = mutate(op->a); Expr 256 src/TrimNoOps.cpp Expr b = mutate(op->b); Expr 303 src/TrimNoOps.cpp Expr value = mutate(op->value); Expr 311 src/TrimNoOps.cpp expr = visit_let<Expr, Let>(op); Expr 320 src/TrimNoOps.cpp Expr min = mutate(op->min); Expr 321 src/TrimNoOps.cpp Expr extent = mutate(op->extent); Expr 393 src/TrimNoOps.cpp Expr new_min_var = Variable::make(Int(32), new_min_name); Expr 394 src/TrimNoOps.cpp Expr new_max_var = Variable::make(Int(32), new_max_name); Expr 395 src/TrimNoOps.cpp Expr old_max_var = Variable::make(Int(32), old_max_name); Expr 404 src/TrimNoOps.cpp Expr old_max = op->min + op->extent; Expr 405 src/TrimNoOps.cpp Expr new_min, new_max; Expr 417 src/TrimNoOps.cpp Expr new_extent = new_max_var - new_min_var; Expr 21 src/Tuple.h std::vector<Expr> exprs; Expr 27 src/Tuple.h Expr &operator[](size_t x) { Expr 33 src/Tuple.h Expr operator[](size_t x) const { Expr 39 src/Tuple.h explicit Tuple(Expr e) { Expr 46 src/Tuple.h Tuple(Expr a, Expr b, Args&&... args) { Expr 47 src/Tuple.h exprs = std::vector<Expr>{a, b, std::forward<Args>(args)...}; Expr 52 src/Tuple.h explicit NO_INLINE Tuple(const std::vector<Expr> &e) : exprs(e) { Expr 60 src/Tuple.h const std::vector<Expr> &as_vector() const { Expr 115 src/Tuple.h Tuple result(std::vector<Expr>(condition.size())); Expr 122 src/Tuple.h inline Tuple tuple_select(Expr condition, const Tuple &true_value, const Tuple &false_value) { Expr 123 src/Tuple.h Tuple result(std::vector<Expr>(true_value.size())); Expr 27 src/Type.cpp Halide::Expr Type::max() const { Expr 51 src/Type.cpp Halide::Expr Type::min() const { Expr 278 src/Type.h struct Expr; Expr 420 src/Type.h EXPORT Expr max() const; Expr 423 src/Type.h EXPORT Expr min() const; Expr 15 src/UnifyDuplicateLets.cpp map<Expr, string, IRDeepCompare> scope; Expr 22 src/UnifyDuplicateLets.cpp Expr mutate(Expr e) { Expr 25 src/UnifyDuplicateLets.cpp map<Expr, string, IRDeepCompare>::iterator iter = scope.find(e); Expr 32 src/UnifyDuplicateLets.cpp expr = Expr(); Expr 74 src/UnifyDuplicateLets.cpp Expr value = mutate(op->value); Expr 81 src/UnifyDuplicateLets.cpp map<Expr, string, IRDeepCompare>::iterator iter = scope.find(value); Expr 42 src/UniquifyVariableNames.cpp Expr value = mutate(op->value); Expr 59 src/UniquifyVariableNames.cpp Expr value = mutate(op->value); Expr 62 src/UniquifyVariableNames.cpp Expr body = mutate(op->body); Expr 76 src/UniquifyVariableNames.cpp Expr min = mutate(op->min); Expr 77 src/UniquifyVariableNames.cpp Expr extent = mutate(op->extent); Expr 17 src/UnpackBuffers.cpp Expr handle; Expr 71 src/UnpackBuffers.cpp vector<pair<string, Expr>> lets; Expr 76 src/UnpackBuffers.cpp vector<Expr> args = {info.handle}; Expr 79 src/UnpackBuffers.cpp Expr host_val = Call::make(type_of<void *>(), Call::buffer_get_host, args, Call::Extern); Expr 83 src/UnpackBuffers.cpp Expr dev_val = Call::make(type_of<uint64_t>(), Call::buffer_get_device, args, Call::Extern); Expr 87 src/UnpackBuffers.cpp Expr dev_interface_val = Call::make(type_of<const halide_device_interface_t *>(), Expr 92 src/UnpackBuffers.cpp Expr type_code_val = Call::make(UInt(8), Call::buffer_get_type_code, args, Call::Extern); Expr 96 src/UnpackBuffers.cpp Expr type_bits_val = Call::make(UInt(8), Call::buffer_get_type_bits, args, Call::Extern); Expr 100 src/UnpackBuffers.cpp Expr type_lanes_val = Call::make(UInt(16), Call::buffer_get_type_lanes, args, Call::Extern); Expr 104 src/UnpackBuffers.cpp Expr host_dirty_val = Call::make(Bool(), Call::buffer_get_host_dirty, args, Call::Extern); Expr 108 src/UnpackBuffers.cpp Expr dev_dirty_val = Call::make(Bool(), Call::buffer_get_device_dirty, args, Call::Extern); Expr 112 src/UnpackBuffers.cpp vector<Expr> args = {info.handle, i}; Expr 115 src/UnpackBuffers.cpp Expr min_val = Call::make(Int(32), Call::buffer_get_min, args, Call::Extern); Expr 119 src/UnpackBuffers.cpp Expr extent_val = Call::make(Int(32), Call::buffer_get_extent, args, Call::Extern); Expr 123 src/UnpackBuffers.cpp Expr stride_val = Call::make(Int(32), Call::buffer_get_stride, args, Call::Extern); Expr 129 src/UnpackBuffers.cpp pair<string, Expr> l = lets.back(); Expr 138 src/UnpackBuffers.cpp Expr buf = p.second.handle; Expr 139 src/UnpackBuffers.cpp Expr cond = reinterpret<uint64_t>(buf) != 0; Expr 140 src/UnpackBuffers.cpp Expr error = Call::make(Int(32), "halide_error_buffer_argument_is_null", Expr 18 src/UnrollLoops.cpp Expr extent = simplify(for_loop->extent); Expr 148 src/Var.h operator Expr() const { Expr 38 src/VaryingAttributes.cpp Expr tag_linear_expression(Expr e, const std::string &name = unique_name('a')) { Expr 49 src/VaryingAttributes.cpp Expr intrinsic = Call::make(e.type(), Call::glsl_varying, Expr 59 src/VaryingAttributes.cpp std::vector<Expr> new_args = op->args; Expr 93 src/VaryingAttributes.cpp Expr mutated_value = mutate(op->value); Expr 98 src/VaryingAttributes.cpp Expr mutated_body = mutate(op->body); Expr 163 src/VaryingAttributes.cpp Expr mutated_value = mutate(op->value); Expr 183 src/VaryingAttributes.cpp Expr a = mutate(op->a); Expr 185 src/VaryingAttributes.cpp Expr b = mutate(op->b); Expr 208 src/VaryingAttributes.cpp Expr a = mutate(op->a); Expr 210 src/VaryingAttributes.cpp Expr b = mutate(op->b); Expr 230 src/VaryingAttributes.cpp Expr a = mutate(op->a); Expr 232 src/VaryingAttributes.cpp Expr b = mutate(op->b); Expr 260 src/VaryingAttributes.cpp Expr a = mutate(op->a); Expr 262 src/VaryingAttributes.cpp Expr b = mutate(op->b); Expr 300 src/VaryingAttributes.cpp Expr a = mutate(op->a); Expr 311 src/VaryingAttributes.cpp Expr a = mutate(op->value); Expr 338 src/VaryingAttributes.cpp Expr mutated_condition = mutate(op->condition); Expr 341 src/VaryingAttributes.cpp Expr mutated_true_value = mutate(op->true_value); Expr 344 src/VaryingAttributes.cpp Expr mutated_false_value = mutate(op->false_value); Expr 392 src/VaryingAttributes.cpp FindVaryingAttributeTags(std::map<std::string, Expr>& varyings_) : varyings(varyings_) { } Expr 404 src/VaryingAttributes.cpp std::map<std::string, Expr>& varyings; Expr 473 src/VaryingAttributes.cpp void prune_varying_attributes(Stmt loop_stmt, std::map<std::string, Expr>& varying) Expr 480 src/VaryingAttributes.cpp for (const std::pair<std::string, Expr> &i : varying) { Expr 509 src/VaryingAttributes.cpp Expr v = Variable::make(Float(32), op->name); Expr 534 src/VaryingAttributes.cpp expr = Expr(op) - 0.5f; Expr 546 src/VaryingAttributes.cpp Type float_type(Expr e) { Expr 552 src/VaryingAttributes.cpp Expr mutated_a = mutate(op->a); Expr 553 src/VaryingAttributes.cpp Expr mutated_b = mutate(op->b); Expr 588 src/VaryingAttributes.cpp Expr mutated_condition = mutate(op->condition); Expr 589 src/VaryingAttributes.cpp Expr mutated_true_value = mutate(op->true_value); Expr 590 src/VaryingAttributes.cpp Expr mutated_false_value = mutate(op->false_value); Expr 609 src/VaryingAttributes.cpp Expr mutated_base = mutate(op->base); Expr 610 src/VaryingAttributes.cpp Expr mutated_stride = mutate(op->stride); Expr 631 src/VaryingAttributes.cpp Expr mutated_value = mutate(op->value); Expr 638 src/VaryingAttributes.cpp Expr mutated_body = mutate(op->body); Expr 648 src/VaryingAttributes.cpp Expr mutated_value = mutate(op->value); Expr 667 src/VaryingAttributes.cpp Scope<Expr> scope; Expr 679 src/VaryingAttributes.cpp virtual Stmt mutate(Expr expr); Expr 728 src/VaryingAttributes.cpp Stmt IRFilter::mutate(Expr e) { Expr 818 src/VaryingAttributes.cpp Expr old_arg = op->args[i]; Expr 895 src/VaryingAttributes.cpp Expr old_min = op->bounds[i].min; Expr 896 src/VaryingAttributes.cpp Expr old_extent = op->bounds[i].extent; Expr 950 src/VaryingAttributes.cpp Expr offset_expression = Variable::make(Int(32), "gpu.vertex_offset") + Expr 1003 src/VaryingAttributes.cpp const std::vector<Expr>& dim = dims[op->name]; Expr 1008 src/VaryingAttributes.cpp Expr loop_variable = Variable::make(Int(32),name); Expr 1014 src/VaryingAttributes.cpp Expr coord_expr = select(loop_variable == 0, dim[0], dim[1]); Expr 1027 src/VaryingAttributes.cpp Expr gpu_varying_offset = Variable::make(Int(32), "gpu.vertex_offset"); Expr 1030 src/VaryingAttributes.cpp Expr coord1 = cast<float>(Variable::make(Int(32),for_loops[0]->name)); Expr 1031 src/VaryingAttributes.cpp Expr coord0 = cast<float>(Variable::make(Int(32),for_loops[1]->name)); Expr 1066 src/VaryingAttributes.cpp Expr offset_expression = (loop_variables[0] * num_padded_attributes * 2) + Expr 1089 src/VaryingAttributes.cpp typedef std::map<std::string, std::vector<Expr>> DimsType; Expr 1104 src/VaryingAttributes.cpp std::vector<Expr> loop_variables; Expr 1121 src/VaryingAttributes.cpp Expr dont_simplify(Expr v_) { Expr 1151 src/VaryingAttributes.cpp std::map<std::string, Expr> varyings; Expr 1165 src/VaryingAttributes.cpp for (const std::pair<std::string, Expr> &v : varyings) { Expr 1175 src/VaryingAttributes.cpp Expr loop0_max = Add::make(loop0->min, loop0->extent); Expr 1176 src/VaryingAttributes.cpp Expr loop1_max = Add::make(loop1->min, loop1->extent); Expr 1178 src/VaryingAttributes.cpp std::vector<std::vector<Expr>> coords(2); Expr 54 src/VectorizeLoops.cpp Interval bounds_of_lanes(Expr e) { Expr 135 src/VectorizeLoops.cpp Expr last_lane_idx = make_const(r->base.type(), r->lanes-1); Expr 165 src/VectorizeLoops.cpp Expr min_lane = extract_lane(e, 0); Expr 166 src/VectorizeLoops.cpp Expr max_lane = min_lane; Expr 168 src/VectorizeLoops.cpp Expr next_lane = extract_lane(e, i); Expr 185 src/VectorizeLoops.cpp Expr var; Expr 191 src/VectorizeLoops.cpp Expr mutate_index(string a, Expr index) { Expr 228 src/VectorizeLoops.cpp bool uses_gpu_vars(Expr s) { Expr 237 src/VectorizeLoops.cpp Expr vector_predicate; Expr 260 src/VectorizeLoops.cpp Expr merge_predicate(Expr pred, Expr new_pred) { Expr 262 src/VectorizeLoops.cpp Expr res = simplify(pred && new_pred); Expr 276 src/VectorizeLoops.cpp Expr predicate, index; Expr 307 src/VectorizeLoops.cpp Expr predicate, value, index; Expr 341 src/VectorizeLoops.cpp PredicateLoadStore(string v, Expr vpred, bool in_hexagon, const Target &t) : Expr 359 src/VectorizeLoops.cpp Expr replacement; Expr 370 src/VectorizeLoops.cpp Scope<Expr> scope; Expr 374 src/VectorizeLoops.cpp vector<pair<string, Expr>> containing_lets; Expr 377 src/VectorizeLoops.cpp Expr widen(Expr e, int lanes) { Expr 385 src/VectorizeLoops.cpp return Expr(); Expr 391 src/VectorizeLoops.cpp Expr value = mutate(op->value); Expr 415 src/VectorizeLoops.cpp Expr a = mutate(op->a), b = mutate(op->b); Expr 441 src/VectorizeLoops.cpp Expr condition = mutate(op->condition); Expr 442 src/VectorizeLoops.cpp Expr true_value = mutate(op->true_value); Expr 443 src/VectorizeLoops.cpp Expr false_value = mutate(op->false_value); Expr 459 src/VectorizeLoops.cpp Expr predicate = mutate(op->predicate); Expr 460 src/VectorizeLoops.cpp Expr index = mutate(op->index); Expr 475 src/VectorizeLoops.cpp vector<Expr> new_args(op->args.size()); Expr 481 src/VectorizeLoops.cpp Expr old_arg = op->args[i]; Expr 482 src/VectorizeLoops.cpp Expr new_arg = mutate(old_arg); Expr 500 src/VectorizeLoops.cpp vector<Expr> call_args(call->args.size()); Expr 527 src/VectorizeLoops.cpp Expr mutated_value = mutate(op->value); Expr 539 src/VectorizeLoops.cpp Expr mutated_body = mutate(op->body); Expr 553 src/VectorizeLoops.cpp Expr mutated_value = mutate(op->value); Expr 618 src/VectorizeLoops.cpp vector<Expr> new_args(op->args.size()); Expr 619 src/VectorizeLoops.cpp vector<Expr> new_values(op->values.size()); Expr 625 src/VectorizeLoops.cpp Expr old_arg = op->args[i]; Expr 626 src/VectorizeLoops.cpp Expr new_arg = mutate(old_arg); Expr 633 src/VectorizeLoops.cpp Expr old_value = op->values[i]; Expr 634 src/VectorizeLoops.cpp Expr new_value = mutate(old_value); Expr 655 src/VectorizeLoops.cpp Expr predicate = mutate(op->predicate); Expr 656 src/VectorizeLoops.cpp Expr value = mutate(op->value); Expr 657 src/VectorizeLoops.cpp Expr index = mutate(op->index); Expr 677 src/VectorizeLoops.cpp Expr cond = mutate(op->condition); Expr 717 src/VectorizeLoops.cpp Expr all_true = bounds_of_lanes(c->args[0]).min; Expr 774 src/VectorizeLoops.cpp Expr min = mutate(op->min); Expr 775 src/VectorizeLoops.cpp Expr extent = mutate(op->extent); Expr 781 src/VectorizeLoops.cpp Expr var = Variable::make(Int(32), op->name); Expr 794 src/VectorizeLoops.cpp Expr var = Variable::make(Int(32), op->name); Expr 811 src/VectorizeLoops.cpp std::vector<Expr> new_extents; Expr 812 src/VectorizeLoops.cpp Expr new_expr; Expr 820 src/VectorizeLoops.cpp Expr extent = mutate(op->extents[i]); Expr 876 src/VectorizeLoops.cpp Expr scalarize(Expr e) { Expr 880 src/VectorizeLoops.cpp Expr result; Expr 886 src/VectorizeLoops.cpp for (Scope<Expr>::iterator iter = scope.begin(); iter != scope.end(); ++iter) { Expr 888 src/VectorizeLoops.cpp Expr lane = extract_lane(iter.value(), i); Expr 899 src/VectorizeLoops.cpp Expr cond = (replacement == Broadcast::make(i, lanes)); Expr 910 src/VectorizeLoops.cpp VectorSubs(string v, Expr r, bool in_hexagon, const Target &t) : Expr 939 src/VectorizeLoops.cpp Expr for_var = Variable::make(Int(32), for_loop->name); Expr 940 src/VectorizeLoops.cpp Expr replacement = Ramp::make(for_loop->min, 1, extent->value); Expr 21 src/WrapExternStages.cpp Stmt make_checked_call(Expr call) { Expr 24 src/WrapExternStages.cpp Expr result_var = Variable::make(Int(32), result_var_name); Expr 68 src/WrapExternStages.cpp vector<pair<string, Expr>> old_buffers; Expr 69 src/WrapExternStages.cpp vector<Expr> call_args; Expr 73 src/WrapExternStages.cpp Expr new_buffer_var = Variable::make(a.type, a.name + ".buffer"); Expr 77 src/WrapExternStages.cpp Expr old_buffer_var = Variable::make(type_of<struct buffer_t *>(), old_buffer_name); Expr 78 src/WrapExternStages.cpp Expr old_buffer = Call::make(type_of<struct buffer_t *>(), Call::alloca, Expr 84 src/WrapExternStages.cpp Expr downgrade_call = Call::make(Int(32), "halide_downgrade_buffer_t", Expr 92 src/WrapExternStages.cpp Expr upgrade_call = Call::make(Int(32), "halide_upgrade_buffer_t", Expr 102 src/WrapExternStages.cpp Expr inner_call = Call::make(op->type, op->name, call_args, op->call_type); Expr 128 src/WrapExternStages.cpp vector<Expr> new_args; Expr 129 src/WrapExternStages.cpp for (Expr e : op->args) { Expr 167 src/WrapExternStages.cpp vector<Expr> call_args; Expr 168 src/WrapExternStages.cpp vector<pair<string, Expr>> new_buffers; Expr 178 src/WrapExternStages.cpp Expr new_buffer_var = Variable::make(type_of<struct halide_buffer_t *>(), new_buffer_name); Expr 180 src/WrapExternStages.cpp Expr old_buffer_var = Variable::make(type_of<struct buffer_t *>(), arg.name); Expr 186 src/WrapExternStages.cpp Expr new_buffer = builder.build(); Expr 193 src/WrapExternStages.cpp Expr downgrade_call = Call::make(Int(32), "halide_downgrade_buffer_t", Expr 199 src/WrapExternStages.cpp Expr downgrade_device_call = Call::make(Int(32), "halide_downgrade_buffer_t_device_fields", Expr 204 src/WrapExternStages.cpp Expr bounds_query = Call::make(Bool(), Call::buffer_is_bounds_query, Expr 212 src/WrapExternStages.cpp Expr upgrade_call = Call::make(Int(32), "halide_upgrade_buffer_t", Expr 227 src/WrapExternStages.cpp Expr inner_call = Call::make(Int(32), fn.name, call_args, call_type); Expr 19 test/correctness/argmax.cpp Expr best_so_far = f(clamp(arg_max_f(), 0, 100)); Expr 107 test/correctness/bitwise_ops.cpp Expr a = reinterpret<int>(input(x)); Expr 108 test/correctness/bitwise_ops.cpp Expr b = reinterpret<int>(input(x+1)); Expr 123 test/correctness/bitwise_ops.cpp Expr a32 = cast<int32_t>(input(x)); Expr 124 test/correctness/bitwise_ops.cpp Expr b8 = min(31, cast<uint8_t>(input(x+1))); Expr 141 test/correctness/bitwise_ops.cpp Expr a8 = cast<int8_t>(input(x)); Expr 209 test/correctness/boundary_conditions.cpp repeat_edge(input, Expr(), Expr(), 0, H), Expr 214 test/correctness/boundary_conditions.cpp repeat_edge(input, 0, W, Expr(), Expr()), Expr 247 test/correctness/boundary_conditions.cpp constant_exterior(input, exterior, Expr(), Expr(), 0, H), Expr 252 test/correctness/boundary_conditions.cpp constant_exterior(input, exterior, 0, W, Expr(), Expr()), Expr 283 test/correctness/boundary_conditions.cpp repeat_image(input, Expr(), Expr(), 0, H), Expr 288 test/correctness/boundary_conditions.cpp repeat_image(input, 0, W, Expr(), Expr()), Expr 319 test/correctness/boundary_conditions.cpp mirror_image(input, Expr(), Expr(), 0, H), Expr 324 test/correctness/boundary_conditions.cpp mirror_image(input, 0, W, Expr(), Expr()), Expr 355 test/correctness/boundary_conditions.cpp mirror_interior(input, Expr(), Expr(), 0, H), Expr 360 test/correctness/boundary_conditions.cpp mirror_interior(input, 0, W, Expr(), Expr()), Expr 21 test/correctness/bounds_inference_outer_split.cpp Expr result; Expr 37 test/correctness/bounds_of_abs.cpp Expr reflect_x = 100 - cast<int>(abs(100 - (x % 200))); Expr 9 test/correctness/cast.cpp Expr int_expr[4], uint_expr[4], double_expr, float_expr; Expr 30 test/correctness/cast.cpp Expr a = int_expr[i]; Expr 24 test/correctness/code_explosion.cpp std::vector<Expr> e(size); Expr 15 test/correctness/constant_expr.cpp bool scalar_from_constant_expr(Expr e, T *val) { Expr 43 test/correctness/constant_expr.cpp Expr e = make_const(t, value); Expr 19 test/correctness/constant_type.cpp Expr add_one = im(_) + 1; Expr 25 test/correctness/constant_type.cpp Expr one_add = 1 + im(_); Expr 18 test/correctness/custom_lowering_pass.cpp std::cerr << "Found floating-point division by constant: " << Expr(op) << "\n"; Expr 13 test/correctness/dynamic_reduction_bounds.cpp Expr hard_to_reason_about = cast<int>(hypot(input.width(), input.height())); Expr 73 test/correctness/exception.cpp Expr e; Expr 114 test/correctness/exception.cpp Expr a, b; Expr 59 test/correctness/extern_bounds_inference.cpp args[1] = Expr(3); Expr 60 test/correctness/extern_bounds_inference.cpp args[2] = Expr(7); Expr 78 test/correctness/extern_bounds_inference.cpp args[1] = Expr(3); Expr 79 test/correctness/extern_bounds_inference.cpp args[2] = Expr(7); Expr 83 test/correctness/extern_bounds_inference.cpp args[1] = Expr(8); Expr 84 test/correctness/extern_bounds_inference.cpp args[2] = Expr(17); Expr 109 test/correctness/extern_bounds_inference.cpp args[1] = Expr(3); Expr 110 test/correctness/extern_bounds_inference.cpp args[2] = Expr(7); Expr 21 test/correctness/float16_t_implicit_upcast.cpp f(x, y) = 0.25f + Expr(float16_t(0.75)); Expr 10 test/correctness/fuse.cpp Expr e = x*3 + y; Expr 24 test/correctness/fuzz_simplify.cpp Expr random_var() { Expr 37 test/correctness/fuzz_simplify.cpp Expr random_leaf(Type T, bool overflow_undef = false, bool imm_only = false) { Expr 68 test/correctness/fuzz_simplify.cpp Expr random_expr(Type T, int depth, bool overflow_undef = false); Expr 70 test/correctness/fuzz_simplify.cpp Expr random_condition(Type T, int depth, bool maybe_scalar) { Expr 71 test/correctness/fuzz_simplify.cpp typedef Expr (*make_bin_op_fn)(const Expr &, const Expr &); Expr 86 test/correctness/fuzz_simplify.cpp Expr a = random_expr(T, depth); Expr 87 test/correctness/fuzz_simplify.cpp Expr b = random_expr(T, depth); Expr 92 test/correctness/fuzz_simplify.cpp Expr random_expr(Type T, int depth, bool overflow_undef) { Expr 93 test/correctness/fuzz_simplify.cpp typedef Expr (*make_bin_op_fn)(const Expr &, const Expr &); Expr 176 test/correctness/fuzz_simplify.cpp Expr a = random_expr(T, depth, overflow_undef); Expr 177 test/correctness/fuzz_simplify.cpp Expr b = random_expr(T, depth, overflow_undef); Expr 184 test/correctness/fuzz_simplify.cpp bool test_simplification(Expr a, Expr b, Type T, const map<string, Expr> &vars) { Expr 186 test/correctness/fuzz_simplify.cpp Expr a_j = a; Expr 187 test/correctness/fuzz_simplify.cpp Expr b_j = b; Expr 193 test/correctness/fuzz_simplify.cpp Expr a_j_v = simplify(substitute(vars, a_j)); Expr 194 test/correctness/fuzz_simplify.cpp Expr b_j_v = simplify(substitute(vars, b_j)); Expr 201 test/correctness/fuzz_simplify.cpp for(map<string, Expr>::const_iterator i = vars.begin(); i != vars.end(); i++) { Expr 216 test/correctness/fuzz_simplify.cpp bool test_expression(Expr test, int samples) { Expr 217 test/correctness/fuzz_simplify.cpp Expr simplified = simplify(test); Expr 219 test/correctness/fuzz_simplify.cpp map<string, Expr> vars; Expr 221 test/correctness/fuzz_simplify.cpp vars[fuzz_var(i)] = Expr(); Expr 225 test/correctness/fuzz_simplify.cpp for (std::map<string, Expr>::iterator v = vars.begin(); v != vars.end(); v++) { Expr 236 test/correctness/fuzz_simplify.cpp Expr ramp(Expr b, Expr s, int w) { return Ramp::make(b, s, w); } Expr 237 test/correctness/fuzz_simplify.cpp Expr x1(Expr x) { return Broadcast::make(x, 2); } Expr 238 test/correctness/fuzz_simplify.cpp Expr x2(Expr x) { return Broadcast::make(x, 2); } Expr 239 test/correctness/fuzz_simplify.cpp Expr x4(Expr x) { return Broadcast::make(x, 2); } Expr 240 test/correctness/fuzz_simplify.cpp Expr uint1(Expr x) { return Cast::make(UInt(1), x); } Expr 241 test/correctness/fuzz_simplify.cpp Expr uint8(Expr x) { return Cast::make(UInt(8), x); } Expr 242 test/correctness/fuzz_simplify.cpp Expr uint16(Expr x) { return Cast::make(UInt(16), x); } Expr 243 test/correctness/fuzz_simplify.cpp Expr uint32(Expr x) { return Cast::make(UInt(32), x); } Expr 244 test/correctness/fuzz_simplify.cpp Expr int8(Expr x) { return Cast::make(Int(8), x); } Expr 245 test/correctness/fuzz_simplify.cpp Expr int16(Expr x) { return Cast::make(Int(16), x); } Expr 246 test/correctness/fuzz_simplify.cpp Expr int32(Expr x) { return Cast::make(Int(32), x); } Expr 247 test/correctness/fuzz_simplify.cpp Expr uint1x2(Expr x) { return Cast::make(UInt(1).with_lanes(2), x); } Expr 248 test/correctness/fuzz_simplify.cpp Expr uint8x2(Expr x) { return Cast::make(UInt(8).with_lanes(2), x); } Expr 249 test/correctness/fuzz_simplify.cpp Expr uint16x2(Expr x) { return Cast::make(UInt(16).with_lanes(2), x); } Expr 250 test/correctness/fuzz_simplify.cpp Expr uint32x2(Expr x) { return Cast::make(UInt(32).with_lanes(2), x); } Expr 251 test/correctness/fuzz_simplify.cpp Expr int8x2(Expr x) { return Cast::make(Int(8).with_lanes(2), x); } Expr 252 test/correctness/fuzz_simplify.cpp Expr int16x2(Expr x) { return Cast::make(Int(16).with_lanes(2), x); } Expr 253 test/correctness/fuzz_simplify.cpp Expr int32x2(Expr x) { return Cast::make(Int(32).with_lanes(2), x); } Expr 255 test/correctness/fuzz_simplify.cpp Expr a(Variable::make(Int(0), fuzz_var(0))); Expr 256 test/correctness/fuzz_simplify.cpp Expr b(Variable::make(Int(0), fuzz_var(1))); Expr 257 test/correctness/fuzz_simplify.cpp Expr c(Variable::make(Int(0), fuzz_var(2))); Expr 258 test/correctness/fuzz_simplify.cpp Expr d(Variable::make(Int(0), fuzz_var(3))); Expr 259 test/correctness/fuzz_simplify.cpp Expr e(Variable::make(Int(0), fuzz_var(4))); Expr 283 test/correctness/fuzz_simplify.cpp Expr test = random_expr(VT, depth); Expr 6 test/correctness/gameoflife.cpp Expr u8(Expr a) { Expr 21 test/correctness/gameoflife.cpp Expr w = input.width(), h = input.height(); Expr 22 test/correctness/gameoflife.cpp Expr W = (x+w-1) % w, E = (x+1) % w, N = (y+h-1) % h, S = (y+1) % h; Expr 23 test/correctness/gameoflife.cpp Expr livingNeighbors = (in(W, N) + in(x, N) + Expr 27 test/correctness/gameoflife.cpp Expr alive = in(x, y) != 0; Expr 97 test/correctness/gameoflife.cpp Expr w = input.width(), h = input.height(); Expr 99 test/correctness/gameoflife.cpp Expr lastT = (t.z+1)%2; Expr 100 test/correctness/gameoflife.cpp Expr W = (t.x+w-1) % w, E = (t.x+1) % w, N = (t.y+h-1) % h, S = (t.y+1) % h; Expr 101 test/correctness/gameoflife.cpp Expr alive = life(t.x, t.y, lastT) != u8(0); Expr 102 test/correctness/gameoflife.cpp Expr livingNeighbors = (life(W, N, lastT) + life(t.x, N, lastT) + Expr 43 test/correctness/gpu_mixed_shared_mem_types.cpp Expr e = cast(result_type, 0); Expr 30 test/correctness/gpu_non_contiguous_copy.cpp Expr test = ((x >= x_off) && (x < x_off + x_size*2) && Expr 50 test/correctness/gpu_non_contiguous_copy.cpp f.output_buffer().dim(0).set_stride(Expr()); Expr 55 test/correctness/gpu_non_contiguous_copy.cpp Expr change_out_of_subregion = select(test, undef<int>(), 4*x + 3*y + 2*z + w); Expr 19 test/correctness/gpu_sum_scan.cpp Expr blocks = im.width() / B; Expr 30 test/correctness/host_alignment.cpp Expr left, right; Expr 49 test/correctness/host_alignment.cpp Expr m = op->message; Expr 53 test/correctness/host_alignment.cpp Expr c = op->condition; Expr 60 test/correctness/host_alignment.cpp Expr name = reinterpret_call->args[0]; Expr 27 test/correctness/image_io.cpp std::vector<Expr> args; Expr 48 test/correctness/implicit_args.cpp g(_) = f(2, 2, _) + im2(Expr(1), _); Expr 8 test/correctness/infer_arguments.cpp bool constant_expr_equals(Expr expr, T expected) { Expr 10 test/correctness/infer_arguments.cpp is_one(simplify(expr == Expr(expected)))); Expr 27 test/correctness/infer_arguments.cpp Param<uint64_t> z_unsigned("z_unsigned", 0xdeadbeef, 0x01, Expr(kU64)); Expr 17 test/correctness/inline_reduction.cpp Expr input_val = input(x+r.x, y+r.y); Expr 18 test/correctness/inline_reduction.cpp Expr local_mean = sum(input_val) / 9.0f; Expr 18 test/correctness/integer_powers.cpp Expr xf = x/256.0f; Expr 26 test/correctness/integer_powers.cpp Expr y1 = 0.0f; Expr 38 test/correctness/integer_powers.cpp Expr y2 = 1.0f; Expr 74 test/correctness/integer_powers.cpp Expr y1 = 0.0f; Expr 83 test/correctness/integer_powers.cpp Expr y2 = 0.0f; Expr 45 test/correctness/interleave.cpp void define(FuncRef f, std::vector<Expr> values) { Expr 53 test/correctness/interleave.cpp void define(FuncRef f, Expr value, int count) { Expr 54 test/correctness/interleave.cpp std::vector<Expr> values; Expr 61 test/correctness/interleave.cpp Expr element(FuncRef f, int i) { Expr 90 test/correctness/interleave.cpp std::vector<Expr> f_def, g_def; Expr 97 test/correctness/interleave.cpp std::vector<Expr> h_def; Expr 300 test/correctness/interleave.cpp std::vector<Expr> rdef0, rdef1; Expr 38 test/correctness/inverse.cpp Expr v = x*1.34f + 1.0142f; Expr 11 test/correctness/isnan.cpp Expr e = sqrt(x - y); Expr 27 test/correctness/iterate_over_circle.cpp Expr t = cast<int>(ceil(sqrt(10*10 - y*y))); Expr 44 test/correctness/legal_race_condition.cpp Expr permuted = (38*r*r + 193*r + 32) % 256; Expr 192 test/correctness/likely.cpp Expr e[N]; Expr 198 test/correctness/likely.cpp Expr nasty = cast<bool>(1); Expr 6 test/correctness/logical.cpp Expr u8(Expr a) { Expr 10 test/correctness/logical.cpp Expr u16(Expr a) { Expr 59 test/correctness/logical.cpp Expr common_cond = input(x, y) > 10; Expr 121 test/correctness/logical.cpp Expr ten = 10; Expr 34 test/correctness/loop_invariant_extern_calls.cpp f(x, y) = my_func(0, Expr(0)) + my_func(1, y) + my_func(2, x*32 + y); Expr 64 test/correctness/loop_invariant_extern_calls.cpp g(x, y) = my_func(3, Expr(0)); Expr 43 test/correctness/make_struct.cpp Expr a = cast<double>(3.0f); Expr 44 test/correctness/make_struct.cpp Expr b = cast<int32_t>(1234567); Expr 45 test/correctness/make_struct.cpp Expr c = cast<int16_t>(1234); Expr 46 test/correctness/make_struct.cpp Expr d = std::string("Test global string\n"); Expr 48 test/correctness/make_struct.cpp Expr s = Call::make(Handle(), Call::make_struct, {a, b, c, d}, Call::Intrinsic); Expr 11 test/correctness/many_dimensions.cpp Expr e = 0; Expr 27 test/correctness/many_dimensions.cpp std::vector<Expr> site1(vars.size()), site2(vars.size()); Expr 11 test/correctness/median3x3.cpp Expr mid3(Expr a, Expr b, Expr c) { Expr 12 test/correctness/min_extent.cpp Expr factor("factor"); Expr 325 test/correctness/mul_div_mod.cpp Expr ae = cast<RT>(Expr(ai)); Expr 326 test/correctness/mul_div_mod.cpp Expr be = cast<RT>(Expr(bi)); Expr 327 test/correctness/mul_div_mod.cpp Expr re = simplify(ae*be); Expr 332 test/correctness/mul_div_mod.cpp if (!Internal::equal(re, Expr(ri)) && (ecount++) < 10) { Expr 424 test/correctness/mul_div_mod.cpp Expr ae = Expr(ai); Expr 425 test/correctness/mul_div_mod.cpp Expr be = Expr(bi); Expr 426 test/correctness/mul_div_mod.cpp Expr qe = simplify(ae/be); Expr 427 test/correctness/mul_div_mod.cpp Expr re = simplify(ae%be); Expr 429 test/correctness/mul_div_mod.cpp if (!Internal::equal(qe, Expr(qi)) && (ecount++) < 10) { Expr 435 test/correctness/mul_div_mod.cpp } else if (!Internal::equal(re, Expr(ri)) && (ecount++) < 10) { Expr 486 test/correctness/mul_div_mod.cpp Expr in_e = cast<T>((float) arg_a) % cast<T>((float) arg_b); Expr 487 test/correctness/mul_div_mod.cpp Expr e = simplify(in_e); Expr 488 test/correctness/mul_div_mod.cpp Expr eout = cast<T>((float) v); Expr 490 test/correctness/mul_div_mod.cpp Expr diff = simplify(e - eout); Expr 491 test/correctness/mul_div_mod.cpp Expr smalldiff = simplify(diff < (float) (0.000001) && diff > (float) (-0.000001)); Expr 16 test/correctness/multi_pass_reduction.cpp Expr xl = r1; // left to right pass Expr 17 test/correctness/multi_pass_reduction.cpp Expr xr = 10 - r1; // right to left pass Expr 39 test/correctness/multiple_outputs.cpp Expr best_x = g()[0], best_y = g()[1], best_so_far = g()[2]; Expr 40 test/correctness/multiple_outputs.cpp Expr next_value = f(r.x, r.y); Expr 24 test/correctness/newtons_method.cpp Expr value = sin(f()); Expr 25 test/correctness/newtons_method.cpp Expr deriv = cos(f()); Expr 41 test/correctness/newtons_method.cpp Expr x1 = g()[0], y1 = g()[1]; Expr 42 test/correctness/newtons_method.cpp Expr x2 = g()[2], y2 = g()[3]; Expr 43 test/correctness/newtons_method.cpp Expr x0 = x1 - y1 * (x1 - x2) / (y1 - y2); Expr 46 test/correctness/newtons_method.cpp Expr baseline = abs(y2 - y1); Expr 52 test/correctness/newtons_method.cpp Expr y0 = sin(x0); Expr 64 test/correctness/parallel_reductions.cpp Expr x = i % chunk_size, y = i / chunk_size; Expr 24 test/correctness/partition_loops_bug.cpp Buffer<double> img = lambda(x, y, Expr(1.0)).realize(4, 4); Expr 96 test/correctness/print.cpp std::vector<Expr> args; Expr 107 test/correctness/print.cpp Expr dn = cast<double>((float)(n)); Expr 133 test/correctness/print.cpp Expr e = reinterpret(Float(32), random_uint()); Expr 26 test/correctness/random.cpp Expr val = g(r.x, r.y); Expr 33 test/correctness/random.cpp Expr dx = g(r.x, r.y) - g((r.x + 1) % 1024, r.y); Expr 34 test/correctness/random.cpp Expr dy = g(r.x, r.y) - g(r.x, (r.y + 1) % 1024); Expr 95 test/correctness/random.cpp Expr v1 = im1(r.x, r.y); Expr 96 test/correctness/random.cpp Expr v2 = im2(r.x, r.y); Expr 97 test/correctness/random.cpp Expr v3 = im3(r.x, r.y); Expr 123 test/correctness/random.cpp Expr val = f(r.x, r.y); Expr 135 test/correctness/random.cpp Expr val2 = val ^ (val * 2); Expr 147 test/correctness/random.cpp Expr r1 = cast<double>(random_float()); Expr 148 test/correctness/random.cpp Expr r2 = cast<double>(random_float()); Expr 161 test/correctness/random.cpp Expr f_val = f(r.x, r.y); Expr 162 test/correctness/random.cpp Expr g_val = g(r.x, r.y); Expr 572 test/correctness/reduction_non_rectangular.cpp Expr e1 = random_float() < 0.5f; Expr 613 test/correctness/reduction_non_rectangular.cpp Expr not_converged = abs(inverse(x)[0] * (x+1) - 1) > 0.001f; Expr 784 test/correctness/reduction_non_rectangular.cpp Expr w = (f.output_buffer().width()/2)*2; Expr 785 test/correctness/reduction_non_rectangular.cpp Expr h = (f.output_buffer().height()/2)*2; Expr 26 test/correctness/reduction_schedule.cpp Expr xm = max(r.x - 1, 0), xp = min(r.x + 1, noise.width() - 1); Expr 33 test/correctness/reorder_rvars.cpp Expr check = sum(abs(f(r3.x, r3.y) - g(r3.x, r3.y))); Expr 230 test/correctness/rfactor.cpp Expr x_clamped = clamp(a(r.x, r.y, r.z), 0, 19); Expr 231 test/correctness/rfactor.cpp Expr y_clamped = clamp(b(r.x, r.y, r.z), 0, 29); Expr 242 test/correctness/rfactor.cpp Expr x_clamped = clamp(a(r.x, r.y, r.z), 0, 19); Expr 243 test/correctness/rfactor.cpp Expr y_clamped = clamp(b(r.x, r.y, r.z), 0, 29); Expr 9 test/correctness/round.cpp bool test(Expr e, const char *funcname, int vector_width, int N, Buffer<T> &input, T *result) { Expr 29 test/correctness/round.cpp bool test(Expr e, const char *funcname, int N, Buffer<T> &input, T *result) { Expr 9 test/correctness/saturating_casts.cpp typedef Expr (*cast_maker_t)(Expr); Expr 13 test/correctness/shared_self_references.cpp Expr e = f(2); Expr 47 test/correctness/side_effects.cpp Complex(Expr real, Expr imag) : t(real, imag) {} Expr 50 test/correctness/side_effects.cpp Expr real() const {return t[0];} Expr 51 test/correctness/side_effects.cpp Expr imag() const {return t[1];} Expr 76 test/correctness/side_effects.cpp Expr magnitude(Complex a) { Expr 27 test/correctness/simd_op_check.cpp const Expr max_u32 = UInt(32).max(); Expr 40 test/correctness/simd_op_check.cpp Expr expr; Expr 113 test/correctness/simd_op_check.cpp Expr r; Expr 189 test/correctness/simd_op_check.cpp TestResult check_one(const string &op, const string &name, int vector_width, Expr e) const { Expr 257 test/correctness/simd_op_check.cpp void check(string op, int vector_width, Expr e) { Expr 281 test/correctness/simd_op_check.cpp Expr f64_1 = in_f64(x), f64_2 = in_f64(x+16), f64_3 = in_f64(x+32); Expr 282 test/correctness/simd_op_check.cpp Expr f32_1 = in_f32(x), f32_2 = in_f32(x+16), f32_3 = in_f32(x+32); Expr 283 test/correctness/simd_op_check.cpp Expr i8_1 = in_i8(x), i8_2 = in_i8(x+16), i8_3 = in_i8(x+32); Expr 284 test/correctness/simd_op_check.cpp Expr u8_1 = in_u8(x), u8_2 = in_u8(x+16), u8_3 = in_u8(x+32); Expr 285 test/correctness/simd_op_check.cpp Expr i16_1 = in_i16(x), i16_2 = in_i16(x+16), i16_3 = in_i16(x+32); Expr 286 test/correctness/simd_op_check.cpp Expr u16_1 = in_u16(x), u16_2 = in_u16(x+16), u16_3 = in_u16(x+32); Expr 287 test/correctness/simd_op_check.cpp Expr i32_1 = in_i32(x), i32_2 = in_i32(x+16), i32_3 = in_i32(x+32); Expr 288 test/correctness/simd_op_check.cpp Expr u32_1 = in_u32(x), u32_2 = in_u32(x+16), u32_3 = in_u32(x+32); Expr 289 test/correctness/simd_op_check.cpp Expr i64_1 = in_i64(x), i64_2 = in_i64(x+16), i64_3 = in_i64(x+32); Expr 290 test/correctness/simd_op_check.cpp Expr u64_1 = in_u64(x), u64_2 = in_u64(x+16), u64_3 = in_u64(x+32); Expr 291 test/correctness/simd_op_check.cpp Expr bool_1 = (f32_1 > 0.3f), bool_2 = (f32_1 < -0.3f), bool_3 = (f32_1 != -0.34f); Expr 661 test/correctness/simd_op_check.cpp Expr f64_1 = in_f64(x), f64_2 = in_f64(x+16), f64_3 = in_f64(x+32); Expr 662 test/correctness/simd_op_check.cpp Expr f32_1 = in_f32(x), f32_2 = in_f32(x+16), f32_3 = in_f32(x+32); Expr 663 test/correctness/simd_op_check.cpp Expr i8_1 = in_i8(x), i8_2 = in_i8(x+16), i8_3 = in_i8(x+32); Expr 664 test/correctness/simd_op_check.cpp Expr u8_1 = in_u8(x), u8_2 = in_u8(x+16), u8_3 = in_u8(x+32); Expr 665 test/correctness/simd_op_check.cpp Expr i16_1 = in_i16(x), i16_2 = in_i16(x+16), i16_3 = in_i16(x+32); Expr 666 test/correctness/simd_op_check.cpp Expr u16_1 = in_u16(x), u16_2 = in_u16(x+16), u16_3 = in_u16(x+32); Expr 667 test/correctness/simd_op_check.cpp Expr i32_1 = in_i32(x), i32_2 = in_i32(x+16), i32_3 = in_i32(x+32); Expr 668 test/correctness/simd_op_check.cpp Expr u32_1 = in_u32(x), u32_2 = in_u32(x+16), u32_3 = in_u32(x+32); Expr 669 test/correctness/simd_op_check.cpp Expr i64_1 = in_i64(x), i64_2 = in_i64(x+16), i64_3 = in_i64(x+32); Expr 670 test/correctness/simd_op_check.cpp Expr u64_1 = in_u64(x), u64_2 = in_u64(x+16), u64_3 = in_u64(x+32); Expr 671 test/correctness/simd_op_check.cpp Expr bool_1 = (f32_1 > 0.3f), bool_2 = (f32_1 < -0.3f), bool_3 = (f32_1 != -0.34f); Expr 1142 test/correctness/simd_op_check.cpp (Expr(int64_t(1)) << 31))); Expr 1355 test/correctness/simd_op_check.cpp Expr e = (tmp1(x/2)*2 + 7)/4; Expr 1431 test/correctness/simd_op_check.cpp Expr f32_1 = in_f32(x), f32_2 = in_f32(x+16), f32_3 = in_f32(x+32); Expr 1432 test/correctness/simd_op_check.cpp Expr f64_1 = in_f64(x), f64_2 = in_f64(x+16), f64_3 = in_f64(x+32); Expr 1433 test/correctness/simd_op_check.cpp Expr i8_1 = in_i8(x), i8_2 = in_i8(x+16), i8_3 = in_i8(x+32), i8_4 = in_i8(x + 48); Expr 1434 test/correctness/simd_op_check.cpp Expr u8_1 = in_u8(x), u8_2 = in_u8(x+16), u8_3 = in_u8(x+32), u8_4 = in_u8(x + 48); Expr 1435 test/correctness/simd_op_check.cpp Expr u8_even = in_u8(2*x), u8_odd = in_u8(2*x+1); Expr 1436 test/correctness/simd_op_check.cpp Expr i16_1 = in_i16(x), i16_2 = in_i16(x+16), i16_3 = in_i16(x+32); Expr 1437 test/correctness/simd_op_check.cpp Expr u16_1 = in_u16(x), u16_2 = in_u16(x+16), u16_3 = in_u16(x+32); Expr 1438 test/correctness/simd_op_check.cpp Expr i32_1 = in_i32(x), i32_2 = in_i32(x+16), i32_3 = in_i32(x+32); Expr 1439 test/correctness/simd_op_check.cpp Expr u32_1 = in_u32(x), u32_2 = in_u32(x+16), u32_3 = in_u32(x+32); Expr 1440 test/correctness/simd_op_check.cpp Expr i64_1 = in_i64(x), i64_2 = in_i64(x+16), i64_3 = in_i64(x+32); Expr 1441 test/correctness/simd_op_check.cpp Expr u64_1 = in_u64(x), u64_2 = in_u64(x+16), u64_3 = in_u64(x+32); Expr 1442 test/correctness/simd_op_check.cpp Expr bool_1 = (f32_1 > 0.3f), bool_2 = (f32_1 < -0.3f), bool_3 = (f32_1 != -0.34f); Expr 1916 test/correctness/simd_op_check.cpp Expr u8_4x4[] = { Expr 1941 test/correctness/simd_op_check.cpp Expr f32_1 = in_f32(x), f32_2 = in_f32(x+16), f32_3 = in_f32(x+32); Expr 1942 test/correctness/simd_op_check.cpp Expr f64_1 = in_f64(x), f64_2 = in_f64(x+16), f64_3 = in_f64(x+32); Expr 1943 test/correctness/simd_op_check.cpp Expr i8_1 = in_i8(x), i8_2 = in_i8(x+16), i8_3 = in_i8(x+32); Expr 1944 test/correctness/simd_op_check.cpp Expr u8_1 = in_u8(x), u8_2 = in_u8(x+16), u8_3 = in_u8(x+32); Expr 1945 test/correctness/simd_op_check.cpp Expr i16_1 = in_i16(x), i16_2 = in_i16(x+16), i16_3 = in_i16(x+32); Expr 1946 test/correctness/simd_op_check.cpp Expr u16_1 = in_u16(x), u16_2 = in_u16(x+16), u16_3 = in_u16(x+32); Expr 1947 test/correctness/simd_op_check.cpp Expr i32_1 = in_i32(x), i32_2 = in_i32(x+16), i32_3 = in_i32(x+32); Expr 1948 test/correctness/simd_op_check.cpp Expr u32_1 = in_u32(x), u32_2 = in_u32(x+16), u32_3 = in_u32(x+32); Expr 1949 test/correctness/simd_op_check.cpp Expr i64_1 = in_i64(x), i64_2 = in_i64(x+16), i64_3 = in_i64(x+32); Expr 1950 test/correctness/simd_op_check.cpp Expr u64_1 = in_u64(x), u64_2 = in_u64(x+16), u64_3 = in_u64(x+32); Expr 5 test/correctness/sort_exprs.cpp void sort2(Expr &a, Expr &b) { Expr 11 test/correctness/sort_exprs.cpp Expr tmp = min(a, b); Expr 18 test/correctness/sort_exprs.cpp std::vector<Expr> bitonic_sort_inner(std::vector<Expr> v, bool flipped) { Expr 24 test/correctness/sort_exprs.cpp std::vector<Expr>::iterator middle = v.begin() + half_size; Expr 25 test/correctness/sort_exprs.cpp std::vector<Expr> a, b; Expr 54 test/correctness/sort_exprs.cpp std::vector<Expr> bitonic_sort(std::vector<Expr> v) { Expr 57 test/correctness/sort_exprs.cpp v.push_back(Expr()); Expr 68 test/correctness/sort_exprs.cpp Expr median(std::vector<Expr> v) { Expr 81 test/correctness/sort_exprs.cpp std::vector<Expr> exprs; Expr 84 test/correctness/specialize.cpp Expr cond = (f.output_buffer().width() >= 4); Expr 214 test/correctness/specialize.cpp im.dim(0).set_stride(Expr()); // unconstrain the stride Expr 336 test/correctness/specialize.cpp Expr cond = f.output_buffer().width() >= 4; Expr 372 test/correctness/specialize.cpp Expr w = out.output_buffer().dim(0).extent(); Expr 452 test/correctness/specialize.cpp Expr test = (p > 73) || (p*p + p + 1 == 0); Expr 490 test/correctness/specialize.cpp Expr test = (p > 73); Expr 528 test/correctness/specialize.cpp Expr const_false = Expr(0) == Expr(1); Expr 529 test/correctness/specialize.cpp Expr const_true = Expr(0) == Expr(0); Expr 530 test/correctness/specialize.cpp Expr different_const_true = Expr(1) == Expr(1); Expr 567 test/correctness/specialize.cpp Expr const_false = Expr(0) == Expr(1); Expr 568 test/correctness/specialize.cpp Expr const_true = Expr(0) == Expr(0); Expr 569 test/correctness/specialize.cpp Expr different_const_true = Expr(1) == Expr(1); Expr 615 test/correctness/specialize.cpp Expr const_true = Expr(0) == Expr(0); Expr 616 test/correctness/specialize.cpp Expr different_const_true = Expr(1) == Expr(1); Expr 27 test/correctness/stream_compaction.cpp Expr bin = clamp(cum_sum(r), 0, 1000); Expr 123 test/correctness/trim_no_ops.cpp Expr xi = r[0] + r[2]*10, yi = r[1] + r[3]*10; Expr 23 test/correctness/truncated_pyramid.cpp vector<pair<Expr, Expr> > sizes(levels); Expr 109 test/correctness/tuple_undef.cpp Expr arg_0 = clamp(select(r.x < 2, 13, undef<int>()), 0, 100); Expr 110 test/correctness/tuple_undef.cpp Expr arg_1 = clamp(select(r.x < 2, 23, undef<int>()), 0, 100); Expr 55 test/correctness/undef.cpp Expr left = max(rx-1, 0); Expr 56 test/correctness/undef.cpp Expr right = min(rx+1, 99); Expr 13 test/correctness/unsafe_dedup_lets.cpp Expr a = max(pa, pb), b = min(pa, pb); Expr 215 test/correctness/vector_math.cpp Expr xCoord = clamp(cast<int>(input(x, y)), 0, W-1); Expr 216 test/correctness/vector_math.cpp Expr yCoord = clamp(cast<int>(input(x+1, y)), 0, H-1); Expr 342 test/correctness/vector_math.cpp f10(x, y) = (input(x, y)) / cast<A>(Expr(c)); Expr 458 test/correctness/vector_math.cpp Expr a = input(x, y) * 0.5f; Expr 459 test/correctness/vector_math.cpp Expr b = input((x+1)%W, y) * 0.5f; Expr 567 test/correctness/vector_math.cpp Expr weight = input(x+2, y); Expr 8 test/error/overflow_during_constant_folding.cpp f(x) = Expr(0x12345678) * Expr(0x76543210); Expr 14 test/error/tuple_arg_select_undef.cpp Expr arg_0 = clamp(select(r.x < 2, 13, undef<int>()), 0, 20); Expr 15 test/error/tuple_arg_select_undef.cpp Expr arg_1 = clamp(select(r.x < 5, 23, undef<int>()), 0, 20); Expr 6 test/generator/blur2x2_generator.cpp Halide::Expr is_interleaved(const T &p, int channels = 3) { Expr 11 test/generator/blur2x2_generator.cpp Halide::Expr is_planar(const T &p, int channels = 3) { Expr 45 test/generator/blur2x2_generator.cpp input.dim(0).set_stride(Expr()); Expr 46 test/generator/blur2x2_generator.cpp blur.dim(0).set_stride(Expr()); Expr 37 test/generator/cxx_mangling_define_extern_generator.cpp args.push_back(Expr(11.0)); Expr 4 test/generator/cxx_mangling_generator.cpp Halide::Expr extract_value_global(Halide::Expr arg) { Expr 10 test/generator/cxx_mangling_generator.cpp Halide::Expr extract_value_ns(Halide::Expr arg) { Expr 68 test/generator/cxx_mangling_generator.cpp Expr offset = offset_i8 + offset_u8 + offset_i16 + offset_u16 + Expr 11 test/generator/mandelbrot_generator.cpp Complex(Expr real, Expr imag) : t(real, imag) {} Expr 14 test/generator/mandelbrot_generator.cpp Expr real() const { return t[0]; } Expr 15 test/generator/mandelbrot_generator.cpp Expr imag() const { return t[1]; } Expr 32 test/generator/mandelbrot_generator.cpp Expr magnitude(Complex a) { return (a * conjugate(a)).real(); } Expr 11 test/generator/memory_profiler_mandelbrot_generator.cpp Complex(Expr real, Expr imag) : t(real, imag) {} Expr 14 test/generator/memory_profiler_mandelbrot_generator.cpp Expr real() const { return t[0]; } Expr 15 test/generator/memory_profiler_mandelbrot_generator.cpp Expr imag() const { return t[1]; } Expr 32 test/generator/memory_profiler_mandelbrot_generator.cpp Expr magnitude(Complex a) { return (a * conjugate(a)).real(); } Expr 56 test/generator/metadata_tester_generator.cpp Expr zero1 = array_input[1](x, y, c) - array_input[0](x, y, c); Expr 57 test/generator/metadata_tester_generator.cpp Expr zero2 = array_i32[1] - array_i32[0]; Expr 28 test/generator/msan_generator.cpp msan_output.dim(0).set_stride(Expr()).set_extent(4) Expr 6 test/generator/stubtest_jittest.cpp using Halide::Expr; Expr 66 test/generator/stubtest_jittest.cpp std::vector<Expr> int_args_expr(int_args.begin(), int_args.end()); Expr 8 test/generator/tiled_blur_generator.cpp Halide::Expr is_interleaved(const T &p, int channels = 3) { Expr 13 test/generator/tiled_blur_generator.cpp Halide::Expr is_planar(const T &p, int channels = 3) { Expr 23 test/generator/tiled_blur_generator.cpp Expr input_float = cast<float>(input(x, y, c)) / 255.f; Expr 36 test/generator/tiled_blur_generator.cpp Expr tiled_blur_brightened = tiled_blur(x, y, c) * 1.2f; Expr 54 test/generator/tiled_blur_generator.cpp input.dim(0).set_stride(Expr()); Expr 55 test/generator/tiled_blur_generator.cpp output.dim(0).set_stride(Expr()); Expr 26 test/opengl/conv_select.cpp Expr coordx = clamp(x + r, 0, input.width() - 1); Expr 29 test/opengl/conv_select.cpp Expr R = select(f(x, y, c) > 9.0f, 1.0f, 0.0f); Expr 30 test/opengl/conv_select.cpp Expr G = select(f(x, y, c) > 9.0f, 0.f, 1.0f); Expr 43 test/opengl/lut.cpp Expr e = cast<int>(8.0f * cast<float>(input(x, y, c)) / 255.0f); Expr 35 test/opengl/produce.cpp Expr e = cast<int>(8.0f * cast<float>(input(x, y, c)) / 255.0f); Expr 138 test/opengl/select.cpp Expr temp = cast<uint8_t>(select(x == 0, 1, 2)); Expr 174 test/opengl/select.cpp Expr temp = cast<uint8_t>(select(x - c > 0, 1, 2)); Expr 16 test/opengl/special_funcs.cpp void test_function(Expr e, Buffer<T> &cpu_result, Buffer<T> &gpu_result) { Expr 32 test/opengl/special_funcs.cpp bool test_exact(Expr r, Expr g, Expr b) { Expr 33 test/opengl/special_funcs.cpp Expr e = cast<T>(select(c == T(0), r, Expr 63 test/opengl/special_funcs.cpp bool test_approx(Expr r, Expr g, Expr b, double rms_error) { Expr 64 test/opengl/special_funcs.cpp Expr e = cast<T>(select(c == 0, r, c == 1, g, b)); Expr 118 test/opengl/special_funcs.cpp Expr r = (256 * x + y) / ceilf(65536.f / (2 * 3.1415926536f)); Expr 23 test/opengl/sum_reduction.cpp Expr coordx = clamp(x + r, 0, input.width() - 1); Expr 169 test/opengl/varying.cpp Expr foo = p; Expr 59 test/performance/fast_pow.cpp Expr fast_delta = correct_result(r.x, r.y) - fast_result(r.x, r.y); Expr 60 test/performance/fast_pow.cpp Expr faster_delta = correct_result(r.x, r.y) - faster_result(r.x, r.y); Expr 15 test/performance/parallel_performance.cpp Expr math = cast<float>(x+y); Expr 27 test/performance/profiler.cpp Expr e = f[i-1](c, x); Expr 19 test/performance/sort.cpp Expr chunk_start = (x/(2*chunk_size))*(2*chunk_size); Expr 20 test/performance/sort.cpp Expr chunk_end = (x/(2*chunk_size) + 1)*(2*chunk_size); Expr 21 test/performance/sort.cpp Expr chunk_middle = chunk_start + chunk_size; Expr 22 test/performance/sort.cpp Expr chunk_index = x - chunk_start; Expr 25 test/performance/sort.cpp Expr partner = 2*chunk_middle - x - 1; Expr 35 test/performance/sort.cpp Expr partner = chunk_start + (chunk_index + chunk_size) % (chunk_size*2); Expr 70 test/performance/sort.cpp Expr a0 = input(4*y); Expr 71 test/performance/sort.cpp Expr a1 = input(4*y+1); Expr 72 test/performance/sort.cpp Expr a2 = input(4*y+2); Expr 73 test/performance/sort.cpp Expr a3 = input(4*y+3); Expr 75 test/performance/sort.cpp Expr b0 = min(a0, a1); Expr 76 test/performance/sort.cpp Expr b1 = max(a0, a1); Expr 77 test/performance/sort.cpp Expr b2 = min(a2, a3); Expr 78 test/performance/sort.cpp Expr b3 = max(a2, a3); Expr 113 test/performance/sort.cpp Expr candidate_a = merge_rows(r-1, y)[0]; Expr 114 test/performance/sort.cpp Expr candidate_b = merge_rows(r-1, y)[1]; Expr 115 test/performance/sort.cpp Expr valid_a = candidate_a < chunk_size; Expr 116 test/performance/sort.cpp Expr valid_b = candidate_b < chunk_size; Expr 117 test/performance/sort.cpp Expr value_a = result(clamp(candidate_a, 0, chunk_size-1), 2*y); Expr 118 test/performance/sort.cpp Expr value_b = result(clamp(candidate_b, 0, chunk_size-1), 2*y+1); Expr 40 test/performance/vectorize.cpp Expr e = input(x, y); Expr 36 test/performance/vectorize_pred.cpp Expr e = input(r.x, r.y); Expr 39 test/performance/wrap.cpp Expr prev = (i == 0) ? Expr(0) : Expr(f[i-1](x, y)); Expr 40 test/performance/wrap.cpp Expr stencil = 0; Expr 83 test/performance/wrap.cpp Expr prev = (i == 0) ? Expr(0) : Expr(f[i-1](x, y)); Expr 84 test/performance/wrap.cpp Expr stencil = 0; Expr 49 tutorial/lesson_01_basics.cpp Halide::Expr e = x + y; Expr 51 tutorial/lesson_02_input_image.cpp Halide::Expr value = input(x, y, c); Expr 109 tutorial/lesson_04_debugging_2.cpp Expr e = cos(y); Expr 130 tutorial/lesson_04_debugging_2.cpp Expr e = cos(y); Expr 153 tutorial/lesson_04_debugging_2.cpp Expr e = 1; Expr 110 tutorial/lesson_07_multi_stage_pipelines.cpp Expr clamped_x = clamp(x, 0, input.width()-1); Expr 114 tutorial/lesson_07_multi_stage_pipelines.cpp Expr clamped_y = clamp(y, 0, input.height()-1); Expr 766 tutorial/lesson_09_update_definitions.cpp Expr x_clamped = clamp(x, 0, input.width()-1); Expr 767 tutorial/lesson_09_update_definitions.cpp Expr y_clamped = clamp(y, 0, input.height()-1); Expr 131 tutorial/lesson_13_tuples.cpp Expr integer_part = multi_valued_2(x, y)[0]; Expr 132 tutorial/lesson_13_tuples.cpp Expr floating_part = multi_valued_2(x, y)[1]; Expr 156 tutorial/lesson_13_tuples.cpp Expr old_index = arg_max()[0]; Expr 157 tutorial/lesson_13_tuples.cpp Expr old_max = arg_max()[1]; Expr 158 tutorial/lesson_13_tuples.cpp Expr new_index = select(old_max < input(r), r, old_index); Expr 159 tutorial/lesson_13_tuples.cpp Expr new_max = max(input(r), old_max); Expr 203 tutorial/lesson_13_tuples.cpp Expr real, imag; Expr 209 tutorial/lesson_13_tuples.cpp Complex(Expr r, Expr i) : real(r), imag(i) {} Expr 231 tutorial/lesson_13_tuples.cpp Expr magnitude() const { Expr 266 tutorial/lesson_13_tuples.cpp Expr escape_condition = Complex(mandelbrot(x, y, r)).magnitude() < 16.0f; Expr 25 tutorial/lesson_14_types.cpp Expr average(Expr a, Expr b); Expr 68 tutorial/lesson_14_types.cpp assert(Expr(x).type() == Int(32)); Expr 99 tutorial/lesson_14_types.cpp Expr u8 = cast<uint8_t>(x); Expr 100 tutorial/lesson_14_types.cpp Expr u16 = cast<uint16_t>(x); Expr 101 tutorial/lesson_14_types.cpp Expr u32 = cast<uint32_t>(x); Expr 102 tutorial/lesson_14_types.cpp Expr u64 = cast<uint64_t>(x); Expr 103 tutorial/lesson_14_types.cpp Expr s8 = cast<int8_t>(x); Expr 104 tutorial/lesson_14_types.cpp Expr s16 = cast<int16_t>(x); Expr 105 tutorial/lesson_14_types.cpp Expr s32 = cast<int32_t>(x); Expr 106 tutorial/lesson_14_types.cpp Expr s64 = cast<int64_t>(x); Expr 107 tutorial/lesson_14_types.cpp Expr f32 = cast<float>(x); Expr 108 tutorial/lesson_14_types.cpp Expr f64 = cast<double>(x); Expr 119 tutorial/lesson_14_types.cpp Expr e = cast(t, x); Expr 217 tutorial/lesson_14_types.cpp Expr average(Expr a, Expr b) { Expr 156 tutorial/lesson_16_rgb_generate.cpp input.dim(0).set_stride(Expr()); // Use a default-constructed Expr 160 tutorial/lesson_16_rgb_generate.cpp brighter.output_buffer().dim(0).set_stride(Expr()); Expr 169 tutorial/lesson_16_rgb_generate.cpp input.dim(0).set_stride(Expr()); // Use an undefined Expr to Expr 173 tutorial/lesson_16_rgb_generate.cpp brighter.output_buffer().dim(0).set_stride(Expr()); Expr 179 tutorial/lesson_16_rgb_generate.cpp Expr input_is_planar = Expr 181 tutorial/lesson_16_rgb_generate.cpp Expr input_is_interleaved = Expr 186 tutorial/lesson_16_rgb_generate.cpp Expr output_is_planar = Expr 188 tutorial/lesson_16_rgb_generate.cpp Expr output_is_interleaved =