| 1 | // Generated code, do not edit. |
| 2 | |
| 3 | #ifdef DXIL_VERSION |
| 4 | DXIL_VERSION(1, 0) |
| 5 | DXIL_VERSION(1, 1) |
| 6 | DXIL_VERSION(1, 2) |
| 7 | DXIL_VERSION(1, 3) |
| 8 | DXIL_VERSION(1, 4) |
| 9 | DXIL_VERSION(1, 5) |
| 10 | DXIL_VERSION(1, 6) |
| 11 | DXIL_VERSION(1, 7) |
| 12 | DXIL_VERSION(1, 8) |
| 13 | #undef DXIL_VERSION |
| 14 | #endif |
| 15 | |
| 16 | #ifdef DXIL_OPCODE |
| 17 | DXIL_OPCODE(4, LoadInput) |
| 18 | DXIL_OPCODE(5, StoreOutput) |
| 19 | DXIL_OPCODE(6, Abs) |
| 20 | DXIL_OPCODE(7, Saturate) |
| 21 | DXIL_OPCODE(8, IsNaN) |
| 22 | DXIL_OPCODE(9, IsInf) |
| 23 | DXIL_OPCODE(10, IsFinite) |
| 24 | DXIL_OPCODE(11, IsNormal) |
| 25 | DXIL_OPCODE(12, Cos) |
| 26 | DXIL_OPCODE(13, Sin) |
| 27 | DXIL_OPCODE(14, Tan) |
| 28 | DXIL_OPCODE(15, ACos) |
| 29 | DXIL_OPCODE(16, ASin) |
| 30 | DXIL_OPCODE(17, ATan) |
| 31 | DXIL_OPCODE(18, HCos) |
| 32 | DXIL_OPCODE(19, HSin) |
| 33 | DXIL_OPCODE(20, HTan) |
| 34 | DXIL_OPCODE(21, Exp2) |
| 35 | DXIL_OPCODE(22, Frac) |
| 36 | DXIL_OPCODE(23, Log2) |
| 37 | DXIL_OPCODE(24, Sqrt) |
| 38 | DXIL_OPCODE(25, RSqrt) |
| 39 | DXIL_OPCODE(26, Round) |
| 40 | DXIL_OPCODE(27, Floor) |
| 41 | DXIL_OPCODE(28, Ceil) |
| 42 | DXIL_OPCODE(29, Trunc) |
| 43 | DXIL_OPCODE(30, Rbits) |
| 44 | DXIL_OPCODE(31, CountBits) |
| 45 | DXIL_OPCODE(32, FirstbitLo) |
| 46 | DXIL_OPCODE(33, FirstbitHi) |
| 47 | DXIL_OPCODE(34, FirstbitSHi) |
| 48 | DXIL_OPCODE(35, FMax) |
| 49 | DXIL_OPCODE(36, FMin) |
| 50 | DXIL_OPCODE(37, SMax) |
| 51 | DXIL_OPCODE(38, SMin) |
| 52 | DXIL_OPCODE(39, UMax) |
| 53 | DXIL_OPCODE(40, UMin) |
| 54 | DXIL_OPCODE(41, IMul) |
| 55 | DXIL_OPCODE(42, UMul) |
| 56 | DXIL_OPCODE(44, UAddc) |
| 57 | DXIL_OPCODE(46, FMad) |
| 58 | DXIL_OPCODE(47, Fma) |
| 59 | DXIL_OPCODE(48, IMad) |
| 60 | DXIL_OPCODE(49, UMad) |
| 61 | DXIL_OPCODE(54, Dot2) |
| 62 | DXIL_OPCODE(55, Dot3) |
| 63 | DXIL_OPCODE(56, Dot4) |
| 64 | DXIL_OPCODE(57, CreateHandle) |
| 65 | DXIL_OPCODE(59, CBufferLoadLegacy) |
| 66 | DXIL_OPCODE(60, Sample) |
| 67 | DXIL_OPCODE(61, SampleBias) |
| 68 | DXIL_OPCODE(62, SampleLevel) |
| 69 | DXIL_OPCODE(63, SampleGrad) |
| 70 | DXIL_OPCODE(66, TextureLoad) |
| 71 | DXIL_OPCODE(67, TextureStore) |
| 72 | DXIL_OPCODE(68, BufferLoad) |
| 73 | DXIL_OPCODE(69, BufferStore) |
| 74 | DXIL_OPCODE(70, UpdateCounter) |
| 75 | DXIL_OPCODE(71, CheckAccessFullyMapped) |
| 76 | DXIL_OPCODE(72, GetDimensions) |
| 77 | DXIL_OPCODE(78, AtomicBinOp) |
| 78 | DXIL_OPCODE(80, Barrier) |
| 79 | DXIL_OPCODE(82, Discard) |
| 80 | DXIL_OPCODE(83, DerivCoarseX) |
| 81 | DXIL_OPCODE(84, DerivCoarseY) |
| 82 | DXIL_OPCODE(85, DerivFineX) |
| 83 | DXIL_OPCODE(86, DerivFineY) |
| 84 | DXIL_OPCODE(93, ThreadId) |
| 85 | DXIL_OPCODE(94, GroupId) |
| 86 | DXIL_OPCODE(95, ThreadIdInGroup) |
| 87 | DXIL_OPCODE(96, FlattenedThreadIdInGroup) |
| 88 | DXIL_OPCODE(101, MakeDouble) |
| 89 | DXIL_OPCODE(102, SplitDouble) |
| 90 | DXIL_OPCODE(110, WaveIsFirstLane) |
| 91 | DXIL_OPCODE(111, WaveGetLaneIndex) |
| 92 | DXIL_OPCODE(112, WaveGetLaneCount) |
| 93 | DXIL_OPCODE(113, WaveActiveAnyTrue) |
| 94 | DXIL_OPCODE(114, WaveActiveAllTrue) |
| 95 | DXIL_OPCODE(115, WaveActiveAllEqual) |
| 96 | DXIL_OPCODE(116, WaveActiveBallot) |
| 97 | DXIL_OPCODE(117, WaveReadLaneAt) |
| 98 | DXIL_OPCODE(119, WaveActiveOp) |
| 99 | DXIL_OPCODE(120, WaveActiveBit) |
| 100 | DXIL_OPCODE(121, WavePrefixOp) |
| 101 | DXIL_OPCODE(123, QuadOp) |
| 102 | DXIL_OPCODE(130, LegacyF32ToF16) |
| 103 | DXIL_OPCODE(131, LegacyF16ToF32) |
| 104 | DXIL_OPCODE(135, WaveAllBitCount) |
| 105 | DXIL_OPCODE(136, WavePrefixBitCount) |
| 106 | DXIL_OPCODE(139, RawBufferLoad) |
| 107 | DXIL_OPCODE(140, RawBufferStore) |
| 108 | DXIL_OPCODE(162, Dot2AddHalf) |
| 109 | DXIL_OPCODE(163, Dot4AddI8Packed) |
| 110 | DXIL_OPCODE(164, Dot4AddU8Packed) |
| 111 | DXIL_OPCODE(216, AnnotateHandle) |
| 112 | DXIL_OPCODE(217, CreateHandleFromBinding) |
| 113 | DXIL_OPCODE(218, CreateHandleFromHeap) |
| 114 | #undef DXIL_OPCODE |
| 115 | |
| 116 | #endif |
| 117 | |
| 118 | #ifdef DXIL_OPCLASS |
| 119 | DXIL_OPCLASS(UnknownOpClass) |
| 120 | DXIL_OPCLASS(acceptHitAndEndSearch) |
| 121 | DXIL_OPCLASS(allocateNodeOutputRecords) |
| 122 | DXIL_OPCLASS(allocateRayQuery) |
| 123 | DXIL_OPCLASS(annotateHandle) |
| 124 | DXIL_OPCLASS(annotateNodeHandle) |
| 125 | DXIL_OPCLASS(annotateNodeRecordHandle) |
| 126 | DXIL_OPCLASS(atomicBinOp) |
| 127 | DXIL_OPCLASS(atomicCompareExchange) |
| 128 | DXIL_OPCLASS(attributeAtVertex) |
| 129 | DXIL_OPCLASS(barrier) |
| 130 | DXIL_OPCLASS(barrierByMemoryHandle) |
| 131 | DXIL_OPCLASS(barrierByMemoryType) |
| 132 | DXIL_OPCLASS(barrierByNodeRecordHandle) |
| 133 | DXIL_OPCLASS(binary) |
| 134 | DXIL_OPCLASS(binaryWithCarryOrBorrow) |
| 135 | DXIL_OPCLASS(binaryWithTwoOuts) |
| 136 | DXIL_OPCLASS(bitcastF16toI16) |
| 137 | DXIL_OPCLASS(bitcastF32toI32) |
| 138 | DXIL_OPCLASS(bitcastF64toI64) |
| 139 | DXIL_OPCLASS(bitcastI16toF16) |
| 140 | DXIL_OPCLASS(bitcastI32toF32) |
| 141 | DXIL_OPCLASS(bitcastI64toF64) |
| 142 | DXIL_OPCLASS(bufferLoad) |
| 143 | DXIL_OPCLASS(bufferStore) |
| 144 | DXIL_OPCLASS(bufferUpdateCounter) |
| 145 | DXIL_OPCLASS(calculateLOD) |
| 146 | DXIL_OPCLASS(callShader) |
| 147 | DXIL_OPCLASS(cbufferLoad) |
| 148 | DXIL_OPCLASS(cbufferLoadLegacy) |
| 149 | DXIL_OPCLASS(checkAccessFullyMapped) |
| 150 | DXIL_OPCLASS(coverage) |
| 151 | DXIL_OPCLASS(createHandle) |
| 152 | DXIL_OPCLASS(createHandleForLib) |
| 153 | DXIL_OPCLASS(createHandleFromBinding) |
| 154 | DXIL_OPCLASS(createHandleFromHeap) |
| 155 | DXIL_OPCLASS(createNodeInputRecordHandle) |
| 156 | DXIL_OPCLASS(createNodeOutputHandle) |
| 157 | DXIL_OPCLASS(cutStream) |
| 158 | DXIL_OPCLASS(cycleCounterLegacy) |
| 159 | DXIL_OPCLASS(discard) |
| 160 | DXIL_OPCLASS(dispatchMesh) |
| 161 | DXIL_OPCLASS(dispatchRaysDimensions) |
| 162 | DXIL_OPCLASS(dispatchRaysIndex) |
| 163 | DXIL_OPCLASS(domainLocation) |
| 164 | DXIL_OPCLASS(dot2) |
| 165 | DXIL_OPCLASS(dot2AddHalf) |
| 166 | DXIL_OPCLASS(dot3) |
| 167 | DXIL_OPCLASS(dot4) |
| 168 | DXIL_OPCLASS(dot4AddPacked) |
| 169 | DXIL_OPCLASS(emitIndices) |
| 170 | DXIL_OPCLASS(emitStream) |
| 171 | DXIL_OPCLASS(emitThenCutStream) |
| 172 | DXIL_OPCLASS(evalCentroid) |
| 173 | DXIL_OPCLASS(evalSampleIndex) |
| 174 | DXIL_OPCLASS(evalSnapped) |
| 175 | DXIL_OPCLASS(finishedCrossGroupSharing) |
| 176 | DXIL_OPCLASS(flattenedThreadIdInGroup) |
| 177 | DXIL_OPCLASS(geometryIndex) |
| 178 | DXIL_OPCLASS(getDimensions) |
| 179 | DXIL_OPCLASS(getInputRecordCount) |
| 180 | DXIL_OPCLASS(getMeshPayload) |
| 181 | DXIL_OPCLASS(getNodeRecordPtr) |
| 182 | DXIL_OPCLASS(getRemainingRecursionLevels) |
| 183 | DXIL_OPCLASS(groupId) |
| 184 | DXIL_OPCLASS(gsInstanceID) |
| 185 | DXIL_OPCLASS(hitKind) |
| 186 | DXIL_OPCLASS(ignoreHit) |
| 187 | DXIL_OPCLASS(incrementOutputCount) |
| 188 | DXIL_OPCLASS(indexNodeHandle) |
| 189 | DXIL_OPCLASS(innerCoverage) |
| 190 | DXIL_OPCLASS(instanceID) |
| 191 | DXIL_OPCLASS(instanceIndex) |
| 192 | DXIL_OPCLASS(isHelperLane) |
| 193 | DXIL_OPCLASS(isSpecialFloat) |
| 194 | DXIL_OPCLASS(legacyDoubleToFloat) |
| 195 | DXIL_OPCLASS(legacyDoubleToSInt32) |
| 196 | DXIL_OPCLASS(legacyDoubleToUInt32) |
| 197 | DXIL_OPCLASS(legacyF16ToF32) |
| 198 | DXIL_OPCLASS(legacyF32ToF16) |
| 199 | DXIL_OPCLASS(loadInput) |
| 200 | DXIL_OPCLASS(loadOutputControlPoint) |
| 201 | DXIL_OPCLASS(loadPatchConstant) |
| 202 | DXIL_OPCLASS(makeDouble) |
| 203 | DXIL_OPCLASS(minPrecXRegLoad) |
| 204 | DXIL_OPCLASS(minPrecXRegStore) |
| 205 | DXIL_OPCLASS(nodeOutputIsValid) |
| 206 | DXIL_OPCLASS(objectRayDirection) |
| 207 | DXIL_OPCLASS(objectRayOrigin) |
| 208 | DXIL_OPCLASS(objectToWorld) |
| 209 | DXIL_OPCLASS(outputComplete) |
| 210 | DXIL_OPCLASS(outputControlPointID) |
| 211 | DXIL_OPCLASS(pack4x8) |
| 212 | DXIL_OPCLASS(primitiveID) |
| 213 | DXIL_OPCLASS(primitiveIndex) |
| 214 | DXIL_OPCLASS(quadOp) |
| 215 | DXIL_OPCLASS(quadReadLaneAt) |
| 216 | DXIL_OPCLASS(quadVote) |
| 217 | DXIL_OPCLASS(quaternary) |
| 218 | DXIL_OPCLASS(rawBufferLoad) |
| 219 | DXIL_OPCLASS(rawBufferStore) |
| 220 | DXIL_OPCLASS(rayFlags) |
| 221 | DXIL_OPCLASS(rayQuery_Abort) |
| 222 | DXIL_OPCLASS(rayQuery_CommitNonOpaqueTriangleHit) |
| 223 | DXIL_OPCLASS(rayQuery_CommitProceduralPrimitiveHit) |
| 224 | DXIL_OPCLASS(rayQuery_Proceed) |
| 225 | DXIL_OPCLASS(rayQuery_StateMatrix) |
| 226 | DXIL_OPCLASS(rayQuery_StateScalar) |
| 227 | DXIL_OPCLASS(rayQuery_StateVector) |
| 228 | DXIL_OPCLASS(rayQuery_TraceRayInline) |
| 229 | DXIL_OPCLASS(rayTCurrent) |
| 230 | DXIL_OPCLASS(rayTMin) |
| 231 | DXIL_OPCLASS(renderTargetGetSampleCount) |
| 232 | DXIL_OPCLASS(renderTargetGetSamplePosition) |
| 233 | DXIL_OPCLASS(reportHit) |
| 234 | DXIL_OPCLASS(sample) |
| 235 | DXIL_OPCLASS(sampleBias) |
| 236 | DXIL_OPCLASS(sampleCmp) |
| 237 | DXIL_OPCLASS(sampleCmpBias) |
| 238 | DXIL_OPCLASS(sampleCmpGrad) |
| 239 | DXIL_OPCLASS(sampleCmpLevel) |
| 240 | DXIL_OPCLASS(sampleCmpLevelZero) |
| 241 | DXIL_OPCLASS(sampleGrad) |
| 242 | DXIL_OPCLASS(sampleIndex) |
| 243 | DXIL_OPCLASS(sampleLevel) |
| 244 | DXIL_OPCLASS(setMeshOutputCounts) |
| 245 | DXIL_OPCLASS(splitDouble) |
| 246 | DXIL_OPCLASS(startInstanceLocation) |
| 247 | DXIL_OPCLASS(startVertexLocation) |
| 248 | DXIL_OPCLASS(storeOutput) |
| 249 | DXIL_OPCLASS(storePatchConstant) |
| 250 | DXIL_OPCLASS(storePrimitiveOutput) |
| 251 | DXIL_OPCLASS(storeVertexOutput) |
| 252 | DXIL_OPCLASS(tempRegLoad) |
| 253 | DXIL_OPCLASS(tempRegStore) |
| 254 | DXIL_OPCLASS(tertiary) |
| 255 | DXIL_OPCLASS(texture2DMSGetSamplePosition) |
| 256 | DXIL_OPCLASS(textureGather) |
| 257 | DXIL_OPCLASS(textureGatherCmp) |
| 258 | DXIL_OPCLASS(textureGatherRaw) |
| 259 | DXIL_OPCLASS(textureLoad) |
| 260 | DXIL_OPCLASS(textureStore) |
| 261 | DXIL_OPCLASS(textureStoreSample) |
| 262 | DXIL_OPCLASS(threadId) |
| 263 | DXIL_OPCLASS(threadIdInGroup) |
| 264 | DXIL_OPCLASS(traceRay) |
| 265 | DXIL_OPCLASS(unary) |
| 266 | DXIL_OPCLASS(unaryBits) |
| 267 | DXIL_OPCLASS(unpack4x8) |
| 268 | DXIL_OPCLASS(viewID) |
| 269 | DXIL_OPCLASS(waveActiveAllEqual) |
| 270 | DXIL_OPCLASS(waveActiveBallot) |
| 271 | DXIL_OPCLASS(waveActiveBit) |
| 272 | DXIL_OPCLASS(waveActiveOp) |
| 273 | DXIL_OPCLASS(waveAllOp) |
| 274 | DXIL_OPCLASS(waveAllTrue) |
| 275 | DXIL_OPCLASS(waveAnyTrue) |
| 276 | DXIL_OPCLASS(waveGetLaneCount) |
| 277 | DXIL_OPCLASS(waveGetLaneIndex) |
| 278 | DXIL_OPCLASS(waveIsFirstLane) |
| 279 | DXIL_OPCLASS(waveMatch) |
| 280 | DXIL_OPCLASS(waveMatrix_Accumulate) |
| 281 | DXIL_OPCLASS(waveMatrix_Annotate) |
| 282 | DXIL_OPCLASS(waveMatrix_Depth) |
| 283 | DXIL_OPCLASS(waveMatrix_Fill) |
| 284 | DXIL_OPCLASS(waveMatrix_LoadGroupShared) |
| 285 | DXIL_OPCLASS(waveMatrix_LoadRawBuf) |
| 286 | DXIL_OPCLASS(waveMatrix_Multiply) |
| 287 | DXIL_OPCLASS(waveMatrix_ScalarOp) |
| 288 | DXIL_OPCLASS(waveMatrix_StoreGroupShared) |
| 289 | DXIL_OPCLASS(waveMatrix_StoreRawBuf) |
| 290 | DXIL_OPCLASS(waveMultiPrefixBitCount) |
| 291 | DXIL_OPCLASS(waveMultiPrefixOp) |
| 292 | DXIL_OPCLASS(wavePrefixOp) |
| 293 | DXIL_OPCLASS(waveReadLaneAt) |
| 294 | DXIL_OPCLASS(waveReadLaneFirst) |
| 295 | DXIL_OPCLASS(worldRayDirection) |
| 296 | DXIL_OPCLASS(worldRayOrigin) |
| 297 | DXIL_OPCLASS(worldToObject) |
| 298 | DXIL_OPCLASS(writeSamplerFeedback) |
| 299 | DXIL_OPCLASS(writeSamplerFeedbackBias) |
| 300 | DXIL_OPCLASS(writeSamplerFeedbackGrad) |
| 301 | DXIL_OPCLASS(writeSamplerFeedbackLevel) |
| 302 | #undef DXIL_OPCLASS |
| 303 | #endif |
| 304 | |
| 305 | #ifdef DXIL_OP_PARAM_TYPE |
| 306 | DXIL_OP_PARAM_TYPE(BinaryWithCarryTy) |
| 307 | DXIL_OP_PARAM_TYPE(CBufRetDoubleTy) |
| 308 | DXIL_OP_PARAM_TYPE(CBufRetFloatTy) |
| 309 | DXIL_OP_PARAM_TYPE(CBufRetHalfTy) |
| 310 | DXIL_OP_PARAM_TYPE(CBufRetInt16Ty) |
| 311 | DXIL_OP_PARAM_TYPE(CBufRetInt32Ty) |
| 312 | DXIL_OP_PARAM_TYPE(CBufRetInt64Ty) |
| 313 | DXIL_OP_PARAM_TYPE(DimensionsTy) |
| 314 | DXIL_OP_PARAM_TYPE(DoubleTy) |
| 315 | DXIL_OP_PARAM_TYPE(FloatTy) |
| 316 | DXIL_OP_PARAM_TYPE(Fouri32s) |
| 317 | DXIL_OP_PARAM_TYPE(HalfTy) |
| 318 | DXIL_OP_PARAM_TYPE(HandleTy) |
| 319 | DXIL_OP_PARAM_TYPE(Int1Ty) |
| 320 | DXIL_OP_PARAM_TYPE(Int8Ty) |
| 321 | DXIL_OP_PARAM_TYPE(Int16Ty) |
| 322 | DXIL_OP_PARAM_TYPE(Int32Ty) |
| 323 | DXIL_OP_PARAM_TYPE(Int64Ty) |
| 324 | DXIL_OP_PARAM_TYPE(OverloadTy) |
| 325 | DXIL_OP_PARAM_TYPE(ResBindTy) |
| 326 | DXIL_OP_PARAM_TYPE(ResPropsTy) |
| 327 | DXIL_OP_PARAM_TYPE(ResRetDoubleTy) |
| 328 | DXIL_OP_PARAM_TYPE(ResRetFloatTy) |
| 329 | DXIL_OP_PARAM_TYPE(ResRetHalfTy) |
| 330 | DXIL_OP_PARAM_TYPE(ResRetInt16Ty) |
| 331 | DXIL_OP_PARAM_TYPE(ResRetInt32Ty) |
| 332 | DXIL_OP_PARAM_TYPE(ResRetInt64Ty) |
| 333 | DXIL_OP_PARAM_TYPE(SplitDoubleTy) |
| 334 | DXIL_OP_PARAM_TYPE(TwoI32Ty) |
| 335 | DXIL_OP_PARAM_TYPE(VoidTy) |
| 336 | #undef DXIL_OP_PARAM_TYPE |
| 337 | #endif |
| 338 | |
| 339 | #ifdef DXIL_ATTRIBUTE |
| 340 | DXIL_ATTRIBUTE(NoDuplicate) |
| 341 | DXIL_ATTRIBUTE(NoReturn) |
| 342 | DXIL_ATTRIBUTE(ReadNone) |
| 343 | DXIL_ATTRIBUTE(ReadOnly) |
| 344 | #undef DXIL_ATTRIBUTE |
| 345 | #endif |
| 346 | |
| 347 | #ifdef DXIL_OP_ATTRIBUTES |
| 348 | DXIL_OP_ATTRIBUTES(dxil::OpCode::LoadInput, 1, 0, false, false, false, true) |
| 349 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Abs, 1, 0, false, false, true, false) |
| 350 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Saturate, 1, 0, false, false, true, false) |
| 351 | DXIL_OP_ATTRIBUTES(dxil::OpCode::IsNaN, 1, 0, false, false, true, false) |
| 352 | DXIL_OP_ATTRIBUTES(dxil::OpCode::IsInf, 1, 0, false, false, true, false) |
| 353 | DXIL_OP_ATTRIBUTES(dxil::OpCode::IsFinite, 1, 0, false, false, true, false) |
| 354 | DXIL_OP_ATTRIBUTES(dxil::OpCode::IsNormal, 1, 0, false, false, true, false) |
| 355 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Cos, 1, 0, false, false, true, false) |
| 356 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Sin, 1, 0, false, false, true, false) |
| 357 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Tan, 1, 0, false, false, true, false) |
| 358 | DXIL_OP_ATTRIBUTES(dxil::OpCode::ACos, 1, 0, false, false, true, false) |
| 359 | DXIL_OP_ATTRIBUTES(dxil::OpCode::ASin, 1, 0, false, false, true, false) |
| 360 | DXIL_OP_ATTRIBUTES(dxil::OpCode::ATan, 1, 0, false, false, true, false) |
| 361 | DXIL_OP_ATTRIBUTES(dxil::OpCode::HCos, 1, 0, false, false, true, false) |
| 362 | DXIL_OP_ATTRIBUTES(dxil::OpCode::HSin, 1, 0, false, false, true, false) |
| 363 | DXIL_OP_ATTRIBUTES(dxil::OpCode::HTan, 1, 0, false, false, true, false) |
| 364 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Exp2, 1, 0, false, false, true, false) |
| 365 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Frac, 1, 0, false, false, true, false) |
| 366 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Log2, 1, 0, false, false, true, false) |
| 367 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Sqrt, 1, 0, false, false, true, false) |
| 368 | DXIL_OP_ATTRIBUTES(dxil::OpCode::RSqrt, 1, 0, false, false, true, false) |
| 369 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Round, 1, 0, false, false, true, false) |
| 370 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Floor, 1, 0, false, false, true, false) |
| 371 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Ceil, 1, 0, false, false, true, false) |
| 372 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Trunc, 1, 0, false, false, true, false) |
| 373 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Rbits, 1, 0, false, false, true, false) |
| 374 | DXIL_OP_ATTRIBUTES(dxil::OpCode::CountBits, 1, 0, false, false, true, false) |
| 375 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FirstbitLo, 1, 0, false, false, true, false) |
| 376 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FirstbitHi, 1, 0, false, false, true, false) |
| 377 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FirstbitSHi, 1, 0, false, false, true, false) |
| 378 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FMax, 1, 0, false, false, true, false) |
| 379 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FMin, 1, 0, false, false, true, false) |
| 380 | DXIL_OP_ATTRIBUTES(dxil::OpCode::SMax, 1, 0, false, false, true, false) |
| 381 | DXIL_OP_ATTRIBUTES(dxil::OpCode::SMin, 1, 0, false, false, true, false) |
| 382 | DXIL_OP_ATTRIBUTES(dxil::OpCode::UMax, 1, 0, false, false, true, false) |
| 383 | DXIL_OP_ATTRIBUTES(dxil::OpCode::UMin, 1, 0, false, false, true, false) |
| 384 | DXIL_OP_ATTRIBUTES(dxil::OpCode::IMul, 1, 0, false, false, true, false) |
| 385 | DXIL_OP_ATTRIBUTES(dxil::OpCode::UMul, 1, 0, false, false, true, false) |
| 386 | DXIL_OP_ATTRIBUTES(dxil::OpCode::UAddc, 1, 0, false, false, true, false) |
| 387 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FMad, 1, 0, false, false, true, false) |
| 388 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Fma, 1, 0, false, false, true, false) |
| 389 | DXIL_OP_ATTRIBUTES(dxil::OpCode::IMad, 1, 0, false, false, true, false) |
| 390 | DXIL_OP_ATTRIBUTES(dxil::OpCode::UMad, 1, 0, false, false, true, false) |
| 391 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot2, 1, 0, false, false, true, false) |
| 392 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot3, 1, 0, false, false, true, false) |
| 393 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot4, 1, 0, false, false, true, false) |
| 394 | DXIL_OP_ATTRIBUTES(dxil::OpCode::CreateHandle, 1, 0, false, false, false, true) |
| 395 | DXIL_OP_ATTRIBUTES(dxil::OpCode::CBufferLoadLegacy, 1, 0, false, false, false, true) |
| 396 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Sample, 1, 0, false, false, false, true) |
| 397 | DXIL_OP_ATTRIBUTES(dxil::OpCode::SampleBias, 1, 0, false, false, false, true) |
| 398 | DXIL_OP_ATTRIBUTES(dxil::OpCode::SampleLevel, 1, 0, false, false, false, true) |
| 399 | DXIL_OP_ATTRIBUTES(dxil::OpCode::SampleGrad, 1, 0, false, false, false, true) |
| 400 | DXIL_OP_ATTRIBUTES(dxil::OpCode::TextureLoad, 1, 0, false, false, false, true) |
| 401 | DXIL_OP_ATTRIBUTES(dxil::OpCode::BufferLoad, 1, 0, false, false, false, true) |
| 402 | DXIL_OP_ATTRIBUTES(dxil::OpCode::CheckAccessFullyMapped, 1, 0, false, false, false, true) |
| 403 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Barrier, 1, 0, false, false, false, false) |
| 404 | DXIL_OP_ATTRIBUTES(dxil::OpCode::ThreadId, 1, 0, false, false, true, false) |
| 405 | DXIL_OP_ATTRIBUTES(dxil::OpCode::GroupId, 1, 0, false, false, true, false) |
| 406 | DXIL_OP_ATTRIBUTES(dxil::OpCode::ThreadIdInGroup, 1, 0, false, false, true, false) |
| 407 | DXIL_OP_ATTRIBUTES(dxil::OpCode::FlattenedThreadIdInGroup, 1, 0, false, false, true, false) |
| 408 | DXIL_OP_ATTRIBUTES(dxil::OpCode::MakeDouble, 1, 0, false, false, true, false) |
| 409 | DXIL_OP_ATTRIBUTES(dxil::OpCode::SplitDouble, 1, 0, false, false, true, false) |
| 410 | DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveGetLaneIndex, 1, 0, false, false, false, true) |
| 411 | DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveGetLaneCount, 1, 0, false, false, false, true) |
| 412 | DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveActiveOp, 1, 0, false, false, false, false) |
| 413 | DXIL_OP_ATTRIBUTES(dxil::OpCode::WaveActiveBit, 1, 0, false, false, false, false) |
| 414 | DXIL_OP_ATTRIBUTES(dxil::OpCode::WavePrefixOp, 1, 0, false, false, false, false) |
| 415 | DXIL_OP_ATTRIBUTES(dxil::OpCode::QuadOp, 1, 0, false, false, false, false) |
| 416 | DXIL_OP_ATTRIBUTES(dxil::OpCode::WavePrefixBitCount, 1, 0, false, false, false, false) |
| 417 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot2AddHalf, 1, 4, false, false, true, false) |
| 418 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot4AddI8Packed, 1, 4, false, false, true, false) |
| 419 | DXIL_OP_ATTRIBUTES(dxil::OpCode::Dot4AddU8Packed, 1, 4, false, false, true, false) |
| 420 | DXIL_OP_ATTRIBUTES(dxil::OpCode::AnnotateHandle, 1, 0, false, false, true, false) |
| 421 | DXIL_OP_ATTRIBUTES(dxil::OpCode::CreateHandleFromBinding, 1, 0, false, false, true, false) |
| 422 | DXIL_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 |
| 429 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::LoadInput, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty) |
| 430 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::StoreOutput, dxil::OpParamType::VoidTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int8Ty, dxil::OpParamType::OverloadTy) |
| 431 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Abs, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 432 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Saturate, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 433 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsNaN, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy) |
| 434 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsInf, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy) |
| 435 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsFinite, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy) |
| 436 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IsNormal, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy) |
| 437 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Cos, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 438 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Sin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 439 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Tan, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 440 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ACos, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 441 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ASin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 442 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ATan, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 443 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::HCos, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 444 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::HSin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 445 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::HTan, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 446 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Exp2, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 447 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Frac, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 448 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Log2, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 449 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Sqrt, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 450 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::RSqrt, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 451 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Round, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 452 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Floor, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 453 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Ceil, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 454 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Trunc, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 455 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Rbits, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 456 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CountBits, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy) |
| 457 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FirstbitLo, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy) |
| 458 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FirstbitHi, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy) |
| 459 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FirstbitSHi, dxil::OpParamType::Int32Ty, dxil::OpParamType::OverloadTy) |
| 460 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FMax, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 461 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FMin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 462 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SMax, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 463 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SMin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 464 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMax, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 465 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMin, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 466 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IMul, dxil::OpParamType::TwoI32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 467 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMul, dxil::OpParamType::TwoI32Ty, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 468 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UAddc, dxil::OpParamType::BinaryWithCarryTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 469 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FMad, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 470 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Fma, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 471 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::IMad, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 472 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UMad, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 473 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot2, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 474 | DXIL_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) |
| 475 | DXIL_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) |
| 476 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CreateHandle, dxil::OpParamType::HandleTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty) |
| 477 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CBufferLoadLegacy, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty) |
| 478 | DXIL_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) |
| 479 | DXIL_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) |
| 480 | DXIL_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) |
| 481 | DXIL_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) |
| 482 | DXIL_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) |
| 483 | DXIL_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) |
| 484 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::BufferLoad, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty) |
| 485 | DXIL_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) |
| 486 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::UpdateCounter, dxil::OpParamType::Int32Ty, dxil::OpParamType::HandleTy, dxil::OpParamType::Int8Ty) |
| 487 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CheckAccessFullyMapped, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy) |
| 488 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::GetDimensions, dxil::OpParamType::DimensionsTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty) |
| 489 | DXIL_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) |
| 490 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Barrier, dxil::OpParamType::VoidTy, dxil::OpParamType::Int32Ty) |
| 491 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Discard, dxil::OpParamType::VoidTy, dxil::OpParamType::Int1Ty) |
| 492 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivCoarseX, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 493 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivCoarseY, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 494 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivFineX, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 495 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::DerivFineY, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 496 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ThreadId, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 497 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::GroupId, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 498 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::ThreadIdInGroup, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy) |
| 499 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::FlattenedThreadIdInGroup, dxil::OpParamType::OverloadTy, ) |
| 500 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::MakeDouble, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty) |
| 501 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::SplitDouble, dxil::OpParamType::SplitDoubleTy, dxil::OpParamType::OverloadTy) |
| 502 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveIsFirstLane, dxil::OpParamType::Int1Ty, ) |
| 503 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveGetLaneIndex, dxil::OpParamType::Int32Ty, ) |
| 504 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveGetLaneCount, dxil::OpParamType::Int32Ty, ) |
| 505 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveAnyTrue, dxil::OpParamType::Int1Ty, dxil::OpParamType::Int1Ty) |
| 506 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveAllTrue, dxil::OpParamType::Int1Ty, dxil::OpParamType::Int1Ty) |
| 507 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveAllEqual, dxil::OpParamType::Int1Ty, dxil::OpParamType::OverloadTy) |
| 508 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveBallot, dxil::OpParamType::Fouri32s, dxil::OpParamType::Int1Ty) |
| 509 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveReadLaneAt, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty) |
| 510 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int8Ty) |
| 511 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveActiveBit, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty) |
| 512 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WavePrefixOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int8Ty) |
| 513 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::QuadOp, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int8Ty) |
| 514 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::LegacyF32ToF16, dxil::OpParamType::Int32Ty, dxil::OpParamType::FloatTy) |
| 515 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::LegacyF16ToF32, dxil::OpParamType::FloatTy, dxil::OpParamType::Int32Ty) |
| 516 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WaveAllBitCount, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty) |
| 517 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::WavePrefixBitCount, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty) |
| 518 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::RawBufferLoad, dxil::OpParamType::OverloadTy, dxil::OpParamType::HandleTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int8Ty, dxil::OpParamType::Int32Ty) |
| 519 | DXIL_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) |
| 520 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot2AddHalf, dxil::OpParamType::OverloadTy, dxil::OpParamType::OverloadTy, dxil::OpParamType::HalfTy, dxil::OpParamType::HalfTy, dxil::OpParamType::HalfTy, dxil::OpParamType::HalfTy) |
| 521 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot4AddI8Packed, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty) |
| 522 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::Dot4AddU8Packed, dxil::OpParamType::OverloadTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int32Ty) |
| 523 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::AnnotateHandle, dxil::OpParamType::HandleTy, dxil::OpParamType::HandleTy, dxil::OpParamType::ResPropsTy) |
| 524 | DXIL_OP_FUNCTION_TYPE(dxil::OpCode::CreateHandleFromBinding, dxil::OpParamType::HandleTy, dxil::OpParamType::ResBindTy, dxil::OpParamType::Int32Ty, dxil::OpParamType::Int1Ty) |
| 525 | DXIL_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 |
| 528 | DXIL_OP_INTRINSIC_ARG_SELECT_TYPE(I8) |
| 529 | DXIL_OP_INTRINSIC_ARG_SELECT_TYPE(I32) |
| 530 | DXIL_OP_INTRINSIC_ARG_SELECT_TYPE(Index) |
| 531 | #undef DXIL_OP_INTRINSIC_ARG_SELECT_TYPE |
| 532 | #endif |
| 533 | |
| 534 | #ifdef DXIL_OP_INTRINSIC |
| 535 | |
| 536 | DXIL_OP_INTRINSIC(dxil::OpCode::LoadInput, Intrinsic::dx_load_input, ) |
| 537 | DXIL_OP_INTRINSIC(dxil::OpCode::StoreOutput, Intrinsic::dx_store_output, ) |
| 538 | DXIL_OP_INTRINSIC(dxil::OpCode::Abs, Intrinsic::fabs, ) |
| 539 | DXIL_OP_INTRINSIC(dxil::OpCode::Saturate, Intrinsic::dx_saturate, ) |
| 540 | DXIL_OP_INTRINSIC(dxil::OpCode::IsNaN, Intrinsic::dx_isnan, ) |
| 541 | DXIL_OP_INTRINSIC(dxil::OpCode::IsInf, Intrinsic::dx_isinf, ) |
| 542 | DXIL_OP_INTRINSIC(dxil::OpCode::Cos, Intrinsic::cos, ) |
| 543 | DXIL_OP_INTRINSIC(dxil::OpCode::Sin, Intrinsic::sin, ) |
| 544 | DXIL_OP_INTRINSIC(dxil::OpCode::Tan, Intrinsic::tan, ) |
| 545 | DXIL_OP_INTRINSIC(dxil::OpCode::ACos, Intrinsic::acos, ) |
| 546 | DXIL_OP_INTRINSIC(dxil::OpCode::ASin, Intrinsic::asin, ) |
| 547 | DXIL_OP_INTRINSIC(dxil::OpCode::ATan, Intrinsic::atan, ) |
| 548 | DXIL_OP_INTRINSIC(dxil::OpCode::HCos, Intrinsic::cosh, ) |
| 549 | DXIL_OP_INTRINSIC(dxil::OpCode::HSin, Intrinsic::sinh, ) |
| 550 | DXIL_OP_INTRINSIC(dxil::OpCode::HTan, Intrinsic::tanh, ) |
| 551 | DXIL_OP_INTRINSIC(dxil::OpCode::Exp2, Intrinsic::exp2, ) |
| 552 | DXIL_OP_INTRINSIC(dxil::OpCode::Frac, Intrinsic::dx_frac, ) |
| 553 | DXIL_OP_INTRINSIC(dxil::OpCode::Log2, Intrinsic::log2, ) |
| 554 | DXIL_OP_INTRINSIC(dxil::OpCode::Sqrt, Intrinsic::sqrt, ) |
| 555 | DXIL_OP_INTRINSIC(dxil::OpCode::RSqrt, Intrinsic::dx_rsqrt, ) |
| 556 | DXIL_OP_INTRINSIC(dxil::OpCode::Round, Intrinsic::roundeven, ) |
| 557 | DXIL_OP_INTRINSIC(dxil::OpCode::Floor, Intrinsic::floor, ) |
| 558 | DXIL_OP_INTRINSIC(dxil::OpCode::Ceil, Intrinsic::ceil, ) |
| 559 | DXIL_OP_INTRINSIC(dxil::OpCode::Trunc, Intrinsic::trunc, ) |
| 560 | DXIL_OP_INTRINSIC(dxil::OpCode::Rbits, Intrinsic::bitreverse, ) |
| 561 | DXIL_OP_INTRINSIC(dxil::OpCode::FirstbitLo, Intrinsic::dx_firstbitlow, ) |
| 562 | DXIL_OP_INTRINSIC(dxil::OpCode::FirstbitHi, Intrinsic::dx_firstbituhigh, ) |
| 563 | DXIL_OP_INTRINSIC(dxil::OpCode::FirstbitSHi, Intrinsic::dx_firstbitshigh, ) |
| 564 | DXIL_OP_INTRINSIC(dxil::OpCode::FMax, Intrinsic::maxnum, ) |
| 565 | DXIL_OP_INTRINSIC(dxil::OpCode::FMin, Intrinsic::minnum, ) |
| 566 | DXIL_OP_INTRINSIC(dxil::OpCode::SMax, Intrinsic::smax, ) |
| 567 | DXIL_OP_INTRINSIC(dxil::OpCode::SMin, Intrinsic::smin, ) |
| 568 | DXIL_OP_INTRINSIC(dxil::OpCode::UMax, Intrinsic::umax, ) |
| 569 | DXIL_OP_INTRINSIC(dxil::OpCode::UMin, Intrinsic::umin, ) |
| 570 | DXIL_OP_INTRINSIC(dxil::OpCode::IMul, Intrinsic::dx_imul, ) |
| 571 | DXIL_OP_INTRINSIC(dxil::OpCode::UMul, Intrinsic::dx_umul, ) |
| 572 | DXIL_OP_INTRINSIC(dxil::OpCode::UAddc, Intrinsic::uadd_with_overflow, ) |
| 573 | DXIL_OP_INTRINSIC(dxil::OpCode::FMad, Intrinsic::fmuladd, ) |
| 574 | DXIL_OP_INTRINSIC(dxil::OpCode::Fma, Intrinsic::fma, ) |
| 575 | DXIL_OP_INTRINSIC(dxil::OpCode::IMad, Intrinsic::dx_imad, ) |
| 576 | DXIL_OP_INTRINSIC(dxil::OpCode::UMad, Intrinsic::dx_umad, ) |
| 577 | DXIL_OP_INTRINSIC(dxil::OpCode::Dot2, Intrinsic::dx_dot2, ) |
| 578 | DXIL_OP_INTRINSIC(dxil::OpCode::Dot3, Intrinsic::dx_dot3, ) |
| 579 | DXIL_OP_INTRINSIC(dxil::OpCode::Dot4, Intrinsic::dx_dot4, ) |
| 580 | DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_all_memory_barrier, (IntrinArgSelect{IntrinArgSelect::Type::I32,10}), ) |
| 581 | DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_all_memory_barrier_with_group_sync, (IntrinArgSelect{IntrinArgSelect::Type::I32,11}), ) |
| 582 | DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_device_memory_barrier, (IntrinArgSelect{IntrinArgSelect::Type::I32,2}), ) |
| 583 | DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_device_memory_barrier_with_group_sync, (IntrinArgSelect{IntrinArgSelect::Type::I32,3}), ) |
| 584 | DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_group_memory_barrier, (IntrinArgSelect{IntrinArgSelect::Type::I32,8}), ) |
| 585 | DXIL_OP_INTRINSIC(dxil::OpCode::Barrier, Intrinsic::dx_group_memory_barrier_with_group_sync, (IntrinArgSelect{IntrinArgSelect::Type::I32,9}), ) |
| 586 | DXIL_OP_INTRINSIC(dxil::OpCode::Discard, Intrinsic::dx_discard, ) |
| 587 | DXIL_OP_INTRINSIC(dxil::OpCode::DerivCoarseX, Intrinsic::dx_ddx_coarse, ) |
| 588 | DXIL_OP_INTRINSIC(dxil::OpCode::DerivCoarseY, Intrinsic::dx_ddy_coarse, ) |
| 589 | DXIL_OP_INTRINSIC(dxil::OpCode::DerivFineX, Intrinsic::dx_ddx_fine, ) |
| 590 | DXIL_OP_INTRINSIC(dxil::OpCode::DerivFineY, Intrinsic::dx_ddy_fine, ) |
| 591 | DXIL_OP_INTRINSIC(dxil::OpCode::ThreadId, Intrinsic::dx_thread_id, ) |
| 592 | DXIL_OP_INTRINSIC(dxil::OpCode::GroupId, Intrinsic::dx_group_id, ) |
| 593 | DXIL_OP_INTRINSIC(dxil::OpCode::ThreadIdInGroup, Intrinsic::dx_thread_id_in_group, ) |
| 594 | DXIL_OP_INTRINSIC(dxil::OpCode::FlattenedThreadIdInGroup, Intrinsic::dx_flattened_thread_id_in_group, ) |
| 595 | DXIL_OP_INTRINSIC(dxil::OpCode::MakeDouble, Intrinsic::dx_asdouble, ) |
| 596 | DXIL_OP_INTRINSIC(dxil::OpCode::SplitDouble, Intrinsic::dx_splitdouble, ) |
| 597 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveIsFirstLane, Intrinsic::dx_wave_is_first_lane, ) |
| 598 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveGetLaneIndex, Intrinsic::dx_wave_getlaneindex, ) |
| 599 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveGetLaneCount, Intrinsic::dx_wave_get_lane_count, ) |
| 600 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveAnyTrue, Intrinsic::dx_wave_any, ) |
| 601 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveAllTrue, Intrinsic::dx_wave_all, ) |
| 602 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveAllEqual, Intrinsic::dx_wave_all_equal, ) |
| 603 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBallot, Intrinsic::dx_wave_ballot, ) |
| 604 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveReadLaneAt, Intrinsic::dx_wave_readlane, ) |
| 605 | DXIL_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}), ) |
| 606 | DXIL_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}), ) |
| 607 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_product, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), ) |
| 608 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveOp, Intrinsic::dx_wave_uproduct, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), ) |
| 609 | DXIL_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}), ) |
| 610 | DXIL_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}), ) |
| 611 | DXIL_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}), ) |
| 612 | DXIL_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}), ) |
| 613 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBit, Intrinsic::dx_wave_reduce_or, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), ) |
| 614 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBit, Intrinsic::dx_wave_reduce_xor, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,2}), ) |
| 615 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveActiveBit, Intrinsic::dx_wave_reduce_and, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), ) |
| 616 | DXIL_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}), ) |
| 617 | DXIL_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}), ) |
| 618 | DXIL_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}), ) |
| 619 | DXIL_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}), ) |
| 620 | DXIL_OP_INTRINSIC(dxil::OpCode::QuadOp, Intrinsic::dx_quad_read_across_x, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,0}), ) |
| 621 | DXIL_OP_INTRINSIC(dxil::OpCode::QuadOp, Intrinsic::dx_quad_read_across_y, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,1}), ) |
| 622 | DXIL_OP_INTRINSIC(dxil::OpCode::QuadOp, Intrinsic::dx_quad_read_across_diagonal, (IntrinArgSelect{IntrinArgSelect::Type::Index,0}), (IntrinArgSelect{IntrinArgSelect::Type::I8,2}), ) |
| 623 | DXIL_OP_INTRINSIC(dxil::OpCode::LegacyF32ToF16, Intrinsic::dx_legacyf32tof16, ) |
| 624 | DXIL_OP_INTRINSIC(dxil::OpCode::LegacyF16ToF32, Intrinsic::dx_legacyf16tof32, ) |
| 625 | DXIL_OP_INTRINSIC(dxil::OpCode::WaveAllBitCount, Intrinsic::dx_wave_active_countbits, ) |
| 626 | DXIL_OP_INTRINSIC(dxil::OpCode::WavePrefixBitCount, Intrinsic::dx_wave_prefix_bit_count, ) |
| 627 | DXIL_OP_INTRINSIC(dxil::OpCode::Dot2AddHalf, Intrinsic::dx_dot2add, ) |
| 628 | DXIL_OP_INTRINSIC(dxil::OpCode::Dot4AddI8Packed, Intrinsic::dx_dot4add_i8packed, ) |
| 629 | DXIL_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 | |
| 638 | enum 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 | |
| 659 | static 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 | |
| 771 | static 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 | |
| 879 | static 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 | |