From: Sven Schnelle <svens@stackframe.org>
To: qemu-devel@nongnu.org
Cc: deller@gmx.de, Sven Schnelle <svens@stackframe.org>,
Richard Henderson <rth@twiddle.net>
Subject: [Qemu-devel] [PATCH 3/5] target/hppa: fix log conditions
Date: Mon, 11 Feb 2019 19:19:05 +0100 [thread overview]
Message-ID: <20190211181907.2219-4-svens@stackframe.org> (raw)
In-Reply-To: <20190211181907.2219-2-svens@stackframe.org>
Now that do_cond() uses sign overflow for some condition matches we
need to roll our own version without sign overflow checks.
Signed-off-by: Sven Schnelle <svens@stackframe.org>
---
target/hppa/translate.c | 29 ++++++++++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/target/hppa/translate.c b/target/hppa/translate.c
index 0e8cc8117a..bce8773b1a 100644
--- a/target/hppa/translate.c
+++ b/target/hppa/translate.c
@@ -996,12 +996,35 @@ static DisasCond do_sub_cond(unsigned cf, TCGv_reg res,
static DisasCond do_log_cond(unsigned cf, TCGv_reg res)
{
+ DisasCond cond;
+ TCGv_reg tmp;
+
switch (cf >> 1) {
- case 4: case 5: case 6:
- cf &= 1;
+ case 0: /* never */
+ cond = cond_make_f();
+ break;
+ case 1: /* = all bits are zero */
+ cond = cond_make_0(TCG_COND_EQ, res);
+ break;
+ case 2: /* < leftmost bit is 1 */
+ cond = cond_make_0(TCG_COND_LT, res);
+ break;
+ case 3: /* <= leftmost bit is 1 or all bits 0 */
+ cond = cond_make_0(TCG_COND_LE, res);
+ break;
+ case 7: /* OD rightmost bit is 1 */
+ tmp = tcg_temp_new();
+ tcg_gen_andi_reg(tmp, res, 1);
+ cond = cond_make_0(TCG_COND_NE, tmp);
+ tcg_temp_free(tmp);
+ break;
+ default:
break;
}
- return do_cond(cf, res, res, res);
+ if (cf & 1) {
+ cond.c = tcg_invert_cond(cond.c);
+ }
+ return cond;
}
/* Similar, but for shift/extract/deposit conditions. */
--
2.20.1
next prev parent reply other threads:[~2019-02-11 18:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-11 18:19 [Qemu-devel] [PATCH 1/5] target/hppa: move GETPC to HELPER() functions Sven Schnelle
2019-02-11 18:19 ` [Qemu-devel] [PATCH 2/5] target/hppa: fix '</<=' conditions Sven Schnelle
2019-02-12 4:26 ` Richard Henderson
2019-02-11 18:19 ` Sven Schnelle [this message]
2019-02-12 4:30 ` [Qemu-devel] [PATCH 3/5] target/hppa: fix log conditions Richard Henderson
2019-02-11 18:19 ` [Qemu-devel] [PATCH 4/5] target/hppa: fix sed conditions Sven Schnelle
2019-02-12 4:27 ` Richard Henderson
2019-02-14 8:10 ` Sven Schnelle
2019-02-11 18:19 ` [Qemu-devel] [PATCH 5/5] target/hppa: fix dcor instruction Sven Schnelle
2019-02-12 4:30 ` Richard Henderson
2019-02-12 0:07 ` [Qemu-devel] [PATCH 1/5] target/hppa: move GETPC to HELPER() functions Richard Henderson
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=20190211181907.2219-4-svens@stackframe.org \
--to=svens@stackframe.org \
--cc=deller@gmx.de \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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).