diff mbox series

[4/8] decodetree: Split out MultiPattern from IncMultiPattern

Message ID 20200518164052.18689-5-richard.henderson@linaro.org
State Superseded
Headers show
Series decodetree: Add non-overlapping groups | expand

Commit Message

Richard Henderson May 18, 2020, 4:40 p.m. UTC
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 scripts/decodetree.py | 37 ++++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 11 deletions(-)

-- 
2.20.1

Comments

Philippe Mathieu-Daudé May 18, 2020, 4:47 p.m. UTC | #1
On 5/18/20 6:40 PM, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

> ---

>   scripts/decodetree.py | 37 ++++++++++++++++++++++++++-----------

>   1 file changed, 26 insertions(+), 11 deletions(-)

> 

> diff --git a/scripts/decodetree.py b/scripts/decodetree.py

> index 7af6b3056d..ea313bcdea 100755

> --- a/scripts/decodetree.py

> +++ b/scripts/decodetree.py

> @@ -371,7 +371,32 @@ class Pattern(General):

>   # end Pattern

>   

>   

> -class IncMultiPattern(General):

> +class MultiPattern(General):

> +    """Class representing a set of instruction patterns"""

> +

> +    def __init__(self, lineno, pats):

> +        self.file = input_file

> +        self.lineno = lineno

> +        self.pats = pats

> +        self.base = None

> +        self.fixedbits = 0

> +        self.fixedmask = 0

> +        self.undefmask = 0

> +        self.width = None

> +

> +    def __str__(self):

> +        r = 'group'

> +        if self.fixedbits is not None:

> +            r += ' ' + str_match_bits(self.fixedbits, self.fixedmask)

> +        return r

> +

> +    def output_decl(self):

> +        for p in self.pats:

> +            p.output_decl()

> +# end MultiPattern

> +

> +

> +class IncMultiPattern(MultiPattern):

>       """Class representing an overlapping set of instruction patterns"""

>   

>       def __init__(self, lineno, pats, fixb, fixm, udfm, w):

> @@ -384,16 +409,6 @@ class IncMultiPattern(General):

>           self.undefmask = udfm

>           self.width = w

>   

> -    def __str__(self):

> -        r = "{"

> -        for p in self.pats:

> -           r = r + ' ' + str(p)

> -        return r + "}"

> -

> -    def output_decl(self):

> -        for p in self.pats:

> -            p.output_decl()

> -

>       def output_code(self, i, extracted, outerbits, outermask):

>           global translate_prefix

>           ind = str_indent(i)

> 


Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
diff mbox series

Patch

diff --git a/scripts/decodetree.py b/scripts/decodetree.py
index 7af6b3056d..ea313bcdea 100755
--- a/scripts/decodetree.py
+++ b/scripts/decodetree.py
@@ -371,7 +371,32 @@  class Pattern(General):
 # end Pattern
 
 
-class IncMultiPattern(General):
+class MultiPattern(General):
+    """Class representing a set of instruction patterns"""
+
+    def __init__(self, lineno, pats):
+        self.file = input_file
+        self.lineno = lineno
+        self.pats = pats
+        self.base = None
+        self.fixedbits = 0
+        self.fixedmask = 0
+        self.undefmask = 0
+        self.width = None
+
+    def __str__(self):
+        r = 'group'
+        if self.fixedbits is not None:
+            r += ' ' + str_match_bits(self.fixedbits, self.fixedmask)
+        return r
+
+    def output_decl(self):
+        for p in self.pats:
+            p.output_decl()
+# end MultiPattern
+
+
+class IncMultiPattern(MultiPattern):
     """Class representing an overlapping set of instruction patterns"""
 
     def __init__(self, lineno, pats, fixb, fixm, udfm, w):
@@ -384,16 +409,6 @@  class IncMultiPattern(General):
         self.undefmask = udfm
         self.width = w
 
-    def __str__(self):
-        r = "{"
-        for p in self.pats:
-           r = r + ' ' + str(p)
-        return r + "}"
-
-    def output_decl(self):
-        for p in self.pats:
-            p.output_decl()
-
     def output_code(self, i, extracted, outerbits, outermask):
         global translate_prefix
         ind = str_indent(i)