From e2904ba90b124835396a61aabaacf692d225ba34 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Sat, 4 Apr 2020 21:19:40 +0100 Subject: [PATCH] try again with adding XOR operator --- src/soc/decoder/power_pseudo.py | 7 ++++++- src/soc/decoder/pseudo/lexer.py | 2 ++ src/soc/decoder/pseudo/parser.py | 3 +++ src/soc/decoder/pseudo/pywriter.py | 3 ++- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/soc/decoder/power_pseudo.py b/src/soc/decoder/power_pseudo.py index fc3f5410..3bd52a3a 100644 --- a/src/soc/decoder/power_pseudo.py +++ b/src/soc/decoder/power_pseudo.py @@ -134,12 +134,17 @@ MEM(EA, 4) <- GPR(r)[32:63] #x <- x[0][32:63] """ +testdo = r""" +for i = 0 to 7 + print(i) +""" +code = testdo #code = testmul #code = testgetzero #code = testcat #code = testgpr #code = testmem -code = testgprslice +#code = testgprslice #code = testreg #code = cnttzd #code = cmpi diff --git a/src/soc/decoder/pseudo/lexer.py b/src/soc/decoder/pseudo/lexer.py index ee06c3f1..3638a7fe 100644 --- a/src/soc/decoder/pseudo/lexer.py +++ b/src/soc/decoder/pseudo/lexer.py @@ -256,6 +256,7 @@ class PowerLexer: 'APPEND', 'BITOR', 'BITAND', + 'BITXOR', 'RETURN', 'WS', 'NEWLINE', @@ -308,6 +309,7 @@ class PowerLexer: t_APPEND = r'\|\|' t_BITOR = r'\|' t_BITAND = r'\&' + t_BITXOR = r'\&' # Ply nicely documented how to do this. diff --git a/src/soc/decoder/pseudo/parser.py b/src/soc/decoder/pseudo/parser.py index 6abe1913..60a815c4 100644 --- a/src/soc/decoder/pseudo/parser.py +++ b/src/soc/decoder/pseudo/parser.py @@ -107,6 +107,7 @@ def make_eq_compare(arg): binary_ops = { + "^": ast.BitXor(), "&": ast.BitAnd(), "|": ast.BitOr(), "+": ast.Add(), @@ -209,6 +210,7 @@ class PowerParser: precedence = ( ("left", "EQ", "GT", "LT", "LE", "GE", "LTU", "GTU"), ("left", "BITOR"), + ("left", "BITXOR"), ("left", "BITAND"), ("left", "PLUS", "MINUS"), ("left", "MULT", "DIV", "MOD"), @@ -439,6 +441,7 @@ class PowerParser: | comparison LT comparison | comparison GT comparison | comparison BITOR comparison + | comparison BITXOR comparison | comparison BITAND comparison | PLUS comparison | comparison MINUS diff --git a/src/soc/decoder/pseudo/pywriter.py b/src/soc/decoder/pseudo/pywriter.py index d26074cf..2f5cd3a4 100644 --- a/src/soc/decoder/pseudo/pywriter.py +++ b/src/soc/decoder/pseudo/pywriter.py @@ -80,8 +80,9 @@ class PyISAWriter(ISA): if __name__ == '__main__': isa = PyISAWriter() - isa.write_pysource('fixedstore') + isa.write_pysource('fixedlogical') exit(0) + isa.write_pysource('fixedstore') isa.write_pysource('fixedload') isa.write_pysource('comparefixed') isa.write_pysource('fixedarith') -- 2.30.2