aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/ADT/StringExtras.h
diff options
context:
space:
mode:
authorScott Michel <scottm@aero.org>2008-02-15 23:05:48 +0000
committerScott Michel <scottm@aero.org>2008-02-15 23:05:48 +0000
commit0123b7dcfa9be97588926407163deb8d603487ce (patch)
tree16f995f13d3b186a0d2c18e0893cfed8258413b9 /include/llvm/ADT/StringExtras.h
parent9f8ec25805595011bf33af3cae5d25795cb32976 (diff)
Make tblgen a little smarter about constants smaller than i32. Currently,
tblgen will complain if a sign-extended constant does not fit into a data type smaller than i32, e.g., i16. This causes a problem when certain hex constants are used, such as 0xff for byte masks or immediate xor values. tblgen will try the sign-extended value first and, if the sign extended value would overflow, it tries to see if the unsigned value will fit. Consequently, a software developer can now safely incant: (XORHIr16 R16C:$rA, 0xffff) which is somewhat clearer and more informative than incanting: (XORHIr16 R16C:$rA, (i16 -1)) even if the two are bitwise equivalent. Tblgen also outputs the 64-bit unsigned constant in the generated ISel code when getTargetConstant() is invoked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47188 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/StringExtras.h')
-rw-r--r--include/llvm/ADT/StringExtras.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/llvm/ADT/StringExtras.h b/include/llvm/ADT/StringExtras.h
index 2a01c5f2d3..e4c941007d 100644
--- a/include/llvm/ADT/StringExtras.h
+++ b/include/llvm/ADT/StringExtras.h
@@ -85,6 +85,10 @@ static inline std::string itostr(int64_t X) {
return utostr(static_cast<uint64_t>(X));
}
+static inline std::string itohexstr(int64_t X) {
+ return utohexstr(static_cast<uint64_t>(X));
+}
+
static inline std::string ftostr(double V) {
char Buffer[200];
sprintf(Buffer, "%20.6e", V);