1// Generated code, do not edit.
2
3#ifdef DXIL_VERSION
4DXIL_VERSION(1, 0)
5DXIL_VERSION(1, 1)
6DXIL_VERSION(1, 2)
7DXIL_VERSION(1, 3)
8DXIL_VERSION(1, 4)
9DXIL_VERSION(1, 5)
10DXIL_VERSION(1, 6)
11DXIL_VERSION(1, 7)
12DXIL_VERSION(1, 8)
13#undef DXIL_VERSION
14#endif
15
16#ifdef DXIL_OPCODE
17DXIL_OPCODE(4, LoadInput)
18DXIL_OPCODE(5, StoreOutput)
19DXIL_OPCODE(6, Abs)
20DXIL_OPCODE(7, Saturate)
21DXIL_OPCODE(8, IsNaN)
22DXIL_OPCODE(9, IsInf)
23DXIL_OPCODE(10, IsFinite)
24DXIL_OPCODE(11, IsNormal)
25DXIL_OPCODE(12, Cos)
26DXIL_OPCODE(13, Sin)
27DXIL_OPCODE(14, Tan)
28DXIL_OPCODE(15, ACos)
29DXIL_OPCODE(16, ASin)
30DXIL_OPCODE(17, ATan)
31DXIL_OPCODE(18, HCos)
32DXIL_OPCODE(19, HSin)
33DXIL_OPCODE(20, HTan)
34DXIL_OPCODE(21, Exp2)
35DXIL_OPCODE(22, Frac)
36DXIL_OPCODE(23, Log2)
37DXIL_OPCODE(24, Sqrt)
38DXIL_OPCODE(25, RSqrt)
39DXIL_OPCODE(26, Round)
40DXIL_OPCODE(27, Floor)
41DXIL_OPCODE(28, Ceil)
42DXIL_OPCODE(29, Trunc)
43DXIL_OPCODE(30, Rbits)
44DXIL_OPCODE(31, CountBits)
45DXIL_OPCODE(32, FirstbitLo)
46DXIL_OPCODE(33, FirstbitHi)
47DXIL_OPCODE(34, FirstbitSHi)
48DXIL_OPCODE(35, FMax)
49DXIL_OPCODE(36, FMin)
50DXIL_OPCODE(37, SMax)
51DXIL_OPCODE(38, SMin)
52DXIL_OPCODE(39, UMax)
53DXIL_OPCODE(40, UMin)
54DXIL_OPCODE(41, IMul)
55DXIL_OPCODE(42, UMul)
56DXIL_OPCODE(44, UAddc)
57DXIL_OPCODE(46, FMad)
58DXIL_OPCODE(47, Fma)
59DXIL_OPCODE(48, IMad)
60DXIL_OPCODE(49, UMad)
61DXIL_OPCODE(54, Dot2)
62DXIL_OPCODE(55, Dot3)
63DXIL_OPCODE(56, Dot4)
64DXIL_OPCODE(57, CreateHandle)
65DXIL_OPCODE(59, CBufferLoadLegacy)
66DXIL_OPCODE(60, Sample)
67DXIL_OPCODE(61, SampleBias)
68DXIL_OPCODE(62, SampleLevel)
69DXIL_OPCODE(63, SampleGrad)
70DXIL_OPCODE(66, TextureLoad)
71DXIL_OPCODE(67, TextureStore)
72DXIL_OPCODE(68, BufferLoad)
73DXIL_OPCODE(69, BufferStore)
74DXIL_OPCODE(70, UpdateCounter)
75DXIL_OPCODE(71, CheckAccessFullyMapped)
76DXIL_OPCODE(72, GetDimensions)
77DXIL_OPCODE(78, AtomicBinOp)
78DXIL_OPCODE(80, Barrier)
79DXIL_OPCODE(82, Discard)
80DXIL_OPCODE(83, DerivCoarseX)
81DXIL_OPCODE(84, DerivCoarseY)
82DXIL_OPCODE(85, DerivFineX)
83DXIL_OPCODE(86, DerivFineY)
84DXIL_OPCODE(93, ThreadId)
85DXIL_OPCODE(94, GroupId)
86DXIL_OPCODE(95, ThreadIdInGroup)
87DXIL_OPCODE(96, FlattenedThreadIdInGroup)
88DXIL_OPCODE(101, MakeDouble)
89DXIL_OPCODE(102, SplitDouble)
90DXIL_OPCODE(110, WaveIsFirstLane)
91DXIL_OPCODE(111, WaveGetLaneIndex)
92DXIL_OPCODE(112, WaveGetLaneCount)
93DXIL_OPCODE(113, WaveActiveAnyTrue)
94DXIL_OPCODE(114, WaveActiveAllTrue)
95DXIL_OPCODE(115, WaveActiveAllEqual)
96DXIL_OPCODE(116, WaveActiveBallot)
97DXIL_OPCODE(117, WaveReadLaneAt)
98DXIL_OPCODE(119, WaveActiveOp)
99DXIL_OPCODE(120, WaveActiveBit)
100DXIL_OPCODE(121, WavePrefixOp)
101DXIL_OPCODE(123, QuadOp)
102DXIL_OPCODE(130, LegacyF32ToF16)
103DXIL_OPCODE(131, LegacyF16ToF32)
104DXIL_OPCODE(135, WaveAllBitCount)
105DXIL_OPCODE(136, WavePrefixBitCount)
106DXIL_OPCODE(139, RawBufferLoad)
107DXIL_OPCODE(140, RawBufferStore)
108DXIL_OPCODE(162, Dot2AddHalf)
109DXIL_OPCODE(163, Dot4AddI8Packed)
110DXIL_OPCODE(164, Dot4AddU8Packed)
111DXIL_OPCODE(216, AnnotateHandle)
112DXIL_OPCODE(217, CreateHandleFromBinding)
113DXIL_OPCODE(218, CreateHandleFromHeap)
114#undef DXIL_OPCODE
115
116#endif
117
118#ifdef DXIL_OPCLASS
119DXIL_OPCLASS(UnknownOpClass)
120DXIL_OPCLASS(acceptHitAndEndSearch)
121DXIL_OPCLASS(allocateNodeOutputRecords)
122DXIL_OPCLASS(allocateRayQuery)
123DXIL_OPCLASS(annotateHandle)
124DXIL_OPCLASS(annotateNodeHandle)
125DXIL_OPCLASS(annotateNodeRecordHandle)
126DXIL_OPCLASS(atomicBinOp)
127DXIL_OPCLASS(atomicCompareExchange)
128DXIL_OPCLASS(attributeAtVertex)
129DXIL_OPCLASS(barrier)
130DXIL_OPCLASS(barrierByMemoryHandle)
131DXIL_OPCLASS(barrierByMemoryType)
132DXIL_OPCLASS(barrierByNodeRecordHandle)
133DXIL_OPCLASS(binary)
134DXIL_OPCLASS(binaryWithCarryOrBorrow)
135DXIL_OPCLASS(binaryWithTwoOuts)
136DXIL_OPCLASS(bitcastF16toI16)
137DXIL_OPCLASS(bitcastF32toI32)
138DXIL_OPCLASS(bitcastF64toI64)
139DXIL_OPCLASS(bitcastI16toF16)
140DXIL_OPCLASS(bitcastI32toF32)
141DXIL_OPCLASS(bitcastI64toF64)
142DXIL_OPCLASS(bufferLoad)
143DXIL_OPCLASS(bufferStore)
144DXIL_OPCLASS(bufferUpdateCounter)
145DXIL_OPCLASS(calculateLOD)
146DXIL_OPCLASS(callShader)
147DXIL_OPCLASS(cbufferLoad)
148DXIL_OPCLASS(cbufferLoadLegacy)
149DXIL_OPCLASS(checkAccessFullyMapped)
150DXIL_OPCLASS(coverage)
151DXIL_OPCLASS(createHandle)
152DXIL_OPCLASS(createHandleForLib)
153DXIL_OPCLASS(createHandleFromBinding)
154DXIL_OPCLASS(createHandleFromHeap)
155DXIL_OPCLASS(createNodeInputRecordHandle)
156DXIL_OPCLASS(createNodeOutputHandle)
157DXIL_OPCLASS(cutStream)
158DXIL_OPCLASS(cycleCounterLegacy)
159DXIL_OPCLASS(discard)
160DXIL_OPCLASS(dispatchMesh)
161DXIL_OPCLASS(dispatchRaysDimensions)
162DXIL_OPCLASS(dispatchRaysIndex)
163DXIL_OPCLASS(domainLocation)
164DXIL_OPCLASS(dot2)
165DXIL_OPCLASS(dot2AddHalf)
166DXIL_OPCLASS(dot3)
167DXIL_OPCLASS(dot4)
168DXIL_OPCLASS(dot4AddPacked)
169DXIL_OPCLASS(emitIndices)
170DXIL_OPCLASS(emitStream)
171DXIL_OPCLASS(emitThenCutStream)
172DXIL_OPCLASS(evalCentroid)
173DXIL_OPCLASS(evalSampleIndex)
174DXIL_OPCLASS(evalSnapped)
175DXIL_OPCLASS(finishedCrossGroupSharing)
176DXIL_OPCLASS(flattenedThreadIdInGroup)
177DXIL_OPCLASS(geometryIndex)
178DXIL_OPCLASS(getDimensions)
179DXIL_OPCLASS(getInputRecordCount)
180DXIL_OPCLASS(getMeshPayload)
181DXIL_OPCLASS(getNodeRecordPtr)
182DXIL_OPCLASS(getRemainingRecursionLevels)
183DXIL_OPCLASS(groupId)
184DXIL_OPCLASS(gsInstanceID)
185DXIL_OPCLASS(hitKind)
186DXIL_OPCLASS(ignoreHit)
187DXIL_OPCLASS(incrementOutputCount)
188DXIL_OPCLASS(indexNodeHandle)
189DXIL_OPCLASS(innerCoverage)
190DXIL_OPCLASS(instanceID)
191DXIL_OPCLASS(instanceIndex)
192DXIL_OPCLASS(isHelperLane)
193DXIL_OPCLASS(isSpecialFloat)
194DXIL_OPCLASS(legacyDoubleToFloat)
195DXIL_OPCLASS(legacyDoubleToSInt32)
196DXIL_OPCLASS(legacyDoubleToUInt32)
197DXIL_OPCLASS(legacyF16ToF32)
198DXIL_OPCLASS(legacyF32ToF16)
199DXIL_OPCLASS(loadInput)
200DXIL_OPCLASS(loadOutputControlPoint)
201DXIL_OPCLASS(loadPatchConstant)
202DXIL_OPCLASS(makeDouble)
203DXIL_OPCLASS(minPrecXRegLoad)
204DXIL_OPCLASS(minPrecXRegStore)
205DXIL_OPCLASS(nodeOutputIsValid)
206DXIL_OPCLASS(objectRayDirection)
207DXIL_OPCLASS(objectRayOrigin)
208DXIL_OPCLASS(objectToWorld)
209DXIL_OPCLASS(outputComplete)
210DXIL_OPCLASS(outputControlPointID)
211DXIL_OPCLASS(pack4x8)
212DXIL_OPCLASS(primitiveID)
213DXIL_OPCLASS(primitiveIndex)
214DXIL_OPCLASS(quadOp)
215DXIL_OPCLASS(quadReadLaneAt)
216DXIL_OPCLASS(quadVote)
217DXIL_OPCLASS(quaternary)
218DXIL_OPCLASS(rawBufferLoad)
219DXIL_OPCLASS(rawBufferStore)
220DXIL_OPCLASS(rayFlags)
221DXIL_OPCLASS(rayQuery_Abort)
222DXIL_OPCLASS(rayQuery_CommitNonOpaqueTriangleHit)
223DXIL_OPCLASS(rayQuery_CommitProceduralPrimitiveHit)
224DXIL_OPCLASS(rayQuery_Proceed)
225DXIL_OPCLASS(rayQuery_StateMatrix)
226DXIL_OPCLASS(rayQuery_StateScalar)
227DXIL_OPCLASS(rayQuery_StateVector)
228DXIL_OPCLASS(rayQuery_TraceRayInline)
229DXIL_OPCLASS(rayTCurrent)
230DXIL_OPCLASS(rayTMin)
231DXIL_OPCLASS(renderTargetGetSampleCount)
232DXIL_OPCLASS(renderTargetGetSamplePosition)
233DXIL_OPCLASS(reportHit)
234DXIL_OPCLASS(sample)
235DXIL_OPCLASS(sampleBias)
236DXIL_OPCLASS(sampleCmp)
237DXIL_OPCLASS(sampleCmpBias)
238DXIL_OPCLASS(sampleCmpGrad)
239DXIL_OPCLASS(sampleCmpLevel)
240DXIL_OPCLASS(sampleCmpLevelZero)
241DXIL_OPCLASS(sampleGrad)
242DXIL_OPCLASS(sampleIndex)
243DXIL_OPCLASS(sampleLevel)
244DXIL_OPCLASS(setMeshOutputCounts)
245DXIL_OPCLASS(splitDouble)
246DXIL_OPCLASS(startInstanceLocation)
247DXIL_OPCLASS(startVertexLocation)
248DXIL_OPCLASS(storeOutput)
249DXIL_OPCLASS(storePatchConstant)
250DXIL_OPCLASS(storePrimitiveOutput)
251DXIL_OPCLASS(storeVertexOutput)
252DXIL_OPCLASS(tempRegLoad)
253DXIL_OPCLASS(tempRegStore)
254DXIL_OPCLASS(tertiary)
255DXIL_OPCLASS(texture2DMSGetSamplePosition)
256DXIL_OPCLASS(textureGather)
257DXIL_OPCLASS(textureGatherCmp)
258DXIL_OPCLASS(textureGatherRaw)
259DXIL_OPCLASS(textureLoad)
260DXIL_OPCLASS(textureStore)
261DXIL_OPCLASS(textureStoreSample)
262DXIL_OPCLASS(threadId)
263DXIL_OPCLASS(threadIdInGroup)
264DXIL_OPCLASS(traceRay)
265DXIL_OPCLASS(unary)
266DXIL_OPCLASS(unaryBits)
267DXIL_OPCLASS(unpack4x8)
268DXIL_OPCLASS(viewID)
269DXIL_OPCLASS(waveActiveAllEqual)
270DXIL_OPCLASS(waveActiveBallot)
271DXIL_OPCLASS(waveActiveBit)
272DXIL_OPCLASS(waveActiveOp)
273DXIL_OPCLASS(waveAllOp)
274DXIL_OPCLASS(waveAllTrue)
275DXIL_OPCLASS(waveAnyTrue)
276DXIL_OPCLASS(waveGetLaneCount)
277DXIL_OPCLASS(waveGetLaneIndex)
278DXIL_OPCLASS(waveIsFirstLane)
279DXIL_OPCLASS(waveMatch)
280DXIL_OPCLASS(waveMatrix_Accumulate)
281DXIL_OPCLASS(waveMatrix_Annotate)
282DXIL_OPCLASS(waveMatrix_Depth)
283DXIL_OPCLASS(waveMatrix_Fill)
284DXIL_OPCLASS(waveMatrix_LoadGroupShared)
285DXIL_OPCLASS(waveMatrix_LoadRawBuf)
286DXIL_OPCLASS(waveMatrix_Multiply)
287DXIL_OPCLASS(waveMatrix_ScalarOp)
288DXIL_OPCLASS(waveMatrix_StoreGroupShared)
289DXIL_OPCLASS(waveMatrix_StoreRawBuf)
290DXIL_OPCLASS(waveMultiPrefixBitCount)
291DXIL_OPCLASS(waveMultiPrefixOp)
292DXIL_OPCLASS(wavePrefixOp)
293DXIL_OPCLASS(waveReadLaneAt)
294DXIL_OPCLASS(waveReadLaneFirst)
295DXIL_OPCLASS(worldRayDirection)
296DXIL_OPCLASS(worldRayOrigin)
297DXIL_OPCLASS(worldToObject)
298DXIL_OPCLASS(writeSamplerFeedback)
299DXIL_OPCLASS(writeSamplerFeedbackBias)
300DXIL_OPCLASS(writeSamplerFeedbackGrad)
301DXIL_OPCLASS(writeSamplerFeedbackLevel)
302#undef DXIL_OPCLASS
303#endif
304
305#ifdef DXIL_OP_PARAM_TYPE
306DXIL_OP_PARAM_TYPE(BinaryWithCarryTy)
307DXIL_OP_PARAM_TYPE(CBufRetDoubleTy)
308DXIL_OP_PARAM_TYPE(CBufRetFloatTy)
309DXIL_OP_PARAM_TYPE(CBufRetHalfTy)
310DXIL_OP_PARAM_TYPE(CBufRetInt16Ty)
311DXIL_OP_PARAM_TYPE(CBufRetInt32Ty)
312DXIL_OP_PARAM_TYPE(CBufRetInt64Ty)
313DXIL_OP_PARAM_TYPE(DimensionsTy)
314DXIL_OP_PARAM_TYPE(DoubleTy)
315DXIL_OP_PARAM_TYPE(FloatTy)
316DXIL_OP_PARAM_TYPE(Fouri32s)
317DXIL_OP_PARAM_TYPE(HalfTy)
318DXIL_OP_PARAM_TYPE(HandleTy)
319DXIL_OP_PARAM_TYPE(Int1Ty)
320DXIL_OP_PARAM_TYPE(Int8Ty)
321DXIL_OP_PARAM_TYPE(Int16Ty)
322DXIL_OP_PARAM_TYPE(Int32Ty)
323DXIL_OP_PARAM_TYPE(Int64Ty)
324DXIL_OP_PARAM_TYPE(OverloadTy)
325DXIL_OP_PARAM_TYPE(ResBindTy)
326DXIL_OP_PARAM_TYPE(ResPropsTy)
327DXIL_OP_PARAM_TYPE(ResRetDoubleTy)
328DXIL_OP_PARAM_TYPE(ResRetFloatTy)
329DXIL_OP_PARAM_TYPE(ResRetHalfTy)
330DXIL_OP_PARAM_TYPE(ResRetInt16Ty)
331DXIL_OP_PARAM_TYPE(ResRetInt32Ty)
332DXIL_OP_PARAM_TYPE(ResRetInt64Ty)
333DXIL_OP_PARAM_TYPE(SplitDoubleTy)
334DXIL_OP_PARAM_TYPE(TwoI32Ty)
335DXIL_OP_PARAM_TYPE(VoidTy)
336#undef DXIL_OP_PARAM_TYPE
337#endif
338
339#ifdef DXIL_ATTRIBUTE
340DXIL_ATTRIBUTE(NoDuplicate)
341DXIL_ATTRIBUTE(NoReturn)
342DXIL_ATTRIBUTE(ReadNone)
343DXIL_ATTRIBUTE(ReadOnly)
344#undef DXIL_ATTRIBUTE
345#endif
346
347#ifdef DXIL_OP_ATTRIBUTES
348DXIL_OP_ATTRIBUTES(dxil::OpCode::LoadInput, 1, 0, false, false, false, true)
349DXIL_OP_ATTRIBUTES(dxil::OpCode::Abs, 1, 0, false, false, true, false)
350DXIL_OP_ATTRIBUTES(dxil::OpCode::Saturate, 1, 0, false, false, true, false)
351DXIL_OP_ATTRIBUTES(dxil::OpCode::IsNaN, 1, 0, false, false, true, false)
352DXIL_OP_ATTRIBUTES(dxil::OpCode::IsInf, 1, 0, false, false, true, false)
353DXIL_OP_ATTRIBUTES(dxil::OpCode::IsFinite, 1, 0, false, false, true, false)
354DXIL_OP_ATTRIBUTES(dxil::OpCode::IsNormal, 1, 0, false, false, true, false)
355DXIL_OP_ATTRIBUTES(dxil::OpCode::Cos, 1, 0, false, false, true, false)
356DXIL_OP_ATTRIBUTES(dxil::OpCode::Sin, 1, 0, false, false, true, false)
357DXIL_OP_ATTRIBUTES(dxil::OpCode::Tan, 1, 0, false, false, true, false)
358DXIL_OP_ATTRIBUTES(dxil::OpCode::ACos, 1, 0, false, false, true, false)
359DXIL_OP_ATTRIBUTES(dxil::OpCode::ASin, 1, 0, false, false, true, false)
360DXIL_OP_ATTRIBUTES(dxil::OpCode::ATan, 1, 0, false, false, true, false)
361DXIL_OP_ATTRIBUTES(dxil::OpCode::HCos, 1, 0, false, false, true, false)
362DXIL_OP_ATTRIBUTES(dxil::OpCode::HSin, 1, 0, false, false, true, false)
363DXIL_OP_ATTRIBUTES(dxil::OpCode::HTan, 1, 0, false, false, true, false)
364DXIL_OP_ATTRIBUTES(dxil::OpCode::Exp2, 1, 0, false, false, true, false)
365DXIL_OP_ATTRIBUTES(dxil::OpCode::Frac, 1, 0, false, false, true, false)
366DXIL_OP_ATTRIBUTES(dxil::OpCode::Log2, 1, 0, false, false, true, false)
367DXIL_OP_ATTRIBUTES(dxil::OpCode::Sqrt, 1, 0, false, false, true, false)
368DXIL_OP_ATTRIBUTES(dxil::OpCode::RSqrt, 1, 0, false, false, true, false)
369DXIL_OP_ATTRIBUTES(dxil::OpCode::Round, 1, 0, false, false, true, false)
370DXIL_OP_ATTRIBUTES(dxil::OpCode::Floor, 1, 0, false, false, true, false)
371DXIL_OP_ATTRIBUTES(dxil::OpCode::Ceil, 1, 0, false, false, true, false)
372DXIL_OP_ATTRIBUTES(dxil::OpCode::Trunc, 1, 0, false, false, true, false)
373DXIL_OP_ATTRIBUTES(dxil::OpCode::Rbits, 1, 0, false, false, true, false)
374DXIL_OP_ATTRIBUTES(dxil::OpCode::CountBits, 1, 0, false, false, true, false)
375DXIL_OP_ATTRIBUTES(dxil::OpCode::FirstbitLo, 1, 0, false, false, true, false)
376DXIL_OP_ATTRIBUTES(dxil::OpCode::FirstbitHi, 1, 0, false, false, true, false)
377DXIL_OP_ATTRIBUTES(dxil::OpCode::FirstbitSHi, 1, 0, false, false, true, false)
378DXIL_OP_ATTRIBUTES(dxil::OpCode::FMax, 1, 0, false, false, true, false)
379DXIL_OP_ATTRIBUTES(dxil::OpCode::FMin, 1, 0, false, false, true, false)
380DXIL_OP_ATTRIBUTES(dxil::OpCode::SMax, 1, 0, false, false, true, false)
381DXIL_OP_ATTRIBUTES(dxil::OpCode::SMin, 1, 0, false, false, true, false)
382DXIL_OP_ATTRIBUTES(dxil::OpCode::UMax, 1, 0, false, false, true, false)
383DXIL_OP_ATTRIBUTES(dxil::OpCode::UMin, 1, 0, false, false, true, false)
384DXIL_OP_ATTRIBUTES(dxil::OpCode::IMul, 1, 0, false, false, true, false)
385DXIL_OP_ATTRIBUTES(dxil::OpCode::UMul, 1, 0, false, false, true, false)
386DXIL_OP_ATTRIBUTES(dxil::OpCode::UAddc, 1, 0, false, false, true, false)
387DXIL_OP_ATTRIBUTES(dxil::OpCode::FMad, 1, 0, false, false, true, false)
388DXIL_OP_ATTRIBUTES(dxil::OpCode::Fma, 1, 0, false, false, true, false)
389DXIL_OP_ATTRIBUTES(dxil::OpCode::IMad, 1, 0, false, false, true, false)
390DXIL_OP_ATTRIBUTES(dxil::OpCode::UMad, 1, 0, false, false, true, false)
391DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot2, 1, 0, false, false, true, false)
392DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot3, 1, 0, false, false, true, false)
393DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot4, 1, 0, false, false, true, false)
394DXIL_OP_ATTRIBUTES(dxil::OpCode::CreateHandle, 1, 0, false, false, false, true)
395DXIL_OP_ATTRIBUTES(dxil::OpCode::CBufferLoadLegacy, 1, 0, false, false, false, true)
396DXIL_OP_ATTRIBUTES(dxil::OpCode::Sample, 1, 0, false, false, false, true)
397DXIL_OP_ATTRIBUTES(dxil::OpCode::SampleBias, 1, 0, false, false, false, true)
398DXIL_OP_ATTRIBUTES(dxil::OpCode::SampleLevel, 1, 0, false, false, false, true)
399DXIL_OP_ATTRIBUTES(dxil::OpCode::SampleGrad, 1, 0, false, false, false, true)
400DXIL_OP_ATTRIBUTES(dxil::OpCode::TextureLoad, 1, 0, false, false, false, true)
401DXIL_OP_ATTRIBUTES(dxil::OpCode::BufferLoad, 1, 0, false, false, false, true)
402DXIL_OP_ATTRIBUTES(dxil::OpCode::CheckAccessFullyMapped, 1, 0, false, false, false, true)
403DXIL_OP_ATTRIBUTES(dxil::OpCode::Barrier, 1, 0, false, false, false, false)
404DXIL_OP_ATTRIBUTES(dxil::OpCode::ThreadId, 1, 0, false, false, true, false)
405DXIL_OP_ATTRIBUTES(dxil::OpCode::GroupId, 1, 0, false, false, true, false)
406DXIL_OP_ATTRIBUTES(dxil::OpCode::ThreadIdInGroup, 1, 0, false, false, true, false)
407DXIL_OP_ATTRIBUTES(dxil::OpCode::FlattenedThreadIdInGroup, 1, 0, false, false, true, false)
408DXIL_OP_ATTRIBUTES(dxil::OpCode::MakeDouble, 1, 0, false, false, true, false)
409DXIL_OP_ATTRIBUTES(dxil::OpCode::SplitDouble, 1, 0, false, false, true, false)
410DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveGetLaneIndex, 1, 0, false, false, false, true)
411DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveGetLaneCount, 1, 0, false, false, false, true)
412DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveActiveOp, 1, 0, false, false, false, false)
413DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveActiveBit, 1, 0, false, false, false, false)
414DXIL_OP_ATTRIBUTES(dxil::OpCode::WavePrefixOp, 1, 0, false, false, false, false)
415DXIL_OP_ATTRIBUTES(dxil::OpCode::QuadOp, 1, 0, false, false, false, false)
416DXIL_OP_ATTRIBUTES(dxil::OpCode::WavePrefixBitCount, 1, 0, false, false, false, false)
417DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot2AddHalf, 1, 4, false, false, true, false)
418DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot4AddI8Packed, 1, 4, false, false, true, false)
419DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot4AddU8Packed, 1, 4, false, false, true, false)
420DXIL_OP_ATTRIBUTES(dxil::OpCode::AnnotateHandle, 1, 0, false, false, true, false)
421DXIL_OP_ATTRIBUTES(dxil::OpCode::CreateHandleFromBinding, 1, 0, false, false, true, false)
422DXIL_OP_ATTRIBUTES(dxil::OpCode::CreateHandleFromHeap, 1, 0, false, false, true, false)
423#undef DXIL_OP_ATTRIBUTES
424#endif
425
426#ifndef DXIL_OP_FUNCTION_TYPE
427#define DXIL_OP_FUNCTION_TYPE(OpCode, RetType, ...)
428#endif
429DXIL_OP_FUNCTION_TYPE(dxil::OpCode::LoadInput, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty)
430DXIL_OP_FUNCTION_TYPE(dxil::OpCode::StoreOutput, dxil::OpParamType::VoidTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int8Ty, dxil::OpParamType::OverloadTy)
431DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Abs, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
432DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Saturate, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
433DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsNaN, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy)
434DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsInf, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy)
435DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsFinite, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy)
436DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsNormal, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy)
437DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Cos, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
438DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Sin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
439DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Tan, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
440DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ACos, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
441DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ASin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
442DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ATan, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
443DXIL_OP_FUNCTION_TYPE(dxil::OpCode::HCos, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
444DXIL_OP_FUNCTION_TYPE(dxil::OpCode::HSin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
445DXIL_OP_FUNCTION_TYPE(dxil::OpCode::HTan, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
446DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Exp2, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
447DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Frac, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
448DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Log2, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
449DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Sqrt, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
450DXIL_OP_FUNCTION_TYPE(dxil::OpCode::RSqrt, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
451DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Round, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
452DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Floor, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
453DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Ceil, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
454DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Trunc, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
455DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Rbits, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
456DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CountBits, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy)
457DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FirstbitLo, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy)
458DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FirstbitHi, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy)
459DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FirstbitSHi, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy)
460DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FMax, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
461DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FMin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
462DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SMax, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
463DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SMin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
464DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMax, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
465DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
466DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IMul, dxil::OpParamType::TwoI32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
467DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMul, dxil::OpParamType::TwoI32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
468DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UAddc, dxil::OpParamType::BinaryWithCarryTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
469DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FMad, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
470DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Fma, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
471DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IMad, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
472DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMad, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
473DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot2, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
474DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot3, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
475DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot4, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
476DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CreateHandle, dxil::OpParamType::HandleTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty)
477DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CBufferLoadLegacy, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty)
478DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Sample, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::HandleTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::FloatTy)
479DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SampleBias, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::HandleTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy)
480DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SampleLevel, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::HandleTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::FloatTy)
481DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SampleGrad, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::HandleTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy, dxil::OpParamType::FloatTy)
482DXIL_OP_FUNCTION_TYPE(dxil::OpCode::TextureLoad, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty)
483DXIL_OP_FUNCTION_TYPE(dxil::OpCode::TextureStore, dxil::OpParamType::VoidTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty)
484DXIL_OP_FUNCTION_TYPE(dxil::OpCode::BufferLoad, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty)
485DXIL_OP_FUNCTION_TYPE(dxil::OpCode::BufferStore, dxil::OpParamType::VoidTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty)
486DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UpdateCounter, dxil::OpParamType::Int32Ty, dxil::OpParamType::HandleTy, dxil::OpParamType::Int8Ty)
487DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CheckAccessFullyMapped, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy)
488DXIL_OP_FUNCTION_TYPE(dxil::OpCode::GetDimensions, dxil::OpParamType::DimensionsTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty)
489DXIL_OP_FUNCTION_TYPE(dxil::OpCode::AtomicBinOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy)
490DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Barrier, dxil::OpParamType::VoidTy, dxil::OpParamType::Int32Ty)
491DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Discard, dxil::OpParamType::VoidTy, dxil::OpParamType::Int1Ty)
492DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivCoarseX, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
493DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivCoarseY, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
494DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivFineX, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
495DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivFineY, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
496DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ThreadId, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
497DXIL_OP_FUNCTION_TYPE(dxil::OpCode::GroupId, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
498DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ThreadIdInGroup, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy)
499DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FlattenedThreadIdInGroup, dxil::OpParamType::OverloadTy, )
500DXIL_OP_FUNCTION_TYPE(dxil::OpCode::MakeDouble, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty)
501DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SplitDouble, dxil::OpParamType::SplitDoubleTy, dxil::OpParamType::OverloadTy)
502DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveIsFirstLane, dxil::OpParamType::Int1Ty, )
503DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveGetLaneIndex, dxil::OpParamType::Int32Ty, )
504DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveGetLaneCount, dxil::OpParamType::Int32Ty, )
505DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveAnyTrue, dxil::OpParamType::Int1Ty, dxil::OpParamType::Int1Ty)
506DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveAllTrue, dxil::OpParamType::Int1Ty, dxil::OpParamType::Int1Ty)
507DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveAllEqual, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy)
508DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveBallot, dxil::OpParamType::Fouri32s, dxil::OpParamType::Int1Ty)
509DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveReadLaneAt, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty)
510DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int8Ty)
511DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveBit, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty)
512DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WavePrefixOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int8Ty)
513DXIL_OP_FUNCTION_TYPE(dxil::OpCode::QuadOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty)
514DXIL_OP_FUNCTION_TYPE(dxil::OpCode::LegacyF32ToF16, dxil::OpParamType::Int32Ty, dxil::OpParamType::FloatTy)
515DXIL_OP_FUNCTION_TYPE(dxil::OpCode::LegacyF16ToF32, dxil::OpParamType::FloatTy, dxil::OpParamType::Int32Ty)
516DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveAllBitCount, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty)
517DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WavePrefixBitCount, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty)
518DXIL_OP_FUNCTION_TYPE(dxil::OpCode::RawBufferLoad, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty)
519DXIL_OP_FUNCTION_TYPE(dxil::OpCode::RawBufferStore, dxil::OpParamType::VoidTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty)
520DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot2AddHalf, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::HalfTy, dxil::OpParamType::HalfTy, dxil::OpParamType::HalfTy, dxil::OpParamType::HalfTy)
521DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot4AddI8Packed, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty)
522DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot4AddU8Packed, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty)
523DXIL_OP_FUNCTION_TYPE(dxil::OpCode::AnnotateHandle, dxil::OpParamType::HandleTy, dxil::OpParamType::HandleTy, dxil::OpParamType::ResPropsTy)
524DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CreateHandleFromBinding, dxil::OpParamType::HandleTy, dxil::OpParamType::ResBindTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty)
525DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CreateHandleFromHeap, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty, dxil::OpParamType::Int1Ty)
526#undef DXIL_OP_FUNCTION_TYPE
527#ifdef DXIL_OP_INTRINSIC_ARG_SELECT_TYPE
528DXIL_OP_INTRINSIC_ARG_SELECT_TYPE(I8)
529DXIL_OP_INTRINSIC_ARG_SELECT_TYPE(I32)
530DXIL_OP_INTRINSIC_ARG_SELECT_TYPE(Index)
531#undef DXIL_OP_INTRINSIC_ARG_SELECT_TYPE
532#endif
533
534#ifdef DXIL_OP_INTRINSIC
535
536DXIL_OP_INTRINSIC(dxil::OpCode::LoadInput, Intrinsic::dx_load_input, )
537DXIL_OP_INTRINSIC(dxil::OpCode::StoreOutput, Intrinsic::dx_store_output, )
538DXIL_OP_INTRINSIC(dxil::OpCode::Abs, Intrinsic::fabs, )
539DXIL_OP_INTRINSIC(dxil::OpCode::Saturate, Intrinsic::dx_saturate, )
540DXIL_OP_INTRINSIC(dxil::OpCode::IsNaN, Intrinsic::dx_isnan, )
541DXIL_OP_INTRINSIC(dxil::OpCode::IsInf, Intrinsic::dx_isinf, )
542DXIL_OP_INTRINSIC(dxil::OpCode::Cos, Intrinsic::cos, )
543DXIL_OP_INTRINSIC(dxil::OpCode::Sin, Intrinsic::sin, )
544DXIL_OP_INTRINSIC(dxil::OpCode::Tan, Intrinsic::tan, )
545DXIL_OP_INTRINSIC(dxil::OpCode::ACos, Intrinsic::acos, )
546DXIL_OP_INTRINSIC(dxil::OpCode::ASin, Intrinsic::asin, )
547DXIL_OP_INTRINSIC(dxil::OpCode::ATan, Intrinsic::atan, )
548DXIL_OP_INTRINSIC(dxil::OpCode::HCos, Intrinsic::cosh, )
549DXIL_OP_INTRINSIC(dxil::OpCode::HSin, Intrinsic::sinh, )
550DXIL_OP_INTRINSIC(dxil::OpCode::HTan, Intrinsic::tanh, )
551DXIL_OP_INTRINSIC(dxil::OpCode::Exp2, Intrinsic::exp2, )
552DXIL_OP_INTRINSIC(dxil::OpCode::Frac, Intrinsic::dx_frac, )
553DXIL_OP_INTRINSIC(dxil::OpCode::Log2, Intrinsic::log2, )
554DXIL_OP_INTRINSIC(dxil::OpCode::Sqrt, Intrinsic::sqrt, )
555DXIL_OP_INTRINSIC(dxil::OpCode::RSqrt, Intrinsic::dx_rsqrt, )
556DXIL_OP_INTRINSIC(dxil::OpCode::Round, Intrinsic::roundeven, )
557DXIL_OP_INTRINSIC(dxil::OpCode::Floor, Intrinsic::floor, )
558DXIL_OP_INTRINSIC(dxil::OpCode::Ceil, Intrinsic::ceil, )
559DXIL_OP_INTRINSIC(dxil::OpCode::Trunc, Intrinsic::trunc, )
560DXIL_OP_INTRINSIC(dxil::OpCode::Rbits, Intrinsic::bitreverse, )
561DXIL_OP_INTRINSIC(dxil::OpCode::FirstbitLo, Intrinsic::dx_firstbitlow, )
562DXIL_OP_INTRINSIC(dxil::OpCode::FirstbitHi, Intrinsic::dx_firstbituhigh, )
563DXIL_OP_INTRINSIC(dxil::OpCode::FirstbitSHi, Intrinsic::dx_firstbitshigh, )
564DXIL_OP_INTRINSIC(dxil::OpCode::FMax, Intrinsic::maxnum, )
565DXIL_OP_INTRINSIC(dxil::OpCode::FMin, Intrinsic::minnum, )
566DXIL_OP_INTRINSIC(dxil::OpCode::SMax, Intrinsic::smax, )
567DXIL_OP_INTRINSIC(dxil::OpCode::SMin, Intrinsic::smin, )
568DXIL_OP_INTRINSIC(dxil::OpCode::UMax, Intrinsic::umax, )
569DXIL_OP_INTRINSIC(dxil::OpCode::UMin, Intrinsic::umin, )
570DXIL_OP_INTRINSIC(dxil::OpCode::IMul, Intrinsic::dx_imul, )
571DXIL_OP_INTRINSIC(dxil::OpCode::UMul, Intrinsic::dx_umul, )
572DXIL_OP_INTRINSIC(dxil::OpCode::UAddc, Intrinsic::uadd_with_overflow, )
573DXIL_OP_INTRINSIC(dxil::OpCode::FMad, Intrinsic::fmuladd, )
574DXIL_OP_INTRINSIC(dxil::OpCode::Fma, Intrinsic::fma, )
575DXIL_OP_INTRINSIC(dxil::OpCode::IMad, Intrinsic::dx_imad, )
576DXIL_OP_INTRINSIC(dxil::OpCode::UMad, Intrinsic::dx_umad, )
577DXIL_OP_INTRINSIC(dxil::OpCode::Dot2, Intrinsic::dx_dot2, )
578DXIL_OP_INTRINSIC(dxil::OpCode::Dot3, Intrinsic::dx_dot3, )
579DXIL_OP_INTRINSIC(dxil::OpCode::Dot4, Intrinsic::dx_dot4, )
580DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_all_memory_barrier, (IntrinArgSelect{IntrinArgSelect::Type::I32,10}), )
581DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_all_memory_barrier_with_group_sync, (IntrinArgSelect{IntrinArgSelect::Type::I32,11}), )
582DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_device_memory_barrier, (IntrinArgSelect{IntrinArgSelect::Type::I32,2}), )
583DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_device_memory_barrier_with_group_sync, (IntrinArgSelect{IntrinArgSelect::Type::I32,3}), )
584DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_group_memory_barrier, (IntrinArgSelect{IntrinArgSelect::Type::I32,8}), )
585DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_group_memory_barrier_with_group_sync, (IntrinArgSelect{IntrinArgSelect::Type::I32,9}), )
586DXIL_OP_INTRINSIC(dxil::OpCode::Discard, Intrinsic::dx_discard, )
587DXIL_OP_INTRINSIC(dxil::OpCode::DerivCoarseX, Intrinsic::dx_ddx_coarse, )
588DXIL_OP_INTRINSIC(dxil::OpCode::DerivCoarseY, Intrinsic::dx_ddy_coarse, )
589DXIL_OP_INTRINSIC(dxil::OpCode::DerivFineX, Intrinsic::dx_ddx_fine, )
590DXIL_OP_INTRINSIC(dxil::OpCode::DerivFineY, Intrinsic::dx_ddy_fine, )
591DXIL_OP_INTRINSIC(dxil::OpCode::ThreadId, Intrinsic::dx_thread_id, )
592DXIL_OP_INTRINSIC(dxil::OpCode::GroupId, Intrinsic::dx_group_id, )
593DXIL_OP_INTRINSIC(dxil::OpCode::ThreadIdInGroup, Intrinsic::dx_thread_id_in_group, )
594DXIL_OP_INTRINSIC(dxil::OpCode::FlattenedThreadIdInGroup, Intrinsic::dx_flattened_thread_id_in_group, )
595DXIL_OP_INTRINSIC(dxil::OpCode::MakeDouble, Intrinsic::dx_asdouble, )
596DXIL_OP_INTRINSIC(dxil::OpCode::SplitDouble, Intrinsic::dx_splitdouble, )
597DXIL_OP_INTRINSIC(dxil::OpCode::WaveIsFirstLane, Intrinsic::dx_wave_is_first_lane, )
598DXIL_OP_INTRINSIC(dxil::OpCode::WaveGetLaneIndex, Intrinsic::dx_wave_getlaneindex, )
599DXIL_OP_INTRINSIC(dxil::OpCode::WaveGetLaneCount, Intrinsic::dx_wave_get_lane_count, )
600DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveAnyTrue, Intrinsic::dx_wave_any, )
601DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveAllTrue, Intrinsic::dx_wave_all, )
602DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveAllEqual, Intrinsic::dx_wave_all_equal, )
603DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBallot, Intrinsic::dx_wave_ballot, )
604DXIL_OP_INTRINSIC(dxil::OpCode::WaveReadLaneAt, Intrinsic::dx_wave_readlane, )
605DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_reduce_sum, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
606DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_reduce_usum, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
607DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_product, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
608DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_uproduct, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
609DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_reduce_max, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,3}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
610DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_reduce_umax, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,3}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
611DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_reduce_min, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,2}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
612DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_reduce_umin, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,2}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
613DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBit, Intrinsic::dx_wave_reduce_or, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
614DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBit, Intrinsic::dx_wave_reduce_xor, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,2}), )
615DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBit, Intrinsic::dx_wave_reduce_and, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
616DXIL_OP_INTRINSIC(dxil::OpCode::WavePrefixOp, Intrinsic::dx_wave_prefix_sum, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
617DXIL_OP_INTRINSIC(dxil::OpCode::WavePrefixOp, Intrinsic::dx_wave_prefix_usum, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
618DXIL_OP_INTRINSIC(dxil::OpCode::WavePrefixOp, Intrinsic::dx_wave_prefix_product, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
619DXIL_OP_INTRINSIC(dxil::OpCode::WavePrefixOp, Intrinsic::dx_wave_prefix_uproduct, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
620DXIL_OP_INTRINSIC(dxil::OpCode::QuadOp, Intrinsic::dx_quad_read_across_x, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), )
621DXIL_OP_INTRINSIC(dxil::OpCode::QuadOp, Intrinsic::dx_quad_read_across_y, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), )
622DXIL_OP_INTRINSIC(dxil::OpCode::QuadOp, Intrinsic::dx_quad_read_across_diagonal, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,2}), )
623DXIL_OP_INTRINSIC(dxil::OpCode::LegacyF32ToF16, Intrinsic::dx_legacyf32tof16, )
624DXIL_OP_INTRINSIC(dxil::OpCode::LegacyF16ToF32, Intrinsic::dx_legacyf16tof32, )
625DXIL_OP_INTRINSIC(dxil::OpCode::WaveAllBitCount, Intrinsic::dx_wave_active_countbits, )
626DXIL_OP_INTRINSIC(dxil::OpCode::WavePrefixBitCount, Intrinsic::dx_wave_prefix_bit_count, )
627DXIL_OP_INTRINSIC(dxil::OpCode::Dot2AddHalf, Intrinsic::dx_dot2add, )
628DXIL_OP_INTRINSIC(dxil::OpCode::Dot4AddI8Packed, Intrinsic::dx_dot4add_i8packed, )
629DXIL_OP_INTRINSIC(dxil::OpCode::Dot4AddU8Packed, Intrinsic::dx_dot4add_u8packed, )
630
631#undef DXIL_OP_INTRINSIC
632#endif
633
634#ifdef DXIL_OP_OPERATION_TABLE
635
636// Valid shader kinds
637
638enum ShaderKind : uint32_t {
639 all_stages = 0x3FFFF, // Pseudo-stage indicating op is supported in all stages
640 amplification = 1 << 1,
641 anyhit = 1 << 2,
642 callable = 1 << 3,
643 closesthit = 1 << 4,
644 compute = 1 << 5,
645 domain = 1 << 6,
646 geometry = 1 << 7,
647 hull = 1 << 8,
648 intersection = 1 << 9,
649 library = 1 << 10,
650 mesh = 1 << 11,
651 miss = 1 << 12,
652 node = 1 << 13,
653 pixel = 1 << 14,
654 raygeneration = 1 << 15,
655 removed = 0, // Pseudo-stage indicating op not supported in any stage
656 vertex = 1 << 16,
657}; // enum ShaderKind
658
659static const OpCodeProperty *getOpCodeProperty(dxil::OpCode Op) {
660 static const OpCodeProperty OpCodeProps[] = {
661 { dxil::OpCode::LoadInput, 868, OpCodeClass::loadInput, 636, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
662 { dxil::OpCode::StoreOutput, 878, OpCodeClass::storeOutput, 646, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 4 },
663 { dxil::OpCode::Abs, 720, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
664 { dxil::OpCode::Saturate, 370, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
665 { dxil::OpCode::IsNaN, 55, OpCodeClass::isSpecialFloat, 573, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
666 { dxil::OpCode::IsInf, 436, OpCodeClass::isSpecialFloat, 573, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
667 { dxil::OpCode::IsFinite, 379, OpCodeClass::isSpecialFloat, 573, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
668 { dxil::OpCode::IsNormal, 489, OpCodeClass::isSpecialFloat, 573, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
669 { dxil::OpCode::Cos, 739, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
670 { dxil::OpCode::Sin, 570, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
671 { dxil::OpCode::Tan, 545, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
672 { dxil::OpCode::ACos, 738, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
673 { dxil::OpCode::ASin, 569, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
674 { dxil::OpCode::ATan, 544, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
675 { dxil::OpCode::HCos, 743, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
676 { dxil::OpCode::HSin, 574, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
677 { dxil::OpCode::HTan, 549, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
678 { dxil::OpCode::Exp2, 20, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
679 { dxil::OpCode::Frac, 113, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
680 { dxil::OpCode::Log2, 15, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
681 { dxil::OpCode::Sqrt, 863, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
682 { dxil::OpCode::RSqrt, 862, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
683 { dxil::OpCode::Round, 254, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
684 { dxil::OpCode::Floor, 703, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
685 { dxil::OpCode::Ceil, 529, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
686 { dxil::OpCode::Trunc, 124, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
687 { dxil::OpCode::Rbits, 758, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
688 { dxil::OpCode::CountBits, 748, OpCodeClass::unaryBits, 530, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
689 { dxil::OpCode::FirstbitLo, 579, OpCodeClass::unaryBits, 530, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
690 { dxil::OpCode::FirstbitHi, 478, OpCodeClass::unaryBits, 530, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
691 { dxil::OpCode::FirstbitSHi, 466, OpCodeClass::unaryBits, 530, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
692 { dxil::OpCode::FMax, 890, OpCodeClass::binary, 726, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
693 { dxil::OpCode::FMin, 554, OpCodeClass::binary, 726, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
694 { dxil::OpCode::SMax, 895, OpCodeClass::binary, 726, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
695 { dxil::OpCode::SMin, 559, OpCodeClass::binary, 726, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
696 { dxil::OpCode::UMax, 900, OpCodeClass::binary, 726, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
697 { dxil::OpCode::UMin, 564, OpCodeClass::binary, 726, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
698 { dxil::OpCode::IMul, 534, OpCodeClass::binaryWithTwoOuts, 540, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
699 { dxil::OpCode::UMul, 539, OpCodeClass::binaryWithTwoOuts, 540, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
700 { dxil::OpCode::UAddc, 118, OpCodeClass::binaryWithCarryOrBorrow, 658, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
701 { dxil::OpCode::FMad, 147, OpCodeClass::tertiary, 717, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
702 { dxil::OpCode::Fma, 109, OpCodeClass::tertiary, 717, {{{1, 0}, OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
703 { dxil::OpCode::IMad, 152, OpCodeClass::tertiary, 717, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
704 { dxil::OpCode::UMad, 157, OpCodeClass::tertiary, 717, {{{1, 0}, OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
705 { dxil::OpCode::Dot2, 25, OpCodeClass::dot2, 15, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
706 { dxil::OpCode::Dot3, 30, OpCodeClass::dot3, 20, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
707 { dxil::OpCode::Dot4, 35, OpCodeClass::dot4, 25, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
708 { dxil::OpCode::CreateHandle, 291, OpCodeClass::createHandle, 178, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}, {{1, 6}, ShaderKind::removed}}, -1 },
709 { dxil::OpCode::CBufferLoadLegacy, 922, OpCodeClass::cbufferLoadLegacy, 699, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
710 { dxil::OpCode::Sample, 319, OpCodeClass::sample, 206, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}, {{1, 7}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::library | ShaderKind::pixel}, {{1, 6}, ShaderKind::library | ShaderKind::pixel | ShaderKind::compute | ShaderKind::amplification | ShaderKind::mesh | ShaderKind::node}}, 0 },
711 { dxil::OpCode::SampleBias, 709, OpCodeClass::sampleBias, 505, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}, {{1, 7}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::library | ShaderKind::pixel}, {{1, 6}, ShaderKind::library | ShaderKind::pixel | ShaderKind::compute | ShaderKind::amplification | ShaderKind::mesh | ShaderKind::node}}, 0 },
712 { dxil::OpCode::SampleLevel, 517, OpCodeClass::sampleLevel, 348, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}, {{1, 7}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
713 { dxil::OpCode::SampleGrad, 188, OpCodeClass::sampleGrad, 99, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}, {{1, 7}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
714 { dxil::OpCode::TextureLoad, 162, OpCodeClass::textureLoad, 62, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
715 { dxil::OpCode::TextureStore, 342, OpCodeClass::textureStore, 229, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 5 },
716 { dxil::OpCode::BufferLoad, 177, OpCodeClass::bufferLoad, 88, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
717 { dxil::OpCode::BufferStore, 358, OpCodeClass::bufferStore, 257, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 4 },
718 { dxil::OpCode::UpdateCounter, 689, OpCodeClass::bufferUpdateCounter, 485, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
719 { dxil::OpCode::CheckAccessFullyMapped, 231, OpCodeClass::checkAccessFullyMapped, 124, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
720 { dxil::OpCode::GetDimensions, 724, OpCodeClass::getDimensions, 516, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
721 { dxil::OpCode::AtomicBinOp, 610, OpCodeClass::atomicBinOp, 390, {{{1, 0}, OverloadKind::I32}, {{1, 6}, OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 6 },
722 { dxil::OpCode::Barrier, 681, OpCodeClass::barrier, 477, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::compute | ShaderKind::library}}, -1 },
723 { dxil::OpCode::Discard, 260, OpCodeClass::discard, 147, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::pixel}}, -1 },
724 { dxil::OpCode::DerivCoarseX, 72, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::library | ShaderKind::pixel}}, 1 },
725 { dxil::OpCode::DerivCoarseY, 96, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::library | ShaderKind::pixel}}, 1 },
726 { dxil::OpCode::DerivFineX, 61, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::library | ShaderKind::pixel}}, 1 },
727 { dxil::OpCode::DerivFineY, 85, OpCodeClass::unary, 733, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT}}, {{{1, 0}, ShaderKind::library | ShaderKind::pixel}}, 1 },
728 { dxil::OpCode::ThreadId, 130, OpCodeClass::threadId, 45, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::compute | ShaderKind::mesh | ShaderKind::amplification | ShaderKind::node}}, 1 },
729 { dxil::OpCode::GroupId, 139, OpCodeClass::groupId, 54, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::compute | ShaderKind::mesh | ShaderKind::amplification | ShaderKind::node}}, 1 },
730 { dxil::OpCode::ThreadIdInGroup, 665, OpCodeClass::threadIdInGroup, 461, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::compute | ShaderKind::mesh | ShaderKind::amplification | ShaderKind::node}}, 1 },
731 { dxil::OpCode::FlattenedThreadIdInGroup, 656, OpCodeClass::flattenedThreadIdInGroup, 436, {{{1, 0}, OverloadKind::I32}}, {{{1, 0}, ShaderKind::compute | ShaderKind::mesh | ShaderKind::amplification | ShaderKind::node}}, 0 },
732 { dxil::OpCode::MakeDouble, 268, OpCodeClass::makeDouble, 155, {{{1, 0}, OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 0 },
733 { dxil::OpCode::SplitDouble, 279, OpCodeClass::splitDouble, 166, {{{1, 0}, OverloadKind::DOUBLE}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
734 { dxil::OpCode::WaveIsFirstLane, 326, OpCodeClass::waveIsFirstLane, 213, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
735 { dxil::OpCode::WaveGetLaneIndex, 905, OpCodeClass::waveGetLaneIndex, 682, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
736 { dxil::OpCode::WaveGetLaneCount, 793, OpCodeClass::waveGetLaneCount, 602, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
737 { dxil::OpCode::WaveActiveAnyTrue, 406, OpCodeClass::waveAnyTrue, 281, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
738 { dxil::OpCode::WaveActiveAllTrue, 388, OpCodeClass::waveAllTrue, 269, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
739 { dxil::OpCode::WaveActiveAllEqual, 498, OpCodeClass::waveActiveAllEqual, 329, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
740 { dxil::OpCode::WaveActiveBallot, 845, OpCodeClass::waveActiveBallot, 619, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
741 { dxil::OpCode::WaveReadLaneAt, 764, OpCodeClass::waveReadLaneAt, 558, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I1 | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
742 { dxil::OpCode::WaveActiveOp, 597, OpCodeClass::waveActiveOp, 367, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
743 { dxil::OpCode::WaveActiveBit, 779, OpCodeClass::waveActiveBit, 588, {{{1, 0}, OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
744 { dxil::OpCode::WavePrefixOp, 622, OpCodeClass::wavePrefixOp, 402, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
745 { dxil::OpCode::QuadOp, 590, OpCodeClass::quadOp, 360, {{{1, 0}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 0}, ShaderKind::all_stages}}, 1 },
746 { dxil::OpCode::LegacyF32ToF16, 40, OpCodeClass::legacyF32ToF16, 30, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
747 { dxil::OpCode::LegacyF16ToF32, 0, OpCodeClass::legacyF16ToF32, 0, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
748 { dxil::OpCode::WaveAllBitCount, 810, OpCodeClass::waveAllOp, 380, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
749 { dxil::OpCode::WavePrefixBitCount, 826, OpCodeClass::wavePrefixOp, 402, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 0}, ShaderKind::all_stages}}, -1 },
750 { dxil::OpCode::RawBufferLoad, 174, OpCodeClass::rawBufferLoad, 74, {{{1, 2}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}, {{1, 3}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 2}, ShaderKind::all_stages}}, 0 },
751 { dxil::OpCode::RawBufferStore, 355, OpCodeClass::rawBufferStore, 242, {{{1, 2}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::I16 | OverloadKind::I32}, {{1, 3}, OverloadKind::HALF | OverloadKind::FLOAT | OverloadKind::DOUBLE | OverloadKind::I16 | OverloadKind::I32 | OverloadKind::I64}}, {{{1, 2}, ShaderKind::all_stages}}, 4 },
752 { dxil::OpCode::Dot2AddHalf, 424, OpCodeClass::dot2AddHalf, 293, {{{1, 4}, OverloadKind::FLOAT}}, {{{1, 4}, ShaderKind::all_stages}}, 1 },
753 { dxil::OpCode::Dot4AddI8Packed, 199, OpCodeClass::dot4AddPacked, 110, {{{1, 4}, OverloadKind::I32}}, {{{1, 4}, ShaderKind::all_stages}}, 0 },
754 { dxil::OpCode::Dot4AddU8Packed, 215, OpCodeClass::dot4AddPacked, 110, {{{1, 4}, OverloadKind::I32}}, {{{1, 4}, ShaderKind::all_stages}}, 0 },
755 { dxil::OpCode::AnnotateHandle, 304, OpCodeClass::annotateHandle, 191, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 6}, ShaderKind::all_stages}}, -1 },
756 { dxil::OpCode::CreateHandleFromBinding, 442, OpCodeClass::createHandleFromBinding, 305, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 6}, ShaderKind::all_stages}}, -1 },
757 { dxil::OpCode::CreateHandleFromHeap, 635, OpCodeClass::createHandleFromHeap, 415, {{{1, 0}, OverloadKind::UNDEFINED}}, {{{1, 6}, ShaderKind::all_stages}}, -1 } };
758 // FIXME: change search to indexing with
759 // Op once all DXIL operations are added.
760 OpCodeProperty TmpProp;
761 TmpProp.OpCode = Op;
762 const OpCodeProperty *Prop =
763 llvm::lower_bound(OpCodeProps, TmpProp,
764 [](const OpCodeProperty &A, const OpCodeProperty &B) {
765 return A.OpCode < B.OpCode;
766 });
767 assert(Prop && "failed to find OpCodeProperty");
768 return Prop;
769}
770
771static const char *getOpCodeName(dxil::OpCode Op) {
772
773
774#ifdef __GNUC__
775#pragma GCC diagnostic push
776#pragma GCC diagnostic ignored "-Woverlength-strings"
777#endif
778 static const char DXILOpCodeNameTable[] = {
779 /* 0 */ "LegacyF16ToF32\000"
780 /* 15 */ "Log2\000"
781 /* 20 */ "Exp2\000"
782 /* 25 */ "Dot2\000"
783 /* 30 */ "Dot3\000"
784 /* 35 */ "Dot4\000"
785 /* 40 */ "LegacyF32ToF16\000"
786 /* 55 */ "IsNaN\000"
787 /* 61 */ "DerivFineX\000"
788 /* 72 */ "DerivCoarseX\000"
789 /* 85 */ "DerivFineY\000"
790 /* 96 */ "DerivCoarseY\000"
791 /* 109 */ "Fma\000"
792 /* 113 */ "Frac\000"
793 /* 118 */ "UAddc\000"
794 /* 124 */ "Trunc\000"
795 /* 130 */ "ThreadId\000"
796 /* 139 */ "GroupId\000"
797 /* 147 */ "FMad\000"
798 /* 152 */ "IMad\000"
799 /* 157 */ "UMad\000"
800 /* 162 */ "TextureLoad\000"
801 /* 174 */ "RawBufferLoad\000"
802 /* 188 */ "SampleGrad\000"
803 /* 199 */ "Dot4AddI8Packed\000"
804 /* 215 */ "Dot4AddU8Packed\000"
805 /* 231 */ "CheckAccessFullyMapped\000"
806 /* 254 */ "Round\000"
807 /* 260 */ "Discard\000"
808 /* 268 */ "MakeDouble\000"
809 /* 279 */ "SplitDouble\000"
810 /* 291 */ "CreateHandle\000"
811 /* 304 */ "AnnotateHandle\000"
812 /* 319 */ "Sample\000"
813 /* 326 */ "WaveIsFirstLane\000"
814 /* 342 */ "TextureStore\000"
815 /* 355 */ "RawBufferStore\000"
816 /* 370 */ "Saturate\000"
817 /* 379 */ "IsFinite\000"
818 /* 388 */ "WaveActiveAllTrue\000"
819 /* 406 */ "WaveActiveAnyTrue\000"
820 /* 424 */ "Dot2AddHalf\000"
821 /* 436 */ "IsInf\000"
822 /* 442 */ "CreateHandleFromBinding\000"
823 /* 466 */ "FirstbitSHi\000"
824 /* 478 */ "FirstbitHi\000"
825 /* 489 */ "IsNormal\000"
826 /* 498 */ "WaveActiveAllEqual\000"
827 /* 517 */ "SampleLevel\000"
828 /* 529 */ "Ceil\000"
829 /* 534 */ "IMul\000"
830 /* 539 */ "UMul\000"
831 /* 544 */ "ATan\000"
832 /* 549 */ "HTan\000"
833 /* 554 */ "FMin\000"
834 /* 559 */ "SMin\000"
835 /* 564 */ "UMin\000"
836 /* 569 */ "ASin\000"
837 /* 574 */ "HSin\000"
838 /* 579 */ "FirstbitLo\000"
839 /* 590 */ "QuadOp\000"
840 /* 597 */ "WaveActiveOp\000"
841 /* 610 */ "AtomicBinOp\000"
842 /* 622 */ "WavePrefixOp\000"
843 /* 635 */ "CreateHandleFromHeap\000"
844 /* 656 */ "FlattenedThreadIdInGroup\000"
845 /* 681 */ "Barrier\000"
846 /* 689 */ "UpdateCounter\000"
847 /* 703 */ "Floor\000"
848 /* 709 */ "SampleBias\000"
849 /* 720 */ "Abs\000"
850 /* 724 */ "GetDimensions\000"
851 /* 738 */ "ACos\000"
852 /* 743 */ "HCos\000"
853 /* 748 */ "CountBits\000"
854 /* 758 */ "Rbits\000"
855 /* 764 */ "WaveReadLaneAt\000"
856 /* 779 */ "WaveActiveBit\000"
857 /* 793 */ "WaveGetLaneCount\000"
858 /* 810 */ "WaveAllBitCount\000"
859 /* 826 */ "WavePrefixBitCount\000"
860 /* 845 */ "WaveActiveBallot\000"
861 /* 862 */ "RSqrt\000"
862 /* 868 */ "LoadInput\000"
863 /* 878 */ "StoreOutput\000"
864 /* 890 */ "FMax\000"
865 /* 895 */ "SMax\000"
866 /* 900 */ "UMax\000"
867 /* 905 */ "WaveGetLaneIndex\000"
868 /* 922 */ "CBufferLoadLegacy\000"
869};
870#ifdef __GNUC__
871#pragma GCC diagnostic pop
872#endif
873
874 auto *Prop = getOpCodeProperty(Op);
875 unsigned Index = Prop->OpCodeNameOffset;
876 return DXILOpCodeNameTable + Index;
877}
878
879static const char *getOpCodeClassName(const OpCodeProperty &Prop) {
880
881
882#ifdef __GNUC__
883#pragma GCC diagnostic push
884#pragma GCC diagnostic ignored "-Woverlength-strings"
885#endif
886 static const char DXILOpCodeClassNameTable[] = {
887 /* 0 */ "legacyF16ToF32\000"
888 /* 15 */ "dot2\000"
889 /* 20 */ "dot3\000"
890 /* 25 */ "dot4\000"
891 /* 30 */ "legacyF32ToF16\000"
892 /* 45 */ "threadId\000"
893 /* 54 */ "groupId\000"
894 /* 62 */ "textureLoad\000"
895 /* 74 */ "rawBufferLoad\000"
896 /* 88 */ "bufferLoad\000"
897 /* 99 */ "sampleGrad\000"
898 /* 110 */ "dot4AddPacked\000"
899 /* 124 */ "checkAccessFullyMapped\000"
900 /* 147 */ "discard\000"
901 /* 155 */ "makeDouble\000"
902 /* 166 */ "splitDouble\000"
903 /* 178 */ "createHandle\000"
904 /* 191 */ "annotateHandle\000"
905 /* 206 */ "sample\000"
906 /* 213 */ "waveIsFirstLane\000"
907 /* 229 */ "textureStore\000"
908 /* 242 */ "rawBufferStore\000"
909 /* 257 */ "bufferStore\000"
910 /* 269 */ "waveAllTrue\000"
911 /* 281 */ "waveAnyTrue\000"
912 /* 293 */ "dot2AddHalf\000"
913 /* 305 */ "createHandleFromBinding\000"
914 /* 329 */ "waveActiveAllEqual\000"
915 /* 348 */ "sampleLevel\000"
916 /* 360 */ "quadOp\000"
917 /* 367 */ "waveActiveOp\000"
918 /* 380 */ "waveAllOp\000"
919 /* 390 */ "atomicBinOp\000"
920 /* 402 */ "wavePrefixOp\000"
921 /* 415 */ "createHandleFromHeap\000"
922 /* 436 */ "flattenedThreadIdInGroup\000"
923 /* 461 */ "threadIdInGroup\000"
924 /* 477 */ "barrier\000"
925 /* 485 */ "bufferUpdateCounter\000"
926 /* 505 */ "sampleBias\000"
927 /* 516 */ "getDimensions\000"
928 /* 530 */ "unaryBits\000"
929 /* 540 */ "binaryWithTwoOuts\000"
930 /* 558 */ "waveReadLaneAt\000"
931 /* 573 */ "isSpecialFloat\000"
932 /* 588 */ "waveActiveBit\000"
933 /* 602 */ "waveGetLaneCount\000"
934 /* 619 */ "waveActiveBallot\000"
935 /* 636 */ "loadInput\000"
936 /* 646 */ "storeOutput\000"
937 /* 658 */ "binaryWithCarryOrBorrow\000"
938 /* 682 */ "waveGetLaneIndex\000"
939 /* 699 */ "cbufferLoadLegacy\000"
940 /* 717 */ "tertiary\000"
941 /* 726 */ "binary\000"
942 /* 733 */ "unary\000"
943};
944#ifdef __GNUC__
945#pragma GCC diagnostic pop
946#endif
947
948 unsigned Index = Prop.OpCodeClassNameOffset;
949 return DXILOpCodeClassNameTable + Index;
950}
951
952#undef DXIL_OP_OPERATION_TABLE
953#endif
954
955