aboutsummaryrefslogtreecommitdiff
path: root/src/Language
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
parent4c9ae47dd5bbd27b1acb6dc5d4a55657ac1f026f (diff)
Compile foldd1 and foldd2HEADmaster
Diffstat (limited to 'src/Language')
-rw-r--r--src/Language/AST.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Language/AST.hs b/src/Language/AST.hs
index 325817d..c9d05c9 100644
--- a/src/Language/AST.hs
+++ b/src/Language/AST.hs
@@ -58,6 +58,15 @@ data NExpr env t where
NEMinimum1Inner :: ScalIsNumeric t ~ True => NExpr env (TArr (S n) (TScal t)) -> NExpr env (TArr n (TScal t))
NEReshape :: SNat n -> NExpr env (Tup (Replicate n TIx)) -> NExpr env (TArr m t) -> NExpr env (TArr n t)
+ NEFold1InnerD1 :: Var n1 t1 -> Var n2 t1 -> NExpr ('(n2, t1) : '(n1, t1) : env) (TPair t1 b)
+ -> NExpr env t1
+ -> NExpr env (TArr (S n) t1)
+ -> NExpr env (TPair (TArr n t1) (TArr (S n) b))
+ NEFold1InnerD2 :: Var n1 b -> Var n2 t2 -> NExpr ('(n2, t2) : '(n1, 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))
+
-- expression operations
NEConst :: Show (ScalRep t) => SScalTy t -> ScalRep t -> NExpr env (TScal t)
NEIdx0 :: NExpr env (TArr Z t) -> NExpr env t
@@ -208,6 +217,9 @@ fromNamedExpr val = \case
NEMinimum1Inner e -> EMinimum1Inner ext (go e)
NEReshape n a b -> EReshape ext n (go a) (go b)
+ NEFold1InnerD1 n1 n2 a b c -> EFold1InnerD1 ext Noncommut (lambda2 val n1 n2 a) (go b) (go c)
+ NEFold1InnerD2 n1 n2 a b c -> EFold1InnerD2 ext Noncommut (lambda2 val n1 n2 a) (go b) (go c)
+
NEConst t x -> EConst ext t x
NEIdx0 e -> EIdx0 ext (go e)
NEIdx1 a b -> EIdx1 ext (go a) (go b)