www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 11585] New: SIMD: Internal error: backend/cgcod.c 1561

reply d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11585

           Summary: SIMD: Internal error: backend/cgcod.c 1561
           Product: D
           Version: D2
          Platform: x86_64
        OS/Version: Linux
            Status: NEW
          Keywords: ice, SIMD
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: Marco.Leise gmx.de



When the following code is compiled with "dmd2.064 -defaultlib=phobos2 -O
-release -inline -noboundscheck -L--as-needed -L-s" it causes an ICE,
presumably because the same reference to a SIMD vector is used twice in the
intrinsics, as the second assignment to x demonstrates. The first assignment is
more or less the real code I tried to compile and shows how several references
to the same vector can occur in SSE calculations.

---------------8<------------------
import core.simd;

void main() { foo(null); }

ubyte16 x;

void foo(ubyte16* d)
{
    if (d is null) return;

    ubyte16 a, b;
    // both assignments break cgcod.c
    x = __simd(XMM.POR, __simd(XMM.PCMPEQB, *d, a), __simd(XMM.PCMPEQB, *d,
b));
    x = __simd(XMM.PCMPEQB, *d, *d);
}
--------------->8------------------

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 23 2013
parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11585


yebblies <yebblies gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yebblies gmail.com
           Platform|x86_64                      |All
            Summary|SIMD: Internal error:       |ICE(cgcod.c) with SIMD and
                   |backend/cgcod.c 1561        |-O
         OS/Version|Linux                       |All



Reduced fails with -m64 -O

import core.simd;

ubyte16 x;

void foo(ubyte16* d)
{
    if (d is null) return;

    ubyte16 a, b;
    x = __simd(XMM.PCMPEQB, *d, *d);
}

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 23 2013