@@ -93,6 +93,96 @@ def DXSA_OutputPrimitiveTopologyAttr :
9393 let assemblyFormat = "$value";
9494}
9595
96+ def DXSA_InterpolationMode_Constant : I32EnumAttrCase<"constant", 1>;
97+ def DXSA_InterpolationMode_Linear : I32EnumAttrCase<"linear", 2>;
98+ def DXSA_InterpolationMode_LinearCentroid : I32EnumAttrCase<"linearCentroid", 3>;
99+ def DXSA_InterpolationMode_LinearNoPerspective : I32EnumAttrCase<"linearNoPerspective", 4>;
100+ def DXSA_InterpolationMode_LinearNoPerspectiveCentroid : I32EnumAttrCase<"linearNoPerspectiveCentroid", 5>;
101+ def DXSA_InterpolationMode_LinearSample : I32EnumAttrCase<"linearSample", 6>;
102+ def DXSA_InterpolationMode_LinearNoPerspectiveSample : I32EnumAttrCase<"linearNoPerspectiveSample", 7>;
103+
104+ def DXSA_InterpolationMode : I32EnumAttr<
105+ "InterpolationMode", "pixel shader interpolation mode", [
106+ DXSA_InterpolationMode_Constant,
107+ DXSA_InterpolationMode_Linear,
108+ DXSA_InterpolationMode_LinearCentroid,
109+ DXSA_InterpolationMode_LinearNoPerspective,
110+ DXSA_InterpolationMode_LinearNoPerspectiveCentroid,
111+ DXSA_InterpolationMode_LinearSample,
112+ DXSA_InterpolationMode_LinearNoPerspectiveSample
113+ ]> {
114+ let cppNamespace = "::mlir::dxsa";
115+ let genSpecializedAttr = 0;
116+ }
117+
118+ def DXSA_InterpolationModeAttr :
119+ EnumAttr<DXSADialect, DXSA_InterpolationMode, "interpolation_mode"> {
120+ let assemblyFormat = "$value";
121+ }
122+
123+ def DXSA_SystemValueName_Position : I32EnumAttrCase<"position", 1>;
124+ def DXSA_SystemValueName_ClipDistance : I32EnumAttrCase<"clipDistance", 2>;
125+ def DXSA_SystemValueName_CullDistance : I32EnumAttrCase<"cullDistance", 3>;
126+ def DXSA_SystemValueName_RenderTargetArrayIndex : I32EnumAttrCase<"renderTargetArrayIndex", 4>;
127+ def DXSA_SystemValueName_ViewportArrayIndex : I32EnumAttrCase<"viewportArrayIndex", 5>;
128+ def DXSA_SystemValueName_VertexId : I32EnumAttrCase<"vertexID", 6>;
129+ def DXSA_SystemValueName_PrimitiveId : I32EnumAttrCase<"primitiveID", 7>;
130+ def DXSA_SystemValueName_InstanceId : I32EnumAttrCase<"instanceID", 8>;
131+ def DXSA_SystemValueName_IsFrontFace : I32EnumAttrCase<"isFrontFace", 9>;
132+ def DXSA_SystemValueName_SampleIndex : I32EnumAttrCase<"sampleIndex", 10>;
133+ def DXSA_SystemValueName_FinalQuadUeq0EdgeTessFactor : I32EnumAttrCase<"finalQuadUeq0EdgeTessFactor", 11>;
134+ def DXSA_SystemValueName_FinalQuadVeq0EdgeTessFactor : I32EnumAttrCase<"finalQuadVeq0EdgeTessFactor", 12>;
135+ def DXSA_SystemValueName_FinalQuadUeq1EdgeTessFactor : I32EnumAttrCase<"finalQuadUeq1EdgeTessFactor", 13>;
136+ def DXSA_SystemValueName_FinalQuadVeq1EdgeTessFactor : I32EnumAttrCase<"finalQuadVeq1EdgeTessFactor", 14>;
137+ def DXSA_SystemValueName_FinalQuadUInsideTessFactor : I32EnumAttrCase<"finalQuadUInsideTessFactor", 15>;
138+ def DXSA_SystemValueName_FinalQuadVInsideTessFactor : I32EnumAttrCase<"finalQuadVInsideTessFactor", 16>;
139+ def DXSA_SystemValueName_FinalTriUeq0EdgeTessFactor : I32EnumAttrCase<"finalTriUeq0EdgeTessFactor", 17>;
140+ def DXSA_SystemValueName_FinalTriVeq0EdgeTessFactor : I32EnumAttrCase<"finalTriVeq0EdgeTessFactor", 18>;
141+ def DXSA_SystemValueName_FinalTriWeq0EdgeTessFactor : I32EnumAttrCase<"finalTriWeq0EdgeTessFactor", 19>;
142+ def DXSA_SystemValueName_FinalTriInsideTessFactor : I32EnumAttrCase<"finalTriInsideTessFactor", 20>;
143+ def DXSA_SystemValueName_FinalLineDetailTessFactor : I32EnumAttrCase<"finalLineDetailTessFactor", 21>;
144+ def DXSA_SystemValueName_FinalLineDensityTessFactor : I32EnumAttrCase<"finalLineDensityTessFactor", 22>;
145+ def DXSA_SystemValueName_Barycentrics : I32EnumAttrCase<"barycentrics", 23>;
146+ def DXSA_SystemValueName_ShadingRate : I32EnumAttrCase<"shadingRate", 24>;
147+ def DXSA_SystemValueName_CullPrimitive : I32EnumAttrCase<"cullPrimitive", 25>;
148+
149+ def DXSA_SystemValueName : I32EnumAttr<
150+ "SystemValueName", "DXBC system interpreted/generated value name", [
151+ DXSA_SystemValueName_Position,
152+ DXSA_SystemValueName_ClipDistance,
153+ DXSA_SystemValueName_CullDistance,
154+ DXSA_SystemValueName_RenderTargetArrayIndex,
155+ DXSA_SystemValueName_ViewportArrayIndex,
156+ DXSA_SystemValueName_VertexId,
157+ DXSA_SystemValueName_PrimitiveId,
158+ DXSA_SystemValueName_InstanceId,
159+ DXSA_SystemValueName_IsFrontFace,
160+ DXSA_SystemValueName_SampleIndex,
161+ DXSA_SystemValueName_FinalQuadUeq0EdgeTessFactor,
162+ DXSA_SystemValueName_FinalQuadVeq0EdgeTessFactor,
163+ DXSA_SystemValueName_FinalQuadUeq1EdgeTessFactor,
164+ DXSA_SystemValueName_FinalQuadVeq1EdgeTessFactor,
165+ DXSA_SystemValueName_FinalQuadUInsideTessFactor,
166+ DXSA_SystemValueName_FinalQuadVInsideTessFactor,
167+ DXSA_SystemValueName_FinalTriUeq0EdgeTessFactor,
168+ DXSA_SystemValueName_FinalTriVeq0EdgeTessFactor,
169+ DXSA_SystemValueName_FinalTriWeq0EdgeTessFactor,
170+ DXSA_SystemValueName_FinalTriInsideTessFactor,
171+ DXSA_SystemValueName_FinalLineDetailTessFactor,
172+ DXSA_SystemValueName_FinalLineDensityTessFactor,
173+ DXSA_SystemValueName_Barycentrics,
174+ DXSA_SystemValueName_ShadingRate,
175+ DXSA_SystemValueName_CullPrimitive
176+ ]> {
177+ let cppNamespace = "::mlir::dxsa";
178+ let genSpecializedAttr = 0;
179+ }
180+
181+ def DXSA_SystemValueNameAttr :
182+ EnumAttr<DXSADialect, DXSA_SystemValueName, "system_value_name"> {
183+ let assemblyFormat = "$value";
184+ }
185+
96186//===----------------------------------------------------------------------===//
97187// DXSA op definitions
98188//===----------------------------------------------------------------------===//
@@ -271,4 +361,57 @@ def DXSA_DclOutputTopology : DXSA_Op<"dcl_output_topology"> {
271361 let assemblyFormat = "$topology attr-dict";
272362}
273363
364+ def DXSA_DclInputPs : DXSA_Op<"dcl_input_ps"> {
365+ let summary = "declares a pixel shader input";
366+ let description = [{
367+ The `dxsa.dcl_input_ps` operation declares a pixel shader input
368+ with the given attribute interpolation mode.
369+
370+ Example:
371+
372+ ```mlir
373+ dxsa.dcl_input_ps linear %v0
374+ ```
375+ }];
376+ let arguments = (ins DXSA_InterpolationModeAttr:$mode,
377+ DXSA_OperandType:$operand);
378+ let assemblyFormat = "$mode $operand attr-dict";
379+ }
380+
381+ def DXSA_DclInputPsSiv : DXSA_Op<"dcl_input_ps_siv"> {
382+ let summary = "declares a pixel shader system-interpreted input";
383+ let description = [{
384+ The `dxsa.dcl_input_ps_siv` operation declares a pixel shader input
385+ that receives a System Interpreted Value, with the given attribute
386+ interpolation mode.
387+
388+ Example:
389+
390+ ```mlir
391+ dxsa.dcl_input_ps_siv linear %v0, position
392+ ```
393+ }];
394+ let arguments = (ins DXSA_InterpolationModeAttr:$mode,
395+ DXSA_OperandType:$operand,
396+ DXSA_SystemValueNameAttr:$name);
397+ let assemblyFormat = "$mode $operand `,` $name attr-dict";
398+ }
399+
400+ def DXSA_DclInputPsSgv : DXSA_Op<"dcl_input_ps_sgv"> {
401+ let summary = "declares a pixel shader system-generated input";
402+ let description = [{
403+ The `dxsa.dcl_input_ps_sgv` operation declares a pixel shader input
404+ that receives a System Generated Value.
405+
406+ Example:
407+
408+ ```mlir
409+ dxsa.dcl_input_ps_sgv %v0, sampleIndex
410+ ```
411+ }];
412+ let arguments = (ins DXSA_OperandType:$operand,
413+ DXSA_SystemValueNameAttr:$name);
414+ let assemblyFormat = "$operand `,` $name attr-dict";
415+ }
416+
274417#endif // DXSA_OPS
0 commit comments