@@ -163,6 +163,96 @@ def DXSA_InputPrimitiveAttr :
163163 let assemblyFormat = "$value";
164164}
165165
166+ def DXSA_InterpolationMode_Constant : I32EnumAttrCase<"constant", 1>;
167+ def DXSA_InterpolationMode_Linear : I32EnumAttrCase<"linear", 2>;
168+ def DXSA_InterpolationMode_LinearCentroid : I32EnumAttrCase<"linearCentroid", 3>;
169+ def DXSA_InterpolationMode_LinearNoPerspective : I32EnumAttrCase<"linearNoPerspective", 4>;
170+ def DXSA_InterpolationMode_LinearNoPerspectiveCentroid : I32EnumAttrCase<"linearNoPerspectiveCentroid", 5>;
171+ def DXSA_InterpolationMode_LinearSample : I32EnumAttrCase<"linearSample", 6>;
172+ def DXSA_InterpolationMode_LinearNoPerspectiveSample : I32EnumAttrCase<"linearNoPerspectiveSample", 7>;
173+
174+ def DXSA_InterpolationMode : I32EnumAttr<
175+ "InterpolationMode", "pixel shader interpolation mode", [
176+ DXSA_InterpolationMode_Constant,
177+ DXSA_InterpolationMode_Linear,
178+ DXSA_InterpolationMode_LinearCentroid,
179+ DXSA_InterpolationMode_LinearNoPerspective,
180+ DXSA_InterpolationMode_LinearNoPerspectiveCentroid,
181+ DXSA_InterpolationMode_LinearSample,
182+ DXSA_InterpolationMode_LinearNoPerspectiveSample
183+ ]> {
184+ let cppNamespace = "::mlir::dxsa";
185+ let genSpecializedAttr = 0;
186+ }
187+
188+ def DXSA_InterpolationModeAttr :
189+ EnumAttr<DXSADialect, DXSA_InterpolationMode, "interpolation_mode"> {
190+ let assemblyFormat = "$value";
191+ }
192+
193+ def DXSA_SystemValueName_Position : I32EnumAttrCase<"position", 1>;
194+ def DXSA_SystemValueName_ClipDistance : I32EnumAttrCase<"clipDistance", 2>;
195+ def DXSA_SystemValueName_CullDistance : I32EnumAttrCase<"cullDistance", 3>;
196+ def DXSA_SystemValueName_RenderTargetArrayIndex : I32EnumAttrCase<"renderTargetArrayIndex", 4>;
197+ def DXSA_SystemValueName_ViewportArrayIndex : I32EnumAttrCase<"viewportArrayIndex", 5>;
198+ def DXSA_SystemValueName_VertexId : I32EnumAttrCase<"vertexID", 6>;
199+ def DXSA_SystemValueName_PrimitiveId : I32EnumAttrCase<"primitiveID", 7>;
200+ def DXSA_SystemValueName_InstanceId : I32EnumAttrCase<"instanceID", 8>;
201+ def DXSA_SystemValueName_IsFrontFace : I32EnumAttrCase<"isFrontFace", 9>;
202+ def DXSA_SystemValueName_SampleIndex : I32EnumAttrCase<"sampleIndex", 10>;
203+ def DXSA_SystemValueName_FinalQuadUeq0EdgeTessFactor : I32EnumAttrCase<"finalQuadUeq0EdgeTessFactor", 11>;
204+ def DXSA_SystemValueName_FinalQuadVeq0EdgeTessFactor : I32EnumAttrCase<"finalQuadVeq0EdgeTessFactor", 12>;
205+ def DXSA_SystemValueName_FinalQuadUeq1EdgeTessFactor : I32EnumAttrCase<"finalQuadUeq1EdgeTessFactor", 13>;
206+ def DXSA_SystemValueName_FinalQuadVeq1EdgeTessFactor : I32EnumAttrCase<"finalQuadVeq1EdgeTessFactor", 14>;
207+ def DXSA_SystemValueName_FinalQuadUInsideTessFactor : I32EnumAttrCase<"finalQuadUInsideTessFactor", 15>;
208+ def DXSA_SystemValueName_FinalQuadVInsideTessFactor : I32EnumAttrCase<"finalQuadVInsideTessFactor", 16>;
209+ def DXSA_SystemValueName_FinalTriUeq0EdgeTessFactor : I32EnumAttrCase<"finalTriUeq0EdgeTessFactor", 17>;
210+ def DXSA_SystemValueName_FinalTriVeq0EdgeTessFactor : I32EnumAttrCase<"finalTriVeq0EdgeTessFactor", 18>;
211+ def DXSA_SystemValueName_FinalTriWeq0EdgeTessFactor : I32EnumAttrCase<"finalTriWeq0EdgeTessFactor", 19>;
212+ def DXSA_SystemValueName_FinalTriInsideTessFactor : I32EnumAttrCase<"finalTriInsideTessFactor", 20>;
213+ def DXSA_SystemValueName_FinalLineDetailTessFactor : I32EnumAttrCase<"finalLineDetailTessFactor", 21>;
214+ def DXSA_SystemValueName_FinalLineDensityTessFactor : I32EnumAttrCase<"finalLineDensityTessFactor", 22>;
215+ def DXSA_SystemValueName_Barycentrics : I32EnumAttrCase<"barycentrics", 23>;
216+ def DXSA_SystemValueName_ShadingRate : I32EnumAttrCase<"shadingRate", 24>;
217+ def DXSA_SystemValueName_CullPrimitive : I32EnumAttrCase<"cullPrimitive", 25>;
218+
219+ def DXSA_SystemValueName : I32EnumAttr<
220+ "SystemValueName", "DXBC system interpreted/generated value name", [
221+ DXSA_SystemValueName_Position,
222+ DXSA_SystemValueName_ClipDistance,
223+ DXSA_SystemValueName_CullDistance,
224+ DXSA_SystemValueName_RenderTargetArrayIndex,
225+ DXSA_SystemValueName_ViewportArrayIndex,
226+ DXSA_SystemValueName_VertexId,
227+ DXSA_SystemValueName_PrimitiveId,
228+ DXSA_SystemValueName_InstanceId,
229+ DXSA_SystemValueName_IsFrontFace,
230+ DXSA_SystemValueName_SampleIndex,
231+ DXSA_SystemValueName_FinalQuadUeq0EdgeTessFactor,
232+ DXSA_SystemValueName_FinalQuadVeq0EdgeTessFactor,
233+ DXSA_SystemValueName_FinalQuadUeq1EdgeTessFactor,
234+ DXSA_SystemValueName_FinalQuadVeq1EdgeTessFactor,
235+ DXSA_SystemValueName_FinalQuadUInsideTessFactor,
236+ DXSA_SystemValueName_FinalQuadVInsideTessFactor,
237+ DXSA_SystemValueName_FinalTriUeq0EdgeTessFactor,
238+ DXSA_SystemValueName_FinalTriVeq0EdgeTessFactor,
239+ DXSA_SystemValueName_FinalTriWeq0EdgeTessFactor,
240+ DXSA_SystemValueName_FinalTriInsideTessFactor,
241+ DXSA_SystemValueName_FinalLineDetailTessFactor,
242+ DXSA_SystemValueName_FinalLineDensityTessFactor,
243+ DXSA_SystemValueName_Barycentrics,
244+ DXSA_SystemValueName_ShadingRate,
245+ DXSA_SystemValueName_CullPrimitive
246+ ]> {
247+ let cppNamespace = "::mlir::dxsa";
248+ let genSpecializedAttr = 0;
249+ }
250+
251+ def DXSA_SystemValueNameAttr :
252+ EnumAttr<DXSADialect, DXSA_SystemValueName, "system_value_name"> {
253+ let assemblyFormat = "$value";
254+ }
255+
166256//===----------------------------------------------------------------------===//
167257// DXSA op definitions
168258//===----------------------------------------------------------------------===//
@@ -391,4 +481,57 @@ def DXSA_DclInputPrimitive : DXSA_Op<"dcl_input_primitive"> {
391481 let assemblyFormat = "$type attr-dict";
392482}
393483
484+ def DXSA_DclInputPs : DXSA_Op<"dcl_input_ps"> {
485+ let summary = "declares a pixel shader input";
486+ let description = [{
487+ The `dxsa.dcl_input_ps` operation declares a pixel shader input
488+ with the given attribute interpolation mode.
489+
490+ Example:
491+
492+ ```mlir
493+ dxsa.dcl_input_ps linear %v0
494+ ```
495+ }];
496+ let arguments = (ins DXSA_InterpolationModeAttr:$mode,
497+ DXSA_OperandType:$operand);
498+ let assemblyFormat = "$mode $operand attr-dict";
499+ }
500+
501+ def DXSA_DclInputPsSiv : DXSA_Op<"dcl_input_ps_siv"> {
502+ let summary = "declares a pixel shader system-interpreted input";
503+ let description = [{
504+ The `dxsa.dcl_input_ps_siv` operation declares a pixel shader input
505+ that receives a System Interpreted Value, with the given attribute
506+ interpolation mode.
507+
508+ Example:
509+
510+ ```mlir
511+ dxsa.dcl_input_ps_siv linear %v0, position
512+ ```
513+ }];
514+ let arguments = (ins DXSA_InterpolationModeAttr:$mode,
515+ DXSA_OperandType:$operand,
516+ DXSA_SystemValueNameAttr:$name);
517+ let assemblyFormat = "$mode $operand `,` $name attr-dict";
518+ }
519+
520+ def DXSA_DclInputPsSgv : DXSA_Op<"dcl_input_ps_sgv"> {
521+ let summary = "declares a pixel shader system-generated input";
522+ let description = [{
523+ The `dxsa.dcl_input_ps_sgv` operation declares a pixel shader input
524+ that receives a System Generated Value.
525+
526+ Example:
527+
528+ ```mlir
529+ dxsa.dcl_input_ps_sgv %v0, sampleIndex
530+ ```
531+ }];
532+ let arguments = (ins DXSA_OperandType:$operand,
533+ DXSA_SystemValueNameAttr:$name);
534+ let assemblyFormat = "$operand `,` $name attr-dict";
535+ }
536+
394537#endif // DXSA_OPS
0 commit comments