Fun x86 encoding tricks: when adding an immediate value of 128,
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.

A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.

To support this, teach tablegen how to handle 64-bit constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57663 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/TGLexer.h b/utils/TableGen/TGLexer.h
index b4fa97c..2c5a852 100644
--- a/utils/TableGen/TGLexer.h
+++ b/utils/TableGen/TGLexer.h
@@ -62,7 +62,7 @@
   const char *TokStart;
   tgtok::TokKind CurCode;
   std::string CurStrVal;  // This is valid for ID, STRVAL, VARNAME, CODEFRAGMENT
-  int CurIntVal;          // This is valid for INTVAL.
+  int64_t CurIntVal;      // This is valid for INTVAL.
   
   /// IncludeRec / IncludeStack - This captures the current set of include
   /// directives we are nested within.
@@ -98,7 +98,7 @@
            "This token doesn't have a string value");
     return CurStrVal;
   }
-  int getCurIntVal() const {
+  int64_t getCurIntVal() const {
     assert(CurCode == tgtok::IntVal && "This token isn't an integer");
     return CurIntVal;
   }