aboutsummaryrefslogtreecommitdiff
path: root/src/Language.hs
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-10-30 20:09:10 +0100
committerTom Smeding <tom@tomsmeding.com>2025-10-30 20:09:10 +0100
commit654b13d0de961788ed600e8eeb6c9fbbd736439e (patch)
tree4821c1082aa2fcd04ea6ecb0e07f8d3bdbe643ed /src/Language.hs
parent4c9ae47dd5bbd27b1acb6dc5d4a55657ac1f026f (diff)
Compile foldd1 and foldd2HEADmaster
Diffstat (limited to 'src/Language.hs')
-rw-r--r--src/Language.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Language.hs b/src/Language.hs
index d3c38d6..31b4b87 100644
--- a/src/Language.hs
+++ b/src/Language.hs
@@ -133,6 +133,14 @@ minimum1i e = NEMinimum1Inner e
reshape :: SNat n -> NExpr env (Tup (Replicate n TIx)) -> NExpr env (TArr m t) -> NExpr env (TArr n t)
reshape = NEReshape
+fold1iD1 :: (Var name1 t1 :-> Var name2 t1 :-> NExpr ('(name2, t1) : '(name1, t1) : env) (TPair t1 b))
+ -> NExpr env t1 -> NExpr env (TArr (S n) t1) -> NExpr env (TPair (TArr n t1) (TArr (S n) b))
+fold1iD1 (v1 :-> v2 :-> e1) e2 e3 = NEFold1InnerD1 v1 v2 e1 e2 e3
+
+fold1iD2 :: (Var name1 b :-> Var name2 t2 :-> NExpr ('(name2, t2) : '(name1, b) : env) (TPair t2 t2))
+ -> NExpr env (TArr (S n) b) -> NExpr env (TArr n t2) -> NExpr env (TPair (TArr n t2) (TArr (S n) t2))
+fold1iD2 (v1 :-> v2 :-> e1) e2 e3 = NEFold1InnerD2 v1 v2 e1 e2 e3
+
const_ :: KnownScalTy t => ScalRep t -> NExpr env (TScal t)
const_ x =
let ty = knownScalTy