Implementation of integer intrinsics on x86_64

Rationale:
Efficient implementations of common integer operations.
Already tested in:
  564-checker-bitcount
  565-checker-rotate:
  566-checker-signum
  567-checker-compare
  568-checker-onebit  (extended to deal with run-time zero)

Change-Id: Ib48c76eee751e7925056d7f26797e9a9b5ae60dd
diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc
index 86ffb0f..6795488 100644
--- a/compiler/optimizing/code_generator_x86_64.cc
+++ b/compiler/optimizing/code_generator_x86_64.cc
@@ -6447,8 +6447,17 @@
   __ jmp(temp_reg);
 }
 
+void CodeGeneratorX86_64::Load32BitValue(CpuRegister dest, int32_t value) {
+  if (value == 0) {
+    __ xorl(dest, dest);
+  } else {
+    __ movl(dest, Immediate(value));
+  }
+}
+
 void CodeGeneratorX86_64::Load64BitValue(CpuRegister dest, int64_t value) {
   if (value == 0) {
+    // Clears upper bits too.
     __ xorl(dest, dest);
   } else if (value > 0 && IsInt<32>(value)) {
     // We can use a 32 bit move, as it will zero-extend and is one byte shorter.