aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Instructions
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2022-09-13 03:24:09 -0300
committerGitHub <noreply@github.com>2022-09-13 08:24:09 +0200
commit729ff5337cab8d1fd4cc66d7792d410172f25f62 (patch)
tree65fe0eb59ecee1348da96865f8d9e5f648cd35d9 /ARMeilleure/Instructions
parent2492e7e808a3979ff54c5d28496d747e0a17fd5a (diff)
Fix increment on Arm32 NEON VLDn/VSTn instructions with regs > 1 (#3695)1.1.266
* Fix increment on Arm32 NEON VLDn/VSTn instructions with regs > 1 * PPTC version bump * PR feedback
Diffstat (limited to 'ARMeilleure/Instructions')
-rw-r--r--ARMeilleure/Instructions/InstEmitSimdMemory32.cs8
1 files changed, 4 insertions, 4 deletions
diff --git a/ARMeilleure/Instructions/InstEmitSimdMemory32.cs b/ARMeilleure/Instructions/InstEmitSimdMemory32.cs
index 72474ee3..b774bd06 100644
--- a/ARMeilleure/Instructions/InstEmitSimdMemory32.cs
+++ b/ARMeilleure/Instructions/InstEmitSimdMemory32.cs
@@ -67,7 +67,7 @@ namespace ARMeilleure.Instructions
for (int i = 0; i < count; i++)
{
- // Write an element from a double simd register.
+ // Accesses an element from a double simd register.
Operand address = context.Add(n, Const(offset));
if (eBytes == 8)
{
@@ -131,6 +131,7 @@ namespace ARMeilleure.Instructions
{
OpCode32SimdMemPair op = (OpCode32SimdMemPair)context.CurrOp;
+ int increment = count > 1 ? op.Increment : 1;
int eBytes = 1 << op.Size;
Operand n = context.Copy(GetIntA32(context, op.Rn));
@@ -144,7 +145,7 @@ namespace ARMeilleure.Instructions
int elemD = d + reg;
for (int i = 0; i < count; i++)
{
- // Write an element from a double simd register
+ // Accesses an element from a double simd register,
// add ebytes for each element.
Operand address = context.Add(n, Const(offset));
int index = ((elemD & 1) << (3 - op.Size)) + elem;
@@ -161,7 +162,6 @@ namespace ARMeilleure.Instructions
}
else
{
-
if (load)
{
EmitLoadSimd(context, address, GetVecA32(elemD >> 1), elemD >> 1, index, op.Size);
@@ -173,7 +173,7 @@ namespace ARMeilleure.Instructions
}
offset += eBytes;
- elemD += op.Increment;
+ elemD += increment;
}
}
}