mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
Improvements to 128-bit atomics:
- Separate __int128_t type and arithmetic detection - Support 128-bit load/store in backend for i386, aarch64, ppc64, s390x - Accelerate atomics via host/include/ Decodetree: - Add named field syntax - Move tests to meson -----BEGIN PGP SIGNATURE----- iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmR2R10dHHJpY2hhcmQu aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/bsgf/XLi8q+ITyoEAKwG4 6ML7DktLAdIs9Euah9twqe16U0BM0YzpKfymBfVVBKKaIa0524N4ZKIT3h6EeJo+ f+ultqrpsnH+aQh4wc3ZCkEvRdhzhFT8VcoRTunJuJrbL3Y8n2ZSgODUL2a0tahT Nn+zEPm8rzQanSKQHq5kyNBLpgTUKjc5wKfvy/WwttnFmkTnqzcuEA6nPVOVwOHC lZBQCByIQWsHfFHUVJFvsFzBQbm0mAiW6FNKzPBkoXon0h/UZUI1lV+xXzgutFs+ zR2O8IZwLYRu2wOWiTF8Nn2qQafkB3Dhwoq3JTEXhOqosOPExbIiWlsZDlPiKRJk bwmQlg== =XQMb -----END PGP SIGNATURE----- Merge tag 'pull-tcg-20230530' of https://gitlab.com/rth7680/qemu into staging Improvements to 128-bit atomics: - Separate __int128_t type and arithmetic detection - Support 128-bit load/store in backend for i386, aarch64, ppc64, s390x - Accelerate atomics via host/include/ Decodetree: - Add named field syntax - Move tests to meson # -----BEGIN PGP SIGNATURE----- # # iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmR2R10dHHJpY2hhcmQu # aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/bsgf/XLi8q+ITyoEAKwG4 # 6ML7DktLAdIs9Euah9twqe16U0BM0YzpKfymBfVVBKKaIa0524N4ZKIT3h6EeJo+ # f+ultqrpsnH+aQh4wc3ZCkEvRdhzhFT8VcoRTunJuJrbL3Y8n2ZSgODUL2a0tahT # Nn+zEPm8rzQanSKQHq5kyNBLpgTUKjc5wKfvy/WwttnFmkTnqzcuEA6nPVOVwOHC # lZBQCByIQWsHfFHUVJFvsFzBQbm0mAiW6FNKzPBkoXon0h/UZUI1lV+xXzgutFs+ # zR2O8IZwLYRu2wOWiTF8Nn2qQafkB3Dhwoq3JTEXhOqosOPExbIiWlsZDlPiKRJk # bwmQlg== # =XQMb # -----END PGP SIGNATURE----- # gpg: Signature made Tue 30 May 2023 11:58:37 AM PDT # gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F # gpg: issuer "richard.henderson@linaro.org" # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [ultimate] * tag 'pull-tcg-20230530' of https://gitlab.com/rth7680/qemu: (27 commits) tests/decode: Add tests for various named-field cases scripts/decodetree: Implement named field support scripts/decodetree: Implement a topological sort scripts/decodetree: Pass lvalue-formatter function to str_extract() docs: Document decodetree named field syntax tests/decode: Convert tests to meson decodetree: Do not remove output_file from /dev decodetree: Diagnose empty pattern group decodetree: Fix recursion in prop_format and build_tree decodetree: Add --test-for-error tcg: Remove TCG_TARGET_TLB_DISPLACEMENT_BITS accel/tcg: Add aarch64 store_atom_insert_al16 accel/tcg: Add aarch64 lse2 load_atom_extract_al16_or_al8 accel/tcg: Add x86_64 load_atom_extract_al16_or_al8 accel/tcg: Extract store_atom_insert_al16 to host header accel/tcg: Extract load_atom_extract_al16_or_al8 to host header tcg/s390x: Support 128-bit load/store tcg/ppc: Support 128-bit load/store tcg/aarch64: Support 128-bit load/store tcg/aarch64: Simplify constraints on qemu_ld/st ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
51bdb0b57a
38 changed files with 1312 additions and 225 deletions
|
@ -1,24 +0,0 @@
|
|||
#!/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
|
||||
|
||||
for i in succ_*.decode; do
|
||||
if ! $PYTHON $DECODETREE $i > /dev/null 2> /dev/null; then
|
||||
echo FAIL:$i 1>&2
|
||||
fi
|
||||
done
|
||||
|
||||
exit $E
|
7
tests/decode/err_field10.decode
Normal file
7
tests/decode/err_field10.decode
Normal file
|
@ -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
|
7
tests/decode/err_field7.decode
Normal file
7
tests/decode/err_field7.decode
Normal file
|
@ -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
|
8
tests/decode/err_field8.decode
Normal file
8
tests/decode/err_field8.decode
Normal file
|
@ -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
|
14
tests/decode/err_field9.decode
Normal file
14
tests/decode/err_field9.decode
Normal file
|
@ -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
|
64
tests/decode/meson.build
Normal file
64
tests/decode/meson.build
Normal file
|
@ -0,0 +1,64 @@
|
|||
err_tests = [
|
||||
'err_argset1.decode',
|
||||
'err_argset2.decode',
|
||||
'err_field1.decode',
|
||||
'err_field2.decode',
|
||||
'err_field3.decode',
|
||||
'err_field4.decode',
|
||||
'err_field5.decode',
|
||||
'err_field6.decode',
|
||||
'err_field7.decode',
|
||||
'err_field8.decode',
|
||||
'err_field9.decode',
|
||||
'err_field10.decode',
|
||||
'err_init1.decode',
|
||||
'err_init2.decode',
|
||||
'err_init3.decode',
|
||||
'err_init4.decode',
|
||||
'err_overlap1.decode',
|
||||
'err_overlap2.decode',
|
||||
'err_overlap3.decode',
|
||||
'err_overlap4.decode',
|
||||
'err_overlap5.decode',
|
||||
'err_overlap6.decode',
|
||||
'err_overlap7.decode',
|
||||
'err_overlap8.decode',
|
||||
'err_overlap9.decode',
|
||||
'err_pattern_group_empty.decode',
|
||||
'err_pattern_group_ident1.decode',
|
||||
'err_pattern_group_ident2.decode',
|
||||
'err_pattern_group_nest1.decode',
|
||||
'err_pattern_group_nest2.decode',
|
||||
'err_pattern_group_nest3.decode',
|
||||
'err_pattern_group_overlap1.decode',
|
||||
'err_width1.decode',
|
||||
'err_width2.decode',
|
||||
'err_width3.decode',
|
||||
'err_width4.decode',
|
||||
]
|
||||
|
||||
succ_tests = [
|
||||
'succ_argset_type1.decode',
|
||||
'succ_function.decode',
|
||||
'succ_ident1.decode',
|
||||
'succ_named_field.decode',
|
||||
'succ_pattern_group_nest1.decode',
|
||||
'succ_pattern_group_nest2.decode',
|
||||
'succ_pattern_group_nest3.decode',
|
||||
'succ_pattern_group_nest4.decode',
|
||||
]
|
||||
|
||||
suite = 'decodetree'
|
||||
decodetree = find_program(meson.project_source_root() / 'scripts/decodetree.py')
|
||||
|
||||
foreach t: err_tests
|
||||
test(fs.replace_suffix(t, ''),
|
||||
decodetree, args: ['-o', '/dev/null', '--test-for-error', files(t)],
|
||||
suite: suite)
|
||||
endforeach
|
||||
|
||||
foreach t: succ_tests
|
||||
test(fs.replace_suffix(t, ''),
|
||||
decodetree, args: ['-o', '/dev/null', files(t)],
|
||||
suite: suite)
|
||||
endforeach
|
19
tests/decode/succ_named_field.decode
Normal file
19
tests/decode/succ_named_field.decode
Normal file
|
@ -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
|
|
@ -74,10 +74,7 @@ if have_tools and have_vhost_user and 'CONFIG_LINUX' in config_host
|
|||
dependencies: [qemuutil, vhost_user])
|
||||
endif
|
||||
|
||||
test('decodetree', sh,
|
||||
args: [ files('decode/check.sh'), config_host['PYTHON'], files('../scripts/decodetree.py') ],
|
||||
workdir: meson.current_source_dir() / 'decode',
|
||||
suite: 'decodetree')
|
||||
subdir('decode')
|
||||
|
||||
if 'CONFIG_TCG' in config_all
|
||||
subdir('fp')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue