aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Instructions/InstEmitSimdMove.cs
diff options
context:
space:
mode:
authorLDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>2019-12-30 02:22:47 +0100
committergdkchan <gab.dark.100@gmail.com>2019-12-29 22:22:47 -0300
commit0915731a9dfc4e2b9263d4b30c2876446ff2d9b3 (patch)
tree46dd5369be3a2c2a3b8b6021ce164549de2b25e2 /ARMeilleure/Instructions/InstEmitSimdMove.cs
parentad84f3a7b3b409ceab920f480dadcfe6eda62c92 (diff)
Implemented fast paths for: (#846)
* opt * Nit. * opt_p2 * Nit.
Diffstat (limited to 'ARMeilleure/Instructions/InstEmitSimdMove.cs')
-rw-r--r--ARMeilleure/Instructions/InstEmitSimdMove.cs24
1 files changed, 5 insertions, 19 deletions
diff --git a/ARMeilleure/Instructions/InstEmitSimdMove.cs b/ARMeilleure/Instructions/InstEmitSimdMove.cs
index 789c8c87..a1a4635f 100644
--- a/ARMeilleure/Instructions/InstEmitSimdMove.cs
+++ b/ARMeilleure/Instructions/InstEmitSimdMove.cs
@@ -13,20 +13,6 @@ namespace ARMeilleure.Instructions
static partial class InstEmit
{
#region "Masks"
- private static readonly long[] _masksE0_TrnUzpXtn = new long[]
- {
- 14L << 56 | 12L << 48 | 10L << 40 | 08L << 32 | 06L << 24 | 04L << 16 | 02L << 8 | 00L << 0,
- 13L << 56 | 12L << 48 | 09L << 40 | 08L << 32 | 05L << 24 | 04L << 16 | 01L << 8 | 00L << 0,
- 11L << 56 | 10L << 48 | 09L << 40 | 08L << 32 | 03L << 24 | 02L << 16 | 01L << 8 | 00L << 0
- };
-
- private static readonly long[] _masksE1_TrnUzp = new long[]
- {
- 15L << 56 | 13L << 48 | 11L << 40 | 09L << 32 | 07L << 24 | 05L << 16 | 03L << 8 | 01L << 0,
- 15L << 56 | 14L << 48 | 11L << 40 | 10L << 32 | 07L << 24 | 06L << 16 | 03L << 8 | 02L << 0,
- 15L << 56 | 14L << 48 | 13L << 40 | 12L << 32 | 07L << 24 | 06L << 16 | 05L << 8 | 04L << 0
- };
-
private static readonly long[] _masksE0_Uzp = new long[]
{
13L << 56 | 09L << 48 | 05L << 40 | 01L << 32 | 12L << 24 | 08L << 16 | 04L << 8 | 00L << 0,
@@ -447,7 +433,7 @@ namespace ARMeilleure.Instructions
Operand res = context.VectorZeroUpper64(d);
- Operand mask = X86GetAllElements(context, _masksE0_TrnUzpXtn[op.Size]);
+ Operand mask = X86GetAllElements(context, EvenMasks[op.Size]);
Operand res2 = context.AddIntrinsic(Intrinsic.X86Pshufb, GetVec(op.Rn), mask);
@@ -646,8 +632,8 @@ namespace ARMeilleure.Instructions
if (op.Size < 3)
{
- long maskE0 = _masksE0_TrnUzpXtn[op.Size];
- long maskE1 = _masksE1_TrnUzp [op.Size];
+ long maskE0 = EvenMasks[op.Size];
+ long maskE1 = OddMasks [op.Size];
mask = X86GetScalar(context, maskE0);
@@ -714,8 +700,8 @@ namespace ARMeilleure.Instructions
if (op.Size < 3)
{
- long maskE0 = _masksE0_TrnUzpXtn[op.Size];
- long maskE1 = _masksE1_TrnUzp [op.Size];
+ long maskE0 = EvenMasks[op.Size];
+ long maskE1 = OddMasks [op.Size];
mask = X86GetScalar(context, maskE0);