diff --git a/cmake/patches/halide_fp_simplify.patch b/cmake/patches/halide_fp_simplify.patch index d1ba93aeee9b..026557facec9 100644 --- a/cmake/patches/halide_fp_simplify.patch +++ b/cmake/patches/halide_fp_simplify.patch @@ -31,14 +31,14 @@ index 7174974..d23e988 100644 + if (no_overflow(op->type) && (mod_a && mul_b)) { + const Mod* mod_b_a = mul_b->a.as(); + const Div* div_b_a_a = mod_b_a ? mod_b_a->a.as
() : nullptr; -+ if (mod_b_a && div_b_a_a && equal(mod_a->b, mul_b->b) && equal(mod_a->b, div_b_a_a->b)) { ++ if (mod_b_a && div_b_a_a && equal(mod_a->b, mul_b->b) && equal(mod_a->b, div_b_a_a->b) && equal(mod_a->a, div_b_a_a->a)) { + // x%2 + ((x/2)%4)*2 -> x%(2*4) + expr = Mod::make(mod_a->a, mod_a->b * mod_b_a->b); + } + } else if (no_overflow(op->type) && (mul_a && mod_b)) { + const Mod* mod_a_a = mul_a->a.as(); + const Div* div_a_a_a = mod_a_a ? mod_a_a->a.as
() : nullptr; -+ if (mod_a_a && div_a_a_a && equal(mod_b->b, mul_a->b) && equal(mod_b->b, div_a_a_a->b)) { ++ if (mod_a_a && div_a_a_a && equal(mod_b->b, mul_a->b) && equal(mod_b->b, div_a_a_a->b) && equal(mod_b->a, div_a_a_a->a)) { + // ((x/2)%4)*2 + x%2 -> x%(2*4) + expr = Mod::make(mod_b->a, mod_b->b * mod_a_a->b); + }