@@ -134,6 +134,35 @@ def DXSA_TessellatorPartitioningModeAttr :
134134 let assemblyFormat = "$value";
135135}
136136
137+ def DXSA_InputPrimitive_Point : I32EnumAttrCase<"point", 1>;
138+ def DXSA_InputPrimitive_Line : I32EnumAttrCase<"line", 2>;
139+ def DXSA_InputPrimitive_Triangle : I32EnumAttrCase<"triangle", 3>;
140+ def DXSA_InputPrimitive_LineAdj : I32EnumAttrCase<"line_adj", 6>;
141+ def DXSA_InputPrimitive_TriangleAdj : I32EnumAttrCase<"triangle_adj", 7>;
142+ foreach i = !range(1, 33) in {
143+ def DXSA_InputPrimitive_Patch#i :
144+ I32EnumAttrCase<"patch" # i, !add(i, 7)>;
145+ }
146+
147+ def DXSA_InputPrimitive : I32EnumAttr<
148+ "InputPrimitive", "geometry shader input primitive type",
149+ !listconcat(
150+ [DXSA_InputPrimitive_Point,
151+ DXSA_InputPrimitive_Line,
152+ DXSA_InputPrimitive_Triangle,
153+ DXSA_InputPrimitive_LineAdj,
154+ DXSA_InputPrimitive_TriangleAdj],
155+ !foreach(i, !range(1, 33),
156+ !cast<I32EnumAttrCase>("DXSA_InputPrimitive_Patch" # i)))> {
157+ let cppNamespace = "::mlir::dxsa";
158+ let genSpecializedAttr = 0;
159+ }
160+
161+ def DXSA_InputPrimitiveAttr :
162+ EnumAttr<DXSADialect, DXSA_InputPrimitive, "input_primitive"> {
163+ let assemblyFormat = "$value";
164+ }
165+
137166//===----------------------------------------------------------------------===//
138167// DXSA op definitions
139168//===----------------------------------------------------------------------===//
@@ -346,4 +375,20 @@ def DXSA_DclTessellatorPartitioning
346375 let assemblyFormat = "$partitioningMode attr-dict";
347376}
348377
378+ def DXSA_DclInputPrimitive : DXSA_Op<"dcl_input_primitive"> {
379+ let summary = "declares the shader input primitive type";
380+ let description = [{
381+ The `dxsa.dcl_input_primitive` operation declares the input primitive
382+ type that the shader is invoked with.
383+
384+ Example:
385+
386+ ```mlir
387+ dxsa.dcl_input_primitive triangle
388+ ```
389+ }];
390+ let arguments = (ins DXSA_InputPrimitiveAttr:$type);
391+ let assemblyFormat = "$type attr-dict";
392+ }
393+
349394#endif // DXSA_OPS
0 commit comments