public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Jeff Law <jeffreyalaw@gmail.com>
To: apinski--- via Gdb-patches <gdb-patches@sourceware.org>
Subject: Fwd: Yet another fix for mcore-sim
Date: Sat, 16 Dec 2023 21:54:28 -0700	[thread overview]
Message-ID: <6de3406e-b76a-4599-b946-10e431a2dd75@gmail.com> (raw)
In-Reply-To: <f575f00a-a283-4d48-8477-495767e701f0@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2473 bytes --]

Someday I'll type "sourceware.org" correctly on a consistent basis.



-------- Forwarded Message --------
Subject: Yet another fix for mcore-sim
Date: Sat, 16 Dec 2023 21:52:12 -0700
From: Jeff Law <jeffreyalaw@gmail.com>
To: gdb-patches@sourcware.org


This came up testing the CRC optimization work from Mariam@RAU. 
Basically to optimize some CRC loops into table lookups or carryless 
multiplies, we may need to do a bit reflection, which on the mcore 
processor is done using a rotate instruction.

Unfortunately the simulator implementation of rotates has the exact same 
problem as we saw with right shifts.  The input value may have been sign 
extended from 32 to 64 bits.  When we rotate the extended value, we get 
those sign extension bits and thus the wrong result.

The fix is the same.  Rather than using a "long", use a uint32_t for the 
type of the temporary.  This fixes a handful of tests in the GCC testsuite:

> mcore-sim: gcc.c-torture/execute/20100805-1.c   -O0  execution test
> mcore-sim: gcc.c-torture/execute/20100805-1.c   -O1  execution test
> mcore-sim: gcc.c-torture/execute/20100805-1.c   -O2  execution test
> mcore-sim: gcc.c-torture/execute/20100805-1.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test
> mcore-sim: gcc.c-torture/execute/20100805-1.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  execution test
> mcore-sim: gcc.c-torture/execute/20100805-1.c   -O3 -g  execution test
> mcore-sim: gcc.c-torture/execute/20100805-1.c   -Os  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -O0  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -O1  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -O2  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -O3 -g  execution test
> mcore-sim: gcc.c-torture/execute/20180112-1.c   -Os  execution test
> mcore-sim: gcc.dg/20050922-1.c execution test
> mcore-sim: gcc.dg/crc-25.c execution test
> mcore-sim: gcc.dg/crc-26.c execution test
> mcore-sim: gcc.dg/crc-8.c execution test
> mcore-sim: gcc.dg/pr57233.c execution test


The crc-* tests are Mariam's CRC optimizer tests.  The rest are 
regression tests already in the GCC testsuite.

OK for the trunk?

Jeff

[-- Attachment #2: P --]
[-- Type: text/plain, Size: 388 bytes --]

diff --git a/sim/mcore/interp.c b/sim/mcore/interp.c
index 8bfb745a11f..94e0a1675be 100644
--- a/sim/mcore/interp.c
+++ b/sim/mcore/interp.c
@@ -1015,7 +1015,7 @@ step_once (SIM_DESC sd, SIM_CPU *cpu)
 	case 0x38: case 0x39:				/* xsr, rotli */
 	  {
 	    unsigned imm = IMM5;
-	    unsigned long tmp = gr[RD];
+	    uint32_t tmp = gr[RD];
 	    if (imm == 0)
 	      {
 		int32_t cbit;

       reply	other threads:[~2023-12-17  4:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <f575f00a-a283-4d48-8477-495767e701f0@gmail.com>
2023-12-17  4:54 ` Jeff Law [this message]
2023-12-18 12:54   ` Andrew Burgess
2023-12-19  5:09     ` Jeff Law

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=6de3406e-b76a-4599-b946-10e431a2dd75@gmail.com \
    --to=jeffreyalaw@gmail.com \
    --cc=gdb-patches@sourceware.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 read-only IMAP folder(s) and NNTP newsgroup(s).