Implements include/exclude register lists for translation.

This allows better debugging of register encodings into
instructions, in the integrated assembler.

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

Review URL: https://codereview.chromium.org/1571433004 .
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index 799872e..71536cd 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -152,9 +152,9 @@
   TargetLowering &operator=(const TargetLowering &) = delete;
 
 public:
-  static void staticInit(const ClFlags &Flags);
+  static void staticInit(GlobalContext *Ctx);
   // Each target must define a public static method:
-  //   static void staticInit(const ClFlags &Flags);
+  //   static void staticInit(GlobalContext *Ctx);
 
   static std::unique_ptr<TargetLowering> createLowering(TargetArch Target,
                                                         Cfg *Func);
@@ -299,6 +299,12 @@
 
 protected:
   explicit TargetLowering(Cfg *Func);
+  // Applies command line filters to TypeToRegisterSet array.
+  static void
+  filterTypeToRegisterSet(GlobalContext *Ctx, int32_t NumRegs,
+                          llvm::SmallBitVector TypeToRegisterSet[],
+                          size_t TypeToRegisterSetSize,
+                          std::function<IceString(int32_t)> getRegName);
   virtual void lowerAlloca(const InstAlloca *Inst) = 0;
   virtual void lowerArithmetic(const InstArithmetic *Inst) = 0;
   virtual void lowerAssign(const InstAssign *Inst) = 0;