(CPU) Fix CRC32 instruction when constant values are used as input (#2183)

This commit is contained in:
gdkchan 2021-04-07 18:43:08 -03:00 committed by GitHub
parent fe452ac784
commit d43a56726c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -135,7 +135,7 @@ namespace ARMeilleure.CodeGen.X86
private static void HandleConstantRegCopy(IntrusiveList<Node> nodes, Node node, Operation operation) private static void HandleConstantRegCopy(IntrusiveList<Node> nodes, Node node, Operation operation)
{ {
if (operation.SourcesCount == 0 || IsIntrinsic(operation.Instruction)) if (operation.SourcesCount == 0 || IsXmmIntrinsic(operation))
{ {
return; return;
} }
@ -1400,5 +1400,18 @@ namespace ARMeilleure.CodeGen.X86
{ {
return inst == Instruction.Extended; return inst == Instruction.Extended;
} }
private static bool IsXmmIntrinsic(Operation operation)
{
if (operation.Instruction != Instruction.Extended)
{
return false;
}
IntrinsicOperation intrinOp = (IntrinsicOperation)operation;
IntrinsicInfo info = IntrinsicTable.GetInfo(intrinOp.Intrinsic);
return info.Type != IntrinsicType.Crc32;
}
} }
} }