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.
Comment #1 by github-bugzilla — 2017-04-22T01:14:39Z