[llvm] r313782 - [TableGen] Add a DenseMapInfo for MachineValueType.
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 20 11:01:20 PDT 2017
Author: zturner
Date: Wed Sep 20 11:01:20 2017
New Revision: 313782
URL: http://llvm.org/viewvc/llvm-project?rev=313782&view=rev
Log:
[TableGen] Add a DenseMapInfo for MachineValueType.
No functional change, just adding a DenseMapInfo and tombstone
value so that MVT's can be put into a DenseMap / DenseSet.
Modified:
llvm/trunk/include/llvm/CodeGen/MachineValueType.h
Modified: llvm/trunk/include/llvm/CodeGen/MachineValueType.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineValueType.h?rev=313782&r1=313781&r2=313782&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/MachineValueType.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MachineValueType.h Wed Sep 20 11:01:20 2017
@@ -16,6 +16,7 @@
#define LLVM_CODEGEN_MACHINEVALUETYPE_H
#include "llvm/ADT/iterator_range.h"
+#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include <cassert>
@@ -30,6 +31,8 @@ namespace llvm {
class MVT {
public:
enum SimpleValueType : uint8_t {
+ // clang-format off
+
// Simple value types that aren't explicitly part of this enumeration
// are considered extended value types.
INVALID_SIMPLE_VALUE_TYPE = 0,
@@ -198,6 +201,10 @@ namespace llvm {
// This value must be a multiple of 32.
MAX_ALLOWED_VALUETYPE = 128,
+ // tombstone value used for DenseMap / DenseSet.
+ // This is only for internal use!
+ tombstone = 247,
+
// A value of type llvm::TokenTy
token = 248,
@@ -231,6 +238,8 @@ namespace llvm {
// Any type. This is used for intrinsics that have overloadings.
// This is only for tblgen's consumption!
Any = 255
+
+ // clang-format on
};
SimpleValueType SimpleTy = INVALID_SIMPLE_VALUE_TYPE;
@@ -1044,6 +1053,18 @@ namespace llvm {
/// @}
};
+ template <> struct DenseMapInfo<MVT> {
+ static inline MVT getEmptyKey() {
+ return MVT(MVT::INVALID_SIMPLE_VALUE_TYPE);
+ }
+
+ static inline MVT getTombstoneKey() { return MVT(MVT::tombstone); }
+ static unsigned getHashValue(const MVT &Val) {
+ return unsigned(Val.SimpleTy);
+ }
+ static bool isEqual(const MVT &LHS, const MVT &RHS) { return LHS == RHS; }
+ };
+
} // end namespace llvm
#endif // LLVM_CODEGEN_MACHINEVALUETYPE_H
More information about the llvm-commits
mailing list