[Issue 16489] [backend][optimizaton][registers] DMD is 10-20 times slower for GLAS

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Wed Nov 9 22:45:38 PST 2016


https://issues.dlang.org/show_bug.cgi?id=16489

--- Comment #5 from Илья Ярошенко <ilyayaroshenko at gmail.com> ---
(In reply to Walter Bright from comment #4)
> There are enough issues with the example that it won't compile, and
> inventing changes to make it compile may not show the issue. Can you please
> post one that does compile and illustrates the issue?


void foo(
    ref __vector(float[4])[2][6] c, 
    __vector(float[4])[2]* a, 
    __vector(float[4])[6]* b,
    size_t length)
{
    import std.meta;

    __vector(float[4])[2][6] reg = void; // should be located in the registers 
    reg = c;

    __vector(float[4])[2] ai = void;
    __vector(float[4])[6] bi = void;

    do {
       ai[0] = a[0][0]; // should be located in the registers 
       ai[1] = a[0][1]; // should be located in the registers 

       foreach(i; AliasSeq!(0, 1, 2, 3, 4, 5))
       {
          bi[i] = b[0][i]; // Issue 16488, // should be located in the
registers 
          reg[i][0] += ai[0] * bi[i];
          reg[i][1] += ai[1] * bi[i];
       }

       a++;
       b++;
    } while(--length);
    c = reg;
}

--


More information about the Digitalmars-d-bugs mailing list