feea40170e750e69ec32390abda99bbaa33ed68d
[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, Builder) )] -> NameTable
16 mkGlobalNameTable = Map.fromList
17
18 globalNameTable :: NameTable
19 globalNameTable = mkGlobalNameTable
20   [ (exId             , (2, Left $ genExprFCall exId                      ) )
21   , (replaceId        , (3, Left $ genExprFCall replaceId                 ) )
22   , (headId           , (1, Left $ genExprFCall headId                    ) )
23   , (lastId           , (1, Left $ genExprFCall lastId                    ) )
24   , (tailId           , (1, Left $ genExprFCall tailId                    ) )
25   , (initId           , (1, Left $ genExprFCall initId                    ) )
26   , (takeId           , (2, Left $ genExprFCall takeId                    ) )
27   , (dropId           , (2, Left $ genExprFCall dropId                    ) )
28   , (plusgtId         , (2, Left $ genExprFCall plusgtId                  ) )
29   , (mapId            , (2, Right $ genMapCall                            ) )
30   , (zipWithId        , (3, Right $ genZipWithCall                        ) )
31   , (emptyId          , (0, Left $ genExprFCall emptyId                   ) )
32   , (singletonId      , (1, Left $ genExprFCall singletonId               ) )
33   , (copyId           , (2, Left $ genExprFCall copyId                    ) )
34   , (hwxorId          , (2, Left $ genExprOp2 AST.Xor                     ) )
35   , (hwandId          , (2, Left $ genExprOp2 AST.And                     ) )
36   , (hworId           , (2, Left $ genExprOp2 AST.Or                      ) )
37   , (hwnotId          , (1, Left $ genExprOp1 AST.Not                     ) )
38   ]