[Issue 24283] New: [SIMD][CODEGEN] Bad codegen with and not + AVX registers
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Dec 17 14:29:47 UTC 2023
https://issues.dlang.org/show_bug.cgi?id=24283
Issue ID: 24283
Summary: [SIMD][CODEGEN] Bad codegen with and not + AVX
registers
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
With DMD64 D Compiler v2.106.0-dirty
On machine with AVX2 instructions.
Consider the following program:
--------------- repro.d ---------------
import core.simd;
import core.stdc.stdio;
void main()
{
int8 A = [7, -2, 9, 54654, 7, -2, 9, 54654];
int8 B = [14, 78, 111, -256, 14, 78, 111, -256];
int8 R = (~A) & B;
int[8] correct = [8, 0, 102, -54784, 8, 0, 102, -54784];
// Should be [8, 0, 102, -54784, 8, 0, 102, -54784]
// but return: [8, 0, 102, -54784, 6, 78, 9, 54528 instead when the issue
is here.
printf("%d %d %d %d %d %d %d %d\n", R[0], R[1], R[2], R[3], R[4], R[5],
R[6], R[7]);
assert(R.array == correct);
}
-----------------------------------------
Build it with:
dmd -m64 -mcpu=native repro.d
Codegen is wrong.
--
More information about the Digitalmars-d-bugs
mailing list