summaryrefslogtreecommitdiff
path: root/tcg/ppc
diff options
context:
space:
mode:
authormalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>2008-06-09 19:57:27 +0000
committermalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>2008-06-09 19:57:27 +0000
commit2a40130888140288dcc9fa9581725e7fa0672d3f (patch)
tree452a76291e168047246a8df5087ffd3ca2d5d0f5 /tcg/ppc
parent3e2a462e05f2100e1067a365408f377b3f8b76e1 (diff)
downloadqemu-2a40130888140288dcc9fa9581725e7fa0672d3f.tar.gz
qemu-2a40130888140288dcc9fa9581725e7fa0672d3f.tar.bz2
qemu-2a40130888140288dcc9fa9581725e7fa0672d3f.zip
Fix test for signed div fast path
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4714 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'tcg/ppc')
-rw-r--r--tcg/ppc/tcg-target.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
index 6c4e37523f..205cd2bada 100644
--- a/tcg/ppc/tcg-target.c
+++ b/tcg/ppc/tcg-target.c
@@ -1057,7 +1057,13 @@ static void tcg_out_div2 (TCGContext *s, int uns)
{
void *label1_ptr, *label2_ptr;
- tcg_out32 (s, CMPLI | BF (7) | RA (3));
+ if (uns)
+ tcg_out32 (s, CMPLI | BF (7) | RA (3));
+ else {
+ tcg_out32 (s, SRAWI | RS (4) | RA (0) | 31);
+ tcg_out32 (s, CMPL | BF (7) | RA (3) | RB (4));
+ }
+
label1_ptr = s->code_ptr;
tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE);