Jump to page: 1 2
Thread overview
[Issue 15619] [REG 2.066] Floating-point x86_64 codegen regression, when involving array ops
[Issue 15619] [REG 2.068] Floating-point x86_64 codegen regression
Jan 28, 2016
ponce
Jan 28, 2016
ponce
[Issue 15619] [REG 2.068] Floating-point x86_64 codegen regression, when involving array ops
Jan 29, 2016
ponce
Feb 08, 2016
Kenji Hara
Mar 20, 2016
yebblies
Mar 20, 2016
Martin Nowak
Mar 23, 2016
Martin Nowak
May 24, 2016
Walter Bright
May 24, 2016
ponce
Jun 05, 2016
Martin Nowak
Jul 22, 2017
Ketmar Dark
January 28, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

ponce <aliloko@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[REG 2.068]                 |[REG 2.068] Floating-point
                   |                            |x86_64 codegen regression

--
January 28, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

--- Comment #1 from ponce <aliloko@gmail.com> ---
Reduced to:

--------------------------------
import std.stdio;

void fillWithOnes(float* outputs, int frames)
{
    float[] A = new float[frames];
    float[] B = new float[frames];

    A[] = 0;
    B[] = 0;

    float one = returnOne();

    A[0..frames] += B[0..frames];

    for (int i = 0; i < frames; ++i)
    {
        outputs[i] = one;
    }
}

float returnOne()
{
    return 1;
}

void main()
{
    float[] buf = new float[16];
    fillWithOnes(buf.ptr, 16);
    writeln(buf);
}
--------------------------------

--
January 29, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

ponce <aliloko@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[REG 2.068] Floating-point  |[REG 2.068] Floating-point
                   |x86_64 codegen regression   |x86_64 codegen regression,
                   |                            |when involving array ops

--
February 08, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
            Summary|[REG 2.068] Floating-point  |[REG 2.066] Floating-point
                   |x86_64 codegen regression,  |x86_64 codegen regression,
                   |when involving array ops    |when involving array ops

--- Comment #2 from Kenji Hara <k.hara.pg@gmail.com> ---
Both original and reduced code generate wrong result since 2.066.0 (2.065 is
ok).

--
March 20, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

yebblies <yebblies@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yebblies@gmail.com
          Component|dmd                         |druntime

--- Comment #3 from yebblies <yebblies@gmail.com> ---
The array operation uses xmm6/xmm7 internally without saving them, but they are callee saved on win64.

Probably introduced by this: https://github.com/D-Programming-Language/druntime/pull/829

--
March 20, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@dawg.eu
           Assignee|nobody@puremagic.com        |code@dawg.eu

--- Comment #4 from Martin Nowak <code@dawg.eu> ---
I'll take this. https://trello.com/c/TNCQ6xBk/171-issue-15619-reg-2-066-floating-point-x86-64-codegen-regression-when-involving-array-ops

--
March 23, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

--- Comment #5 from Martin Nowak <code@dawg.eu> ---
As this is already broken for a while (and way longer for other array ops, e.g. double), I'll delay this fix for a proper replacement w/ templated array ops.

https://github.com/D-Programming-Language/druntime/pull/471#issuecomment-16075234
WIP:
https://github.com/MartinNowak/dmd/tree/arrayOps
https://github.com/MartinNowak/druntime/tree/arrayOps

--
May 24, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com

--- Comment #6 from Walter Bright <bugzilla@digitalmars.com> ---
Doesn't seem like this should be too hard to fix - just save xmm6-7 for Win64 - why not just do it?

--
May 24, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

--- Comment #7 from ponce <aliloko@gmail.com> ---
FWIW I don't use array ops anymore, to the exception of:

 slice[] = value;
 sliveA[] = sliceB[];

--
June 05, 2016
https://issues.dlang.org/show_bug.cgi?id=15619

--- Comment #8 from Martin Nowak <code@dawg.eu> ---
(In reply to Walter Bright from comment #6)
> Doesn't seem like this should be too hard to fix - just save xmm6-7 for Win64 - why not just do it?

Because all the other functions ignore it as well and maintaining that mess is just wasted time.

--
« First   ‹ Prev
1 2