Start incorporating the ARM integrated assembler.

Extends the ARM32 assembler to be able to generate a trivial function
footprint using the -filetype=iasm option.

Also does a couple of cleanups:

1) Move UnimplementedError macro to common location so that it can be
used by everyone.

2) Add a GlobalContext argument to the assembler, so that it can
look at flags etc.

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

Review URL: https://codereview.chromium.org/1397933002 .
diff --git a/src/IceTargetLoweringARM32.cpp b/src/IceTargetLoweringARM32.cpp
index 2674190..2615b36 100644
--- a/src/IceTargetLoweringARM32.cpp
+++ b/src/IceTargetLoweringARM32.cpp
@@ -37,18 +37,6 @@
 
 namespace {
 
-// UnimplementedError is defined as a macro so that we can get actual line
-// numbers.
-#define UnimplementedError(Flags)                                              \
-  do {                                                                         \
-    if (!static_cast<const ClFlags &>(Flags).getSkipUnimplemented()) {         \
-      /* Use llvm_unreachable instead of report_fatal_error, which gives       \
-         better stack traces. */                                               \
-      llvm_unreachable("Not yet implemented");                                 \
-      abort();                                                                 \
-    }                                                                          \
-  } while (0)
-
 // The following table summarizes the logic for lowering the icmp instruction
 // for i32 and narrower types. Each icmp condition has a clear mapping to an
 // ARM32 conditional move instruction.
@@ -3871,16 +3859,13 @@
   case FT_Elf:
     UnimplementedError(Ctx->getFlags());
     break;
-  case FT_Asm: {
+  case FT_Asm:
+  case FT_Iasm: {
     OstreamLocker L(Ctx);
     emitConstantPool<float>(Ctx);
     emitConstantPool<double>(Ctx);
     break;
   }
-  case FT_Iasm: {
-    UnimplementedError(Ctx->getFlags());
-    break;
-  }
   }
 }
 
@@ -3895,7 +3880,7 @@
     // Already emitted from Cfg
     break;
   case FT_Iasm: {
-    UnimplementedError(Ctx->getFlags());
+    // TODO(kschimpf): Fill this in when we get more information.
     break;
   }
   }