[Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Philipp Klaus Krause
ST marketing materials put STM8 Dhrystone performance at 0.29 DMIPS / Mhz.

However, when actually compiling the Dhrystone benchmark with different
C compilers optimizing for speed, the picture is a bit different:

Raisonance is at 0.289 DMIPS / Mhz and Cosmic at 0.296 DMIPS / Mhz, both
very close to the 0.29 DMIPS / Mhz stated by ST.
IAR outperforms them, and acheives 0.347 DMIPS / Mhz. All these numbers
are from the comparison at http://colecovision.eu/stm8/compilers.shtml,
which uses mid-2016 compilers.

SDCC used to perform worse at Dhrystone: SDCC 3.5.0 from last year only
achieves 0.151 DMIPS / Mhz. SDCC 3.6.0 was released on the 12th of June
2016 and improves this to 0.167 DMIPS / Mhz, still far worse than the
other compilers.

But current development versions of SDCC do much better: Revision #9652
is now at 0.355 DMIPS / Mhz. That means that SDCC went from worst to
best in a very short time. Besides the huge improvement in Dhrystone
scores, there was also a small reduction in Dhrystone code size.

Philipp

P.S.: Dhrystone was compiled using strong optimization for code speed:
sdcc -mstm8 -c -DNOSTRUCTASSIGN --max-allocs-per-node 10
--opt-code-speed

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user


Re: [Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Vaclav Peroutka

Hi Philipp,

thank you for the good work ! All regression tests are OK ?

Vaclav

"ST marketing materials put STM8 Dhrystone performance at 0.29 DMIPS / Mhz.

However, when actually compiling the Dhrystone benchmark with different
C compilers optimizing for speed, the picture is a bit different:

Raisonance is at 0.289 DMIPS / Mhz and Cosmic at 0.296 DMIPS / Mhz, both
very close to the 0.29 DMIPS / Mhz stated by ST.
IAR outperforms them, and acheives 0.347 DMIPS / Mhz. All these numbers
are from the comparison at http://colecovision.eu/stm8/compilers.shtml,
which uses mid-2016 compilers.

SDCC used to perform worse at Dhrystone: SDCC 3.5.0 from last year only
achieves 0.151 DMIPS / Mhz. SDCC 3.6.0 was released on the 12th of June
2016 and improves this to 0.167 DMIPS / Mhz, still far worse than the
other compilers.

But current development versions of SDCC do much better: Revision #9652
is now at 0.355 DMIPS / Mhz. That means that SDCC went from worst to
best in a very short time. Besides the huge improvement in Dhrystone
scores, there was also a small reduction in Dhrystone code size.

Philipp

P.S.: Dhrystone was compiled using strong optimization for code speed:
sdcc -mstm8 -c -DNOSTRUCTASSIGN --max-allocs-per-node 10
--opt-code-speed

"--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user


Re: [Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Philipp Klaus Krause
On 20.07.2016 13:28, Vaclav Peroutka wrote:
> 
> Hi Philipp,
> 
> thank you for the good work ! All regression tests are OK ?
> 
> Vaclav
> 

Regression tests pass. The Dhrystone self-test passes.
However, I have to admit, that to achieve this, I closely looked at what
SDCC does for Dhrystone and focused on improving thhat. So Applications
that are quite different from Dhrystone won't benefit much (e.g.
Coremark scores do not increase).

Here's what I improved to improve the Dhrystone score:

* memcpy()
* strcpy()
* strcmp()
* Multiplication of 16-bit numbers by 7 or 100¹
* Casts from booleans to int
* Peepholes that optimize out loads when a on-stack result value is read
both by an immediately following and a later instruction

Philipp

¹ this will later be generalized to other numbers that have few nonzero
bits in canonical signed digit representation (RFE #505).


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user


Re: [Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Philipp Klaus Krause
Here's a graphical representation of how SDCC compares to other
compilers at Dhrystone.

Philipp

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user


Re: [Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Frieder Ferlemann
Hi Philipp,

Am 20.07.2016 um 19:57 schrieb Philipp Klaus Krause:
> [..]
> * Multiplication of 16-bit numbers by 7 or 100¹
> [..]
> 
> ¹ this will later be generalized to other numbers that have few nonzero
> bits in canonical signed digit representation (RFE #505).

just a note, early PIC14 had handwritten optimizations for some multiplications 
before the generic multiply

https://sourceforge.net/p/sdcc/code/5000/tree/trunk/sdcc/src/pic/genarith.c
line 1528, genUMult8XLit_16()

(For some literals this was including swap instruction)

Don't know whether this helps:)

Greetings,
Frieder


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user


Re: [Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Philipp Klaus Krause
On 20.07.2016 20:30, Philipp Klaus Krause wrote:
> Here's a graphical representation of how SDCC compares to other
> compilers at Dhrystone.
> 
> Philipp

Sorry, attached the worng picture for the code size before. Here's the
correct one.

Philipp


--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user


Re: [Sdcc-user] STM8 Dhrystone performance - new record at 0.355 DMIPS / Mhz using SDCC

2016-07-20 Thread Philipp Klaus Krause
On 20.07.2016 20:41, Philipp Klaus Krause wrote:
> On 20.07.2016 20:30, Philipp Klaus Krause wrote:
>> Here's a graphical representation of how SDCC compares to other
>> compilers at Dhrystone.
>>
>> Philipp
> 
> Sorry, attached the worng picture for the code size before. Here's the
> correct one.
> 
> Philipp

And a fix in the key for the scores.

Philipp

--
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev___
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user