Add some tests for various cases of named-field use, both ones that
should work and ones that should be diagnosed as errors.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
tests/decode/err_field1.decode | 2 +-
tests/decode/err_field10.decode | 7 +++++++
tests/decode/err_field7.decode | 7 +++++++
tests/decode/err_field8.decode | 8 ++++++++
tests/decode/err_field9.decode | 14 ++++++++++++++
tests/decode/succ_named_field.decode | 19 +++++++++++++++++++
6 files changed, 56 insertions(+), 1 deletion(-)
create mode 100644 tests/decode/err_field10.decode
create mode 100644 tests/decode/err_field7.decode
create mode 100644 tests/decode/err_field8.decode
create mode 100644 tests/decode/err_field9.decode
create mode 100644 tests/decode/succ_named_field.decode
diff --git a/tests/decode/err_field1.decode b/tests/decode/err_field1.decode
index e07a5a73e0e..85c3f326d07 100644
--- a/tests/decode/err_field1.decode
+++ b/tests/decode/err_field1.decode
@@ -2,4 +2,4 @@
# See the COPYING.LIB file in the top-level directory.
# Diagnose invalid field syntax
-%field asdf
+%field 1asdf
diff --git a/tests/decode/err_field10.decode b/tests/decode/err_field10.decode
new file mode 100644
index 00000000000..3e672b7459e
--- /dev/null
+++ b/tests/decode/err_field10.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 formats which refer to undefined fields
+%field1 field2:3
+@fmt ........ ........ ........ ........ %field1
+insn 00000000 00000000 00000000 00000000 @fmt
diff --git a/tests/decode/err_field7.decode b/tests/decode/err_field7.decode
new file mode 100644
index 00000000000..51fad7cceaf
--- /dev/null
+++ b/tests/decode/err_field7.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 fields whose definitions form a loop
+%field1 field2:3
+%field2 field1:4
+insn 00000000 00000000 00000000 00000000 %field1 %field2
diff --git a/tests/decode/err_field8.decode b/tests/decode/err_field8.decode
new file mode 100644
index 00000000000..cc47c08a459
--- /dev/null
+++ b/tests/decode/err_field8.decode
@@ -0,0 +1,8 @@
+# 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 patterns which refer to undefined fields
+&f1 f1 a
+%field1 field2:3
+@fmt ........ ........ ........ .... a:4 &f1
+insn 00000000 00000000 00000000 0000 .... @fmt f1=%field1
diff --git a/tests/decode/err_field9.decode b/tests/decode/err_field9.decode
new file mode 100644
index 00000000000..e7361d521ba
--- /dev/null
+++ b/tests/decode/err_field9.decode
@@ -0,0 +1,14 @@
+# 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 fields where the format refers to a field defined in the
+# pattern and the pattern refers to a field defined in the format.
+# This is theoretically not impossible to implement, but is not
+# supported by the script at this time.
+&abcd a b c d
+%refa a:3
+%refc c:4
+# Format defines 'c' and sets 'b' to an indirect ref to 'a'
+@fmt ........ ........ ........ c:8 &abcd b=%refa
+# Pattern defines 'a' and sets 'd' to an indirect ref to 'c'
+insn 00000000 00000000 00000000 ........ @fmt d=%refc a=6
diff --git a/tests/decode/succ_named_field.decode b/tests/decode/succ_named_field.decode
new file mode 100644
index 00000000000..e64b3f93568
--- /dev/null
+++ b/tests/decode/succ_named_field.decode
@@ -0,0 +1,19 @@
+# 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.
+
+# field using a named_field
+%imm_sz 8:8 sz:3
+insn 00000000 00000000 ........ 00000000 imm_sz=%imm_sz sz=1
+
+# Ditto, via a format. Here a field in the format
+# references a named field defined in the insn pattern:
+&imm_a imm alpha
+%foo 0:16 alpha:4
+@foo 00000001 ........ ........ ........ &imm_a imm=%foo
+i1 ........ 00000000 ........ ........ @foo alpha=1
+i2 ........ 00000001 ........ ........ @foo alpha=2
+
+# Here the named field is defined in the format and referenced
+# from the insn pattern:
+@bar 00000010 ........ ........ ........ &imm_a alpha=4
+i3 ........ 00000000 ........ ........ @bar imm=%foo
--
2.34.1
On Tue, 23 May 2023 at 13:04, Peter Maydell <peter.maydell@linaro.org> wrote: > > Add some tests for various cases of named-field use, both ones that > should work and ones that should be diagnosed as errors. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > tests/decode/err_field1.decode | 2 +- > tests/decode/err_field10.decode | 7 +++++++ > tests/decode/err_field7.decode | 7 +++++++ > tests/decode/err_field8.decode | 8 ++++++++ > tests/decode/err_field9.decode | 14 ++++++++++++++ > tests/decode/succ_named_field.decode | 19 +++++++++++++++++++ > 6 files changed, 56 insertions(+), 1 deletion(-) > create mode 100644 tests/decode/err_field10.decode > create mode 100644 tests/decode/err_field7.decode > create mode 100644 tests/decode/err_field8.decode > create mode 100644 tests/decode/err_field9.decode > create mode 100644 tests/decode/succ_named_field.decode > > diff --git a/tests/decode/err_field1.decode b/tests/decode/err_field1.decode > index e07a5a73e0e..85c3f326d07 100644 > --- a/tests/decode/err_field1.decode > +++ b/tests/decode/err_field1.decode > @@ -2,4 +2,4 @@ > # See the COPYING.LIB file in the top-level directory. > > # Diagnose invalid field syntax > -%field asdf > +%field 1asdf I just realized that this specific change needs to go before patch 5: it's updating an existing test because "asdf" used to be invalid syntax and now is not. Otherwise bisection will break. -- PMM
On 5/24/23 03:26, Peter Maydell wrote: > On Tue, 23 May 2023 at 13:04, Peter Maydell <peter.maydell@linaro.org> wrote: >> >> Add some tests for various cases of named-field use, both ones that >> should work and ones that should be diagnosed as errors. >> >> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> >> --- >> tests/decode/err_field1.decode | 2 +- >> tests/decode/err_field10.decode | 7 +++++++ >> tests/decode/err_field7.decode | 7 +++++++ >> tests/decode/err_field8.decode | 8 ++++++++ >> tests/decode/err_field9.decode | 14 ++++++++++++++ >> tests/decode/succ_named_field.decode | 19 +++++++++++++++++++ >> 6 files changed, 56 insertions(+), 1 deletion(-) >> create mode 100644 tests/decode/err_field10.decode >> create mode 100644 tests/decode/err_field7.decode >> create mode 100644 tests/decode/err_field8.decode >> create mode 100644 tests/decode/err_field9.decode >> create mode 100644 tests/decode/succ_named_field.decode >> >> diff --git a/tests/decode/err_field1.decode b/tests/decode/err_field1.decode >> index e07a5a73e0e..85c3f326d07 100644 >> --- a/tests/decode/err_field1.decode >> +++ b/tests/decode/err_field1.decode >> @@ -2,4 +2,4 @@ >> # See the COPYING.LIB file in the top-level directory. >> >> # Diagnose invalid field syntax >> -%field asdf >> +%field 1asdf > > I just realized that this specific change needs to go before patch 5: > it's updating an existing test because "asdf" used to be invalid > syntax and now is not. Otherwise bisection will break. Really? The test still fails here at patch 5: /home/rth/qemu/bld/../src/tests/decode/err_field1.decode:5: error: invalid field token "asdf" r~
On Fri, 26 May 2023 at 18:07, Richard Henderson <richard.henderson@linaro.org> wrote: > > On 5/24/23 03:26, Peter Maydell wrote: > > On Tue, 23 May 2023 at 13:04, Peter Maydell <peter.maydell@linaro.org> wrote: > >> > >> Add some tests for various cases of named-field use, both ones that > >> should work and ones that should be diagnosed as errors. > >> > >> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > >> --- > >> tests/decode/err_field1.decode | 2 +- > >> tests/decode/err_field10.decode | 7 +++++++ > >> tests/decode/err_field7.decode | 7 +++++++ > >> tests/decode/err_field8.decode | 8 ++++++++ > >> tests/decode/err_field9.decode | 14 ++++++++++++++ > >> tests/decode/succ_named_field.decode | 19 +++++++++++++++++++ > >> 6 files changed, 56 insertions(+), 1 deletion(-) > >> create mode 100644 tests/decode/err_field10.decode > >> create mode 100644 tests/decode/err_field7.decode > >> create mode 100644 tests/decode/err_field8.decode > >> create mode 100644 tests/decode/err_field9.decode > >> create mode 100644 tests/decode/succ_named_field.decode > >> > >> diff --git a/tests/decode/err_field1.decode b/tests/decode/err_field1.decode > >> index e07a5a73e0e..85c3f326d07 100644 > >> --- a/tests/decode/err_field1.decode > >> +++ b/tests/decode/err_field1.decode > >> @@ -2,4 +2,4 @@ > >> # See the COPYING.LIB file in the top-level directory. > >> > >> # Diagnose invalid field syntax > >> -%field asdf > >> +%field 1asdf > > > > I just realized that this specific change needs to go before patch 5: > > it's updating an existing test because "asdf" used to be invalid > > syntax and now is not. Otherwise bisection will break. > > Really? The test still fails here at patch 5: > > /home/rth/qemu/bld/../src/tests/decode/err_field1.decode:5: error: invalid field token "asdf" Oh, right, because there's no trailing size specification so it doesn't get recognized as a named field. thanks -- PMM
On 5/23/23 05:04, Peter Maydell wrote: > Add some tests for various cases of named-field use, both ones that > should work and ones that should be diagnosed as errors. > > Signed-off-by: Peter Maydell<peter.maydell@linaro.org> > --- > tests/decode/err_field1.decode | 2 +- > tests/decode/err_field10.decode | 7 +++++++ > tests/decode/err_field7.decode | 7 +++++++ > tests/decode/err_field8.decode | 8 ++++++++ > tests/decode/err_field9.decode | 14 ++++++++++++++ > tests/decode/succ_named_field.decode | 19 +++++++++++++++++++ > 6 files changed, 56 insertions(+), 1 deletion(-) > create mode 100644 tests/decode/err_field10.decode > create mode 100644 tests/decode/err_field7.decode > create mode 100644 tests/decode/err_field8.decode > create mode 100644 tests/decode/err_field9.decode > create mode 100644 tests/decode/succ_named_field.decode Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
© 2016 - 2026 Red Hat, Inc.