[llvm] r313782 - [TableGen] Add a DenseMapInfo for MachineValueType.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 20 11:26:31 PDT 2017


There is in the cpp file, Krzysztof asked me to land this in a separate
patch though.

On Wed, Sep 20, 2017 at 11:14 AM Craig Topper <craig.topper at gmail.com>
wrote:

> Do we still need this after Krzysztof's changes? There's no longer a
> DenseSet/Map of MVTs
>
> ~Craig
>
> On Wed, Sep 20, 2017 at 11:01 AM, Zachary Turner via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> 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
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170920/382e2dbd/attachment.html>


More information about the llvm-commits mailing list