1 // GENERATED FILE - DO NOT EDIT. 2 // Generated by gen_spirv_builder_and_parser.py using data from spirv.core.grammar.json. 3 // 4 // Copyright 2021 The ANGLE Project Authors. All rights reserved. 5 // Use of this source code is governed by a BSD-style license that can be 6 // found in the LICENSE file. 7 // 8 // spirv_instruction_parser_autogen.h: 9 // Functions to parse SPIR-V binary for each instruction. 10 11 #ifndef COMMON_SPIRV_SPIRVINSTRUCTIONPARSERAUTOGEN_H_ 12 #define COMMON_SPIRV_SPIRVINSTRUCTIONPARSERAUTOGEN_H_ 13 14 #include <spirv/unified1/spirv.hpp> 15 16 #include "spirv_types.h" 17 18 namespace angle 19 { 20 namespace spirv 21 { 22 void GetInstructionOpAndLength(const uint32_t *_instruction, spv::Op *opOut, uint32_t *lengthOut); 23 void ParseUndef(const uint32_t *_instruction, IdResultType *idResultType, IdResult *idResult); 24 void ParseSourceContinued(const uint32_t *_instruction, LiteralString *continuedSource); 25 void ParseSource(const uint32_t *_instruction, 26 spv::SourceLanguage *sourceLanguage, 27 LiteralInteger *version, 28 IdRef *file, 29 LiteralString *source); 30 void ParseSourceExtension(const uint32_t *_instruction, LiteralString *extension); 31 void ParseName(const uint32_t *_instruction, IdRef *target, LiteralString *name); 32 void ParseMemberName(const uint32_t *_instruction, 33 IdRef *type, 34 LiteralInteger *member, 35 LiteralString *name); 36 void ParseString(const uint32_t *_instruction, IdResult *idResult, LiteralString *string); 37 void ParseLine(const uint32_t *_instruction, 38 IdRef *file, 39 LiteralInteger *line, 40 LiteralInteger *column); 41 void ParseExtension(const uint32_t *_instruction, LiteralString *name); 42 void ParseExtInstImport(const uint32_t *_instruction, IdResult *idResult, LiteralString *name); 43 void ParseExtInst(const uint32_t *_instruction, 44 IdResultType *idResultType, 45 IdResult *idResult, 46 IdRef *set, 47 LiteralExtInstInteger *instruction, 48 IdRefList *operandList); 49 void ParseMemoryModel(const uint32_t *_instruction, 50 spv::AddressingModel *addressingModel, 51 spv::MemoryModel *memoryModel); 52 void ParseEntryPoint(const uint32_t *_instruction, 53 spv::ExecutionModel *executionModel, 54 IdRef *entryPoint, 55 LiteralString *name, 56 IdRefList *interfaceList); 57 void ParseExecutionMode(const uint32_t *_instruction, 58 IdRef *entryPoint, 59 spv::ExecutionMode *mode, 60 LiteralIntegerList *operandsList); 61 void ParseCapability(const uint32_t *_instruction, spv::Capability *capability); 62 void ParseTypeVoid(const uint32_t *_instruction, IdResult *idResult); 63 void ParseTypeBool(const uint32_t *_instruction, IdResult *idResult); 64 void ParseTypeInt(const uint32_t *_instruction, 65 IdResult *idResult, 66 LiteralInteger *width, 67 LiteralInteger *signedness); 68 void ParseTypeFloat(const uint32_t *_instruction, IdResult *idResult, LiteralInteger *width); 69 void ParseTypeVector(const uint32_t *_instruction, 70 IdResult *idResult, 71 IdRef *componentType, 72 LiteralInteger *componentCount); 73 void ParseTypeMatrix(const uint32_t *_instruction, 74 IdResult *idResult, 75 IdRef *columnType, 76 LiteralInteger *columnCount); 77 void ParseTypeImage(const uint32_t *_instruction, 78 IdResult *idResult, 79 IdRef *sampledType, 80 spv::Dim *dim, 81 LiteralInteger *depth, 82 LiteralInteger *arrayed, 83 LiteralInteger *mS, 84 LiteralInteger *sampled, 85 spv::ImageFormat *imageFormat, 86 spv::AccessQualifier *accessQualifier); 87 void ParseTypeSampler(const uint32_t *_instruction, IdResult *idResult); 88 void ParseTypeSampledImage(const uint32_t *_instruction, IdResult *idResult, IdRef *imageType); 89 void ParseTypeArray(const uint32_t *_instruction, 90 IdResult *idResult, 91 IdRef *elementType, 92 IdRef *length); 93 void ParseTypeRuntimeArray(const uint32_t *_instruction, IdResult *idResult, IdRef *elementType); 94 void ParseTypeStruct(const uint32_t *_instruction, IdResult *idResult, IdRefList *memberList); 95 void ParseTypePointer(const uint32_t *_instruction, 96 IdResult *idResult, 97 spv::StorageClass *storageClass, 98 IdRef *type); 99 void ParseTypeFunction(const uint32_t *_instruction, 100 IdResult *idResult, 101 IdRef *returnType, 102 IdRefList *parameterList); 103 void ParseConstantTrue(const uint32_t *_instruction, 104 IdResultType *idResultType, 105 IdResult *idResult); 106 void ParseConstantFalse(const uint32_t *_instruction, 107 IdResultType *idResultType, 108 IdResult *idResult); 109 void ParseConstant(const uint32_t *_instruction, 110 IdResultType *idResultType, 111 IdResult *idResult, 112 LiteralContextDependentNumber *value); 113 void ParseConstantComposite(const uint32_t *_instruction, 114 IdResultType *idResultType, 115 IdResult *idResult, 116 IdRefList *constituentsList); 117 void ParseConstantNull(const uint32_t *_instruction, 118 IdResultType *idResultType, 119 IdResult *idResult); 120 void ParseSpecConstantTrue(const uint32_t *_instruction, 121 IdResultType *idResultType, 122 IdResult *idResult); 123 void ParseSpecConstantFalse(const uint32_t *_instruction, 124 IdResultType *idResultType, 125 IdResult *idResult); 126 void ParseSpecConstant(const uint32_t *_instruction, 127 IdResultType *idResultType, 128 IdResult *idResult, 129 LiteralContextDependentNumber *value); 130 void ParseSpecConstantComposite(const uint32_t *_instruction, 131 IdResultType *idResultType, 132 IdResult *idResult, 133 IdRefList *constituentsList); 134 void ParseFunction(const uint32_t *_instruction, 135 IdResultType *idResultType, 136 IdResult *idResult, 137 spv::FunctionControlMask *functionControl, 138 IdRef *functionType); 139 void ParseFunctionParameter(const uint32_t *_instruction, 140 IdResultType *idResultType, 141 IdResult *idResult); 142 void ParseFunctionCall(const uint32_t *_instruction, 143 IdResultType *idResultType, 144 IdResult *idResult, 145 IdRef *function, 146 IdRefList *argumentList); 147 void ParseVariable(const uint32_t *_instruction, 148 IdResultType *idResultType, 149 IdResult *idResult, 150 spv::StorageClass *storageClass, 151 IdRef *initializer); 152 void ParseImageTexelPointer(const uint32_t *_instruction, 153 IdResultType *idResultType, 154 IdResult *idResult, 155 IdRef *image, 156 IdRef *coordinate, 157 IdRef *sample); 158 void ParseLoad(const uint32_t *_instruction, 159 IdResultType *idResultType, 160 IdResult *idResult, 161 IdRef *pointer, 162 spv::MemoryAccessMask *memoryAccess); 163 void ParseStore(const uint32_t *_instruction, 164 IdRef *pointer, 165 IdRef *object, 166 spv::MemoryAccessMask *memoryAccess); 167 void ParseCopyMemory(const uint32_t *_instruction, 168 IdRef *target, 169 IdRef *source, 170 spv::MemoryAccessMask *memoryAccess); 171 void ParseAccessChain(const uint32_t *_instruction, 172 IdResultType *idResultType, 173 IdResult *idResult, 174 IdRef *base, 175 IdRefList *indexesList); 176 void ParseInBoundsAccessChain(const uint32_t *_instruction, 177 IdResultType *idResultType, 178 IdResult *idResult, 179 IdRef *base, 180 IdRefList *indexesList); 181 void ParseArrayLength(const uint32_t *_instruction, 182 IdResultType *idResultType, 183 IdResult *idResult, 184 IdRef *structure, 185 LiteralInteger *arraymember); 186 void ParseDecorate(const uint32_t *_instruction, 187 IdRef *target, 188 spv::Decoration *decoration, 189 LiteralIntegerList *valuesList); 190 void ParseMemberDecorate(const uint32_t *_instruction, 191 IdRef *structureType, 192 LiteralInteger *member, 193 spv::Decoration *decoration, 194 LiteralIntegerList *valuesList); 195 void ParseDecorationGroup(const uint32_t *_instruction, IdResult *idResult); 196 void ParseGroupDecorate(const uint32_t *_instruction, 197 IdRef *decorationGroup, 198 IdRefList *targetsList); 199 void ParseGroupMemberDecorate(const uint32_t *_instruction, 200 IdRef *decorationGroup, 201 PairIdRefLiteralIntegerList *targetsPairList); 202 void ParseVectorExtractDynamic(const uint32_t *_instruction, 203 IdResultType *idResultType, 204 IdResult *idResult, 205 IdRef *vector, 206 IdRef *index); 207 void ParseVectorInsertDynamic(const uint32_t *_instruction, 208 IdResultType *idResultType, 209 IdResult *idResult, 210 IdRef *vector, 211 IdRef *component, 212 IdRef *index); 213 void ParseVectorShuffle(const uint32_t *_instruction, 214 IdResultType *idResultType, 215 IdResult *idResult, 216 IdRef *vector1, 217 IdRef *vector2, 218 LiteralIntegerList *componentsList); 219 void ParseCompositeConstruct(const uint32_t *_instruction, 220 IdResultType *idResultType, 221 IdResult *idResult, 222 IdRefList *constituentsList); 223 void ParseCompositeExtract(const uint32_t *_instruction, 224 IdResultType *idResultType, 225 IdResult *idResult, 226 IdRef *composite, 227 LiteralIntegerList *indexesList); 228 void ParseCompositeInsert(const uint32_t *_instruction, 229 IdResultType *idResultType, 230 IdResult *idResult, 231 IdRef *object, 232 IdRef *composite, 233 LiteralIntegerList *indexesList); 234 void ParseCopyObject(const uint32_t *_instruction, 235 IdResultType *idResultType, 236 IdResult *idResult, 237 IdRef *operand); 238 void ParseTranspose(const uint32_t *_instruction, 239 IdResultType *idResultType, 240 IdResult *idResult, 241 IdRef *matrix); 242 void ParseSampledImage(const uint32_t *_instruction, 243 IdResultType *idResultType, 244 IdResult *idResult, 245 IdRef *image, 246 IdRef *sampler); 247 void ParseImageSampleImplicitLod(const uint32_t *_instruction, 248 IdResultType *idResultType, 249 IdResult *idResult, 250 IdRef *sampledImage, 251 IdRef *coordinate, 252 spv::ImageOperandsMask *imageOperands, 253 IdRefList *imageOperandIdsList); 254 void ParseImageSampleExplicitLod(const uint32_t *_instruction, 255 IdResultType *idResultType, 256 IdResult *idResult, 257 IdRef *sampledImage, 258 IdRef *coordinate, 259 spv::ImageOperandsMask *imageOperands, 260 IdRefList *imageOperandIdsList); 261 void ParseImageSampleDrefImplicitLod(const uint32_t *_instruction, 262 IdResultType *idResultType, 263 IdResult *idResult, 264 IdRef *sampledImage, 265 IdRef *coordinate, 266 IdRef *dref, 267 spv::ImageOperandsMask *imageOperands, 268 IdRefList *imageOperandIdsList); 269 void ParseImageSampleDrefExplicitLod(const uint32_t *_instruction, 270 IdResultType *idResultType, 271 IdResult *idResult, 272 IdRef *sampledImage, 273 IdRef *coordinate, 274 IdRef *dref, 275 spv::ImageOperandsMask *imageOperands, 276 IdRefList *imageOperandIdsList); 277 void ParseImageSampleProjImplicitLod(const uint32_t *_instruction, 278 IdResultType *idResultType, 279 IdResult *idResult, 280 IdRef *sampledImage, 281 IdRef *coordinate, 282 spv::ImageOperandsMask *imageOperands, 283 IdRefList *imageOperandIdsList); 284 void ParseImageSampleProjExplicitLod(const uint32_t *_instruction, 285 IdResultType *idResultType, 286 IdResult *idResult, 287 IdRef *sampledImage, 288 IdRef *coordinate, 289 spv::ImageOperandsMask *imageOperands, 290 IdRefList *imageOperandIdsList); 291 void ParseImageSampleProjDrefImplicitLod(const uint32_t *_instruction, 292 IdResultType *idResultType, 293 IdResult *idResult, 294 IdRef *sampledImage, 295 IdRef *coordinate, 296 IdRef *dref, 297 spv::ImageOperandsMask *imageOperands, 298 IdRefList *imageOperandIdsList); 299 void ParseImageSampleProjDrefExplicitLod(const uint32_t *_instruction, 300 IdResultType *idResultType, 301 IdResult *idResult, 302 IdRef *sampledImage, 303 IdRef *coordinate, 304 IdRef *dref, 305 spv::ImageOperandsMask *imageOperands, 306 IdRefList *imageOperandIdsList); 307 void ParseImageFetch(const uint32_t *_instruction, 308 IdResultType *idResultType, 309 IdResult *idResult, 310 IdRef *image, 311 IdRef *coordinate, 312 spv::ImageOperandsMask *imageOperands, 313 IdRefList *imageOperandIdsList); 314 void ParseImageGather(const uint32_t *_instruction, 315 IdResultType *idResultType, 316 IdResult *idResult, 317 IdRef *sampledImage, 318 IdRef *coordinate, 319 IdRef *component, 320 spv::ImageOperandsMask *imageOperands, 321 IdRefList *imageOperandIdsList); 322 void ParseImageDrefGather(const uint32_t *_instruction, 323 IdResultType *idResultType, 324 IdResult *idResult, 325 IdRef *sampledImage, 326 IdRef *coordinate, 327 IdRef *dref, 328 spv::ImageOperandsMask *imageOperands, 329 IdRefList *imageOperandIdsList); 330 void ParseImageRead(const uint32_t *_instruction, 331 IdResultType *idResultType, 332 IdResult *idResult, 333 IdRef *image, 334 IdRef *coordinate, 335 spv::ImageOperandsMask *imageOperands, 336 IdRefList *imageOperandIdsList); 337 void ParseImageWrite(const uint32_t *_instruction, 338 IdRef *image, 339 IdRef *coordinate, 340 IdRef *texel, 341 spv::ImageOperandsMask *imageOperands, 342 IdRefList *imageOperandIdsList); 343 void ParseImage(const uint32_t *_instruction, 344 IdResultType *idResultType, 345 IdResult *idResult, 346 IdRef *sampledImage); 347 void ParseImageQuerySizeLod(const uint32_t *_instruction, 348 IdResultType *idResultType, 349 IdResult *idResult, 350 IdRef *image, 351 IdRef *levelofDetail); 352 void ParseImageQuerySize(const uint32_t *_instruction, 353 IdResultType *idResultType, 354 IdResult *idResult, 355 IdRef *image); 356 void ParseImageQueryLod(const uint32_t *_instruction, 357 IdResultType *idResultType, 358 IdResult *idResult, 359 IdRef *sampledImage, 360 IdRef *coordinate); 361 void ParseImageQueryLevels(const uint32_t *_instruction, 362 IdResultType *idResultType, 363 IdResult *idResult, 364 IdRef *image); 365 void ParseImageQuerySamples(const uint32_t *_instruction, 366 IdResultType *idResultType, 367 IdResult *idResult, 368 IdRef *image); 369 void ParseConvertFToU(const uint32_t *_instruction, 370 IdResultType *idResultType, 371 IdResult *idResult, 372 IdRef *floatValue); 373 void ParseConvertFToS(const uint32_t *_instruction, 374 IdResultType *idResultType, 375 IdResult *idResult, 376 IdRef *floatValue); 377 void ParseConvertSToF(const uint32_t *_instruction, 378 IdResultType *idResultType, 379 IdResult *idResult, 380 IdRef *signedValue); 381 void ParseConvertUToF(const uint32_t *_instruction, 382 IdResultType *idResultType, 383 IdResult *idResult, 384 IdRef *unsignedValue); 385 void ParseUConvert(const uint32_t *_instruction, 386 IdResultType *idResultType, 387 IdResult *idResult, 388 IdRef *unsignedValue); 389 void ParseSConvert(const uint32_t *_instruction, 390 IdResultType *idResultType, 391 IdResult *idResult, 392 IdRef *signedValue); 393 void ParseFConvert(const uint32_t *_instruction, 394 IdResultType *idResultType, 395 IdResult *idResult, 396 IdRef *floatValue); 397 void ParseQuantizeToF16(const uint32_t *_instruction, 398 IdResultType *idResultType, 399 IdResult *idResult, 400 IdRef *value); 401 void ParseBitcast(const uint32_t *_instruction, 402 IdResultType *idResultType, 403 IdResult *idResult, 404 IdRef *operand); 405 void ParseSNegate(const uint32_t *_instruction, 406 IdResultType *idResultType, 407 IdResult *idResult, 408 IdRef *operand); 409 void ParseFNegate(const uint32_t *_instruction, 410 IdResultType *idResultType, 411 IdResult *idResult, 412 IdRef *operand); 413 void ParseIAdd(const uint32_t *_instruction, 414 IdResultType *idResultType, 415 IdResult *idResult, 416 IdRef *operand1, 417 IdRef *operand2); 418 void ParseFAdd(const uint32_t *_instruction, 419 IdResultType *idResultType, 420 IdResult *idResult, 421 IdRef *operand1, 422 IdRef *operand2); 423 void ParseISub(const uint32_t *_instruction, 424 IdResultType *idResultType, 425 IdResult *idResult, 426 IdRef *operand1, 427 IdRef *operand2); 428 void ParseFSub(const uint32_t *_instruction, 429 IdResultType *idResultType, 430 IdResult *idResult, 431 IdRef *operand1, 432 IdRef *operand2); 433 void ParseIMul(const uint32_t *_instruction, 434 IdResultType *idResultType, 435 IdResult *idResult, 436 IdRef *operand1, 437 IdRef *operand2); 438 void ParseFMul(const uint32_t *_instruction, 439 IdResultType *idResultType, 440 IdResult *idResult, 441 IdRef *operand1, 442 IdRef *operand2); 443 void ParseUDiv(const uint32_t *_instruction, 444 IdResultType *idResultType, 445 IdResult *idResult, 446 IdRef *operand1, 447 IdRef *operand2); 448 void ParseSDiv(const uint32_t *_instruction, 449 IdResultType *idResultType, 450 IdResult *idResult, 451 IdRef *operand1, 452 IdRef *operand2); 453 void ParseFDiv(const uint32_t *_instruction, 454 IdResultType *idResultType, 455 IdResult *idResult, 456 IdRef *operand1, 457 IdRef *operand2); 458 void ParseUMod(const uint32_t *_instruction, 459 IdResultType *idResultType, 460 IdResult *idResult, 461 IdRef *operand1, 462 IdRef *operand2); 463 void ParseSRem(const uint32_t *_instruction, 464 IdResultType *idResultType, 465 IdResult *idResult, 466 IdRef *operand1, 467 IdRef *operand2); 468 void ParseSMod(const uint32_t *_instruction, 469 IdResultType *idResultType, 470 IdResult *idResult, 471 IdRef *operand1, 472 IdRef *operand2); 473 void ParseFRem(const uint32_t *_instruction, 474 IdResultType *idResultType, 475 IdResult *idResult, 476 IdRef *operand1, 477 IdRef *operand2); 478 void ParseFMod(const uint32_t *_instruction, 479 IdResultType *idResultType, 480 IdResult *idResult, 481 IdRef *operand1, 482 IdRef *operand2); 483 void ParseVectorTimesScalar(const uint32_t *_instruction, 484 IdResultType *idResultType, 485 IdResult *idResult, 486 IdRef *vector, 487 IdRef *scalar); 488 void ParseMatrixTimesScalar(const uint32_t *_instruction, 489 IdResultType *idResultType, 490 IdResult *idResult, 491 IdRef *matrix, 492 IdRef *scalar); 493 void ParseVectorTimesMatrix(const uint32_t *_instruction, 494 IdResultType *idResultType, 495 IdResult *idResult, 496 IdRef *vector, 497 IdRef *matrix); 498 void ParseMatrixTimesVector(const uint32_t *_instruction, 499 IdResultType *idResultType, 500 IdResult *idResult, 501 IdRef *matrix, 502 IdRef *vector); 503 void ParseMatrixTimesMatrix(const uint32_t *_instruction, 504 IdResultType *idResultType, 505 IdResult *idResult, 506 IdRef *leftMatrix, 507 IdRef *rightMatrix); 508 void ParseOuterProduct(const uint32_t *_instruction, 509 IdResultType *idResultType, 510 IdResult *idResult, 511 IdRef *vector1, 512 IdRef *vector2); 513 void ParseDot(const uint32_t *_instruction, 514 IdResultType *idResultType, 515 IdResult *idResult, 516 IdRef *vector1, 517 IdRef *vector2); 518 void ParseIAddCarry(const uint32_t *_instruction, 519 IdResultType *idResultType, 520 IdResult *idResult, 521 IdRef *operand1, 522 IdRef *operand2); 523 void ParseISubBorrow(const uint32_t *_instruction, 524 IdResultType *idResultType, 525 IdResult *idResult, 526 IdRef *operand1, 527 IdRef *operand2); 528 void ParseUMulExtended(const uint32_t *_instruction, 529 IdResultType *idResultType, 530 IdResult *idResult, 531 IdRef *operand1, 532 IdRef *operand2); 533 void ParseSMulExtended(const uint32_t *_instruction, 534 IdResultType *idResultType, 535 IdResult *idResult, 536 IdRef *operand1, 537 IdRef *operand2); 538 void ParseAny(const uint32_t *_instruction, 539 IdResultType *idResultType, 540 IdResult *idResult, 541 IdRef *vector); 542 void ParseAll(const uint32_t *_instruction, 543 IdResultType *idResultType, 544 IdResult *idResult, 545 IdRef *vector); 546 void ParseIsNan(const uint32_t *_instruction, 547 IdResultType *idResultType, 548 IdResult *idResult, 549 IdRef *x); 550 void ParseIsInf(const uint32_t *_instruction, 551 IdResultType *idResultType, 552 IdResult *idResult, 553 IdRef *x); 554 void ParseLogicalEqual(const uint32_t *_instruction, 555 IdResultType *idResultType, 556 IdResult *idResult, 557 IdRef *operand1, 558 IdRef *operand2); 559 void ParseLogicalNotEqual(const uint32_t *_instruction, 560 IdResultType *idResultType, 561 IdResult *idResult, 562 IdRef *operand1, 563 IdRef *operand2); 564 void ParseLogicalOr(const uint32_t *_instruction, 565 IdResultType *idResultType, 566 IdResult *idResult, 567 IdRef *operand1, 568 IdRef *operand2); 569 void ParseLogicalAnd(const uint32_t *_instruction, 570 IdResultType *idResultType, 571 IdResult *idResult, 572 IdRef *operand1, 573 IdRef *operand2); 574 void ParseLogicalNot(const uint32_t *_instruction, 575 IdResultType *idResultType, 576 IdResult *idResult, 577 IdRef *operand); 578 void ParseSelect(const uint32_t *_instruction, 579 IdResultType *idResultType, 580 IdResult *idResult, 581 IdRef *condition, 582 IdRef *object1, 583 IdRef *object2); 584 void ParseIEqual(const uint32_t *_instruction, 585 IdResultType *idResultType, 586 IdResult *idResult, 587 IdRef *operand1, 588 IdRef *operand2); 589 void ParseINotEqual(const uint32_t *_instruction, 590 IdResultType *idResultType, 591 IdResult *idResult, 592 IdRef *operand1, 593 IdRef *operand2); 594 void ParseUGreaterThan(const uint32_t *_instruction, 595 IdResultType *idResultType, 596 IdResult *idResult, 597 IdRef *operand1, 598 IdRef *operand2); 599 void ParseSGreaterThan(const uint32_t *_instruction, 600 IdResultType *idResultType, 601 IdResult *idResult, 602 IdRef *operand1, 603 IdRef *operand2); 604 void ParseUGreaterThanEqual(const uint32_t *_instruction, 605 IdResultType *idResultType, 606 IdResult *idResult, 607 IdRef *operand1, 608 IdRef *operand2); 609 void ParseSGreaterThanEqual(const uint32_t *_instruction, 610 IdResultType *idResultType, 611 IdResult *idResult, 612 IdRef *operand1, 613 IdRef *operand2); 614 void ParseULessThan(const uint32_t *_instruction, 615 IdResultType *idResultType, 616 IdResult *idResult, 617 IdRef *operand1, 618 IdRef *operand2); 619 void ParseSLessThan(const uint32_t *_instruction, 620 IdResultType *idResultType, 621 IdResult *idResult, 622 IdRef *operand1, 623 IdRef *operand2); 624 void ParseULessThanEqual(const uint32_t *_instruction, 625 IdResultType *idResultType, 626 IdResult *idResult, 627 IdRef *operand1, 628 IdRef *operand2); 629 void ParseSLessThanEqual(const uint32_t *_instruction, 630 IdResultType *idResultType, 631 IdResult *idResult, 632 IdRef *operand1, 633 IdRef *operand2); 634 void ParseFOrdEqual(const uint32_t *_instruction, 635 IdResultType *idResultType, 636 IdResult *idResult, 637 IdRef *operand1, 638 IdRef *operand2); 639 void ParseFUnordEqual(const uint32_t *_instruction, 640 IdResultType *idResultType, 641 IdResult *idResult, 642 IdRef *operand1, 643 IdRef *operand2); 644 void ParseFOrdNotEqual(const uint32_t *_instruction, 645 IdResultType *idResultType, 646 IdResult *idResult, 647 IdRef *operand1, 648 IdRef *operand2); 649 void ParseFUnordNotEqual(const uint32_t *_instruction, 650 IdResultType *idResultType, 651 IdResult *idResult, 652 IdRef *operand1, 653 IdRef *operand2); 654 void ParseFOrdLessThan(const uint32_t *_instruction, 655 IdResultType *idResultType, 656 IdResult *idResult, 657 IdRef *operand1, 658 IdRef *operand2); 659 void ParseFUnordLessThan(const uint32_t *_instruction, 660 IdResultType *idResultType, 661 IdResult *idResult, 662 IdRef *operand1, 663 IdRef *operand2); 664 void ParseFOrdGreaterThan(const uint32_t *_instruction, 665 IdResultType *idResultType, 666 IdResult *idResult, 667 IdRef *operand1, 668 IdRef *operand2); 669 void ParseFUnordGreaterThan(const uint32_t *_instruction, 670 IdResultType *idResultType, 671 IdResult *idResult, 672 IdRef *operand1, 673 IdRef *operand2); 674 void ParseFOrdLessThanEqual(const uint32_t *_instruction, 675 IdResultType *idResultType, 676 IdResult *idResult, 677 IdRef *operand1, 678 IdRef *operand2); 679 void ParseFUnordLessThanEqual(const uint32_t *_instruction, 680 IdResultType *idResultType, 681 IdResult *idResult, 682 IdRef *operand1, 683 IdRef *operand2); 684 void ParseFOrdGreaterThanEqual(const uint32_t *_instruction, 685 IdResultType *idResultType, 686 IdResult *idResult, 687 IdRef *operand1, 688 IdRef *operand2); 689 void ParseFUnordGreaterThanEqual(const uint32_t *_instruction, 690 IdResultType *idResultType, 691 IdResult *idResult, 692 IdRef *operand1, 693 IdRef *operand2); 694 void ParseShiftRightLogical(const uint32_t *_instruction, 695 IdResultType *idResultType, 696 IdResult *idResult, 697 IdRef *base, 698 IdRef *shift); 699 void ParseShiftRightArithmetic(const uint32_t *_instruction, 700 IdResultType *idResultType, 701 IdResult *idResult, 702 IdRef *base, 703 IdRef *shift); 704 void ParseShiftLeftLogical(const uint32_t *_instruction, 705 IdResultType *idResultType, 706 IdResult *idResult, 707 IdRef *base, 708 IdRef *shift); 709 void ParseBitwiseOr(const uint32_t *_instruction, 710 IdResultType *idResultType, 711 IdResult *idResult, 712 IdRef *operand1, 713 IdRef *operand2); 714 void ParseBitwiseXor(const uint32_t *_instruction, 715 IdResultType *idResultType, 716 IdResult *idResult, 717 IdRef *operand1, 718 IdRef *operand2); 719 void ParseBitwiseAnd(const uint32_t *_instruction, 720 IdResultType *idResultType, 721 IdResult *idResult, 722 IdRef *operand1, 723 IdRef *operand2); 724 void ParseNot(const uint32_t *_instruction, 725 IdResultType *idResultType, 726 IdResult *idResult, 727 IdRef *operand); 728 void ParseBitFieldInsert(const uint32_t *_instruction, 729 IdResultType *idResultType, 730 IdResult *idResult, 731 IdRef *base, 732 IdRef *insert, 733 IdRef *offset, 734 IdRef *count); 735 void ParseBitFieldSExtract(const uint32_t *_instruction, 736 IdResultType *idResultType, 737 IdResult *idResult, 738 IdRef *base, 739 IdRef *offset, 740 IdRef *count); 741 void ParseBitFieldUExtract(const uint32_t *_instruction, 742 IdResultType *idResultType, 743 IdResult *idResult, 744 IdRef *base, 745 IdRef *offset, 746 IdRef *count); 747 void ParseBitReverse(const uint32_t *_instruction, 748 IdResultType *idResultType, 749 IdResult *idResult, 750 IdRef *base); 751 void ParseBitCount(const uint32_t *_instruction, 752 IdResultType *idResultType, 753 IdResult *idResult, 754 IdRef *base); 755 void ParseDPdx(const uint32_t *_instruction, 756 IdResultType *idResultType, 757 IdResult *idResult, 758 IdRef *p); 759 void ParseDPdy(const uint32_t *_instruction, 760 IdResultType *idResultType, 761 IdResult *idResult, 762 IdRef *p); 763 void ParseFwidth(const uint32_t *_instruction, 764 IdResultType *idResultType, 765 IdResult *idResult, 766 IdRef *p); 767 void ParseDPdxFine(const uint32_t *_instruction, 768 IdResultType *idResultType, 769 IdResult *idResult, 770 IdRef *p); 771 void ParseDPdyFine(const uint32_t *_instruction, 772 IdResultType *idResultType, 773 IdResult *idResult, 774 IdRef *p); 775 void ParseFwidthFine(const uint32_t *_instruction, 776 IdResultType *idResultType, 777 IdResult *idResult, 778 IdRef *p); 779 void ParseDPdxCoarse(const uint32_t *_instruction, 780 IdResultType *idResultType, 781 IdResult *idResult, 782 IdRef *p); 783 void ParseDPdyCoarse(const uint32_t *_instruction, 784 IdResultType *idResultType, 785 IdResult *idResult, 786 IdRef *p); 787 void ParseFwidthCoarse(const uint32_t *_instruction, 788 IdResultType *idResultType, 789 IdResult *idResult, 790 IdRef *p); 791 void ParseEmitStreamVertex(const uint32_t *_instruction, IdRef *stream); 792 void ParseEndStreamPrimitive(const uint32_t *_instruction, IdRef *stream); 793 void ParseControlBarrier(const uint32_t *_instruction, 794 IdScope *execution, 795 IdScope *memory, 796 IdMemorySemantics *semantics); 797 void ParseMemoryBarrier(const uint32_t *_instruction, 798 IdScope *memory, 799 IdMemorySemantics *semantics); 800 void ParseAtomicLoad(const uint32_t *_instruction, 801 IdResultType *idResultType, 802 IdResult *idResult, 803 IdRef *pointer, 804 IdScope *scope, 805 IdMemorySemantics *semantics); 806 void ParseAtomicStore(const uint32_t *_instruction, 807 IdRef *pointer, 808 IdScope *scope, 809 IdMemorySemantics *semantics, 810 IdRef *value); 811 void ParseAtomicExchange(const uint32_t *_instruction, 812 IdResultType *idResultType, 813 IdResult *idResult, 814 IdRef *pointer, 815 IdScope *scope, 816 IdMemorySemantics *semantics, 817 IdRef *value); 818 void ParseAtomicCompareExchange(const uint32_t *_instruction, 819 IdResultType *idResultType, 820 IdResult *idResult, 821 IdRef *pointer, 822 IdScope *scope, 823 IdMemorySemantics *equal, 824 IdMemorySemantics *unequal, 825 IdRef *value, 826 IdRef *comparator); 827 void ParseAtomicIIncrement(const uint32_t *_instruction, 828 IdResultType *idResultType, 829 IdResult *idResult, 830 IdRef *pointer, 831 IdScope *scope, 832 IdMemorySemantics *semantics); 833 void ParseAtomicIDecrement(const uint32_t *_instruction, 834 IdResultType *idResultType, 835 IdResult *idResult, 836 IdRef *pointer, 837 IdScope *scope, 838 IdMemorySemantics *semantics); 839 void ParseAtomicIAdd(const uint32_t *_instruction, 840 IdResultType *idResultType, 841 IdResult *idResult, 842 IdRef *pointer, 843 IdScope *scope, 844 IdMemorySemantics *semantics, 845 IdRef *value); 846 void ParseAtomicISub(const uint32_t *_instruction, 847 IdResultType *idResultType, 848 IdResult *idResult, 849 IdRef *pointer, 850 IdScope *scope, 851 IdMemorySemantics *semantics, 852 IdRef *value); 853 void ParseAtomicSMin(const uint32_t *_instruction, 854 IdResultType *idResultType, 855 IdResult *idResult, 856 IdRef *pointer, 857 IdScope *scope, 858 IdMemorySemantics *semantics, 859 IdRef *value); 860 void ParseAtomicUMin(const uint32_t *_instruction, 861 IdResultType *idResultType, 862 IdResult *idResult, 863 IdRef *pointer, 864 IdScope *scope, 865 IdMemorySemantics *semantics, 866 IdRef *value); 867 void ParseAtomicSMax(const uint32_t *_instruction, 868 IdResultType *idResultType, 869 IdResult *idResult, 870 IdRef *pointer, 871 IdScope *scope, 872 IdMemorySemantics *semantics, 873 IdRef *value); 874 void ParseAtomicUMax(const uint32_t *_instruction, 875 IdResultType *idResultType, 876 IdResult *idResult, 877 IdRef *pointer, 878 IdScope *scope, 879 IdMemorySemantics *semantics, 880 IdRef *value); 881 void ParseAtomicAnd(const uint32_t *_instruction, 882 IdResultType *idResultType, 883 IdResult *idResult, 884 IdRef *pointer, 885 IdScope *scope, 886 IdMemorySemantics *semantics, 887 IdRef *value); 888 void ParseAtomicOr(const uint32_t *_instruction, 889 IdResultType *idResultType, 890 IdResult *idResult, 891 IdRef *pointer, 892 IdScope *scope, 893 IdMemorySemantics *semantics, 894 IdRef *value); 895 void ParseAtomicXor(const uint32_t *_instruction, 896 IdResultType *idResultType, 897 IdResult *idResult, 898 IdRef *pointer, 899 IdScope *scope, 900 IdMemorySemantics *semantics, 901 IdRef *value); 902 void ParsePhi(const uint32_t *_instruction, 903 IdResultType *idResultType, 904 IdResult *idResult, 905 PairIdRefIdRefList *variableParentPairList); 906 void ParseLoopMerge(const uint32_t *_instruction, 907 IdRef *mergeBlock, 908 IdRef *continueTarget, 909 spv::LoopControlMask *loopControl); 910 void ParseSelectionMerge(const uint32_t *_instruction, 911 IdRef *mergeBlock, 912 spv::SelectionControlMask *selectionControl); 913 void ParseLabel(const uint32_t *_instruction, IdResult *idResult); 914 void ParseBranch(const uint32_t *_instruction, IdRef *targetLabel); 915 void ParseBranchConditional(const uint32_t *_instruction, 916 IdRef *condition, 917 IdRef *trueLabel, 918 IdRef *falseLabel, 919 LiteralIntegerList *branchweightsList); 920 void ParseSwitch(const uint32_t *_instruction, 921 IdRef *selector, 922 IdRef *default_, 923 PairLiteralIntegerIdRefList *targetPairList); 924 void ParseReturnValue(const uint32_t *_instruction, IdRef *value); 925 void ParseGroupAll(const uint32_t *_instruction, 926 IdResultType *idResultType, 927 IdResult *idResult, 928 IdScope *execution, 929 IdRef *predicate); 930 void ParseGroupAny(const uint32_t *_instruction, 931 IdResultType *idResultType, 932 IdResult *idResult, 933 IdScope *execution, 934 IdRef *predicate); 935 void ParseGroupBroadcast(const uint32_t *_instruction, 936 IdResultType *idResultType, 937 IdResult *idResult, 938 IdScope *execution, 939 IdRef *value, 940 IdRef *localId); 941 void ParseGroupIAdd(const uint32_t *_instruction, 942 IdResultType *idResultType, 943 IdResult *idResult, 944 IdScope *execution, 945 spv::GroupOperation *operation, 946 IdRef *x); 947 void ParseGroupFAdd(const uint32_t *_instruction, 948 IdResultType *idResultType, 949 IdResult *idResult, 950 IdScope *execution, 951 spv::GroupOperation *operation, 952 IdRef *x); 953 void ParseGroupFMin(const uint32_t *_instruction, 954 IdResultType *idResultType, 955 IdResult *idResult, 956 IdScope *execution, 957 spv::GroupOperation *operation, 958 IdRef *x); 959 void ParseGroupUMin(const uint32_t *_instruction, 960 IdResultType *idResultType, 961 IdResult *idResult, 962 IdScope *execution, 963 spv::GroupOperation *operation, 964 IdRef *x); 965 void ParseGroupSMin(const uint32_t *_instruction, 966 IdResultType *idResultType, 967 IdResult *idResult, 968 IdScope *execution, 969 spv::GroupOperation *operation, 970 IdRef *x); 971 void ParseGroupFMax(const uint32_t *_instruction, 972 IdResultType *idResultType, 973 IdResult *idResult, 974 IdScope *execution, 975 spv::GroupOperation *operation, 976 IdRef *x); 977 void ParseGroupUMax(const uint32_t *_instruction, 978 IdResultType *idResultType, 979 IdResult *idResult, 980 IdScope *execution, 981 spv::GroupOperation *operation, 982 IdRef *x); 983 void ParseGroupSMax(const uint32_t *_instruction, 984 IdResultType *idResultType, 985 IdResult *idResult, 986 IdScope *execution, 987 spv::GroupOperation *operation, 988 IdRef *x); 989 void ParseImageSparseSampleImplicitLod(const uint32_t *_instruction, 990 IdResultType *idResultType, 991 IdResult *idResult, 992 IdRef *sampledImage, 993 IdRef *coordinate, 994 spv::ImageOperandsMask *imageOperands, 995 IdRefList *imageOperandIdsList); 996 void ParseImageSparseSampleExplicitLod(const uint32_t *_instruction, 997 IdResultType *idResultType, 998 IdResult *idResult, 999 IdRef *sampledImage, 1000 IdRef *coordinate, 1001 spv::ImageOperandsMask *imageOperands, 1002 IdRefList *imageOperandIdsList); 1003 void ParseImageSparseSampleDrefImplicitLod(const uint32_t *_instruction, 1004 IdResultType *idResultType, 1005 IdResult *idResult, 1006 IdRef *sampledImage, 1007 IdRef *coordinate, 1008 IdRef *dref, 1009 spv::ImageOperandsMask *imageOperands, 1010 IdRefList *imageOperandIdsList); 1011 void ParseImageSparseSampleDrefExplicitLod(const uint32_t *_instruction, 1012 IdResultType *idResultType, 1013 IdResult *idResult, 1014 IdRef *sampledImage, 1015 IdRef *coordinate, 1016 IdRef *dref, 1017 spv::ImageOperandsMask *imageOperands, 1018 IdRefList *imageOperandIdsList); 1019 void ParseImageSparseSampleProjImplicitLod(const uint32_t *_instruction, 1020 IdResultType *idResultType, 1021 IdResult *idResult, 1022 IdRef *sampledImage, 1023 IdRef *coordinate, 1024 spv::ImageOperandsMask *imageOperands, 1025 IdRefList *imageOperandIdsList); 1026 void ParseImageSparseSampleProjExplicitLod(const uint32_t *_instruction, 1027 IdResultType *idResultType, 1028 IdResult *idResult, 1029 IdRef *sampledImage, 1030 IdRef *coordinate, 1031 spv::ImageOperandsMask *imageOperands, 1032 IdRefList *imageOperandIdsList); 1033 void ParseImageSparseSampleProjDrefImplicitLod(const uint32_t *_instruction, 1034 IdResultType *idResultType, 1035 IdResult *idResult, 1036 IdRef *sampledImage, 1037 IdRef *coordinate, 1038 IdRef *dref, 1039 spv::ImageOperandsMask *imageOperands, 1040 IdRefList *imageOperandIdsList); 1041 void ParseImageSparseSampleProjDrefExplicitLod(const uint32_t *_instruction, 1042 IdResultType *idResultType, 1043 IdResult *idResult, 1044 IdRef *sampledImage, 1045 IdRef *coordinate, 1046 IdRef *dref, 1047 spv::ImageOperandsMask *imageOperands, 1048 IdRefList *imageOperandIdsList); 1049 void ParseImageSparseFetch(const uint32_t *_instruction, 1050 IdResultType *idResultType, 1051 IdResult *idResult, 1052 IdRef *image, 1053 IdRef *coordinate, 1054 spv::ImageOperandsMask *imageOperands, 1055 IdRefList *imageOperandIdsList); 1056 void ParseImageSparseGather(const uint32_t *_instruction, 1057 IdResultType *idResultType, 1058 IdResult *idResult, 1059 IdRef *sampledImage, 1060 IdRef *coordinate, 1061 IdRef *component, 1062 spv::ImageOperandsMask *imageOperands, 1063 IdRefList *imageOperandIdsList); 1064 void ParseImageSparseDrefGather(const uint32_t *_instruction, 1065 IdResultType *idResultType, 1066 IdResult *idResult, 1067 IdRef *sampledImage, 1068 IdRef *coordinate, 1069 IdRef *dref, 1070 spv::ImageOperandsMask *imageOperands, 1071 IdRefList *imageOperandIdsList); 1072 void ParseImageSparseTexelsResident(const uint32_t *_instruction, 1073 IdResultType *idResultType, 1074 IdResult *idResult, 1075 IdRef *residentCode); 1076 void ParseImageSparseRead(const uint32_t *_instruction, 1077 IdResultType *idResultType, 1078 IdResult *idResult, 1079 IdRef *image, 1080 IdRef *coordinate, 1081 spv::ImageOperandsMask *imageOperands, 1082 IdRefList *imageOperandIdsList); 1083 void ParseGroupIAddNonUniformAMD(const uint32_t *_instruction, 1084 IdResultType *idResultType, 1085 IdResult *idResult, 1086 IdScope *execution, 1087 spv::GroupOperation *operation, 1088 IdRef *x); 1089 void ParseGroupFAddNonUniformAMD(const uint32_t *_instruction, 1090 IdResultType *idResultType, 1091 IdResult *idResult, 1092 IdScope *execution, 1093 spv::GroupOperation *operation, 1094 IdRef *x); 1095 void ParseGroupFMinNonUniformAMD(const uint32_t *_instruction, 1096 IdResultType *idResultType, 1097 IdResult *idResult, 1098 IdScope *execution, 1099 spv::GroupOperation *operation, 1100 IdRef *x); 1101 void ParseGroupUMinNonUniformAMD(const uint32_t *_instruction, 1102 IdResultType *idResultType, 1103 IdResult *idResult, 1104 IdScope *execution, 1105 spv::GroupOperation *operation, 1106 IdRef *x); 1107 void ParseGroupSMinNonUniformAMD(const uint32_t *_instruction, 1108 IdResultType *idResultType, 1109 IdResult *idResult, 1110 IdScope *execution, 1111 spv::GroupOperation *operation, 1112 IdRef *x); 1113 void ParseGroupFMaxNonUniformAMD(const uint32_t *_instruction, 1114 IdResultType *idResultType, 1115 IdResult *idResult, 1116 IdScope *execution, 1117 spv::GroupOperation *operation, 1118 IdRef *x); 1119 void ParseGroupUMaxNonUniformAMD(const uint32_t *_instruction, 1120 IdResultType *idResultType, 1121 IdResult *idResult, 1122 IdScope *execution, 1123 spv::GroupOperation *operation, 1124 IdRef *x); 1125 void ParseGroupSMaxNonUniformAMD(const uint32_t *_instruction, 1126 IdResultType *idResultType, 1127 IdResult *idResult, 1128 IdScope *execution, 1129 spv::GroupOperation *operation, 1130 IdRef *x); 1131 1132 } // namespace spirv 1133 } // namespace angle 1134 1135 #endif // COMMON_SPIRV_SPIRVINSTRUCTIONPARSERAUTOGEN_H_ 1136