From d43a56726c0640d1af00c58b284e7f6d949302d9 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 7 Apr 2021 18:43:08 -0300 Subject: [PATCH] (CPU) Fix CRC32 instruction when constant values are used as input (#2183) --- ARMeilleure/CodeGen/X86/PreAllocator.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ARMeilleure/CodeGen/X86/PreAllocator.cs b/ARMeilleure/CodeGen/X86/PreAllocator.cs index cb2476b48..3b3fd6837 100644 --- a/ARMeilleure/CodeGen/X86/PreAllocator.cs +++ b/ARMeilleure/CodeGen/X86/PreAllocator.cs @@ -135,7 +135,7 @@ namespace ARMeilleure.CodeGen.X86 private static void HandleConstantRegCopy(IntrusiveList nodes, Node node, Operation operation) { - if (operation.SourcesCount == 0 || IsIntrinsic(operation.Instruction)) + if (operation.SourcesCount == 0 || IsXmmIntrinsic(operation)) { return; } @@ -1400,5 +1400,18 @@ namespace ARMeilleure.CodeGen.X86 { 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; + } } } \ No newline at end of file