digitalmars.D.bugs - [Issue 23009] New: [CODEGEN][SIMD] SIMD + optimizations + inlining +
- d-bugmail puremagic.com (44/44) Apr 10 2022 https://issues.dlang.org/show_bug.cgi?id=23009
https://issues.dlang.org/show_bug.cgi?id=23009 Issue ID: 23009 Summary: [CODEGEN][SIMD] SIMD + optimizations + inlining + double Product: D Version: D2 Hardware: x86_64 OS: All Status: NEW Severity: critical Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: aliloko gmail.com Consider the following program: -------------------------------------- import core.simd; alias __m128d = double2; __m128d _mm_setr_pd (double e1, double e0) pure trusted { double2 result; result[0] = e1; result[1] = e0; return result; } __m128d _mm_loadl_pd (__m128d a, const(double)* mem_addr) pure trusted { a[0] = *mem_addr; return a; } void main(string[] args) { double A = 7.0; __m128d B = _mm_setr_pd(4.0, -5.0); __m128d R = _mm_loadl_pd(B, &A); double[2] correct = [ 7.0, -5.0 ]; assert(R.array == correct); } -------------------------------------- With DMD 2.099.1, build with: dmd -m64 -inline -O main.d It doesn't pass the assert. But it does pass if you omit -inline, or -O, or use another compiler. --
Apr 10 2022