From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [PATCH 3/4] tests/tcg: refine MMX support in SSE tests
Date: Mon, 12 Sep 2022 01:00:13 +0200 [thread overview]
Message-ID: <20220911230014.340601-4-pbonzini@redhat.com> (raw)
In-Reply-To: <20220911230014.340601-1-pbonzini@redhat.com>
Extend the support to memory operands, and skip MMX instructions that
were introduced in SSE times, because they are now covered in test-mmx.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/tcg/i386/test-avx.py | 32 ++++++++++++++++++++++++++------
1 file changed, 26 insertions(+), 6 deletions(-)
diff --git a/tests/tcg/i386/test-avx.py b/tests/tcg/i386/test-avx.py
index 2516c66445..e16a3d8bee 100755
--- a/tests/tcg/i386/test-avx.py
+++ b/tests/tcg/i386/test-avx.py
@@ -103,7 +103,11 @@ def regstr(self, n):
class MMArg():
isxmm = True
- ismem = False # TODO
+ def __init__(self, mw):
+ if mw not in [0, 32, 64]:
+ raise Exception("Bad mem width: %s" % mw)
+ self.mw = mw
+ self.ismem = mw != 0
def regstr(self, n):
return "mm%d" % (n & 7)
@@ -169,6 +173,9 @@ def __init__(self, w):
def regstr(self, n):
return mem_w(self.w)
+class SkipInstruction(Exception):
+ pass
+
def ArgGenerator(arg, op):
if arg[:3] == 'xmm' or arg[:3] == "ymm":
if "/" in arg:
@@ -179,7 +186,13 @@ def ArgGenerator(arg, op):
else:
return XMMArg(arg[0], 0);
elif arg[:2] == 'mm':
- return MMArg();
+ if "/" in arg:
+ r, m = arg.split('/')
+ if (m[0] != 'm'):
+ raise Exception("Expected /m: %s", arg)
+ return MMArg(int(m[1:]));
+ else:
+ return MMArg(0);
elif arg[:4] == 'imm8':
return ArgImm8u(op);
elif arg == '<XMM0>':
@@ -217,8 +230,12 @@ def __init__(self, op, args):
try:
self.args = list(ArgGenerator(a, op) for a in args)
+ if not any((x.isxmm for x in self.args)):
+ raise SkipInstruction
if len(self.args) > 0 and self.args[-1] is None:
self.args = self.args[:-1]
+ except SkipInstruction:
+ raise
except Exception as e:
raise Exception("Bad arg %s: %s" % (op, e))
@@ -339,10 +356,13 @@ def main():
continue
cpuid = row[6]
if cpuid in archs:
- g = InsnGenerator(insn[0], insn[1:])
- for insn in g.gen():
- outf.write('TEST(%d, "%s", %s)\n' % (n, insn, g.optype))
- n += 1
+ try:
+ g = InsnGenerator(insn[0], insn[1:])
+ for insn in g.gen():
+ outf.write('TEST(%d, "%s", %s)\n' % (n, insn, g.optype))
+ n += 1
+ except SkipInstruction:
+ pass
outf.write("#undef TEST\n")
csvfile.close()
--
2.37.2
next prev parent reply other threads:[~2022-09-11 23:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-11 23:00 [PATCH 0/4] target/i386: More SIMD tests Paolo Bonzini
2022-09-11 23:00 ` [PATCH 1/4] tests/tcg: i386: fix typos in 3DNow! instructions Paolo Bonzini
2022-09-11 23:00 ` [PATCH 2/4] tests/tcg: i386: add MMX and 3DNow! tests Paolo Bonzini
2022-09-11 23:00 ` Paolo Bonzini [this message]
2022-09-11 23:00 ` [PATCH 4/4] tests/tcg: remove old SSE tests Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220911230014.340601-4-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).