Adds X8664 Condition codes.

Also fixes the X8664 Registers file.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=4077
R=kschimpf@google.com

Review URL: https://codereview.chromium.org/1212393005.
diff --git a/src/IceConditionCodesX8664.h b/src/IceConditionCodesX8664.h
new file mode 100644
index 0000000..297b54b
--- /dev/null
+++ b/src/IceConditionCodesX8664.h
@@ -0,0 +1,46 @@
+//===- subzero/src/IceConditionCodesX8664.h - Condition Codes ---*- C++ -*-===//
+//
+//                        The Subzero Code Generator
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares the condition codes for x86-64.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SUBZERO_SRC_ICECONDITIONCODESX8664_H
+#define SUBZERO_SRC_ICECONDITIONCODESX8664_H
+
+#include "IceDefs.h"
+#include "IceInstX8664.def"
+
+namespace Ice {
+
+namespace CondX8664  {
+// An enum of condition codes used for branches and cmov. The enum value
+// should match the value used to encode operands in binary instructions.
+enum BrCond {
+#define X(tag, encode, opp, dump, emit) tag encode,
+    ICEINSTX8664BR_TABLE
+#undef X
+    Br_None
+};
+
+// An enum of condition codes relevant to the CMPPS instruction. The enum
+// value should match the value used to encode operands in binary
+// instructions.
+enum CmppsCond {
+#define X(tag, emit) tag,
+    ICEINSTX8664CMPPS_TABLE
+#undef X
+    Cmpps_Invalid
+};
+
+} // end of namespace CondX8664
+
+} // end of namespace Ice
+
+#endif // SUBZERO_SRC_ICECONDITIONCODESX8664_H
diff --git a/src/IceInstX8664.def b/src/IceInstX8664.def
index 3fbdc90..6857ed6 100644
--- a/src/IceInstX8664.def
+++ b/src/IceInstX8664.def
@@ -39,22 +39,22 @@
 #define REGX8664_XMM_TABLE                                                     \
   /* val, encode, name64, name, name16, name8, scratch, preserved, stackptr,   \
      frameptr, isInt, isFP */                                                  \
-  X(Reg_xmm0,  =             0, "xmm0" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm1,  = Reg_xmm0 +  1, "xmm1" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm2,  = Reg_xmm0 +  2, "xmm2" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm3,  = Reg_xmm0 +  3, "xmm3" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm4,  = Reg_xmm0 +  4, "xmm4" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm5,  = Reg_xmm0 +  5, "xmm5" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm6,  = Reg_xmm0 +  6, "xmm6" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm7,  = Reg_xmm0 +  7, "xmm7" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm8,  = Reg_xmm0 +  8, "xmm8" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm9,  = Reg_xmm0 +  9, "xmm9" , "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm10, = Reg_xmm0 + 10, "xmm10", "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm11, = Reg_xmm0 + 11, "xmm11", "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm12, = Reg_xmm0 + 12, "xmm12", "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm13, = Reg_xmm0 + 13, "xmm13", "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm14, = Reg_xmm0 + 14, "xmm14", "", "", "", 1, 0, 0, 0, 0, 0, 1)      \
-  X(Reg_xmm15, = Reg_xmm0 + 15, "xmm15", "", "", "", 1, 0, 0, 0, 0, 0, 1)
+  X(Reg_xmm0,  =             0, "xmm0" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm1,  = Reg_xmm0 +  1, "xmm1" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm2,  = Reg_xmm0 +  2, "xmm2" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm3,  = Reg_xmm0 +  3, "xmm3" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm4,  = Reg_xmm0 +  4, "xmm4" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm5,  = Reg_xmm0 +  5, "xmm5" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm6,  = Reg_xmm0 +  6, "xmm6" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm7,  = Reg_xmm0 +  7, "xmm7" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm8,  = Reg_xmm0 +  8, "xmm8" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm9,  = Reg_xmm0 +  9, "xmm9" , "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm10, = Reg_xmm0 + 10, "xmm10", "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm11, = Reg_xmm0 + 11, "xmm11", "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm12, = Reg_xmm0 + 12, "xmm12", "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm13, = Reg_xmm0 + 13, "xmm13", "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm14, = Reg_xmm0 + 14, "xmm14", "", "", "", 1, 0, 0, 0, 0, 1)         \
+  X(Reg_xmm15, = Reg_xmm0 + 15, "xmm15", "", "", "", 1, 0, 0, 0, 0, 1)
 //#define X(val, encode, name, name32, name16, name8, scratch, preserved,
 //          stackptr, frameptr, isI8, isInt, isFP)
 
@@ -88,22 +88,22 @@
 // bh registers to keep register selection simple.
 #define REGX8664_BYTEREG_TABLE                                                 \
   /* val    , encode */                                                        \
-  X(Reg_al  , =           0)                                                   \
-  X(Reg_cl  , = Reg_al +  1)                                                   \
-  X(Reg_dl  , = Reg_al +  2)                                                   \
-  X(Reg_bl  , = Reg_al +  3)                                                   \
-  X(Reg_spl , = Reg_al +  4)                                                   \
-  X(Reg_bpl , = Reg_al +  5)                                                   \
-  X(Reg_sil , = Reg_al +  6)                                                   \
-  X(Reg_dil , = Reg_al +  7)                                                   \
-  X(Reg_r8l , = Reg_al +  8)                                                   \
-  X(Reg_r9l , = Reg_al +  9)                                                   \
-  X(Reg_r10l, = Reg_al + 10)                                                   \
-  X(Reg_r11l, = Reg_al + 11)                                                   \
-  X(Reg_r12l, = Reg_al + 12)                                                   \
-  X(Reg_r13l, = Reg_al + 13)                                                   \
-  X(Reg_r14l, = Reg_al + 14)                                                   \
-  X(Reg_r15l, = Reg_al + 15)
+  X(Reg_al  , =  0)                                                            \
+  X(Reg_cl  , =  1)                                                            \
+  X(Reg_dl  , =  2)                                                            \
+  X(Reg_bl  , =  3)                                                            \
+  X(Reg_spl , =  4)                                                            \
+  X(Reg_bpl , =  5)                                                            \
+  X(Reg_sil , =  6)                                                            \
+  X(Reg_dil , =  7)                                                            \
+  X(Reg_r8l , =  8)                                                            \
+  X(Reg_r9l , =  9)                                                            \
+  X(Reg_r10l, = 10)                                                            \
+  X(Reg_r11l, = 11)                                                            \
+  X(Reg_r12l, = 12)                                                            \
+  X(Reg_r13l, = 13)                                                            \
+  X(Reg_r14l, = 14)                                                            \
+  X(Reg_r15l, = 15)
 //#define X(val, encode)
 
 #define ICEINSTX8664BR_TABLE                                                   \
@@ -123,7 +123,7 @@
   X(Br_l       , =   12, Br_ge   , "l" , "jl" )                                \
   X(Br_ge      , =   13, Br_l    , "ge", "jge")                                \
   X(Br_le      , =   14, Br_g    , "le", "jle")                                \
-  X(Br_g       , =   15, Br_le   , "g" , "jg"):
+  X(Br_g       , =   15, Br_le   , "g" , "jg")
 //#define X(tag, encode, opp, dump, emit)
 
 #define ICEINSTX8664CMPPS_TABLE                                                \
diff --git a/src/IceRegistersX8664.h b/src/IceRegistersX8664.h
index f503c70..96567b2 100644
--- a/src/IceRegistersX8664.h
+++ b/src/IceRegistersX8664.h
@@ -25,8 +25,8 @@
 // An enum of every register. The enum value may not match the encoding
 // used to binary encode register operands in instructions.
 enum AllRegisters {
-#define X(val, encode, name, name32, name16, name8, scratch, preserved,        \
-          stackptr, frameptr, isI8, isInt, isFP)                               \
+#define X(val, encode, name64, name, name16, name8, scratch, preserved,        \
+          stackptr, frameptr, isInt, isFP)                                     \
   val,
   REGX8664_TABLE
 #undef X
@@ -39,8 +39,8 @@
 // An enum of GPR Registers. The enum value does match the encoding used
 // to binary encode register operands in instructions.
 enum GPRRegister {
-#define X(val, encode, name, name32, name16, name8, scratch, preserved,        \
-          stackptr, frameptr, isI8, isInt, isFP)                               \
+#define X(val, encode, name64, name, name16, name8, scratch, preserved,        \
+          stackptr, frameptr, isInt, isFP)                                     \
   Encoded_##val encode,
   REGX8664_GPR_TABLE
 #undef X
@@ -50,8 +50,8 @@
 // An enum of XMM Registers. The enum value does match the encoding used
 // to binary encode register operands in instructions.
 enum XmmRegister {
-#define X(val, encode, name, name32, name16, name8, scratch, preserved,        \
-          stackptr, frameptr, isI8, isInt, isFP)                               \
+#define X(val, encode, name64, name, name16, name8, scratch, preserved,        \
+          stackptr, frameptr, isInt, isFP)                                     \
   Encoded_##val encode,
   REGX8664_XMM_TABLE
 #undef X