Implement int bit-wise not operation in the optimizing compiler.

- Add support for the not-int (integer one's complement
  negate) instruction in the optimizing compiler.
- Extend the HNot control-flow graph node type and make it
  inherit from HUnaryOperation.
- Generate ARM, x86 and x86-64 code for integer HNeg nodes.
- Exercise these additions in the codegen_test gtest, as there
  is not direct way to assess the support of not-int from a
  Java source.  Indeed, compiling a Java expression such as
  `~a' using javac and then dx generates an xor-int/lit8 Dex
  instruction instead of the expected not-int Dex instruction.
  This is probably because the Java bytecode has an `ixor'
  instruction, but there's not instruction directly
  corresponding to a bit-wise not operation.

Change-Id: I223aed75c4dac5785e04d99da0d22e8d699aee2b
diff --git a/compiler/optimizing/instruction_simplifier.cc b/compiler/optimizing/instruction_simplifier.cc
index 2d9e35c..29eabe7 100644
--- a/compiler/optimizing/instruction_simplifier.cc
+++ b/compiler/optimizing/instruction_simplifier.cc
@@ -50,7 +50,7 @@
       // Replace (bool_value == 0) with !bool_value
       DCHECK_EQ(input2->AsIntConstant()->GetValue(), 0);
       equal->GetBlock()->ReplaceAndRemoveInstructionWith(
-          equal, new (GetGraph()->GetArena()) HNot(input1));
+          equal, new (GetGraph()->GetArena()) HNot(Primitive::kPrimBoolean, input1));
     }
   }
 }