|
13 | 13 | namespace mlir { |
14 | 14 |
|
15 | 15 | class VectorType; |
16 | | -class OpOperand; |
17 | | -class OpResult; |
18 | | -class OpBuilder; |
19 | | -class ValueRange; |
20 | | -class TypeConverter; |
21 | | - |
22 | 16 | namespace xegpu { |
23 | 17 | class LayoutAttr; |
24 | 18 | class TensorDescType; |
@@ -56,59 +50,6 @@ FailureOr<VectorType> getDistributedVectorType(xegpu::TensorDescType tdescTy); |
56 | 50 | FailureOr<VectorType> getDistributedVectorType(VectorType originalType, |
57 | 51 | LayoutAttr layout); |
58 | 52 |
|
59 | | -/// Return the attribute name for the OpOperand to attach LayoutAttr |
60 | | -std::string getLayoutName(const OpOperand &operand); |
61 | | - |
62 | | -/// Return the attribute name for the OpResult to attach LayoutAttr |
63 | | -std::string getLayoutName(const OpResult result); |
64 | | - |
65 | | -/// Retrieves the LayoutAttr associated with a given Value. For TensorDescType |
66 | | -/// values, the LayoutAttr is extracted from the TensorDescType itself. For |
67 | | -/// other values, it is obtained from the attributes of the defining operation. |
68 | | -/// Returns nullptr if no LayoutAttr is found. |
69 | | -LayoutAttr getLayoutAttr(const Value value); |
70 | | - |
71 | | -/// Retrieves the LayoutAttr associated with a given OpOperand. It will |
72 | | -/// first check the operand_layout_{id} of the owner operation. If not found, |
73 | | -/// it will check the operand itself and its defining op. |
74 | | -LayoutAttr getLayoutAttr(const OpOperand &opr); |
75 | | - |
76 | | -/// Sets the LayoutAttr for a given OpOperand or OpResult by attaching |
77 | | -/// it to the owner's dictionary attributes |
78 | | -template <typename T, |
79 | | - typename = std::enable_if_t<std::is_same_v<T, OpOperand> || |
80 | | - std::is_same_v<T, OpResult>>> |
81 | | -void setLayoutAttr(const T &operandOrResult, const LayoutAttr layout); |
82 | | - |
83 | | -/// Set the LayoutAttr for each OpOperand and OpResult of the given operation. |
84 | | -/// If the operation contains regions, it is also applied recursively to the |
85 | | -/// contained operations |
86 | | -void setLayoutAttrs(Operation *op, |
87 | | - function_ref<LayoutAttr(Value)> getLayoutImpl); |
88 | | - |
89 | | -/// Extract a set of small vectors from a value with a given shape using |
90 | | -/// vector.extract_stride_slice |
91 | | -SmallVector<Value> extractVectorsWithShapeFromValue(OpBuilder &builder, |
92 | | - Location loc, Value value, |
93 | | - ArrayRef<int64_t> shape); |
94 | | - |
95 | | -/// Create a vector of shape from a set of values using |
96 | | -/// vector.insert_stride_slice. |
97 | | -Value createVectorWithShapeFromValues(OpBuilder &builder, Location loc, |
98 | | - ValueRange values, |
99 | | - ArrayRef<int64_t> shape); |
100 | | - |
101 | | -/// Do type conversion for SCF structural ops, e.g., scf.for using SCF structure |
102 | | -/// type convertion patterns. Since VectorType cannot carry the layout |
103 | | -/// attribute, which is needed to guide the type conversion for XeGPU, they are |
104 | | -/// first converted into RankedTensorType, where the layout attribute can be |
105 | | -/// attached. And then upstream SCF structural type conversion patterns are |
106 | | -/// applied with the provided converter. |
107 | | -/// TODO: This is a temporary solution. We should refactor it when context-aware |
108 | | -/// type conversion is available. |
109 | | -void doSCFStructuralTypeConversionWithTensorType(Operation *op, |
110 | | - TypeConverter converter); |
111 | | - |
112 | 53 | } // namespace xegpu |
113 | 54 |
|
114 | 55 | } // namespace mlir |
|
0 commit comments