Subzero ARM: lowerArguments (GPR), basic legalize(), and lowerRet(i32, i64).

Adds basic assignment instructions, mov, movn, movw, movt,
ldr, etc. in order to copy around the first few integer
(i32, i64) arguments out of r0 - r3, and then return then.

The "mov" instruction is a bit special and can actually
be a "str" when the dest is a stack slot.

Model the Memory operand types, and the "flexible Operand2".
Add a few tests demonstrating the flexibility of the
immediate encoding.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1127963004
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index f488930..c875b26 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -255,6 +255,10 @@
   // expansion before returning.
   virtual void postLower() {}
 
+  // Find two-address non-SSA instructions and set the DestNonKillable flag
+  // to keep liveness analysis consistent.
+  void inferTwoAddress();
+
   // Make a call to an external helper function.
   InstCall *makeHelperCall(const IceString &Name, Variable *Dest,
                            SizeT MaxSrcs);