View mode: basic / threaded / horizontal-split · Log in · Help
April 30, 2009
[Issue 2915] New: [Patch]: Optimize -a*-b into a*b
http://d.puremagic.com/issues/show_bug.cgi?id=2915

          Summary: [Patch]: Optimize -a*-b into a*b
          Product: D
          Version: 1.043
         Platform: PC
       OS/Version: Windows
           Status: NEW
         Keywords: patch, performance
         Severity: enhancement
         Priority: P2
        Component: DMD
       AssignedTo: bugzilla@digitalmars.com
       ReportedBy: clugdbug@yahoo.com.au


This is a simple patch for a simple optimisation.

TEST CASE:
---
int main(string[] args) {
   real x = args.length == 2 ? 6.0 : 4.0; // just to defeat the optimiser
   real y = -x*-x;
   return cast(int)y;  
}
--
From existing DMD, y=-x*-x is:
               fld     tbyte ptr [ESP]
               fchs
               fld     tbyte ptr [ESP]
               sub     ESP,8
               fchs
               fmulp   ST(1),ST
With patch:
               fld     tbyte ptr [ESP]
               fld     tbyte ptr [ESP]
               fmulp   ST(1),ST
               sub     ESP,8

It's not a huge win, but it's a move in the right direction.
(You can see several other problems with the optimiser in this code. The second
load of x is unnecessary, it should just be fmul ST(0), ST; And the first load
is unnecessary since x was in ST(0) before the start of this code. Which means
the store of y was also unnecessary. This therefore takes us from 6
instructions to 4; optimal is one instruction).


--
April 30, 2009
[Issue 2915] [Patch]: Optimize -a*-b into a*b
http://d.puremagic.com/issues/show_bug.cgi?id=2915





------- Comment #1 from clugdbug@yahoo.com.au  2009-04-30 02:11 -------
Created an attachment (id=343)
--> (http://d.puremagic.com/issues/attachment.cgi?id=343&action=view)
Patch against DMD2.029

Applies to integer, real, complex and imaginary types. Causes no FP problems
because change of sign is an exact operation (no rounding ever occurs).


--
July 09, 2009
[Issue 2915] [Patch]: Optimize -a*-b into a*b
http://d.puremagic.com/issues/show_bug.cgi?id=2915


Walter Bright <bugzilla@digitalmars.com> changed:

          What    |Removed                     |Added
----------------------------------------------------------------------------
            Status|NEW                         |RESOLVED
        Resolution|                            |FIXED




--- Comment #2 from Walter Bright <bugzilla@digitalmars.com>  2009-07-09 02:48:49 PDT ---
Fixed dmd 1.046 and 2.031

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Top | Discussion index | About this forum | D home