/home/arjun/llvm-project/mlir/include/mlir/Support/StorageUniquer.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===- StorageUniquer.h - Common Storage Class Uniquer ----------*- C++ -*-===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | |
9 | | #ifndef MLIR_SUPPORT_STORAGEUNIQUER_H |
10 | | #define MLIR_SUPPORT_STORAGEUNIQUER_H |
11 | | |
12 | | #include "mlir/Support/LLVM.h" |
13 | | #include "llvm/ADT/DenseSet.h" |
14 | | #include "llvm/Support/Allocator.h" |
15 | | |
16 | | namespace mlir { |
17 | | namespace detail { |
18 | | struct StorageUniquerImpl; |
19 | | |
20 | | /// Trait to check if ImplTy provides a 'getKey' method with types 'Args'. |
21 | | template <typename ImplTy, typename... Args> |
22 | | using has_impltype_getkey_t = decltype(ImplTy::getKey(std::declval<Args>()...)); |
23 | | |
24 | | /// Trait to check if ImplTy provides a 'hashKey' method for 'T'. |
25 | | template <typename ImplTy, typename T> |
26 | | using has_impltype_hash_t = decltype(ImplTy::hashKey(std::declval<T>())); |
27 | | } // namespace detail |
28 | | |
29 | | /// A utility class to get, or create instances of storage classes. These |
30 | | /// storage classes must respect the following constraints: |
31 | | /// - Derive from StorageUniquer::BaseStorage. |
32 | | /// - Provide an unsigned 'kind' value to be used as part of the unique'ing |
33 | | /// process. |
34 | | /// |
35 | | /// For non-parametric storage classes, i.e. those that are solely uniqued by |
36 | | /// their kind, nothing else is needed. Instances of these classes can be |
37 | | /// created by calling `get` without trailing arguments. |
38 | | /// |
39 | | /// Otherwise, the parametric storage classes may be created with `get`, |
40 | | /// and must respect the following: |
41 | | /// - Define a type alias, KeyTy, to a type that uniquely identifies the |
42 | | /// instance of the storage class within its kind. |
43 | | /// * The key type must be constructible from the values passed into the |
44 | | /// getComplex call after the kind. |
45 | | /// * If the KeyTy does not have an llvm::DenseMapInfo specialization, the |
46 | | /// storage class must define a hashing method: |
47 | | /// 'static unsigned hashKey(const KeyTy &)' |
48 | | /// |
49 | | /// - Provide a method, 'bool operator==(const KeyTy &) const', to |
50 | | /// compare the storage instance against an instance of the key type. |
51 | | /// |
52 | | /// - Provide a static construction method: |
53 | | /// 'DerivedStorage *construct(StorageAllocator &, const KeyTy &key)' |
54 | | /// that builds a unique instance of the derived storage. The arguments to |
55 | | /// this function are an allocator to store any uniqued data and the key |
56 | | /// type for this storage. |
57 | | /// |
58 | | /// - Provide a cleanup method: |
59 | | /// 'void cleanup()' |
60 | | /// that is called when erasing a storage instance. This should cleanup any |
61 | | /// fields of the storage as necessary and not attempt to free the memory |
62 | | /// of the storage itself. |
63 | | class StorageUniquer { |
64 | | public: |
65 | | StorageUniquer(); |
66 | | ~StorageUniquer(); |
67 | | |
68 | | /// Set the flag specifying if multi-threading is disabled within the uniquer. |
69 | | void disableMultithreading(bool disable = true); |
70 | | |
71 | | /// This class acts as the base storage that all storage classes must derived |
72 | | /// from. |
73 | | class BaseStorage { |
74 | | public: |
75 | | /// Get the kind classification of this storage. |
76 | 0 | unsigned getKind() const { return kind; } |
77 | | |
78 | | protected: |
79 | 0 | BaseStorage() : kind(0) {} |
80 | | |
81 | | private: |
82 | | /// Allow access to the kind field. |
83 | | friend detail::StorageUniquerImpl; |
84 | | |
85 | | /// Classification of the subclass, used for type checking. |
86 | | unsigned kind; |
87 | | }; |
88 | | |
89 | | /// This is a utility allocator used to allocate memory for instances of |
90 | | /// derived types. |
91 | | class StorageAllocator { |
92 | | public: |
93 | | /// Copy the specified array of elements into memory managed by our bump |
94 | | /// pointer allocator. This assumes the elements are all PODs. |
95 | 0 | template <typename T> ArrayRef<T> copyInto(ArrayRef<T> elements) { |
96 | 0 | if (elements.empty()) |
97 | 0 | return llvm::None; |
98 | 0 | auto result = allocator.Allocate<T>(elements.size()); |
99 | 0 | std::uninitialized_copy(elements.begin(), elements.end(), result); |
100 | 0 | return ArrayRef<T>(result, elements.size()); |
101 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8copyIntoIcEEN4llvm8ArrayRefIT_EES6_ Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8copyIntoINS_9AttributeEEEN4llvm8ArrayRefIT_EES7_ Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8copyIntoINS_4TypeEEEN4llvm8ArrayRefIT_EES7_ Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8copyIntoIlEEN4llvm8ArrayRefIT_EES6_ Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8copyIntoINS_9AffineMapEEEN4llvm8ArrayRefIT_EES7_ |
102 | | |
103 | | /// Copy the provided string into memory managed by our bump pointer |
104 | | /// allocator. |
105 | 0 | StringRef copyInto(StringRef str) { |
106 | 0 | auto result = copyInto(ArrayRef<char>(str.data(), str.size())); |
107 | 0 | return StringRef(result.data(), str.size()); |
108 | 0 | } |
109 | | |
110 | | /// Allocate an instance of the provided type. |
111 | 0 | template <typename T> T *allocate() { return allocator.Allocate<T>(); } Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail20AffineDimExprStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail25AffineConstantExprStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail25AffineBinaryOpExprStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail25AffineMapAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail21ArrayAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail26IntegerSetAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail22OpaqueAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail22StringAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail20TypeAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail35DenseStringElementsAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail36DenseIntOrFPElementsAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail30OpaqueElementsAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail30SparseElementsAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail20BoolAttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail23CallSiteLocationStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail26FileLineColLocationStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail19NameLocationStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail21OpaqueLocationStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_11TypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail18IntegerTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_16AttributeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail17OpaqueTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail19FunctionTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail17VectorTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail23RankedTensorTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail25UnrankedTensorTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail17MemRefTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail25UnrankedMemRefTypeStorageEEEPT_v Unexecuted instantiation: _ZN4mlir14StorageUniquer16StorageAllocator8allocateINS_6detail18ComplexTypeStorageEEEPT_v |
112 | | |
113 | | /// Allocate 'size' bytes of 'alignment' aligned memory. |
114 | 0 | void *allocate(size_t size, size_t alignment) { |
115 | 0 | return allocator.Allocate(size, alignment); |
116 | 0 | } |
117 | | |
118 | | private: |
119 | | /// The raw allocator for type storage objects. |
120 | | llvm::BumpPtrAllocator allocator; |
121 | | }; |
122 | | |
123 | | /// Gets a uniqued instance of 'Storage'. 'initFn' is an optional parameter |
124 | | /// that can be used to initialize a newly inserted storage instance. This |
125 | | /// function is used for derived types that have complex storage or uniquing |
126 | | /// constraints. |
127 | | template <typename Storage, typename Arg, typename... Args> |
128 | | Storage *get(function_ref<void(Storage *)> initFn, unsigned kind, Arg &&arg, |
129 | 0 | Args &&... args) { |
130 | 0 | // Construct a value of the derived key type. |
131 | 0 | auto derivedKey = |
132 | 0 | getKey<Storage>(std::forward<Arg>(arg), std::forward<Args>(args)...); |
133 | 0 |
|
134 | 0 | // Create a hash of the kind and the derived key. |
135 | 0 | unsigned hashValue = getHash<Storage>(kind, derivedKey); |
136 | 0 |
|
137 | 0 | // Generate an equality function for the derived storage. |
138 | 0 | auto isEqual = [&derivedKey](const BaseStorage *existing) { |
139 | 0 | return static_cast<const Storage &>(*existing) == derivedKey; |
140 | 0 | }; Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20AffineDimExprStorageERjJEEEPT_N4llvm12function_refIFvS6_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25AffineConstantExprStorageERlJEEEPT_N4llvm12function_refIFvS6_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25AffineBinaryOpExprStorageERKNS_10AffineExprEJRS4_EEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25AffineMapAttributeStorageERNS_9AffineMapEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21ArrayAttributeStorageERN4llvm8ArrayRefINS_9AttributeEEEJEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26DictionaryAttributeStorageERN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEJEEEPT_NS4_12function_refIFvSD_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESO_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21FloatAttributeStorageERNS_4TypeEJRdEEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21FloatAttributeStorageERNS_4TypeEJRN4llvm7APFloatEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25SymbolRefAttributeStorageERN4llvm9StringRefEJRNS4_8NoneTypeEEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25SymbolRefAttributeStorageERN4llvm9StringRefEJRNS4_8ArrayRefINS_17FlatSymbolRefAttrEEEEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail23IntegerAttributeStorageERNS_4TypeEJRN4llvm5APIntEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26IntegerSetAttributeStorageERNS_10IntegerSetEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail22OpaqueAttributeStorageERNS_10IdentifierEJRN4llvm9StringRefERNS_4TypeEEEEPT_NS6_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail22StringAttributeStorageERN4llvm9StringRefEJRNS_4TypeEEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20TypeAttributeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail35DenseStringElementsAttributeStorageERNS_10ShapedTypeEJRN4llvm8ArrayRefINS6_9StringRefEEERbEEEPT_NS6_12function_refIFvSD_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESO_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail36DenseIntOrFPElementsAttributeStorageERNS_10ShapedTypeEJRN4llvm8ArrayRefIcEERbEEEPT_NS6_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail30OpaqueElementsAttributeStorageERNS_10ShapedTypeEJRPNS_7DialectERN4llvm9StringRefEEEEPT_NS9_12function_refIFvSD_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESO_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail30SparseElementsAttributeStorageERNS_10ShapedTypeEJRNS_20DenseIntElementsAttrERNS_17DenseElementsAttrEEEEPT_N4llvm12function_refIFvSB_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail23CallSiteLocationStorageERNS_8LocationEJS5_EEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26FileLineColLocationStorageERNS_10IdentifierEJRjS6_EEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20FusedLocationStorageERN4llvm8ArrayRefINS_8LocationEEEJRNS_9AttributeEEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail19NameLocationStorageERNS_10IdentifierEJRNS_8LocationEEEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21OpaqueLocationStorageERmJRNS_6TypeIDERNS_8LocationEEEEPT_N4llvm12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail18IntegerTypeStorageEiJNS_11IntegerType19SignednessSemanticsEEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20BoolAttributeStorageEPNS_11MLIRContextEJbEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26DictionaryAttributeStorageEN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEJEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail18IntegerTypeStorageERjJRNS_11IntegerType19SignednessSemanticsEEEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail18ComplexTypeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail17VectorTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeEEEEPT_NS4_12function_refIFvSB_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail23RankedTensorTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeEEEEPT_NS4_12function_refIFvSB_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25UnrankedTensorTypeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail17MemRefTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeERNS4_11SmallVectorINS_9AffineMapELj2EEERjEEEPT_NS4_12function_refIFvSG_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESR_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25UnrankedMemRefTypeStorageERNS_4TypeEJRjEEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail16TupleTypeStorageERN4llvm8ArrayRefINS_4TypeEEEJEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail19FunctionTypeStorageERN4llvm8ArrayRefINS_4TypeEEEJS8_EEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail17OpaqueTypeStorageERNS_10IdentifierEJRN4llvm9StringRefEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlPKNS0_11BaseStorageEE_clESL_ |
141 | 0 |
|
142 | 0 | // Generate a constructor function for the derived storage. |
143 | 0 | auto ctorFn = [&](StorageAllocator &allocator) { |
144 | 0 | auto *storage = Storage::construct(allocator, derivedKey); |
145 | 0 | if (initFn) |
146 | 0 | initFn(storage); |
147 | 0 | return storage; |
148 | 0 | }; Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20AffineDimExprStorageERjJEEEPT_N4llvm12function_refIFvS6_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESH_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25AffineConstantExprStorageERlJEEEPT_N4llvm12function_refIFvS6_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESH_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25AffineBinaryOpExprStorageERKNS_10AffineExprEJRS4_EEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25AffineMapAttributeStorageERNS_9AffineMapEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21ArrayAttributeStorageERN4llvm8ArrayRefINS_9AttributeEEEJEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26DictionaryAttributeStorageERN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEJEEEPT_NS4_12function_refIFvSD_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21FloatAttributeStorageERNS_4TypeEJRdEEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21FloatAttributeStorageERNS_4TypeEJRN4llvm7APFloatEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25SymbolRefAttributeStorageERN4llvm9StringRefEJRNS4_8NoneTypeEEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25SymbolRefAttributeStorageERN4llvm9StringRefEJRNS4_8ArrayRefINS_17FlatSymbolRefAttrEEEEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail23IntegerAttributeStorageERNS_4TypeEJRN4llvm5APIntEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26IntegerSetAttributeStorageERNS_10IntegerSetEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail22OpaqueAttributeStorageERNS_10IdentifierEJRN4llvm9StringRefERNS_4TypeEEEEPT_NS6_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail22StringAttributeStorageERN4llvm9StringRefEJRNS_4TypeEEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20TypeAttributeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail35DenseStringElementsAttributeStorageERNS_10ShapedTypeEJRN4llvm8ArrayRefINS6_9StringRefEEERbEEEPT_NS6_12function_refIFvSD_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail36DenseIntOrFPElementsAttributeStorageERNS_10ShapedTypeEJRN4llvm8ArrayRefIcEERbEEEPT_NS6_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail30OpaqueElementsAttributeStorageERNS_10ShapedTypeEJRPNS_7DialectERN4llvm9StringRefEEEEPT_NS9_12function_refIFvSD_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESN_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail30SparseElementsAttributeStorageERNS_10ShapedTypeEJRNS_20DenseIntElementsAttrERNS_17DenseElementsAttrEEEEPT_N4llvm12function_refIFvSB_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail23CallSiteLocationStorageERNS_8LocationEJS5_EEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26FileLineColLocationStorageERNS_10IdentifierEJRjS6_EEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20FusedLocationStorageERN4llvm8ArrayRefINS_8LocationEEEJRNS_9AttributeEEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail19NameLocationStorageERNS_10IdentifierEJRNS_8LocationEEEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail21OpaqueLocationStorageERmJRNS_6TypeIDERNS_8LocationEEEEPT_N4llvm12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail18IntegerTypeStorageEiJNS_11IntegerType19SignednessSemanticsEEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail20BoolAttributeStorageEPNS_11MLIRContextEJbEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail26DictionaryAttributeStorageEN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEJEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESM_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail18IntegerTypeStorageERjJRNS_11IntegerType19SignednessSemanticsEEEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail18ComplexTypeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail17VectorTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeEEEEPT_NS4_12function_refIFvSB_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail23RankedTensorTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeEEEEPT_NS4_12function_refIFvSB_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESL_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25UnrankedTensorTypeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESI_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail17MemRefTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeERNS4_11SmallVectorINS_9AffineMapELj2EEERjEEEPT_NS4_12function_refIFvSG_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESQ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail25UnrankedMemRefTypeStorageERNS_4TypeEJRjEEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESJ_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail16TupleTypeStorageERN4llvm8ArrayRefINS_4TypeEEEJEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail19FunctionTypeStorageERN4llvm8ArrayRefINS_4TypeEEEJS8_EEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_6detail17OpaqueTypeStorageERNS_10IdentifierEJRN4llvm9StringRefEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ENKUlRNS0_16StorageAllocatorEE_clESK_ |
149 | 0 |
|
150 | 0 | // Get an instance for the derived storage. |
151 | 0 | return static_cast<Storage *>(getImpl(kind, hashValue, isEqual, ctorFn)); |
152 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail20AffineDimExprStorageERjJEEEPT_N4llvm12function_refIFvS6_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25AffineConstantExprStorageERlJEEEPT_N4llvm12function_refIFvS6_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25AffineBinaryOpExprStorageERKNS_10AffineExprEJRS4_EEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25AffineMapAttributeStorageERNS_9AffineMapEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail21ArrayAttributeStorageERN4llvm8ArrayRefINS_9AttributeEEEJEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail26DictionaryAttributeStorageERN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEJEEEPT_NS4_12function_refIFvSD_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail21FloatAttributeStorageERNS_4TypeEJRdEEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail21FloatAttributeStorageERNS_4TypeEJRN4llvm7APFloatEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25SymbolRefAttributeStorageERN4llvm9StringRefEJRNS4_8NoneTypeEEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25SymbolRefAttributeStorageERN4llvm9StringRefEJRNS4_8ArrayRefINS_17FlatSymbolRefAttrEEEEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail23IntegerAttributeStorageERNS_4TypeEJRN4llvm5APIntEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail26IntegerSetAttributeStorageERNS_10IntegerSetEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail22OpaqueAttributeStorageERNS_10IdentifierEJRN4llvm9StringRefERNS_4TypeEEEEPT_NS6_12function_refIFvSC_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail22StringAttributeStorageERN4llvm9StringRefEJRNS_4TypeEEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail20TypeAttributeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail35DenseStringElementsAttributeStorageERNS_10ShapedTypeEJRN4llvm8ArrayRefINS6_9StringRefEEERbEEEPT_NS6_12function_refIFvSD_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail36DenseIntOrFPElementsAttributeStorageERNS_10ShapedTypeEJRN4llvm8ArrayRefIcEERbEEEPT_NS6_12function_refIFvSC_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail30OpaqueElementsAttributeStorageERNS_10ShapedTypeEJRPNS_7DialectERN4llvm9StringRefEEEEPT_NS9_12function_refIFvSD_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail30SparseElementsAttributeStorageERNS_10ShapedTypeEJRNS_20DenseIntElementsAttrERNS_17DenseElementsAttrEEEEPT_N4llvm12function_refIFvSB_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail23CallSiteLocationStorageERNS_8LocationEJS5_EEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail26FileLineColLocationStorageERNS_10IdentifierEJRjS6_EEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail20FusedLocationStorageERN4llvm8ArrayRefINS_8LocationEEEJRNS_9AttributeEEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail19NameLocationStorageERNS_10IdentifierEJRNS_8LocationEEEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail21OpaqueLocationStorageERmJRNS_6TypeIDERNS_8LocationEEEEPT_N4llvm12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail18IntegerTypeStorageEiJNS_11IntegerType19SignednessSemanticsEEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail20BoolAttributeStorageEPNS_11MLIRContextEJbEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail26DictionaryAttributeStorageEN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEJEEEPT_NS4_12function_refIFvSC_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail18IntegerTypeStorageERjJRNS_11IntegerType19SignednessSemanticsEEEEPT_N4llvm12function_refIFvS9_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail18ComplexTypeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail17VectorTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeEEEEPT_NS4_12function_refIFvSB_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail23RankedTensorTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeEEEEPT_NS4_12function_refIFvSB_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25UnrankedTensorTypeStorageERNS_4TypeEJEEEPT_N4llvm12function_refIFvS7_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail17MemRefTypeStorageERN4llvm8ArrayRefIlEEJRNS_4TypeERNS4_11SmallVectorINS_9AffineMapELj2EEERjEEEPT_NS4_12function_refIFvSG_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail25UnrankedMemRefTypeStorageERNS_4TypeEJRjEEEPT_N4llvm12function_refIFvS8_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail16TupleTypeStorageERN4llvm8ArrayRefINS_4TypeEEEJEEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail19FunctionTypeStorageERN4llvm8ArrayRefINS_4TypeEEEJS8_EEEPT_NS4_12function_refIFvSA_EEEjOT0_DpOT1_ Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_6detail17OpaqueTypeStorageERNS_10IdentifierEJRN4llvm9StringRefEEEEPT_NS6_12function_refIFvSA_EEEjOT0_DpOT1_ |
153 | | |
154 | | /// Gets a uniqued instance of 'Storage'. 'initFn' is an optional parameter |
155 | | /// that can be used to initialize a newly inserted storage instance. This |
156 | | /// function is used for derived types that use no additional storage or |
157 | | /// uniquing outside of the kind. |
158 | | template <typename Storage> |
159 | 0 | Storage *get(function_ref<void(Storage *)> initFn, unsigned kind) { |
160 | 0 | auto ctorFn = [&](StorageAllocator &allocator) { |
161 | 0 | auto *storage = new (allocator.allocate<Storage>()) Storage(); |
162 | 0 | if (initFn) |
163 | 0 | initFn(storage); |
164 | 0 | return storage; |
165 | 0 | }; Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_11TypeStorageEEEPT_N4llvm12function_refIFvS4_EEEjENKUlRNS0_16StorageAllocatorEE_clESA_ Unexecuted instantiation: _ZZN4mlir14StorageUniquer3getINS_16AttributeStorageEEEPT_N4llvm12function_refIFvS4_EEEjENKUlRNS0_16StorageAllocatorEE_clESA_ |
166 | 0 | return static_cast<Storage *>(getImpl(kind, ctorFn)); |
167 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_11TypeStorageEEEPT_N4llvm12function_refIFvS4_EEEj Unexecuted instantiation: _ZN4mlir14StorageUniquer3getINS_16AttributeStorageEEEPT_N4llvm12function_refIFvS4_EEEj |
168 | | |
169 | | /// Erases a uniqued instance of 'Storage'. This function is used for derived |
170 | | /// types that have complex storage or uniquing constraints. |
171 | | template <typename Storage, typename Arg, typename... Args> |
172 | | void erase(unsigned kind, Arg &&arg, Args &&... args) { |
173 | | // Construct a value of the derived key type. |
174 | | auto derivedKey = |
175 | | getKey<Storage>(std::forward<Arg>(arg), std::forward<Args>(args)...); |
176 | | |
177 | | // Create a hash of the kind and the derived key. |
178 | | unsigned hashValue = getHash<Storage>(kind, derivedKey); |
179 | | |
180 | | // Generate an equality function for the derived storage. |
181 | | auto isEqual = [&derivedKey](const BaseStorage *existing) { |
182 | | return static_cast<const Storage &>(*existing) == derivedKey; |
183 | | }; |
184 | | |
185 | | // Attempt to erase the storage instance. |
186 | | eraseImpl(kind, hashValue, isEqual, [](BaseStorage *storage) { |
187 | | static_cast<Storage *>(storage)->cleanup(); |
188 | | }); |
189 | | } |
190 | | |
191 | | private: |
192 | | /// Implementation for getting/creating an instance of a derived type with |
193 | | /// complex storage. |
194 | | BaseStorage *getImpl(unsigned kind, unsigned hashValue, |
195 | | function_ref<bool(const BaseStorage *)> isEqual, |
196 | | function_ref<BaseStorage *(StorageAllocator &)> ctorFn); |
197 | | |
198 | | /// Implementation for getting/creating an instance of a derived type with |
199 | | /// default storage. |
200 | | BaseStorage *getImpl(unsigned kind, |
201 | | function_ref<BaseStorage *(StorageAllocator &)> ctorFn); |
202 | | |
203 | | /// Implementation for erasing an instance of a derived type with complex |
204 | | /// storage. |
205 | | void eraseImpl(unsigned kind, unsigned hashValue, |
206 | | function_ref<bool(const BaseStorage *)> isEqual, |
207 | | function_ref<void(BaseStorage *)> cleanupFn); |
208 | | |
209 | | /// The internal implementation class. |
210 | | std::unique_ptr<detail::StorageUniquerImpl> impl; |
211 | | |
212 | | //===--------------------------------------------------------------------===// |
213 | | // Key Construction |
214 | | //===--------------------------------------------------------------------===// |
215 | | |
216 | | /// Used to construct an instance of 'ImplTy::KeyTy' if there is an |
217 | | /// 'ImplTy::getKey' function for the provided arguments. |
218 | | template <typename ImplTy, typename... Args> |
219 | | static typename std::enable_if< |
220 | | llvm::is_detected<detail::has_impltype_getkey_t, ImplTy, Args...>::value, |
221 | | typename ImplTy::KeyTy>::type |
222 | 0 | getKey(Args &&... args) { |
223 | 0 | return ImplTy::getKey(args...); |
224 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail21FloatAttributeStorageEJRNS_4TypeERdEEENSt9enable_ifIXsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS9_5KeyTyEE4typeEDpOSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail35DenseStringElementsAttributeStorageEJRNS_10ShapedTypeERN4llvm8ArrayRefINS6_9StringRefEEERbEEENSt9enable_ifIXsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSE_5KeyTyEE4typeEDpOSF_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail36DenseIntOrFPElementsAttributeStorageEJRNS_10ShapedTypeERN4llvm8ArrayRefIcEERbEEENSt9enable_ifIXsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSD_5KeyTyEE4typeEDpOSE_ |
225 | | /// If there is no 'ImplTy::getKey' method, then we try to directly construct |
226 | | /// the 'ImplTy::KeyTy' with the provided arguments. |
227 | | template <typename ImplTy, typename... Args> |
228 | | static typename std::enable_if< |
229 | | !llvm::is_detected<detail::has_impltype_getkey_t, ImplTy, Args...>::value, |
230 | | typename ImplTy::KeyTy>::type |
231 | 0 | getKey(Args &&... args) { |
232 | 0 | return typename ImplTy::KeyTy(args...); |
233 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail20AffineDimExprStorageEJRjEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS7_5KeyTyEE4typeEDpOS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25AffineConstantExprStorageEJRlEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS7_5KeyTyEE4typeEDpOS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25AffineBinaryOpExprStorageEJRKNS_10AffineExprERS4_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSA_5KeyTyEE4typeEDpOSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25AffineMapAttributeStorageEJRNS_9AffineMapEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail21ArrayAttributeStorageEJRN4llvm8ArrayRefINS_9AttributeEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail26DictionaryAttributeStorageEJRN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSE_5KeyTyEE4typeEDpOSF_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail21FloatAttributeStorageEJRNS_4TypeERN4llvm7APFloatEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25SymbolRefAttributeStorageEJRN4llvm9StringRefERNS4_8NoneTypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25SymbolRefAttributeStorageEJRN4llvm9StringRefERNS4_8ArrayRefINS_17FlatSymbolRefAttrEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSD_5KeyTyEE4typeEDpOSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail23IntegerAttributeStorageEJRNS_4TypeERN4llvm5APIntEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail26IntegerSetAttributeStorageEJRNS_10IntegerSetEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail22OpaqueAttributeStorageEJRNS_10IdentifierERN4llvm9StringRefERNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSD_5KeyTyEE4typeEDpOSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail22StringAttributeStorageEJRN4llvm9StringRefERNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail20TypeAttributeStorageEJRNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail30OpaqueElementsAttributeStorageEJRNS_10ShapedTypeERPNS_7DialectERN4llvm9StringRefEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSE_5KeyTyEE4typeEDpOSF_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail30SparseElementsAttributeStorageEJRNS_10ShapedTypeERNS_20DenseIntElementsAttrERNS_17DenseElementsAttrEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSC_5KeyTyEE4typeEDpOSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail23CallSiteLocationStorageEJRNS_8LocationES5_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail26FileLineColLocationStorageEJRNS_10IdentifierERjS6_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS9_5KeyTyEE4typeEDpOSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail20FusedLocationStorageEJRN4llvm8ArrayRefINS_8LocationEEERNS_9AttributeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSD_5KeyTyEE4typeEDpOSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail19NameLocationStorageEJRNS_10IdentifierERNS_8LocationEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSA_5KeyTyEE4typeEDpOSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail21OpaqueLocationStorageEJRmRNS_6TypeIDERNS_8LocationEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail18IntegerTypeStorageEJiNS_11IntegerType19SignednessSemanticsEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail20BoolAttributeStorageEJPNS_11MLIRContextEbEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail26DictionaryAttributeStorageEJN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSD_5KeyTyEE4typeEDpOSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail18IntegerTypeStorageEJRjRNS_11IntegerType19SignednessSemanticsEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSA_5KeyTyEE4typeEDpOSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail18ComplexTypeStorageEJRNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail17VectorTypeStorageEJRN4llvm8ArrayRefIlEERNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSC_5KeyTyEE4typeEDpOSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail23RankedTensorTypeStorageEJRN4llvm8ArrayRefIlEERNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSC_5KeyTyEE4typeEDpOSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25UnrankedTensorTypeStorageEJRNS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS8_5KeyTyEE4typeEDpOS9_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail17MemRefTypeStorageEJRN4llvm8ArrayRefIlEERNS_4TypeERNS4_11SmallVectorINS_9AffineMapELj2EEERjEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSH_5KeyTyEE4typeEDpOSI_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail25UnrankedMemRefTypeStorageEJRNS_4TypeERjEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENS9_5KeyTyEE4typeEDpOSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail16TupleTypeStorageEJRN4llvm8ArrayRefINS_4TypeEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail19FunctionTypeStorageEJRN4llvm8ArrayRefINS_4TypeEEES8_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer6getKeyINS_6detail17OpaqueTypeStorageEJRNS_10IdentifierERN4llvm9StringRefEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_21has_impltype_getkey_tET_DpT0_EE5valueENSB_5KeyTyEE4typeEDpOSC_ |
234 | | |
235 | | //===--------------------------------------------------------------------===// |
236 | | // Key and Kind Hashing |
237 | | //===--------------------------------------------------------------------===// |
238 | | |
239 | | /// Used to generate a hash for the 'ImplTy::KeyTy' and kind of a storage |
240 | | /// instance if there is an 'ImplTy::hashKey' overload for 'DerivedKey'. |
241 | | template <typename ImplTy, typename DerivedKey> |
242 | | static typename std::enable_if< |
243 | | llvm::is_detected<detail::has_impltype_hash_t, ImplTy, DerivedKey>::value, |
244 | | ::llvm::hash_code>::type |
245 | 0 | getHash(unsigned kind, const DerivedKey &derivedKey) { |
246 | 0 | return llvm::hash_combine(kind, ImplTy::hashKey(derivedKey)); |
247 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail21FloatAttributeStorageESt4pairINS_4TypeEN4llvm7APFloatEEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS6_9hash_codeEE4typeEjRKSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail23IntegerAttributeStorageESt4pairINS_4TypeEN4llvm5APIntEEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS6_9hash_codeEE4typeEjRKSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail35DenseStringElementsAttributeStorageENS3_5KeyTyEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail36DenseIntOrFPElementsAttributeStorageENS3_5KeyTyEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail30OpaqueElementsAttributeStorageESt5tupleIJNS_4TypeEPNS_7DialectEN4llvm9StringRefEEEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS8_9hash_codeEE4typeEjRKSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail30SparseElementsAttributeStorageESt5tupleIJNS_4TypeENS_20DenseIntElementsAttrENS_17DenseElementsAttrEEEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail18IntegerTypeStorageESt4pairIjNS_11IntegerType19SignednessSemanticsEEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail20BoolAttributeStorageESt4pairIPNS_11MLIRContextEbEEENSt9enable_ifIXsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSB_ |
248 | | /// If there is no 'ImplTy::hashKey' default to using the |
249 | | /// 'llvm::DenseMapInfo' definition for 'DerivedKey' for generating a hash. |
250 | | template <typename ImplTy, typename DerivedKey> |
251 | | static typename std::enable_if<!llvm::is_detected<detail::has_impltype_hash_t, |
252 | | ImplTy, DerivedKey>::value, |
253 | | ::llvm::hash_code>::type |
254 | 0 | getHash(unsigned kind, const DerivedKey &derivedKey) { |
255 | 0 | return llvm::hash_combine( |
256 | 0 | kind, DenseMapInfo<DerivedKey>::getHashValue(derivedKey)); |
257 | 0 | } Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail20AffineDimExprStorageEjEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS7_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail25AffineConstantExprStorageElEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS7_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail25AffineBinaryOpExprStorageESt4pairINS_10AffineExprES5_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail25AffineMapAttributeStorageENS_9AffineMapEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail21ArrayAttributeStorageEN4llvm8ArrayRefINS_9AttributeEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS4_9hash_codeEE4typeEjRKSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail26DictionaryAttributeStorageEN4llvm8ArrayRefISt4pairINS_10IdentifierENS_9AttributeEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS4_9hash_codeEE4typeEjRKSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail25SymbolRefAttributeStorageESt4pairIN4llvm9StringRefENS5_8ArrayRefINS_17FlatSymbolRefAttrEEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail26IntegerSetAttributeStorageENS_10IntegerSetEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail22OpaqueAttributeStorageESt5tupleIJNS_10IdentifierEN4llvm9StringRefENS_4TypeEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS6_9hash_codeEE4typeEjRKSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail22StringAttributeStorageESt4pairIN4llvm9StringRefENS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSC_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail20TypeAttributeStorageENS_4TypeEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail23CallSiteLocationStorageESt4pairINS_8LocationES5_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail26FileLineColLocationStorageESt5tupleIJNS_10IdentifierEjjEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail20FusedLocationStorageESt4pairIN4llvm8ArrayRefINS_8LocationEEENS_9AttributeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSE_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail19NameLocationStorageESt4pairINS_10IdentifierENS_8LocationEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail21OpaqueLocationStorageESt5tupleIJmNS_6TypeIDENS_8LocationEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail18ComplexTypeStorageENS_4TypeEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail17VectorTypeStorageESt4pairIN4llvm8ArrayRefIlEENS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail23RankedTensorTypeStorageESt4pairIN4llvm8ArrayRefIlEENS_4TypeEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail25UnrankedTensorTypeStorageENS_4TypeEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKS8_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail17MemRefTypeStorageESt5tupleIJN4llvm8ArrayRefIlEENS_4TypeENS6_INS_9AffineMapEEEjEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSF_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail25UnrankedMemRefTypeStorageESt5tupleIJNS_4TypeEjEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueEN4llvm9hash_codeEE4typeEjRKSA_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail16TupleTypeStorageEN4llvm8ArrayRefINS_4TypeEEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS4_9hash_codeEE4typeEjRKSB_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail19FunctionTypeStorageESt4pairIN4llvm8ArrayRefINS_4TypeEEES8_EEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS5_9hash_codeEE4typeEjRKSD_ Unexecuted instantiation: _ZN4mlir14StorageUniquer7getHashINS_6detail17OpaqueTypeStorageESt4pairINS_10IdentifierEN4llvm9StringRefEEEENSt9enable_ifIXntsr4llvm11is_detectedINS2_19has_impltype_hash_tET_T0_EE5valueENS6_9hash_codeEE4typeEjRKSC_ |
258 | | }; |
259 | | } // end namespace mlir |
260 | | |
261 | | #endif |