Remove some calls generated on the CPU for inexistent intrinsic methods

This commit is contained in:
gdkchan 2018-05-23 00:27:48 -03:00
parent 79e0070363
commit e78737089c
2 changed files with 4 additions and 12 deletions

View file

@ -14,7 +14,7 @@ namespace ChocolArm64.Instruction
{ {
public static void Cmeq_V(AILEmitterCtx Context) public static void Cmeq_V(AILEmitterCtx Context)
{ {
if (AOptimizations.UseSse2 && Context.CurrOp is AOpCodeSimdReg) if (AOptimizations.UseSse2 && Context.CurrOp is AOpCodeSimdReg Op && Op.Size < 3)
{ {
EmitSse2Call(Context, nameof(Sse2.CompareEqual)); EmitSse2Call(Context, nameof(Sse2.CompareEqual));
} }
@ -25,20 +25,13 @@ namespace ChocolArm64.Instruction
} }
public static void Cmge_V(AILEmitterCtx Context) public static void Cmge_V(AILEmitterCtx Context)
{
if (AOptimizations.UseSse2 && Context.CurrOp is AOpCodeSimdReg)
{
EmitSse2Call(Context, nameof(Sse2.CompareGreaterThanOrEqual));
}
else
{ {
EmitVectorCmp(Context, OpCodes.Bge_S); EmitVectorCmp(Context, OpCodes.Bge_S);
} }
}
public static void Cmgt_V(AILEmitterCtx Context) public static void Cmgt_V(AILEmitterCtx Context)
{ {
if (AOptimizations.UseSse2 && Context.CurrOp is AOpCodeSimdReg) if (AOptimizations.UseSse2 && Context.CurrOp is AOpCodeSimdReg Op && Op.Size < 3)
{ {
EmitSse2Call(Context, nameof(Sse2.CompareGreaterThan)); EmitSse2Call(Context, nameof(Sse2.CompareGreaterThan));
} }

View file

@ -1,7 +1,6 @@
using ChocolArm64.Memory; using ChocolArm64.Memory;
using System.Collections.Concurrent;
using Ryujinx.Graphics.Gal; using Ryujinx.Graphics.Gal;
using System.Collections.Concurrent;
namespace Ryujinx.Core.Gpu namespace Ryujinx.Core.Gpu
{ {