From: Richard Henderson <rth@twiddle.net>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>, aurelien@aurel32.net
Subject: [Qemu-devel] [PATCH 2/8] tcg/optimize: fix known-zero bits optimization
Date: Fri, 31 Jan 2014 08:46:57 -0600 [thread overview]
Message-ID: <1391179623-13626-3-git-send-email-rth@twiddle.net> (raw)
In-Reply-To: <1391179623-13626-1-git-send-email-rth@twiddle.net>
From: Aurelien Jarno <aurelien@aurel32.net>
Known-zero bits optimization is a great idea that helps to generate more
optimized code. However the current implementation only works in very few
cases as the computed mask is not saved.
Fix this to make it really working.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
tcg/optimize.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index c5cdde2..7838be2 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -691,7 +691,8 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
break;
}
- /* Simplify using known-zero bits */
+ /* Simplify using known-zero bits. Currently only ops with a single
+ output argument is supported. */
mask = -1;
affected = -1;
switch (op) {
@@ -1149,6 +1150,11 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
} else {
for (i = 0; i < def->nb_oargs; i++) {
reset_temp(args[i]);
+ /* Save the corresponding known-zero bits mask for the
+ first output argument (only one supported so far). */
+ if (i == 0) {
+ temps[args[i]].mask = mask;
+ }
}
}
for (i = 0; i < def->nb_args; i++) {
--
1.8.5.3
next prev parent reply other threads:[~2014-01-31 14:47 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-31 14:46 [Qemu-devel] [PATCH 0/8] tcg optimization improvements Richard Henderson
2014-01-31 14:46 ` [Qemu-devel] [PATCH 1/8] tcg/optimize: fix known-zero bits for right shift ops Richard Henderson
2014-01-31 14:46 ` Richard Henderson [this message]
2014-01-31 14:46 ` [Qemu-devel] [PATCH 3/8] tcg/optimize: improve known-zero bits for 32-bit ops Richard Henderson
2014-01-31 14:46 ` [Qemu-devel] [PATCH 4/8] tcg/optimize: add known-zero bits compute for load ops Richard Henderson
2014-01-31 14:47 ` [Qemu-devel] [PATCH 5/8] tcg/optimize: Handle known-zeros masks for ANDC Richard Henderson
2014-02-16 18:12 ` Aurelien Jarno
2014-01-31 14:47 ` [Qemu-devel] [PATCH 6/8] tcg/optimize: Simply some logical ops to NOT Richard Henderson
2014-02-16 18:27 ` Aurelien Jarno
2014-01-31 14:47 ` [Qemu-devel] [PATCH 7/8] tcg/optimize: Optmize ANDC X, Y, Y to MOV X, 0 Richard Henderson
2014-02-16 18:27 ` Aurelien Jarno
2014-01-31 14:47 ` [Qemu-devel] [PATCH 8/8] tcg/optimize: Add more identity simplifications Richard Henderson
2014-02-16 18:30 ` Aurelien Jarno
2014-02-14 21:44 ` [Qemu-devel] [PATCH 0/8] tcg optimization improvements Richard Henderson
2014-02-16 14:15 ` 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=1391179623-13626-3-git-send-email-rth@twiddle.net \
--to=rth@twiddle.net \
--cc=aurelien@aurel32.net \
--cc=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).