@@ -62,6 +62,26 @@ def DXSA_GlobalFlagsAttr :
6262 let assemblyFormat = "`<` $value `>`";
6363}
6464
65+ def DXSA_OutputPrimitiveTopology_PointList : I32EnumAttrCase<"pointlist", 1>;
66+ def DXSA_OutputPrimitiveTopology_LineStrip : I32EnumAttrCase<"linestrip", 3>;
67+ def DXSA_OutputPrimitiveTopology_TriangleStrip : I32EnumAttrCase<"trianglestrip", 5>;
68+
69+ def DXSA_OutputPrimitiveTopology : I32EnumAttr<
70+ "OutputPrimitiveTopology", "shader output primitive topology", [
71+ DXSA_OutputPrimitiveTopology_PointList,
72+ DXSA_OutputPrimitiveTopology_LineStrip,
73+ DXSA_OutputPrimitiveTopology_TriangleStrip
74+ ]> {
75+ let cppNamespace = "::mlir::dxsa";
76+ let genSpecializedAttr = 0;
77+ }
78+
79+ def DXSA_OutputPrimitiveTopologyAttr :
80+ EnumAttr<DXSADialect, DXSA_OutputPrimitiveTopology,
81+ "output_primitive_topology"> {
82+ let assemblyFormat = "$value";
83+ }
84+
6585//===----------------------------------------------------------------------===//
6686// DXSA op definitions
6787//===----------------------------------------------------------------------===//
@@ -158,4 +178,20 @@ def DXSA_DclTemps : DXSA_Op<"dcl_temps"> {
158178 let assemblyFormat = [{ $count attr-dict }];
159179}
160180
181+ def DXSA_DclOutputTopology : DXSA_Op<"dcl_output_topology"> {
182+ let summary = "declare what primitive topology the shader generates as output";
183+ let description = [{
184+ The `dxsa.dcl_output_topology` operation declares the primitive topology
185+ that the shader generates as output.
186+
187+ Example:
188+
189+ ```mlir
190+ dxsa.dcl_output_topology trianglestrip
191+ ```
192+ }];
193+ let arguments = (ins DXSA_OutputPrimitiveTopologyAttr:$topology);
194+ let assemblyFormat = "$topology attr-dict";
195+ }
196+
161197#endif // DXSA_OPS
0 commit comments