Sockeye: Add node type for cores
authorDaniel Schwyn <schwyda@student.ethz.ch>
Mon, 11 Sep 2017 12:08:35 +0000 (14:08 +0200)
committerDaniel Schwyn <schwyda@student.ethz.ch>
Mon, 11 Sep 2017 12:08:35 +0000 (14:08 +0200)
Signed-off-by: Daniel Schwyn <schwyda@student.ethz.ch>

tools/sockeye/SockeyeASTDecodingNet.hs
tools/sockeye/SockeyeASTInstantiator.hs
tools/sockeye/SockeyeASTParser.hs
tools/sockeye/SockeyeASTTypeChecker.hs
tools/sockeye/SockeyeBackendProlog.hs
tools/sockeye/SockeyeInstantiator.hs
tools/sockeye/SockeyeParser.hs

index 39f4a8d..8a7d87e 100644 (file)
@@ -39,8 +39,9 @@ data NodeSpec
     deriving (Show)
 
 data NodeType
-    = Memory
+    = Core
     | Device
+    | Memory
     | Other
     deriving (Show)
 
index 61ca2e4..d6f9240 100644 (file)
@@ -21,7 +21,7 @@ module SockeyeASTInstantiator
 import Data.Map (Map)
 
 import SockeyeASTDecodingNet
-    ( NodeType(Other, Memory, Device)
+    ( NodeType(Core, Device, Memory, Other)
     , BlockSpec(BlockSpec)
     , base, limit
     , Address
index 2b66158..cb182bc 100644 (file)
@@ -25,7 +25,7 @@ import SockeyeASTTypeChecker
     , ModuleArg(AddressArg, NaturalArg, ParamArg)
     , NodeSpec(NodeSpec)
     , nodeType, accept, translate, reserved, overlay
-    , NodeType(Other, Memory, Device)
+    , NodeType(Core, Device, Memory, Other)
     , BlockSpec(SingletonBlock, RangeBlock, LengthBlock)
     , base, limit, bits
     , MapSpec(MapSpec)
index 905162a..7c45a4b 100644 (file)
@@ -21,7 +21,7 @@ module SockeyeASTTypeChecker
 import Data.Map (Map)
 
 import SockeyeASTInstantiator
-    ( NodeType(Other, Device, Memory) )
+    ( NodeType(Core, Device, Memory, Other) )
 
 data SockeyeSpec = SockeyeSpec
     { root    :: ModuleInst
index dbb6b21..e8b5f9a 100644 (file)
@@ -71,8 +71,9 @@ instance PrologGenerator AST.MapSpec where
         in predicate "map" [src, dest, base]
 
 instance PrologGenerator AST.NodeType where
-    generate AST.Memory = atom "memory"
+    generate AST.Core   = atom "core"
     generate AST.Device = atom "device"
+    generate AST.Memory = atom "memory"
     generate AST.Other  = atom "other"
 
 instance PrologGenerator AST.Address where
index a5f2437..3d6be8d 100644 (file)
@@ -284,11 +284,6 @@ instance Instantiatable CheckAST.NodeSpec InstAST.NodeSpec where
             , InstAST.overlay   = instOverlay
             }
 
-instance Instantiatable CheckAST.NodeType InstAST.NodeType where
-    instantiate _ CheckAST.Memory = return InstAST.Memory
-    instantiate _ CheckAST.Device = return InstAST.Device
-    instantiate _ CheckAST.Other  = return InstAST.Other
-
 instance Instantiatable CheckAST.BlockSpec InstAST.BlockSpec where
     instantiate context (CheckAST.SingletonBlock base) = do
         instBase <- instantiate context base
index 6a3488e..6797bd9 100644 (file)
@@ -226,13 +226,17 @@ nodeSpec = do
             try $ reserved "reserved"
             brackets $ many blockSpec
 
-nodeType = choice [memory, device]
-    where memory = do
-            symbol "memory"
-            return AST.Memory
-          device = do
+nodeType = choice [core, device, memory]
+    where
+        core = do
+            symbol "core"
+            return AST.Core
+        device = do
             symbol "device"
             return AST.Device
+        memory = do
+            symbol "memory"
+            return AST.Memory
 
 blockSpec = choice [range, length, singleton]
     where