public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* Fwd: Yet another fix for mcore-sim
       [not found] <f575f00a-a283-4d48-8477-495767e701f0@gmail.com>
@ 2023-12-17  4:54 ` Jeff Law
  2023-12-18 12:54   ` Andrew Burgess
  0 siblings, 1 reply; 3+ messages in thread
From: Jeff Law @ 2023-12-17  4:54 UTC (permalink / raw)
  To: apinski--- via Gdb-patches

[-- 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;

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Fwd: Yet another fix for mcore-sim
  2023-12-17  4:54 ` Fwd: Yet another fix for mcore-sim Jeff Law
@ 2023-12-18 12:54   ` Andrew Burgess
  2023-12-19  5:09     ` Jeff Law
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Burgess @ 2023-12-18 12:54 UTC (permalink / raw)
  To: Jeff Law, apinski--- via Gdb-patches

Jeff Law <jeffreyalaw@gmail.com> writes:

> 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?

It would be nice if there were some tests added to the simulator tree.
Could you create one similar to sim/testsuite/mcore/lsr.s maybe?

(Pre-)Approved with a test:

Approved-By: Andrew Burgess <aburgess@redhat.com>

Thanks,
Andrew

>
> Jeff
> 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;


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Fwd: Yet another fix for mcore-sim
  2023-12-18 12:54   ` Andrew Burgess
@ 2023-12-19  5:09     ` Jeff Law
  0 siblings, 0 replies; 3+ messages in thread
From: Jeff Law @ 2023-12-19  5:09 UTC (permalink / raw)
  To: Andrew Burgess, apinski--- via Gdb-patches



On 12/18/23 05:54, Andrew Burgess wrote:
> Jeff Law <jeffreyalaw@gmail.com> writes:
> 
>> 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?
> 
> It would be nice if there were some tests added to the simulator tree.
> Could you create one similar to sim/testsuite/mcore/lsr.s maybe?
> 
> (Pre-)Approved with a test:

Test added.  Fix and test pushed to the trunk.

Thanks,
jeff

ps.  Hadn't realized you'd moved to Red Hat.  Looks like we missed each 
other by about ~6 months.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-12-19  5:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <f575f00a-a283-4d48-8477-495767e701f0@gmail.com>
2023-12-17  4:54 ` Fwd: Yet another fix for mcore-sim Jeff Law
2023-12-18 12:54   ` Andrew Burgess
2023-12-19  5:09     ` Jeff Law

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).