Added builtin function foldr
[matthijs/master-project/cλash.git] / GlobalNameTable.hs
1 {-# LANGUAGE TemplateHaskell #-}
2
3 module GlobalNameTable (globalNameTable) where
4
5 import Language.Haskell.TH
6 import qualified Data.Map as Map
7
8 import qualified ForSyDe.Backend.VHDL.AST as AST
9 import qualified Data.Param.TFVec as V
10
11 import VHDLTypes
12 import Constants
13 import Generate
14
15 mkGlobalNameTable :: [(String, (Int, BuiltinBuilder) )] -> NameTable
16 mkGlobalNameTable = Map.fromList
17
18 globalNameTable :: NameTable
19 globalNameTable = mkGlobalNameTable
20   [ (exId             , (2, genFCall                ) )
21   , (replaceId        , (3, genFCall                ) )
22   , (headId           , (1, genFCall                ) )
23   , (lastId           , (1, genFCall                ) )
24   , (tailId           , (1, genFCall                ) )
25   , (initId           , (1, genFCall                ) )
26   , (takeId           , (2, genFCall                ) )
27   , (dropId           , (2, genFCall                ) )
28   , (plusgtId         , (2, genFCall                ) )
29   , (mapId            , (2, genMap                  ) )
30   , (zipWithId        , (3, genZipWith              ) )
31   , (foldlId          , (3, genFoldl                ) )
32   , (foldrId          , (3, genFoldr                ) )
33   , (emptyId          , (0, genFCall                ) )
34   , (singletonId      , (1, genFCall                ) )
35   , (copyId           , (2, genFCall                ) )
36   , (hwxorId          , (2, genOperator2 AST.Xor    ) )
37   , (hwandId          , (2, genOperator2 AST.And    ) )
38   , (hworId           , (2, genOperator2 AST.Or     ) )
39   , (hwnotId          , (1, genOperator1 AST.Not    ) )
40   ]