diff --git a/juno_samples/rodinia/backprop/src/backprop.jn b/juno_samples/rodinia/backprop/src/backprop.jn index c7f4345bc5dc89d2fb55ee96231e6b5f6604ef4f..356bb3d91836ba0994cad56315b9a5588b0df8b7 100644 --- a/juno_samples/rodinia/backprop/src/backprop.jn +++ b/juno_samples/rodinia/backprop/src/backprop.jn @@ -4,7 +4,7 @@ fn squash(x: f32) -> f32 { } fn layer_forward<n, m: usize>(vals: f32[n + 1], weights: f32[n + 1, m + 1]) -> f32[m + 1] { - let result : f32[m + 1]; + @res let result : f32[m + 1]; result[0] = 1.0; for j in 1..=m { diff --git a/juno_samples/rodinia/backprop/src/cpu.sch b/juno_samples/rodinia/backprop/src/cpu.sch index 56fc2c9ae401985116fa7fbfdf69ed0e4e0ab926..b6e69a2795897618bc1643a5c9ca7bc119ae7902 100644 --- a/juno_samples/rodinia/backprop/src/cpu.sch +++ b/juno_samples/rodinia/backprop/src/cpu.sch @@ -1,24 +1,25 @@ -gvn(*); -dce(*); -phi-elim(*); -dce(*); -crc(*); -dce(*); -slf(*); -dce(*); +macro simpl!(X) { + ccp(X); + simplify-cfg(X); + lift-dc-math(X); + gvn(X); + phi-elim(X); + dce(X); + infer-schedules(X); +} -let auto = auto-outline(backprop); -cpu(auto.backprop); - -inline(auto.backprop); -inline(auto.backprop); +simpl!(*); +inline(layer_forward); delete-uncalled(*); -sroa[true](*); -dce(*); -float-collections(*); -reuse-products(*); -dce(*); +no-memset(layer_forward@res); +lift-dc-math(*); +loop-bound-canon(*); +fixpoint { + forkify(*); + fork-guard-elim(*); + fork-coalesce(*); +} gcm(*);