Skip to content

Commit 9373bdf

Browse files
committed
improve generated code
1 parent 9da729c commit 9373bdf

File tree

3 files changed

+49
-19
lines changed

3 files changed

+49
-19
lines changed

tests/run-with-compiler/shonan-hmm.check

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ Complex(1.*(4).-(2.*(2)), 1.*(2).+(2.*(4)))
33
List(Complex(2,0), Complex(-4,4), Complex(-2,6))
44
((vout: scala.Array[Complex[scala.Int]], v1: scala.Array[Complex[scala.Int]], v2: scala.Array[Complex[scala.Int]]) => {
55
val n: scala.Int = vout.length
6-
scala.Predef.intWrapper(0).until(n).foreach[scala.Unit](((i: scala.Int) => vout.update(i, Complex.apply[scala.Int](v1.apply(i).re.*(v2.apply(i).re).-(v1.apply(i).im.*(v2.apply(i).im)), v1.apply(i).re.*(v2.apply(i).im).+(v1.apply(i).im.*(v2.apply(i).re))))))
6+
var i: scala.Int = 0
7+
while (i.<(n)) {
8+
vout.update(i, Complex.apply[scala.Int](v1.apply(i).re.*(v2.apply(i).re).-(v1.apply(i).im.*(v2.apply(i).im)), v1.apply(i).re.*(v2.apply(i).im).+(v1.apply(i).im.*(v2.apply(i).re))))
9+
i = i.+(1)
10+
}
711
})
812
List(25, 30, 20, 43, 44)
913

@@ -12,11 +16,19 @@ List(25, 30, 20, 43, 44)
1216
((vout: scala.Array[scala.Int], a: scala.Array[scala.Array[scala.Int]], v: scala.Array[scala.Int]) => {
1317
val n: scala.Int = vout.length
1418
val m: scala.Int = v.length
15-
scala.Predef.intWrapper(0).until(n).foreach[scala.Unit](((i: scala.Int) => vout.update(i, {
16-
var sum: scala.Int = 0
17-
scala.Predef.intWrapper(0).until(m).foreach[scala.Unit](((i: scala.Int) => sum = sum.+(v.apply(i).*(a.apply(i).apply(i)))))
18-
(sum: scala.Int)
19-
})))
19+
var i: scala.Int = 0
20+
while (i.<(n)) {
21+
vout.update(i, {
22+
var sum: scala.Int = 0
23+
var i: scala.Int = 0
24+
while (i.<(m)) {
25+
sum = sum.+(v.apply(i).*(a.apply(i).apply(i)))
26+
i = i.+(1)
27+
}
28+
(sum: scala.Int)
29+
})
30+
i = i.+(1)
31+
}
2032
})
2133

2234

@@ -224,7 +236,11 @@ List(25, 30, 20, 43, 44)
224236
vout.update(2, v.apply(1).*(10))
225237
vout.update(3, {
226238
var sum: scala.Int = 0
227-
scala.Predef.intWrapper(0).until(5).foreach[scala.Unit](((i: scala.Int) => sum = sum.+(v.apply(i).*(arr.apply(3).apply(i)))))
239+
var i: scala.Int = 0
240+
while (i.<(5)) {
241+
sum = sum.+(v.apply(i).*(arr.apply(3).apply(i)))
242+
i = i.+(1)
243+
}
228244
(sum: scala.Int)
229245
})
230246
vout.update(4, v.apply(2).*(3).+(v.apply(4).*(7)))
@@ -241,15 +257,19 @@ List(25, 30, 20, 43, 44)
241257
vout.update(2, v.apply(1).*(10))
242258
vout.update(3, {
243259
var sum: scala.Int = 0
244-
scala.Predef.intWrapper(0).until(5).foreach[scala.Unit](((i: scala.Int) => sum = sum.+(v.apply(i).*({
245-
val array: scala.Array[scala.Int] = new scala.Array[scala.Int](5)
246-
array.update(0, 0)
247-
array.update(1, 0)
248-
array.update(2, 2)
249-
array.update(3, 3)
250-
array.update(4, 5)
251-
array
252-
}.apply(i)))))
260+
var i: scala.Int = 0
261+
while (i.<(5)) {
262+
sum = sum.+(v.apply(i).*({
263+
val array: scala.Array[scala.Int] = new scala.Array[scala.Int](5)
264+
array.update(0, 0)
265+
array.update(1, 0)
266+
array.update(2, 2)
267+
array.update(3, 3)
268+
array.update(4, 5)
269+
array
270+
}.apply(i)))
271+
i = i.+(1)
272+
}
253273
(sum: scala.Int)
254274
})
255275
vout.update(4, v.apply(2).*(3).+(v.apply(4).*(7)))
@@ -276,7 +296,11 @@ List(25, 30, 20, 43, 44)
276296
vout.update(2, v.apply(1).*(10))
277297
vout.update(3, {
278298
var sum: scala.Int = 0
279-
scala.Predef.intWrapper(0).until(5).foreach[scala.Unit](((i: scala.Int) => sum = sum.+(v.apply(i).*(row.apply(i)))))
299+
var i: scala.Int = 0
300+
while (i.<(5)) {
301+
sum = sum.+(v.apply(i).*(row.apply(i)))
302+
i = i.+(1)
303+
}
280304
(sum: scala.Int)
281305
})
282306
vout.update(4, v.apply(2).*(3).+(v.apply(4).*(7)))

tests/run-with-compiler/shonan-hmm/VecOp.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ class VecSta extends VecOp[Int, Unit] {
1414

1515
class VecDyn extends VecOp[Expr[Int], Expr[Unit]] {
1616
def iter: Vec[Expr[Int], Expr[Unit]] => Expr[Unit] = arr => '{
17-
for (i <- 0 until ~arr.size)
17+
var i = 0
18+
while (i < ~arr.size) {
1819
~arr('(i))
20+
i += 1
21+
}
1922
}
2023
override def toString(): String = s"DynVec"
2124
}

tests/run-with-compiler/shonan-hmm/VecROp.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ class VecRDyn[T: Type] extends VecDyn with VecROp[Expr[Int], Expr[T], Expr[Unit]
2020
def reduce: ((Expr[T], Expr[T]) => Expr[T], Expr[T], Vec[Expr[Int], Expr[T]]) => Expr[T] = {
2121
(plus, zero, vec) => '{
2222
var sum = ~zero
23-
for (i <- 0 until ~vec.size)
23+
var i = 0
24+
while (i < ~vec.size) {
2425
sum = ~{ plus('(sum), vec('(i))) }
26+
i += 1
27+
}
2528
sum
2629
}
2730
}

0 commit comments

Comments
 (0)