|
|
@@ -339,9 +339,12 @@ namespace ChocolArm64.Instruction
|
|
|
|
|
|
EmitVectorExtractZx(Context, (Index & 1) == 0 ? Op.Rn : Op.Rm, Elem, Op.Size);
|
|
|
|
|
|
- EmitVectorInsert(Context, Op.Rd, Index, Op.Size);
|
|
|
+ EmitVectorInsertTmp(Context, Index, Op.Size);
|
|
|
}
|
|
|
|
|
|
+ Context.EmitLdvectmp();
|
|
|
+ Context.EmitStvec(Op.Rd);
|
|
|
+
|
|
|
if (Op.RegisterSize == ARegisterSize.SIMD64)
|
|
|
{
|
|
|
EmitVectorZeroUpper(Context, Op.Rd);
|
|
|
@@ -363,9 +366,12 @@ namespace ChocolArm64.Instruction
|
|
|
|
|
|
EmitVectorExtractZx(Context, Index < Half ? Op.Rn : Op.Rm, Elem, Op.Size);
|
|
|
|
|
|
- EmitVectorInsert(Context, Op.Rd, Index, Op.Size);
|
|
|
+ EmitVectorInsertTmp(Context, Index, Op.Size);
|
|
|
}
|
|
|
|
|
|
+ Context.EmitLdvectmp();
|
|
|
+ Context.EmitStvec(Op.Rd);
|
|
|
+
|
|
|
if (Op.RegisterSize == ARegisterSize.SIMD64)
|
|
|
{
|
|
|
EmitVectorZeroUpper(Context, Op.Rd);
|
|
|
@@ -387,9 +393,12 @@ namespace ChocolArm64.Instruction
|
|
|
|
|
|
EmitVectorExtractZx(Context, (Index & 1) == 0 ? Op.Rn : Op.Rm, Elem, Op.Size);
|
|
|
|
|
|
- EmitVectorInsert(Context, Op.Rd, Index, Op.Size);
|
|
|
+ EmitVectorInsertTmp(Context, Index, Op.Size);
|
|
|
}
|
|
|
|
|
|
+ Context.EmitLdvectmp();
|
|
|
+ Context.EmitStvec(Op.Rd);
|
|
|
+
|
|
|
if (Op.RegisterSize == ARegisterSize.SIMD64)
|
|
|
{
|
|
|
EmitVectorZeroUpper(Context, Op.Rd);
|