summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetar Jovanovic <petarj@mips.com>2013-02-07 19:36:09 +0100
committerMichael Roth <mdroth@linux.vnet.ibm.com>2013-04-04 16:31:57 -0500
commitb09a67316484af24427a7174b65531e9c0b6e6b4 (patch)
treef70664bd0955f84ba23c3329fad45190dcfa25bb
parent79a4dd4085fceaaf23b619e1e269478306226f16 (diff)
downloadqemu-b09a67316484af24427a7174b65531e9c0b6e6b4.tar.gz
target-mips: fix for sign-issue in MULQ_W helper
Correct sign-propagation before multiplication in MULQ_W helper. The change also fixes previously incorrect expected values in the tests for MULQ_RS.W and MULQ_S.W. Signed-off-by: Petar Jovanovic <petarj@mips.com> Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> (cherry picked from commit a345481baa2b2fb3d54f8c9ddb58dfcaf75786df) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--target-mips/dsp_helper.c2
-rw-r--r--tests/tcg/mips/mips32-dspr2/mulq_rs_w.c2
-rw-r--r--tests/tcg/mips/mips32-dspr2/mulq_s_w.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/target-mips/dsp_helper.c b/target-mips/dsp_helper.c
index 6781da8214..841f47b91d 100644
--- a/target-mips/dsp_helper.c
+++ b/target-mips/dsp_helper.c
@@ -2689,7 +2689,7 @@ MAQ_SA_W(maq_sa_w_phr, 0);
target_ulong helper_##name(target_ulong rs, target_ulong rt, \
CPUMIPSState *env) \
{ \
- uint32_t rs_t, rt_t; \
+ int32_t rs_t, rt_t; \
int32_t tempI; \
int64_t tempL; \
\
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c b/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
index 669405faf1..7ba633bc17 100644
--- a/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
+++ b/tests/tcg/mips/mips32-dspr2/mulq_rs_w.c
@@ -8,7 +8,7 @@ int main()
rs = 0x80001234;
rt = 0x80004321;
- result = 0x80005555;
+ result = 0x7FFFAAAB;
__asm
("mulq_rs.w %0, %1, %2\n\t"
diff --git a/tests/tcg/mips/mips32-dspr2/mulq_s_w.c b/tests/tcg/mips/mips32-dspr2/mulq_s_w.c
index df148b7ffb..9c2be06cc0 100644
--- a/tests/tcg/mips/mips32-dspr2/mulq_s_w.c
+++ b/tests/tcg/mips/mips32-dspr2/mulq_s_w.c
@@ -8,7 +8,7 @@ int main()
rs = 0x80001234;
rt = 0x80004321;
- result = 0x80005555;
+ result = 0x7FFFAAAB;
__asm
("mulq_s.w %0, %1, %2\n\t"