|
10 | 10 | #define MLIR_DIALECT_XEGPU_IR_XEGPUATTRS_TD
|
11 | 11 |
|
12 | 12 | include "mlir/Dialect/XeGPU/IR/XeGPUDialect.td"
|
13 |
| -include "mlir/IR/EnumAttr.td" |
14 | 13 |
|
15 | 14 | class XeGPUAttr<string name, string attrMnemonic, list<Trait> traits = [],
|
16 | 15 | string baseCppClass = "::mlir::Attribute">
|
17 | 16 | : AttrDef<XeGPU_Dialect, name, traits, baseCppClass> {
|
18 | 17 | let mnemonic = attrMnemonic;
|
19 | 18 | }
|
20 | 19 |
|
21 |
| -def XeGPU_TensorDescAttr: XeGPUAttr<"TensorDesc", "tdesc_attr"> { |
22 |
| - let parameters = (ins |
23 |
| - OptionalParameter<"MemoryScopeAttr">: $memory_scope, |
24 |
| - OptionalParameter<"IntegerAttr", "1">: $array_length, |
25 |
| - OptionalParameter<"BoolAttr", "true">: $boundary_check |
26 |
| - ); |
27 |
| - |
28 |
| - let builders = [ |
29 |
| - AttrBuilder<(ins |
30 |
| - CArg<"xegpu::MemoryScope", "xegpu::MemoryScope::Global">:$memory_scope, |
31 |
| - CArg<"int", "1">:$array_length, |
32 |
| - CArg<"bool", "true">: $boundary_check |
33 |
| - )> |
34 |
| - ]; |
35 |
| - |
36 |
| - let assemblyFormat = "`<` struct(params) `>`"; |
37 |
| -} |
38 |
| - |
39 |
| -//===----------------------------------------------------------------------===// |
40 |
| -// XeGPU Memory Scope Enums. |
41 |
| -//===----------------------------------------------------------------------===// |
42 |
| -def XeGPU_MemoryScopeGlobal: I32EnumAttrCase<"Global", 0, "global">; |
43 |
| -def XeGPU_MemoryScopeShared: I32EnumAttrCase<"SLM", 1, "slm">; |
44 |
| -def XeGPU_MemoryScope: I32EnumAttr<"MemoryScope", |
45 |
| - "The address space of the memory the tensor descritor is created for", |
46 |
| - [XeGPU_MemoryScopeGlobal, XeGPU_MemoryScopeShared]> { |
47 |
| - let genSpecializedAttr = 0; |
48 |
| - let cppNamespace = "::mlir::xegpu"; |
49 |
| -} |
50 |
| - |
51 |
| -def XeGPU_MemoryScopeAttr: |
52 |
| - EnumAttr<XeGPU_Dialect, XeGPU_MemoryScope, "memory_scope"> { |
53 |
| - let assemblyFormat = "$value"; |
54 |
| -} |
55 |
| - |
56 |
| -//===----------------------------------------------------------------------===// |
57 |
| -// XeGPU Cache Enums. |
58 |
| -//===----------------------------------------------------------------------===// |
59 |
| -def XeGPU_CachePolicyCached: I32EnumAttrCase<"CACHED", 0, "cached">; // valid for read and write |
60 |
| -def XeGPU_CachePolicyUncached: I32EnumAttrCase<"UNCACHED", 1, "uncached">; // valid for read and write |
61 |
| -def XeGPU_CachePolicyStreaming: I32EnumAttrCase<"STREAMING", 2, "streaming">; // valid for read only |
62 |
| -def XeGPU_CachePolicyInvalid: I32EnumAttrCase<"READ_INVALIDATE", 3, "read_invalidate">; // valid for read only |
63 |
| -def XeGPU_CachePolicyWriteBack: I32EnumAttrCase<"WRITE_BACK", 4, "write_back">; // valid for write only |
64 |
| -def XeGPU_CachePolicyWriteThrough: I32EnumAttrCase<"WRITE_THROUGH", 5, "write_through">; // valid for write only |
65 |
| - |
66 |
| -def XeGPU_CachePolicyEnums : I32EnumAttr<"CachePolicy", "Cache policy", |
67 |
| - [XeGPU_CachePolicyCached, XeGPU_CachePolicyUncached, |
68 |
| - XeGPU_CachePolicyStreaming, XeGPU_CachePolicyInvalid, |
69 |
| - XeGPU_CachePolicyWriteBack, XeGPU_CachePolicyWriteThrough]> { |
70 |
| - let genSpecializedAttr = 0; |
71 |
| - let cppNamespace = "::mlir::xegpu"; |
72 |
| -} |
73 |
| - |
74 |
| -def XeGPU_CacheHintAttr |
75 |
| - : EnumAttr<XeGPU_Dialect, XeGPU_CachePolicyEnums, "cache_hint"> { |
76 |
| - let assemblyFormat = "`<` $value `>`"; |
77 |
| -} |
78 |
| - |
79 |
| - |
80 |
| - |
81 | 20 | #endif // MLIR_DIALECT_XEGPU_IR_XEGPUATTRS_TD
|
0 commit comments