mirror of
https://github.com/grin-compiler/grin.git
synced 2024-09-11 15:37:54 +03:00
add test cases for right hoist fetch
This commit is contained in:
parent
c8a03b1d1e
commit
94a778220c
43
bugs/right-hoist-fetch/SplitFetch.6
Normal file
43
bugs/right-hoist-fetch/SplitFetch.6
Normal file
@ -0,0 +1,43 @@
|
||||
grinMain =
|
||||
t1 <- store (CInt 1)
|
||||
t2 <- store (CInt 10000)
|
||||
t3 <- store (Fupto t1 t2)
|
||||
t4 <- store (Fsum t3)
|
||||
(CInt r') <- eval t4
|
||||
_prim_int_print r'
|
||||
|
||||
upto m n =
|
||||
(CInt m') <- eval m
|
||||
(CInt n') <- eval n
|
||||
b' <- _prim_int_gt m' n'
|
||||
case b' of
|
||||
True -> pure (CNil)
|
||||
False -> m1' <- _prim_int_add m' 1
|
||||
m1 <- store (CInt m1')
|
||||
p <- store (Fupto m1 n)
|
||||
pure (CCons m p)
|
||||
|
||||
sum l =
|
||||
(l20 l21 l22) <- eval l
|
||||
case l20 of
|
||||
CNil -> pure (CInt 0)
|
||||
CCons -> (CInt x') <- eval l21
|
||||
(CInt s') <- sum l22
|
||||
ax' <- _prim_int_add x' s'
|
||||
pure (CInt ax')
|
||||
|
||||
eval q =
|
||||
v0 <- fetch q[0]
|
||||
v1 <- fetch q[1]
|
||||
v2 <- fetch q[2]
|
||||
pure ()
|
||||
case v0 of
|
||||
CInt -> pure (v0 v1 v2)
|
||||
CNil -> pure (v0 v1 v2)
|
||||
CCons -> pure (v0 v1 v2)
|
||||
Fupto -> (w0 w1 w2) <- upto v1 v2
|
||||
update q (w0 w1 w2)
|
||||
pure (w0 w1 w2)
|
||||
Fsum -> (z0 z1) <- sum v1
|
||||
update q (z0 z1)
|
||||
pure (z0 z1)
|
5
bugs/right-hoist-fetch/rhf_bug1.grin
Normal file
5
bugs/right-hoist-fetch/rhf_bug1.grin
Normal file
@ -0,0 +1,5 @@
|
||||
eval q =
|
||||
v0 <- fetch q[0]
|
||||
v1 <- fetch q[1]
|
||||
case v0 of
|
||||
CInt -> pure (v0 v1)
|
18
bugs/right-hoist-fetch/rhf_test1.grin
Normal file
18
bugs/right-hoist-fetch/rhf_test1.grin
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
-- create various variable dependency cases
|
||||
{-
|
||||
Heap Notation for values
|
||||
1 -> CCons[{2},{3}] (CCons $2 $3) CCons[2, 3] CCons[$2, $3] (CCons $2 $3)
|
||||
2 -> CInt[{T_Int64}] (CInt T_Int64) CInt[T_Int64] CInt[38] (CInt 38)
|
||||
3 -> CNil[] (CNil) CNil[] CNil[] (CNil)
|
||||
Env
|
||||
q -> {1} $1 1 $2 $3
|
||||
-}
|
||||
eval q = -- $1
|
||||
v0 <- fetch q[0] -- CCons
|
||||
v1 <- fetch q[1] -- $2
|
||||
m0 <- fetch v1[0] -- CInt
|
||||
m1 <- fetch v1[0] -- 38
|
||||
-- TODO: add dependency chain
|
||||
case v0 of
|
||||
CInt -> pure (v0 v1)
|
Loading…
Reference in New Issue
Block a user