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

--- Comment #1 from Marco Leise <marco.le...@gmx.de> ---
Ok, using `movdqa XMM0, csXMM;` it works when the `SSEFromString` is changed to
declare the vector as __gshared instead of immutable. So DMD has trouble
sorting things out when they are read-only data.

    void foo()
    {
        version (D_InlineAsm_X86_64)
        {
            alias csXMM = SSEFromString!`abc`;
            asm @nogc nothrow
            {
                movdqa      XMM0, csXMM;
            }
        }
        else static assert(0, "Not implemented");
    }

    template SSEFromString(string str)
    {
        import std.algorithm, std.range;

        version (DigitalMars)
            __gshared ubyte16 SIMDFromString = chain(str,
'\0'.repeat(ubyte16.sizeof - str.length)).array;
        else
            immutable ubyte16 SIMDFromString = chain(str,
'\0'.repeat(ubyte16.sizeof - str.length)).array;
    }

--

Reply via email to