diff --git a/juno_samples/cava/src/cava.jn b/juno_samples/cava/src/cava.jn index bb8afded47a255da9a2c5cdb33482b819d374e89..a06c8d7b03ca2cb962bb7c5c31e87cd3b3a7e502 100644 --- a/juno_samples/cava/src/cava.jn +++ b/juno_samples/cava/src/cava.jn @@ -207,8 +207,8 @@ fn cava<r, c, num_ctrl_pts : usize>( coefs : f32[4, CHAN], tonemap : f32[256, CHAN], ) -> u8[CHAN, r, c] { - let scaled = scale::<r, c>(input); - let demosc = demosaic::<r, c>(scaled); + @fuse1 let scaled = scale::<r, c>(input); + @fuse1 let demosc = demosaic::<r, c>(scaled); let denosd = denoise::<r, c>(demosc); let transf = transform::<r, c>(denosd, TsTw); let gamutd = gamut::<r, c, num_ctrl_pts>(transf, ctrl_pts, weights, coefs); diff --git a/juno_samples/cava/src/cpu.sch b/juno_samples/cava/src/cpu.sch index 0913d4b3738a91a659702a767fb4e429dc94afa3..f090eab35861e1a3977744a7dad8754e1ba9714e 100644 --- a/juno_samples/cava/src/cpu.sch +++ b/juno_samples/cava/src/cpu.sch @@ -1,5 +1,6 @@ macro simpl!(X) { ccp(X); + simplify-cfg(X); gvn(X); phi-elim(X); dce(X); @@ -8,33 +9,27 @@ macro simpl!(X) { simpl!(*); +let fuse1 = outline(cava@fuse1); +inline(fuse1); + inline(denoise); -cpu(scale, demosaic, denoise, transform, gamut, tone_map, descale); +cpu(denoise, transform, gamut, tone_map, descale); ip-sroa(*); sroa(*); simpl!(*); -no-memset(scale@const); +no-memset(fuse1@const); fixpoint { - forkify(scale); - fork-guard-elim(scale); - fork-coalesce(scale); + forkify(fuse1); + fork-guard-elim(fuse1); + fork-coalesce(fuse1); } -simpl!(*); -fork-dim-merge(scale); -simpl!(*); -fork-tile[2048, 0, false](scale); -simpl!(*); -let out = fork-split(scale); -simpl!(*); -let out = outline(out._0_scale.fj1); -ip-sroa(*); -sroa(*); -simpl!(*); -host(scale); -unforkify(out); -xdot[true](scale, out); +simpl!(fuse1); +array-slf(fuse1); +simpl!(fuse1); +xdot[true](fuse1); +unforkify(fuse1); gcm(*); fixpoint {