[Issue 21470] New: ICE core.simd when implementing _mm_set1_epi8

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Dec 11 07:11:11 UTC 2020


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

          Issue ID: 21470
           Summary: ICE core.simd when implementing _mm_set1_epi8
           Product: D
           Version: D2
          Hardware: x86_64
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: aliloko at gmail.com

Probably very similar bug than https://issues.dlang.org/show_bug.cgi?id=21469
but this time it is wrong codegen rather than crashing DMD.


HOW TO REPRODUCE

Using DMD 2.094.0, build this file with: dmd -m64 test2.d -g

------------ test2.d -------------------

import core.simd;

int4 _mm_set1_epi8 (byte a) pure @trusted
{
    return cast(int4)(byte16(a));
}


void main(string[] args)
{
    byte16 b = cast(byte16) _mm_set1_epi8(31);
    for (int i = 0; i < 16; ++i)
        assert(b.array[i] == 31); // fails
}

----------------------------------------


OUTPUT

    core.exception.AssertError at test2.d(13): Assertion failure


we can workaround this bug:

-----------------------------------------

int4 _mm_set1_epi8 (byte a) pure @trusted
{
    byte16 b = a; // on a separate line
    return cast(int4)(b);
}

-----------------------------------------

--


More information about the Digitalmars-d-bugs mailing list