X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=HighOrdAluOps.hs;fp=HighOrdAluOps.hs;h=3d05ab9ac2b0e0960c7e0528be4be603cbeef924;hb=579289ed9e6b89fcf1da4f6ee4234332f2905195;hp=0000000000000000000000000000000000000000;hpb=a34491e0fb9e9559ca0e7389b712b6e0de073c2e;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/HighOrdAluOps.hs b/HighOrdAluOps.hs new file mode 100644 index 0000000..3d05ab9 --- /dev/null +++ b/HighOrdAluOps.hs @@ -0,0 +1,28 @@ +module HighOrdAluOps where + +import qualified Prelude as P +import CLasH.HardwareTypes +import CLasH.Translator.Annotations + +constant :: NaturalT n => e -> Op n e +constant e a b = copy e + +invop :: Op n Bit +invop a b = map hwnot a + +andop :: (e -> e -> e) -> Op n e +andop f a b = zipWith f a b + +-- Is any bit set? +--anyset :: (PositiveT n) => Op n Bit +anyset :: NaturalT n => (e -> e -> e) -> e -> Op n e +--anyset a b = copy undefined (a' `hwor` b') +anyset f s a b = constant (f a' b') a b + where + a' = foldl f s a + b' = foldl f s b + +xhwor = hwor + +type Op n e = (Vector n e -> Vector n e -> Vector n e) +type Opcode = Bit \ No newline at end of file