projects
/
matthijs
/
master-project
/
dsd-paper.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add potential thanks command to author list
[matthijs/master-project/dsd-paper.git]
/
HigherOrderCPU.hs
diff --git
a/HigherOrderCPU.hs
b/HigherOrderCPU.hs
index cc242bf50b25f15a7319e1bf485980430708bdb3..94bb7b6030d992cd46de713a57aa4b6e95b25a2d 100644
(file)
--- a/
HigherOrderCPU.hs
+++ b/
HigherOrderCPU.hs
@@
-1,5
+1,4
@@
-{-# LANGUAGE TypeOperators, TemplateHaskell, TypeFamilies,
- ScopedTypeVariables, RecordWildCards, FlexibleContexts #-}
+{-# LANGUAGE TypeOperators, TemplateHaskell, TypeFamilies, ScopedTypeVariables #-}
module HigherOrderCPU where
module HigherOrderCPU where
@@
-13,15
+12,8
@@
import CLasH.Translator.Annotations
type Word = SizedInt D16
type Index = RangedWord
type Word = SizedInt D16
type Index = RangedWord
-const :: a -> a -> a
const a b = 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
fu op inputs (addr1, addr2) out =
(out', out)
where
@@
-43,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))) +> (
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
(fuss', outputs) = unzip fures
inputs = 0 +> (1 +> (input +> outputs))
out = head outputs