Skip to content

Commit eea6cf8

Browse files
committed
Delete DXILClass defs that are commented out. Need to add corresponding
class defs when adding DXIL Ops of a new class.
1 parent 0109271 commit eea6cf8

File tree

2 files changed

+24
-188
lines changed

2 files changed

+24
-188
lines changed

llvm/lib/Target/DirectX/DXIL.td

Lines changed: 20 additions & 183 deletions
Original file line numberDiff line numberDiff line change
@@ -53,194 +53,31 @@ class DXILOpClass<list<LLVMType> OpSig> {
5353
// utils/hct/hctdb_instrhelp.py of DirectXShaderCompiler repo. The function
5454
// name has the format "dx.op.<class-name>.<return-type>", in most cases.
5555

56+
// NOTE: The following list is not complete. Classes need to be defined as new DXIL Ops
57+
// are added.
5658
defset list<DXILOpClass> OpClasses = {
57-
def acceptHitAndEndSearch : DXILOpClass<[llvm_void_ty]>;
58-
// def allocateNodeOutputRecords : DXILOpClass;
59-
def allocateRayQuery : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
60-
// def annotateHandle : DXILOpClass;
61-
// def annotateNodeHandle : DXILOpClass;
62-
// def annotateNodeRecordHandle : DXILOpClass;
63-
// def atomicBinOp : DXILOpClass;
64-
// def atomicCompareExchange : DXILOpClass;
65-
def attributeAtVertex : DXILOpClass<[llvm_any_ty, llvm_i32_ty, llvm_i32_ty, llvm_i8_ty, llvm_i8_ty]>;
66-
def barrier : DXILOpClass<[llvm_void_ty, llvm_i32_ty]>;
67-
// def barrierByMemoryHandle : DXILOpClass;
68-
def barrierByMemoryType : DXILOpClass<[llvm_void_ty, llvm_i32_ty, llvm_i32_ty]>;
69-
// def barrierByNodeRecordHandle : DXILOpClass;
70-
def binary : DXILOpClass<[llvm_any_ty, LLVMMatchType<0>, LLVMMatchType<0>]>;
71-
def binaryWithCarryOrBorrow : DXILOpClass<[llvm_i32_ty, llvm_any_ty, LLVMMatchType<0>]>;
72-
// def binaryWithTwoOuts : DXILOpClass;
73-
// def bitcastF16toI16 : DXILOpClass;
74-
// def bitcastF32toI32 : DXILOpClass;
75-
// def bitcastF64toI64 : DXILOpClass;
76-
// def bitcastI16toF16 : DXILOpClass;
77-
// def bitcastI32toF32 : DXILOpClass;
78-
// def bitcastI64toF64 : DXILOpClass;
79-
// def bufferLoad : DXILOpClass;
80-
// def bufferStore : DXILOpClass;
81-
// def bufferUpdateCounter : DXILOpClass;
82-
// def calculateLOD : DXILOpClass;
83-
// def callShader : DXILOpClass;
84-
// def cbufferLoad : DXILOpClass;
85-
// def cbufferLoadLegacy : DXILOpClass;
86-
// def checkAccessFullyMapped : DXILOpClass;
87-
// def coverage : DXILOpClass;
88-
// def createHandle : DXILOpClass;
89-
// def createHandleForLib : DXILOpClass;
90-
// def createHandleFromBinding : DXILOpClass;
91-
// def createHandleFromHeap : DXILOpClass;
92-
// def createNodeInputRecordHandle : DXILOpClass;
93-
// def createNodeOutputHandle : DXILOpClass;
94-
// def cutStream : DXILOpClass;
95-
// def cycleCounterLegacy : DXILOpClass;
96-
// def discard : DXILOpClass;
97-
// def dispatchMesh : DXILOpClass;
98-
// def dispatchRaysDimensions : DXILOpClass;
99-
// def dispatchRaysIndex : DXILOpClass;
100-
// def domainLocation : DXILOpClass;
101-
def dot2 : DXILOpClass<!listsplat(llvm_anyfloat_ty, 5)>;
102-
// def dot2AddHalf : DXILOpClass;
103-
def dot3 : DXILOpClass<!listsplat(llvm_anyfloat_ty, 7)>;
104-
def dot4 : DXILOpClass<!listsplat(llvm_anyfloat_ty, 9)>;
105-
// def dot4AddPacked : DXILOpClass;
106-
// def emitIndices : DXILOpClass;
107-
// def emitStream : DXILOpClass;
108-
// def emitThenCutStream : DXILOpClass;
109-
// def evalCentroid : DXILOpClass;
110-
// def evalSampleIndex : DXILOpClass;
111-
// def evalSnapped : DXILOpClass;
112-
// def finishedCrossGroupSharing : DXILOpClass;
113-
def flattenedThreadIdInGroup : DXILOpClass<[llvm_i32_ty]>;
114-
// def geometryIndex : DXILOpClass;
115-
// def getDimensions : DXILOpClass;
116-
// def getInputRecordCount : DXILOpClass;
117-
// def getMeshPayload : DXILOpClass;
118-
// def getNodeRecordPtr : DXILOpClass;
119-
// def getRemainingRecursionLevels : DXILOpClass;
120-
def groupId : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
121-
// def gsInstanceID : DXILOpClass;
122-
// def hitKind : DXILOpClass;
123-
// def ignoreHit : DXILOpClass;
124-
// def incrementOutputCount : DXILOpClass;
125-
// def indexNodeHandle : DXILOpClass;
126-
// def innerCoverage : DXILOpClass;
127-
// def instanceID : DXILOpClass;
128-
// def instanceIndex : DXILOpClass;
129-
// def isHelperLane : DXILOpClass;
130-
def isSpecialFloat : DXILOpClass<[llvm_i1_ty, llvm_anyfloat_ty]>;
131-
// def legacyDoubleToFloat : DXILOpClass;
132-
// def legacyDoubleToSInt32 : DXILOpClass;
133-
// def legacyDoubleToUInt32 : DXILOpClass;
134-
// def legacyF16ToF32 : DXILOpClass;
135-
// def legacyF32ToF16 : DXILOpClass;
136-
// def loadInput : DXILOpClass;
137-
// def loadOutputControlPoint : DXILOpClass;
138-
// def loadPatchConstant : DXILOpClass;
139-
// def makeDouble : DXILOpClass;
140-
// def minPrecXRegLoad : DXILOpClass;
141-
// def minPrecXRegStore : DXILOpClass;
142-
// def nodeOutputIsValid : DXILOpClass;
143-
// def objectRayDirection : DXILOpClass;
144-
// def objectRayOrigin : DXILOpClass;
145-
// def objectToWorld : DXILOpClass;
146-
// def outputComplete : DXILOpClass;
147-
// def outputControlPointID : DXILOpClass;
148-
// def pack4x8 : DXILOpClass;
149-
// def primitiveID : DXILOpClass;
150-
// def primitiveIndex : DXILOpClass;
151-
// def quadOp : DXILOpClass;
152-
// def quadReadLaneAt : DXILOpClass;
153-
// def quadVote : DXILOpClass;
154-
// def quaternary : DXILOpClass;
155-
// def rawBufferLoad : DXILOpClass;
156-
// def rawBufferStore : DXILOpClass;
157-
// def rayFlags : DXILOpClass;
158-
// def rayQuery_Abort : DXILOpClass;
159-
// def rayQuery_CommitNonOpaqueTriangleHit : DXILOpClass;
160-
// def rayQuery_CommitProceduralPrimitiveHit : DXILOpClass;
161-
// def rayQuery_Proceed : DXILOpClass;
162-
// def rayQuery_StateMatrix : DXILOpClass;
163-
// def rayQuery_StateScalar : DXILOpClass;
164-
// def rayQuery_StateVector : DXILOpClass;
165-
// def rayQuery_TraceRayInline : DXILOpClass;
166-
// def rayTCurrent : DXILOpClass;
167-
// def rayTMin : DXILOpClass;
168-
// def renderTargetGetSampleCount : DXILOpClass;
169-
// def renderTargetGetSamplePosition : DXILOpClass;
170-
// def reportHit : DXILOpClass;
171-
// def sample : DXILOpClass;
172-
// def sampleBias : DXILOpClass;
173-
// def sampleCmp : DXILOpClass;
174-
// def sampleCmpBias : DXILOpClass;
175-
// def sampleCmpGrad : DXILOpClass;
176-
// def sampleCmpLevel : DXILOpClass;
177-
// def sampleCmpLevelZero : DXILOpClass;
178-
// def sampleGrad : DXILOpClass;
179-
// def sampleIndex : DXILOpClass;
180-
// def sampleLevel : DXILOpClass;
181-
// def setMeshOutputCounts : DXILOpClass;
182-
// def splitDouble : DXILOpClass;
183-
// def startInstanceLocation : DXILOpClass;
184-
// def startVertexLocation : DXILOpClass;
185-
// def storeOutput : DXILOpClass;
186-
// def storePatchConstant : DXILOpClass;
187-
// def storePrimitiveOutput : DXILOpClass;
188-
// def storeVertexOutput : DXILOpClass;
189-
// def tempRegLoad : DXILOpClass;
190-
// def tempRegStore : DXILOpClass;
191-
def tertiary : DXILOpClass<[llvm_any_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>]>;
192-
// def texture2DMSGetSamplePosition : DXILOpClass;
193-
// def textureGather : DXILOpClass;
194-
// def textureGatherCmp : DXILOpClass;
195-
// def textureGatherRaw : DXILOpClass;
196-
// def textureLoad : DXILOpClass;
197-
// def textureStore : DXILOpClass;
198-
// def textureStoreSample : DXILOpClass;
199-
def threadId : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
200-
def threadIdInGroup : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
201-
// def traceRay : DXILOpClass;
202-
def unary : DXILOpClass<[llvm_any_ty, LLVMMatchType<0>]>;
203-
// def unaryBits : DXILOpClass;
204-
// def unpack4x8 : DXILOpClass;
205-
// def viewID : DXILOpClass;
206-
// def waveActiveAllEqual : DXILOpClass;
207-
// def waveActiveBallot : DXILOpClass;
208-
// def waveActiveBit : DXILOpClass;
209-
// def waveActiveOp : DXILOpClass;
210-
// def waveAllOp : DXILOpClass;
211-
// def waveAllTrue : DXILOpClass;
212-
// def waveAnyTrue : DXILOpClass;
213-
// def waveGetLaneCount : DXILOpClass;
214-
// def waveGetLaneIndex : DXILOpClass;
215-
// def waveIsFirstLane : DXILOpClass;
216-
// def waveMatch : DXILOpClass;
217-
// def waveMatrix_Accumulate : DXILOpClass;
218-
// def waveMatrix_Annotate : DXILOpClass;
219-
// def waveMatrix_Depth : DXILOpClass;
220-
// def waveMatrix_Fill : DXILOpClass;
221-
// def waveMatrix_LoadGroupShared : DXILOpClass;
222-
// def waveMatrix_LoadRawBuf : DXILOpClass;
223-
// def waveMatrix_Multiply : DXILOpClass;
224-
// def waveMatrix_ScalarOp : DXILOpClass;
225-
// def waveMatrix_StoreGroupShared : DXILOpClass;
226-
// def waveMatrix_StoreRawBuf : DXILOpClass;
227-
// def waveMultiPrefixBitCount : DXILOpClass;
228-
// def waveMultiPrefixOp : DXILOpClass;
229-
// def wavePrefixOp : DXILOpClass;
230-
// def waveReadLaneAt : DXILOpClass;
231-
// def waveReadLaneFirst : DXILOpClass;
232-
// def worldRayDirection : DXILOpClass;
233-
// def worldRayOrigin : DXILOpClass;
234-
// def worldToObject : DXILOpClass;
235-
// def writeSamplerFeedback : DXILOpClass;
236-
// def writeSamplerFeedbackBias : DXILOpClass;
237-
// def writeSamplerFeedbackGrad : DXILOpClass;
238-
// def writeSamplerFeedbackLevel: DXILOpClass;
59+
def acceptHitAndEndSearch : DXILOpClass<[llvm_void_ty]>;
60+
def allocateRayQuery : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
61+
def attributeAtVertex : DXILOpClass<[llvm_any_ty, llvm_i32_ty, llvm_i32_ty, llvm_i8_ty, llvm_i8_ty]>;
62+
def barrier : DXILOpClass<[llvm_void_ty, llvm_i32_ty]>;
63+
def barrierByMemoryType : DXILOpClass<[llvm_void_ty, llvm_i32_ty, llvm_i32_ty]>;
64+
def binary : DXILOpClass<[llvm_any_ty, LLVMMatchType<0>, LLVMMatchType<0>]>;
65+
def binaryWithCarryOrBorrow : DXILOpClass<[llvm_i32_ty, llvm_any_ty, LLVMMatchType<0>]>;
66+
def dot2 : DXILOpClass<!listsplat(llvm_anyfloat_ty, 5)>;
67+
def dot3 : DXILOpClass<!listsplat(llvm_anyfloat_ty, 7)>;
68+
def dot4 : DXILOpClass<!listsplat(llvm_anyfloat_ty, 9)>;
69+
def flattenedThreadIdInGroup : DXILOpClass<[llvm_i32_ty]>;
70+
def groupId : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
71+
def isSpecialFloat : DXILOpClass<[llvm_i1_ty, llvm_anyfloat_ty]>;
72+
def tertiary : DXILOpClass<[llvm_any_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>]>;
73+
def threadId : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
74+
def threadIdInGroup : DXILOpClass<[llvm_i32_ty, llvm_i32_ty]>;
75+
def unary : DXILOpClass<[llvm_any_ty, LLVMMatchType<0>]>;
23976

24077
// This is a sentinel definition. Hence placed at the end of the list
24178
// and not as part of the above alphabetically sorted valid definitions.
24279
// Additionally it is capitalized unlike all the others.
243-
def UnknownOpClass: DXILOpClass<[]>;
80+
def UnknownOpClass: DXILOpClass<[]>;
24481
}
24582

24683
// Abstraction DXIL Operation to LLVM intrinsic

llvm/utils/TableGen/DXILEmitter.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,7 @@ static std::string getOverloadKindStr(const Record *R) {
287287
// Constant value that is used to encode shader model version
288288
// denoting SM5.0
289289

290-
static std::string
291-
getOverloadKindStrs(const SmallVector<Record *> Recs) {
290+
static std::string getOverloadKindStrs(const SmallVector<Record *> Recs) {
292291
std::string OverloadString = "";
293292
std::string Prefix = "";
294293
OverloadString.append("{");
@@ -441,14 +440,14 @@ static void emitDXILOperationTable(std::vector<DXILOperationDesc> &Ops,
441440
if (OLParamIdx < 0) {
442441
OLParamIdx = (Op.OpTypes.size() > 1) ? 1 : 0;
443442
}
444-
OS << Prefix << " { dxil::OpCode::" << Op.OpName << ", " << OpStrings.get(Op.OpName)
445-
<< ", OpCodeClass::" << Op.OpClass << ", "
443+
OS << Prefix << " { dxil::OpCode::" << Op.OpName << ", "
444+
<< OpStrings.get(Op.OpName) << ", OpCodeClass::" << Op.OpClass << ", "
446445
<< OpClassStrings.get(Op.OpClass.data()) << ", "
447446
<< getOverloadKindStrs(Op.OpOverloads) << ", "
448447
<< emitDXILOperationAttr(Op.OpAttributes) << ", "
449448
<< Op.OverloadParamIndex << ", " << Op.OpTypes.size() - 1 << ", "
450449
<< Parameters.get(ParameterMap[Op.OpClass]) << " }\n";
451-
Prefix = ",";
450+
Prefix = ",";
452451
}
453452
OS << " };\n";
454453

0 commit comments

Comments
 (0)