Subzero: Improve the representation and handling of the FakeKill instruction.

The FakeKill instruction is always used for killing scratch registers, and a fair amount of effort is spent building new copies of the same scratch register list each time (i.e., for each lowered call instruction).  As such, we can create one master list of scratch registers and share it among all FakeKill instructions.

Also, in all situations where an instruction's Srcs[] were considered for liveness, we had to either explicitly ignore an InstFakeKill instruction, or treat it specially.  Now that InstFakeKill lacks any Srcs[] (or Dest), it doesn't need to be specially ignored, and the code is simplified.

In addition, the text asm emitter no longer clutters the output with FakeKill comments (and FakeUse as well).

BUG= none
R=jvoung@chromium.org

Review URL: https://codereview.chromium.org/691693003
diff --git a/src/IceOperand.cpp b/src/IceOperand.cpp
index e1faf0f..8cf181a 100644
--- a/src/IceOperand.cpp
+++ b/src/IceOperand.cpp
@@ -350,18 +350,8 @@
   for (Inst *I : Node->getInsts()) {
     if (I->isDeleted())
       continue;
-    if (InstFakeKill *Kill = llvm::dyn_cast<InstFakeKill>(I)) {
-      // A FakeKill instruction indicates certain Variables (usually
-      // physical scratch registers) are redefined, so we register
-      // them as defs.
-      for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) {
-        Variable *Var = llvm::cast<Variable>(I->getSrc(SrcNum));
-        SizeT VarNum = Var->getIndex();
-        assert(VarNum < Metadata.size());
-        Metadata[VarNum].markDef(Kind, Kill, Node);
-      }
-      continue; // no point in executing the rest
-    }
+    // Note: The implicit definitions (and uses) from InstFakeKill are
+    // deliberately ignored.
     if (Variable *Dest = I->getDest()) {
       SizeT DestNum = Dest->getIndex();
       assert(DestNum < Metadata.size());