diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2017-12-07 12:44:09 -0800 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2018-02-22 15:44:07 -0800 |
commit | 568ae7efae7e4b90e213049efb8b6e4e12b47ca3 (patch) | |
tree | fdf0ac271d188e6c295c7c028e2688434185456d /tests/decode | |
parent | ff8689611a1d954897d857b28f7ef404e11cfa2c (diff) |
scripts: Add decodetree.py
To be used to decode ARM SVE, but could be used for any fixed-width ISA.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tests/decode')
-rwxr-xr-x | tests/decode/check.sh | 18 | ||||
-rw-r--r-- | tests/decode/err_argset1.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_argset2.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_field1.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_field2.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_field3.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_field4.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_field5.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_init1.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_init2.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_init3.decode | 7 | ||||
-rw-r--r-- | tests/decode/err_init4.decode | 7 | ||||
-rw-r--r-- | tests/decode/err_overlap1.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_overlap2.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_overlap3.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_overlap4.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_overlap5.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_overlap6.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_overlap7.decode | 6 | ||||
-rw-r--r-- | tests/decode/err_overlap8.decode | 5 | ||||
-rw-r--r-- | tests/decode/err_overlap9.decode | 6 |
21 files changed, 132 insertions, 0 deletions
diff --git a/tests/decode/check.sh b/tests/decode/check.sh new file mode 100755 index 0000000000..79a06c37cd --- /dev/null +++ b/tests/decode/check.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +PYTHON=$1 +DECODETREE=$2 +E=0 + +# All of these tests should produce errors +for i in err_*.decode; do + if $PYTHON $DECODETREE $i > /dev/null 2> /dev/null; then + # Pass, aka failed to fail. + echo FAIL: $i 1>&2 + E=1 + fi +done + +exit $E diff --git a/tests/decode/err_argset1.decode b/tests/decode/err_argset1.decode new file mode 100644 index 0000000000..fcaebcce76 --- /dev/null +++ b/tests/decode/err_argset1.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose duplicate member names +&args a a diff --git a/tests/decode/err_argset2.decode b/tests/decode/err_argset2.decode new file mode 100644 index 0000000000..256b2f9b12 --- /dev/null +++ b/tests/decode/err_argset2.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose invalid member names +&args a b c d0 0e diff --git a/tests/decode/err_field1.decode b/tests/decode/err_field1.decode new file mode 100644 index 0000000000..e07a5a73e0 --- /dev/null +++ b/tests/decode/err_field1.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose invalid field syntax +%field asdf diff --git a/tests/decode/err_field2.decode b/tests/decode/err_field2.decode new file mode 100644 index 0000000000..7664a3ebe9 --- /dev/null +++ b/tests/decode/err_field2.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose invalid field width. +%field 0:33 diff --git a/tests/decode/err_field3.decode b/tests/decode/err_field3.decode new file mode 100644 index 0000000000..87e680f103 --- /dev/null +++ b/tests/decode/err_field3.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose invalid field position. +%field 31:2 diff --git a/tests/decode/err_field4.decode b/tests/decode/err_field4.decode new file mode 100644 index 0000000000..888ce4729b --- /dev/null +++ b/tests/decode/err_field4.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose duplicate field name. +%field 0:1 +%field 0:1 diff --git a/tests/decode/err_field5.decode b/tests/decode/err_field5.decode new file mode 100644 index 0000000000..b0c62af866 --- /dev/null +++ b/tests/decode/err_field5.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose duplicate function specifier. +%field 0:1 !function=a !function=a diff --git a/tests/decode/err_init1.decode b/tests/decode/err_init1.decode new file mode 100644 index 0000000000..da855bd00a --- /dev/null +++ b/tests/decode/err_init1.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose uninitialized member in pattern. +&args a b +insn 00000000 00000000 00000000 b:8 &args diff --git a/tests/decode/err_init2.decode b/tests/decode/err_init2.decode new file mode 100644 index 0000000000..b58de30098 --- /dev/null +++ b/tests/decode/err_init2.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose member initialized twice in pattern. +&args a b +insn 00000000 00000000 a:8 b:8 &args a=1 diff --git a/tests/decode/err_init3.decode b/tests/decode/err_init3.decode new file mode 100644 index 0000000000..96790abfdc --- /dev/null +++ b/tests/decode/err_init3.decode @@ -0,0 +1,7 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose member initialized twice in pattern + format. +&args a +@format ........ ........ a:16 &args +insn 00000000 00000000 a:16 @format diff --git a/tests/decode/err_init4.decode b/tests/decode/err_init4.decode new file mode 100644 index 0000000000..4336d4632f --- /dev/null +++ b/tests/decode/err_init4.decode @@ -0,0 +1,7 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose uninitialized member in pattern + format. +&args a b +@format ........ ........ a:16 &args +insn 00000000 00000000 ........ ........ @format diff --git a/tests/decode/err_overlap1.decode b/tests/decode/err_overlap1.decode new file mode 100644 index 0000000000..1ae63472dc --- /dev/null +++ b/tests/decode/err_overlap1.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose field overlapping fixedbits. +%field 0:1 +insn 00000000 00000000 00000000 00000000 %field diff --git a/tests/decode/err_overlap2.decode b/tests/decode/err_overlap2.decode new file mode 100644 index 0000000000..1d6d7a3930 --- /dev/null +++ b/tests/decode/err_overlap2.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose field overlapping fixedbits w/format. +@format ........ ........ ........ ....... fld:1 +insn 00000000 00000000 00000000 00000000 @format diff --git a/tests/decode/err_overlap3.decode b/tests/decode/err_overlap3.decode new file mode 100644 index 0000000000..3ab0c4850a --- /dev/null +++ b/tests/decode/err_overlap3.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose field overlapping unspecified bits. +%field 0:1 +insn 00000000 00000000 00000000 -------- %field diff --git a/tests/decode/err_overlap4.decode b/tests/decode/err_overlap4.decode new file mode 100644 index 0000000000..53c5399d39 --- /dev/null +++ b/tests/decode/err_overlap4.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose fixed bits overlapping unspecified bits. +@format ........ ........ ........ .......- +insn 00000000 00000000 00000000 00000000 @format diff --git a/tests/decode/err_overlap5.decode b/tests/decode/err_overlap5.decode new file mode 100644 index 0000000000..df0e31fffb --- /dev/null +++ b/tests/decode/err_overlap5.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose overlapping sub-fields. +%field 3:5 0:5 diff --git a/tests/decode/err_overlap6.decode b/tests/decode/err_overlap6.decode new file mode 100644 index 0000000000..cc69fc8fdd --- /dev/null +++ b/tests/decode/err_overlap6.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose overlapping fixed bits w/format. +@format ........ ........ ........ .......1 +insn 00000000 00000000 00000000 00000000 @format diff --git a/tests/decode/err_overlap7.decode b/tests/decode/err_overlap7.decode new file mode 100644 index 0000000000..6f555295ab --- /dev/null +++ b/tests/decode/err_overlap7.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose overlapping patterns. +insn1 00000000 00000000 00000000 00000000 +insn2 00000000 00000000 00000000 00000000 diff --git a/tests/decode/err_overlap8.decode b/tests/decode/err_overlap8.decode new file mode 100644 index 0000000000..df4bae8f1c --- /dev/null +++ b/tests/decode/err_overlap8.decode @@ -0,0 +1,5 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose not specified bit (. vs -). +insn 00000000 00000000 00000000 0000000. diff --git a/tests/decode/err_overlap9.decode b/tests/decode/err_overlap9.decode new file mode 100644 index 0000000000..58b6ac121a --- /dev/null +++ b/tests/decode/err_overlap9.decode @@ -0,0 +1,6 @@ +# This work is licensed under the terms of the GNU LGPL, version 2 or later. +# See the COPYING.LIB file in the top-level directory. + +# Diagnose not specified bit (. vs -) w/format. +@format ........ a:8 ........ b:7 . +insn 00000000 ........ 00000000 ........ @format |