diff options
author | gdkchan <gab.dark.100@gmail.com> | 2022-09-13 03:24:09 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-13 08:24:09 +0200 |
commit | 729ff5337cab8d1fd4cc66d7792d410172f25f62 (patch) | |
tree | 65fe0eb59ecee1348da96865f8d9e5f648cd35d9 /ARMeilleure/Instructions | |
parent | 2492e7e808a3979ff54c5d28496d747e0a17fd5a (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.cs | 8 |
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; } } } |