summaryrefslogtreecommitdiff
path: root/utils/TableGen/Record.h
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-10-17 01:33:43 +0000
committerDan Gohman <gohman@apple.com>2008-10-17 01:33:43 +0000
commit63f97201dc9dcebbe84d1b73113166c64212b4b8 (patch)
tree718d542a3b0cf7a6c76944afed13d26afbb6a12f /utils/TableGen/Record.h
parent74feef261a43392bc85280f66c75fbd4e2ccf73d (diff)
downloadllvm-63f97201dc9dcebbe84d1b73113166c64212b4b8.tar.gz
llvm-63f97201dc9dcebbe84d1b73113166c64212b4b8.tar.bz2
llvm-63f97201dc9dcebbe84d1b73113166c64212b4b8.tar.xz
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
Diffstat (limited to 'utils/TableGen/Record.h')
-rw-r--r--utils/TableGen/Record.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h
index 90e246eb47..928fd5cf26 100644
--- a/utils/TableGen/Record.h
+++ b/utils/TableGen/Record.h
@@ -565,11 +565,11 @@ public:
/// IntInit - 7 - Represent an initalization by a literal integer value.
///
class IntInit : public Init {
- int Value;
+ int64_t Value;
public:
- explicit IntInit(int V) : Value(V) {}
+ explicit IntInit(int64_t V) : Value(V) {}
- int getValue() const { return Value; }
+ int64_t getValue() const { return Value; }
virtual Init *convertInitializerTo(RecTy *Ty) {
return Ty->convertValue(this);
@@ -1082,7 +1082,7 @@ public:
/// its value as a vector of integers, throwing an exception if the field does
/// not exist or if the value is not the right type.
///
- std::vector<int> getValueAsListOfInts(const std::string &FieldName) const;
+ std::vector<int64_t> getValueAsListOfInts(const std::string &FieldName) const;
/// getValueAsDef - This method looks up the specified field and returns its
/// value as a Record, throwing an exception if the field does not exist or if
@@ -1097,10 +1097,10 @@ public:
bool getValueAsBit(const std::string &FieldName) const;
/// getValueAsInt - This method looks up the specified field and returns its
- /// value as an int, throwing an exception if the field does not exist or if
- /// the value is not the right type.
+ /// value as an int64_t, throwing an exception if the field does not exist or
+ /// if the value is not the right type.
///
- int getValueAsInt(const std::string &FieldName) const;
+ int64_t getValueAsInt(const std::string &FieldName) const;
/// getValueAsDag - This method looks up the specified field and returns its
/// value as an Dag, throwing an exception if the field does not exist or if