|
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