<div dir="ltr">There is in the cpp file, Krzysztof asked me to land this in a separate patch though.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Sep 20, 2017 at 11:14 AM Craig Topper <<a href="mailto:craig.topper@gmail.com">craig.topper@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Do we still need this after Krzysztof's changes? There's no longer a DenseSet/Map of MVTs<br><table cellpadding="0" class="m_2559461239838803983m_2292137062175986183gmail-cf m_2559461239838803983m_2292137062175986183gmail-gJ" style="font-size:12.8px"><tbody></tbody></table></div><div class="gmail_extra"></div><div class="gmail_extra"><br clear="all"><div><div class="m_2559461239838803983gmail_signature" data-smartmail="gmail_signature">~Craig</div></div></div><div class="gmail_extra">
<br><div class="gmail_quote">On Wed, Sep 20, 2017 at 11:01 AM, Zachary Turner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: zturner<br>
Date: Wed Sep 20 11:01:20 2017<br>
New Revision: 313782<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=313782&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=313782&view=rev</a><br>
Log:<br>
[TableGen] Add a DenseMapInfo for MachineValueType.<br>
<br>
No functional change, just adding a DenseMapInfo and tombstone<br>
value so that MVT's can be put into a DenseMap / DenseSet.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/CodeGen/MachineValueType.h<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/MachineValueType.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineValueType.h?rev=313782&r1=313781&r2=313782&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineValueType.h?rev=313782&r1=313781&r2=313782&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/MachineValueType.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/MachineValueType.h Wed Sep 20 11:01:20 2017<br>
@@ -16,6 +16,7 @@<br>
 #define LLVM_CODEGEN_MACHINEVALUETYPE_H<br>
<br>
 #include "llvm/ADT/iterator_range.h"<br>
+#include "llvm/ADT/DenseMapInfo.h"<br>
 #include "llvm/Support/ErrorHandling.h"<br>
 #include "llvm/Support/MathExtras.h"<br>
 #include <cassert><br>
@@ -30,6 +31,8 @@ namespace llvm {<br>
   class MVT {<br>
   public:<br>
     enum SimpleValueType : uint8_t {<br>
+      // clang-format off<br>
+<br>
       // Simple value types that aren't explicitly part of this enumeration<br>
       // are considered extended value types.<br>
       INVALID_SIMPLE_VALUE_TYPE = 0,<br>
@@ -198,6 +201,10 @@ namespace llvm {<br>
       // This value must be a multiple of 32.<br>
       MAX_ALLOWED_VALUETYPE = 128,<br>
<br>
+      // tombstone value used for DenseMap / DenseSet.<br>
+      // This is only for internal use!<br>
+      tombstone      = 247,<br>
+<br>
       // A value of type llvm::TokenTy<br>
       token          = 248,<br>
<br>
@@ -231,6 +238,8 @@ namespace llvm {<br>
       // Any type. This is used for intrinsics that have overloadings.<br>
       // This is only for tblgen's consumption!<br>
       Any            = 255<br>
+<br>
+      // clang-format on<br>
     };<br>
<br>
     SimpleValueType SimpleTy = INVALID_SIMPLE_VALUE_TYPE;<br>
@@ -1044,6 +1053,18 @@ namespace llvm {<br>
     /// @}<br>
   };<br>
<br>
+  template <> struct DenseMapInfo<MVT> {<br>
+    static inline MVT getEmptyKey() {<br>
+      return MVT(MVT::INVALID_SIMPLE_VALUE_TYPE);<br>
+    }<br>
+<br>
+    static inline MVT getTombstoneKey() { return MVT(MVT::tombstone); }<br>
+    static unsigned getHashValue(const MVT &Val) {<br>
+      return unsigned(Val.SimpleTy);<br>
+    }<br>
+    static bool isEqual(const MVT &LHS, const MVT &RHS) { return LHS == RHS; }<br>
+  };<br>
+<br>
 } // end namespace llvm<br>
<br>
 #endif // LLVM_CODEGEN_MACHINEVALUETYPE_H<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></blockquote></div>