diff --git a/ARMeilleure/CodeGen/X86/PreAllocator.cs b/ARMeilleure/CodeGen/X86/PreAllocator.cs
index cb2476b488..3b3fd68374 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<Node> 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