oppc/code: support simple constant unary exprs
[openpower-isa.git] / src / openpower / oppc / __main__.py
index 420b4d84b4001b3df38d1bf670a6ca23e901ae52..fcc0e8f1854543fa1943bb9181a4488b2699be83 100644 (file)
@@ -6,9 +6,10 @@ from openpower.decoder.power_enums import (
     find_wiki_dir,
 )
 
+import openpower.oppc.pc_code as pc_code
 import openpower.oppc.pc_lexer as pc_lexer
 import openpower.oppc.pc_parser as pc_parser
-import openpower.oppc.pc_util as pc_util
+import openpower.oppc.pc_pseudocode as pc_pseudocode
 
 
 def dedent(line):
@@ -21,7 +22,7 @@ def parse(parser, origin):
     origin = tuple(origin)
     tree = parser.parse(code="\n".join(origin))
     stream = io.StringIO()
-    for (level, line) in pc_util.pseudocode(tree):
+    for (level, line) in pc_pseudocode.pseudocode(tree):
         print(f"{' ' * 4 * level}{line}", file=stream)
     stream.seek(0)
     target = tuple(stream)
@@ -52,17 +53,12 @@ for path in []: # glob.glob(f"{find_wiki_dir()}/../isa/*.mdwn"):
             raise exc
 
 code = """
-src <- [0]*64
-src[64-XLEN:63] <- (RS)
-result <- [0]*64
-do i = 0 to 1
-    n <- i * 32
-    result[n+0:n+7] <- 0
-    result[n+8:n+19] <- DPD_TO_BCD(src[n+12:n+21])
-    result[n+20:n+31] <- DPD_TO_BCD(src[n+22:n+31])
-RA <- result[64-XLEN:63]
+a <- ¬(RA)
 """
 tree = parser.parse(code=code)
 print(tree)
-for (level, line) in pc_util.pseudocode(tree):
+for (level, line) in pc_pseudocode.pseudocode(tree):
+    print(f"{' ' * 4 * level}{line}")
+
+for (level, line) in pc_code.code(name="cdtbcd", root=tree):
     print(f"{' ' * 4 * level}{line}")