make paper version of highordcpu resemble compilable version of highordcpu
[matthijs/master-project/dsd-paper.git] / HigherOrderCPU.hs
index fd7471b4f9119257607ccc381f1f0a07b282bb78..94bb7b6030d992cd46de713a57aa4b6e95b25a2d 100644 (file)
@@ -12,15 +12,8 @@ import CLasH.Translator.Annotations
 type Word   = SizedInt D16
 type Index  = RangedWord
 
-const :: a -> a -> a
 const a b = a
 
-fu :: ( PositiveT p, NaturalT n, (p :>: n) ~ True) =>
-  (a -> a -> a)
-  -> Vector p a
-  -> (Index n, Index n)
-  -> a
-  -> (a, a)
 fu op inputs (addr1, addr2) out =
   (out', out)
   where
@@ -42,8 +35,8 @@ cpu input addrs (State fuss) =
   where
     fures = (fu const inputs (addrs!(0 :: Index D3)) (fuss!(0 :: Index D3))) +> (
             (fu (+)   inputs (addrs!(1 :: Index D3)) (fuss!(1 :: Index D3))) +> (
-            (fu (-)   inputs (addrs!(2 :: Index D3)) (fuss!(2 :: Index D3))) +> ( singleton
-            (fu (*)   inputs (addrs!(3 :: Index D3)) (fuss!(3 :: Index D3))))))
+            (fu (-)   inputs (addrs!(2 :: Index D3)) (fuss!(2 :: Index D3))) +> (
+            (fu (*)   inputs (addrs!(3 :: Index D3)) (fuss!(3 :: Index D3))) +> empty)))
     (fuss', outputs) = unzip fures
     inputs = 0 +> (1 +> (input +> outputs))
     out = head outputs