diff --git a/juno_samples/edge_detection/src/cpu.sch b/juno_samples/edge_detection/src/cpu.sch index 4bd3254b1773a804e90154eec8385c8237b62fbd..ec9e423dc4c160d08b61eaf45d2b75329886f94e 100644 --- a/juno_samples/edge_detection/src/cpu.sch +++ b/juno_samples/edge_detection/src/cpu.sch @@ -86,7 +86,7 @@ fixpoint { simpl!(max_gradient); fork-dim-merge(max_gradient); simpl!(max_gradient); -fork-tile[8, 0, false, false](max_gradient); +fork-tile[16, 0, false, false](max_gradient); let split = fork-split(max_gradient); clean-monoid-reduces(max_gradient); let out = outline(split._4_max_gradient.fj1); @@ -104,11 +104,18 @@ fixpoint { } predication(reject_zero_crossings); simpl!(reject_zero_crossings); +fork-tile[4, 1, false, false](reject_zero_crossings); +fork-tile[4, 0, false, false](reject_zero_crossings); +fork-interchange[1, 2](reject_zero_crossings); +let split = fork-split(reject_zero_crossings); +let reject_zero_crossings_body = outline(split._5_reject_zero_crossings.fj2); +fork-coalesce(reject_zero_crossings, reject_zero_crossings_body); +simpl!(reject_zero_crossings, reject_zero_crossings_body); async-call(edge_detection@le, edge_detection@zc); -fork-split(gaussian_smoothing_body, laplacian_estimate_body, zero_crossings_body, gradient, reject_zero_crossings); -unforkify(gaussian_smoothing_body, laplacian_estimate_body, zero_crossings_body, gradient, reject_zero_crossings); +fork-split(gaussian_smoothing_body, laplacian_estimate_body, zero_crossings_body, gradient, reject_zero_crossings_body); +unforkify(gaussian_smoothing_body, laplacian_estimate_body, zero_crossings_body, gradient, reject_zero_crossings_body); simpl!(*);