Merge pull request #5663 from simon902/PDEPoverlap

JIT/ALUOps: Fix operand overlapping bug for pdep
This commit is contained in:
Ryan Houdek authored and GitHub committed 2026-07-08 11:08:12 -07:00
commit 21a968b84d
5 files changed
+50 -7

No files matched your search

+1 -1
View File
@@ -774,7 +774,7 @@ DEF_OP(PDep) {
// Now, they're copied, so we can start setting Dest (even if it overlaps with
// one of them). Handle early exit case
mov(EmitSize, Dest, 0);
(void)cbz(EmitSize, OrigMask, &Done);
(void)cbz(EmitSize, Mask, &Done);
// Setup for first iteration
neg(EmitSize, T0, Mask);
+43
View File
@@ -0,0 +1,43 @@
%ifdef CONFIG
{
"RegData": {
"RBX": "0xAAAAAAAAAAAAAAAA",
"RBX": "0x4444444444444444",
"RCX": "0x4444444444444444",
"RDX": "0x5555555555555555",
"R8": "0x0303030303030303",
"RSI": "0x3333333333333333",
"R8": "0x0303030303030303"
}
}
%endif
; dest and mask overlap
mov rax, 0xAAAAAAAAAAAAAAAA
mov rbx, 0x5555555555555555
pdep rbx, rax, rbx
; dest and input overlap
mov rcx, 0xAAAAAAAAAAAAAAAA
mov rdx, 0x5555555555555555
pdep rcx, rcx, rdx
; input and mask overlap
mov rdi, 0xDEADBEEFCAFEBABE
mov rsi, 0x3333333333333333
pdep rdi, rsi, rsi
; dest, input, mask overlap
mov r8, 0x3333333333333333
pdep r8, r8, r8
hlt
@@ -672,7 +672,7 @@
"mov x0, x6",
"mov x1, x7",
"mov w4, #0x0",
"cbz w7, #+0x2c",
"cbz w1, #+0x2c",
"neg w2, w1",
"and w2, w2, w1",
"sbfx w3, w0, #0, #1",
@@ -694,7 +694,7 @@
"mov x0, x6",
"mov x1, x7",
"mov x4, #0x0",
"cbz x7, #+0x2c",
"cbz x1, #+0x2c",
"neg x2, x1",
"and x2, x2, x1",
"sbfx x3, x0, #0, #1",
@@ -405,7 +405,7 @@
"mov x0, x6",
"mov x1, x7",
"mov w4, #0x0",
"cbz w7, #+0x2c",
"cbz w1, #+0x2c",
"neg w2, w1",
"and w2, w2, w1",
"sbfx w3, w0, #0, #1",
@@ -427,7 +427,7 @@
"mov x0, x6",
"mov x1, x7",
"mov x4, #0x0",
"cbz x7, #+0x2c",
"cbz x1, #+0x2c",
"neg x2, x1",
"and x2, x2, x1",
"sbfx x3, x0, #0, #1",
+2 -2
View File
@@ -4980,7 +4980,7 @@
"mov x0, x6",
"mov x1, x7",
"mov w4, #0x0",
"cbz w7, #+0x2c",
"cbz w1, #+0x2c",
"neg w2, w1",
"and w2, w2, w1",
"sbfx w3, w0, #0, #1",
@@ -5002,7 +5002,7 @@
"mov x0, x6",
"mov x1, x7",
"mov x4, #0x0",
"cbz x7, #+0x2c",
"cbz x1, #+0x2c",
"neg x2, x1",
"and x2, x2, x1",
"sbfx x3, x0, #0, #1",