www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17337] New: SIGILL for AVX vector initialization

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

          Issue ID: 17337
           Summary: SIGILL for AVX vector initialization
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: code dawg.eu

cat > bug.d << CODE
alias ubyte16 = __vector(ubyte[16]);

ubyte16 bug(ubyte val)
{
    immutable ubyte16 a = 0, b = val;
    return b;
}

void main()
{
    bug(12);
}
CODE

dmd -mcpu=avx -run bug
----
Error: program killed by signal 4 (SIGILL)
----

Turns out that dmd tries to encode a third operand into the vex.vvvv bits,
which ought to remain 0b1111 for the 2 operand VPUSHD instruction.

--
Apr 21 2017