From: Hans-Peter Nilsson <hp@bitrange.com>
To: Jeff Law <jeffreyalaw@gmail.com>
Cc: binutils@sourceware.org, gdb-patches@sourceware.org
Subject: Re: Fix for MUL instruction on the v850
Date: Mon, 28 Mar 2022 09:38:42 -0400 (EDT) [thread overview]
Message-ID: <alpine.BSF.2.20.16.2203280932490.84533@arjuna.pair.com> (raw)
In-Reply-To: <3524b3c5-354f-b1cb-b9f4-ea815fa5774a@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1601 bytes --]
(Wrong list; I CC:ed the right one.)
On Sat, 26 Mar 2022, Jeff Law via Binutils wrote:
> The v850 gcc testsuite started failing test vrp13 about a week ago. This was
> ultimately tracked down on a bug in the simulator's handling of the MUL
> instruction (a change in the compiler resulted in the test no longer
> compile-time optimized away).
>
> MUL on the v850 is a 32x32->64 multiply with the hi/low parts of the result
> going into distinct registers.? ?? mul r1, r2, r3 is r1xr2 -> (r3, r2) where
> r2 holds the low 32 bits of the result and r3 holds the high 32 bits of the
> result.
>
> We had inputs of 2, -10 and produced an output of 20.? Opps ;-)
>
> The v850 is a 32bit processor using 2s complement.? So to check if a value is
> negative we merely need to check if bit 0x80000000 is on. Anything else is
> just introducing dependencies on the host system's types, argument promotions,
> etc, which is precisely what happened in this case.
>
> No new testcase for the simulator.? Not only does vrp13 test this, but about
> 1800 other tests which have flipped from failing to passing in the GCC
> testsuite...? So I can say it's being tested and if it were to regress again,
> we'd catch it.
>
> OK for the trunk?
>
> Thanks,
> Jeff
OK if you mention the gcc test-suite in the commit message or a
comment, but please (re)consider adding a self-contained (i.e.
just binutils+sim) test-case. Suggested inspiration: "git grep
sim" in the CRIS sim test-suite, though without a "dump
register" framework macro you need to compare with expected
results instead of matching output.
brgds, H-P
[-- Attachment #2: Type: text/plain, Size: 525 bytes --]
* sim/v850/simops.c (Multiply64): Properly test if we need to negate
either of the operand.
diff --git a/sim/v850/simops.c b/sim/v850/simops.c
index 8fac8bd9891..94399e2ad4f 100644
--- a/sim/v850/simops.c
+++ b/sim/v850/simops.c
@@ -339,10 +339,10 @@ Multiply64 (int sign, unsigned long op0)
sign = (op0 ^ op1) & 0x80000000;
- if (((signed long) op0) < 0)
+ if (op0 & 0x80000000)
op0 = - op0;
- if (((signed long) op1) < 0)
+ if (op1 & 0x80000000)
op1 = - op1;
}
next parent reply other threads:[~2022-03-28 13:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <3524b3c5-354f-b1cb-b9f4-ea815fa5774a@gmail.com>
2022-03-28 13:38 ` Hans-Peter Nilsson [this message]
2022-03-29 3:12 ` Mike Frysinger via Gdb-patches
2022-03-29 22:30 ` Jeff Law via Gdb-patches
2022-03-30 0:09 ` Jeff Law via Gdb-patches
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=alpine.BSF.2.20.16.2203280932490.84533@arjuna.pair.com \
--to=hp@bitrange.com \
--cc=binutils@sourceware.org \
--cc=gdb-patches@sourceware.org \
--cc=jeffreyalaw@gmail.com \
/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