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_builder_autogen.h: 9 // Functions to generate SPIR-V binary for each instruction. 10 11 #ifndef COMMON_SPIRV_SPIRVINSTRUCTIONBUILDERAUTOGEN_H_ 12 #define COMMON_SPIRV_SPIRVINSTRUCTIONBUILDERAUTOGEN_H_ 13 14 #include <spirv/unified1/spirv.hpp> 15 16 #include "spirv_types.h" 17 18 namespace angle 19 { 20 namespace spirv 21 { 22 23 void WriteSpirvHeader(std::vector<uint32_t> *blob, uint32_t version, uint32_t idCount); 24 void WriteNop(Blob *blob); 25 void WriteUndef(Blob *blob, IdResultType idResultType1, IdResult idResult2); 26 void WriteSourceContinued(Blob *blob, LiteralString continuedSource); 27 void WriteSource(Blob *blob, 28 spv::SourceLanguage sourceLanguage1, 29 LiteralInteger version, 30 const IdRef *file, 31 const LiteralString *source); 32 void WriteSourceExtension(Blob *blob, LiteralString extension); 33 void WriteName(Blob *blob, IdRef target, LiteralString name); 34 void WriteMemberName(Blob *blob, IdRef type, LiteralInteger member, LiteralString name); 35 void WriteString(Blob *blob, IdResult idResult1, LiteralString string); 36 void WriteLine(Blob *blob, IdRef file, LiteralInteger line, LiteralInteger column); 37 void WriteExtension(Blob *blob, LiteralString name); 38 void WriteExtInstImport(Blob *blob, IdResult idResult1, LiteralString name); 39 void WriteExtInst(Blob *blob, 40 IdResultType idResultType1, 41 IdResult idResult2, 42 IdRef set, 43 LiteralExtInstInteger instruction, 44 const IdRefList &operandList); 45 void WriteMemoryModel(Blob *blob, 46 spv::AddressingModel addressingModel1, 47 spv::MemoryModel memoryModel2); 48 void WriteEntryPoint(Blob *blob, 49 spv::ExecutionModel executionModel1, 50 IdRef entryPoint, 51 LiteralString name, 52 const IdRefList &interfaceList); 53 void WriteExecutionMode(Blob *blob, 54 IdRef entryPoint, 55 spv::ExecutionMode mode, 56 const LiteralIntegerList &operandsList); 57 void WriteCapability(Blob *blob, spv::Capability capability); 58 void WriteTypeVoid(Blob *blob, IdResult idResult1); 59 void WriteTypeBool(Blob *blob, IdResult idResult1); 60 void WriteTypeInt(Blob *blob, IdResult idResult1, LiteralInteger width, LiteralInteger signedness); 61 void WriteTypeFloat(Blob *blob, 62 IdResult idResult1, 63 LiteralInteger width, 64 const spv::FPEncoding *floatingPointEncoding); 65 void WriteTypeVector(Blob *blob, 66 IdResult idResult1, 67 IdRef componentType, 68 LiteralInteger componentCount); 69 void WriteTypeMatrix(Blob *blob, IdResult idResult1, IdRef columnType, LiteralInteger columnCount); 70 void WriteTypeImage(Blob *blob, 71 IdResult idResult1, 72 IdRef sampledType, 73 spv::Dim dim3, 74 LiteralInteger depth, 75 LiteralInteger arrayed, 76 LiteralInteger mS, 77 LiteralInteger sampled, 78 spv::ImageFormat imageFormat8, 79 const spv::AccessQualifier *accessQualifier9); 80 void WriteTypeSampler(Blob *blob, IdResult idResult1); 81 void WriteTypeSampledImage(Blob *blob, IdResult idResult1, IdRef imageType); 82 void WriteTypeArray(Blob *blob, IdResult idResult1, IdRef elementType, IdRef length); 83 void WriteTypeRuntimeArray(Blob *blob, IdResult idResult1, IdRef elementType); 84 void WriteTypeStruct(Blob *blob, IdResult idResult1, const IdRefList &memberList); 85 void WriteTypePointer(Blob *blob, IdResult idResult1, spv::StorageClass storageClass2, IdRef type); 86 void WriteTypeFunction(Blob *blob, 87 IdResult idResult1, 88 IdRef returnType, 89 const IdRefList ¶meterList); 90 void WriteConstantTrue(Blob *blob, IdResultType idResultType1, IdResult idResult2); 91 void WriteConstantFalse(Blob *blob, IdResultType idResultType1, IdResult idResult2); 92 void WriteConstant(Blob *blob, 93 IdResultType idResultType1, 94 IdResult idResult2, 95 LiteralContextDependentNumber value); 96 void WriteConstantComposite(Blob *blob, 97 IdResultType idResultType1, 98 IdResult idResult2, 99 const IdRefList &constituentsList); 100 void WriteConstantNull(Blob *blob, IdResultType idResultType1, IdResult idResult2); 101 void WriteSpecConstantTrue(Blob *blob, IdResultType idResultType1, IdResult idResult2); 102 void WriteSpecConstantFalse(Blob *blob, IdResultType idResultType1, IdResult idResult2); 103 void WriteSpecConstant(Blob *blob, 104 IdResultType idResultType1, 105 IdResult idResult2, 106 LiteralContextDependentNumber value); 107 void WriteSpecConstantComposite(Blob *blob, 108 IdResultType idResultType1, 109 IdResult idResult2, 110 const IdRefList &constituentsList); 111 void WriteFunction(Blob *blob, 112 IdResultType idResultType1, 113 IdResult idResult2, 114 spv::FunctionControlMask functionControl3, 115 IdRef functionType); 116 void WriteFunctionParameter(Blob *blob, IdResultType idResultType1, IdResult idResult2); 117 void WriteFunctionEnd(Blob *blob); 118 void WriteFunctionCall(Blob *blob, 119 IdResultType idResultType1, 120 IdResult idResult2, 121 IdRef function, 122 const IdRefList &argumentList); 123 void WriteVariable(Blob *blob, 124 IdResultType idResultType1, 125 IdResult idResult2, 126 spv::StorageClass storageClass3, 127 const IdRef *initializer); 128 void WriteImageTexelPointer(Blob *blob, 129 IdResultType idResultType1, 130 IdResult idResult2, 131 IdRef image, 132 IdRef coordinate, 133 IdRef sample); 134 void WriteLoad(Blob *blob, 135 IdResultType idResultType1, 136 IdResult idResult2, 137 IdRef pointer, 138 const spv::MemoryAccessMask *memoryAccess4); 139 void WriteStore(Blob *blob, 140 IdRef pointer, 141 IdRef object, 142 const spv::MemoryAccessMask *memoryAccess3); 143 void WriteCopyMemory(Blob *blob, 144 IdRef target, 145 IdRef source, 146 const spv::MemoryAccessMask *memoryAccess3, 147 const spv::MemoryAccessMask *memoryAccess4); 148 void WriteAccessChain(Blob *blob, 149 IdResultType idResultType1, 150 IdResult idResult2, 151 IdRef base, 152 const IdRefList &indexesList); 153 void WriteInBoundsAccessChain(Blob *blob, 154 IdResultType idResultType1, 155 IdResult idResult2, 156 IdRef base, 157 const IdRefList &indexesList); 158 void WriteArrayLength(Blob *blob, 159 IdResultType idResultType1, 160 IdResult idResult2, 161 IdRef structure, 162 LiteralInteger arraymember); 163 void WriteDecorate(Blob *blob, 164 IdRef target, 165 spv::Decoration decoration2, 166 const LiteralIntegerList &valuesList); 167 void WriteMemberDecorate(Blob *blob, 168 IdRef structureType, 169 LiteralInteger member, 170 spv::Decoration decoration3, 171 const LiteralIntegerList &valuesList); 172 void WriteDecorationGroup(Blob *blob, IdResult idResult1); 173 void WriteGroupDecorate(Blob *blob, IdRef decorationGroup, const IdRefList &targetsList); 174 void WriteGroupMemberDecorate(Blob *blob, 175 IdRef decorationGroup, 176 const PairIdRefLiteralIntegerList &targetsPairList); 177 void WriteVectorExtractDynamic(Blob *blob, 178 IdResultType idResultType1, 179 IdResult idResult2, 180 IdRef vector, 181 IdRef index); 182 void WriteVectorInsertDynamic(Blob *blob, 183 IdResultType idResultType1, 184 IdResult idResult2, 185 IdRef vector, 186 IdRef component, 187 IdRef index); 188 void WriteVectorShuffle(Blob *blob, 189 IdResultType idResultType1, 190 IdResult idResult2, 191 IdRef vector1, 192 IdRef vector2, 193 const LiteralIntegerList &componentsList); 194 void WriteCompositeConstruct(Blob *blob, 195 IdResultType idResultType1, 196 IdResult idResult2, 197 const IdRefList &constituentsList); 198 void WriteCompositeExtract(Blob *blob, 199 IdResultType idResultType1, 200 IdResult idResult2, 201 IdRef composite, 202 const LiteralIntegerList &indexesList); 203 void WriteCompositeInsert(Blob *blob, 204 IdResultType idResultType1, 205 IdResult idResult2, 206 IdRef object, 207 IdRef composite, 208 const LiteralIntegerList &indexesList); 209 void WriteCopyObject(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 210 void WriteTranspose(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef matrix); 211 void WriteSampledImage(Blob *blob, 212 IdResultType idResultType1, 213 IdResult idResult2, 214 IdRef image, 215 IdRef sampler); 216 void WriteImageSampleImplicitLod(Blob *blob, 217 IdResultType idResultType1, 218 IdResult idResult2, 219 IdRef sampledImage, 220 IdRef coordinate, 221 const spv::ImageOperandsMask *imageOperands5, 222 const IdRefList &imageOperandIdsList); 223 void WriteImageSampleExplicitLod(Blob *blob, 224 IdResultType idResultType1, 225 IdResult idResult2, 226 IdRef sampledImage, 227 IdRef coordinate, 228 spv::ImageOperandsMask imageOperands5, 229 const IdRefList &imageOperandIdsList); 230 void WriteImageSampleDrefImplicitLod(Blob *blob, 231 IdResultType idResultType1, 232 IdResult idResult2, 233 IdRef sampledImage, 234 IdRef coordinate, 235 IdRef dref, 236 const spv::ImageOperandsMask *imageOperands6, 237 const IdRefList &imageOperandIdsList); 238 void WriteImageSampleDrefExplicitLod(Blob *blob, 239 IdResultType idResultType1, 240 IdResult idResult2, 241 IdRef sampledImage, 242 IdRef coordinate, 243 IdRef dref, 244 spv::ImageOperandsMask imageOperands6, 245 const IdRefList &imageOperandIdsList); 246 void WriteImageSampleProjImplicitLod(Blob *blob, 247 IdResultType idResultType1, 248 IdResult idResult2, 249 IdRef sampledImage, 250 IdRef coordinate, 251 const spv::ImageOperandsMask *imageOperands5, 252 const IdRefList &imageOperandIdsList); 253 void WriteImageSampleProjExplicitLod(Blob *blob, 254 IdResultType idResultType1, 255 IdResult idResult2, 256 IdRef sampledImage, 257 IdRef coordinate, 258 spv::ImageOperandsMask imageOperands5, 259 const IdRefList &imageOperandIdsList); 260 void WriteImageSampleProjDrefImplicitLod(Blob *blob, 261 IdResultType idResultType1, 262 IdResult idResult2, 263 IdRef sampledImage, 264 IdRef coordinate, 265 IdRef dref, 266 const spv::ImageOperandsMask *imageOperands6, 267 const IdRefList &imageOperandIdsList); 268 void WriteImageSampleProjDrefExplicitLod(Blob *blob, 269 IdResultType idResultType1, 270 IdResult idResult2, 271 IdRef sampledImage, 272 IdRef coordinate, 273 IdRef dref, 274 spv::ImageOperandsMask imageOperands6, 275 const IdRefList &imageOperandIdsList); 276 void WriteImageFetch(Blob *blob, 277 IdResultType idResultType1, 278 IdResult idResult2, 279 IdRef image, 280 IdRef coordinate, 281 const spv::ImageOperandsMask *imageOperands5, 282 const IdRefList &imageOperandIdsList); 283 void WriteImageGather(Blob *blob, 284 IdResultType idResultType1, 285 IdResult idResult2, 286 IdRef sampledImage, 287 IdRef coordinate, 288 IdRef component, 289 const spv::ImageOperandsMask *imageOperands6, 290 const IdRefList &imageOperandIdsList); 291 void WriteImageDrefGather(Blob *blob, 292 IdResultType idResultType1, 293 IdResult idResult2, 294 IdRef sampledImage, 295 IdRef coordinate, 296 IdRef dref, 297 const spv::ImageOperandsMask *imageOperands6, 298 const IdRefList &imageOperandIdsList); 299 void WriteImageRead(Blob *blob, 300 IdResultType idResultType1, 301 IdResult idResult2, 302 IdRef image, 303 IdRef coordinate, 304 const spv::ImageOperandsMask *imageOperands5, 305 const IdRefList &imageOperandIdsList); 306 void WriteImageWrite(Blob *blob, 307 IdRef image, 308 IdRef coordinate, 309 IdRef texel, 310 const spv::ImageOperandsMask *imageOperands4, 311 const IdRefList &imageOperandIdsList); 312 void WriteImage(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef sampledImage); 313 void WriteImageQuerySizeLod(Blob *blob, 314 IdResultType idResultType1, 315 IdResult idResult2, 316 IdRef image, 317 IdRef levelofDetail); 318 void WriteImageQuerySize(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef image); 319 void WriteImageQueryLod(Blob *blob, 320 IdResultType idResultType1, 321 IdResult idResult2, 322 IdRef sampledImage, 323 IdRef coordinate); 324 void WriteImageQueryLevels(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef image); 325 void WriteImageQuerySamples(Blob *blob, 326 IdResultType idResultType1, 327 IdResult idResult2, 328 IdRef image); 329 void WriteConvertFToU(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef floatValue); 330 void WriteConvertFToS(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef floatValue); 331 void WriteConvertSToF(Blob *blob, 332 IdResultType idResultType1, 333 IdResult idResult2, 334 IdRef signedValue); 335 void WriteConvertUToF(Blob *blob, 336 IdResultType idResultType1, 337 IdResult idResult2, 338 IdRef unsignedValue); 339 void WriteUConvert(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef unsignedValue); 340 void WriteSConvert(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef signedValue); 341 void WriteFConvert(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef floatValue); 342 void WriteQuantizeToF16(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef value); 343 void WriteBitcast(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 344 void WriteSNegate(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 345 void WriteFNegate(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 346 void WriteIAdd(Blob *blob, 347 IdResultType idResultType1, 348 IdResult idResult2, 349 IdRef operand1, 350 IdRef operand2); 351 void WriteFAdd(Blob *blob, 352 IdResultType idResultType1, 353 IdResult idResult2, 354 IdRef operand1, 355 IdRef operand2); 356 void WriteISub(Blob *blob, 357 IdResultType idResultType1, 358 IdResult idResult2, 359 IdRef operand1, 360 IdRef operand2); 361 void WriteFSub(Blob *blob, 362 IdResultType idResultType1, 363 IdResult idResult2, 364 IdRef operand1, 365 IdRef operand2); 366 void WriteIMul(Blob *blob, 367 IdResultType idResultType1, 368 IdResult idResult2, 369 IdRef operand1, 370 IdRef operand2); 371 void WriteFMul(Blob *blob, 372 IdResultType idResultType1, 373 IdResult idResult2, 374 IdRef operand1, 375 IdRef operand2); 376 void WriteUDiv(Blob *blob, 377 IdResultType idResultType1, 378 IdResult idResult2, 379 IdRef operand1, 380 IdRef operand2); 381 void WriteSDiv(Blob *blob, 382 IdResultType idResultType1, 383 IdResult idResult2, 384 IdRef operand1, 385 IdRef operand2); 386 void WriteFDiv(Blob *blob, 387 IdResultType idResultType1, 388 IdResult idResult2, 389 IdRef operand1, 390 IdRef operand2); 391 void WriteUMod(Blob *blob, 392 IdResultType idResultType1, 393 IdResult idResult2, 394 IdRef operand1, 395 IdRef operand2); 396 void WriteSRem(Blob *blob, 397 IdResultType idResultType1, 398 IdResult idResult2, 399 IdRef operand1, 400 IdRef operand2); 401 void WriteSMod(Blob *blob, 402 IdResultType idResultType1, 403 IdResult idResult2, 404 IdRef operand1, 405 IdRef operand2); 406 void WriteFRem(Blob *blob, 407 IdResultType idResultType1, 408 IdResult idResult2, 409 IdRef operand1, 410 IdRef operand2); 411 void WriteFMod(Blob *blob, 412 IdResultType idResultType1, 413 IdResult idResult2, 414 IdRef operand1, 415 IdRef operand2); 416 void WriteVectorTimesScalar(Blob *blob, 417 IdResultType idResultType1, 418 IdResult idResult2, 419 IdRef vector, 420 IdRef scalar); 421 void WriteMatrixTimesScalar(Blob *blob, 422 IdResultType idResultType1, 423 IdResult idResult2, 424 IdRef matrix, 425 IdRef scalar); 426 void WriteVectorTimesMatrix(Blob *blob, 427 IdResultType idResultType1, 428 IdResult idResult2, 429 IdRef vector, 430 IdRef matrix); 431 void WriteMatrixTimesVector(Blob *blob, 432 IdResultType idResultType1, 433 IdResult idResult2, 434 IdRef matrix, 435 IdRef vector); 436 void WriteMatrixTimesMatrix(Blob *blob, 437 IdResultType idResultType1, 438 IdResult idResult2, 439 IdRef leftMatrix, 440 IdRef rightMatrix); 441 void WriteOuterProduct(Blob *blob, 442 IdResultType idResultType1, 443 IdResult idResult2, 444 IdRef vector1, 445 IdRef vector2); 446 void WriteDot(Blob *blob, 447 IdResultType idResultType1, 448 IdResult idResult2, 449 IdRef vector1, 450 IdRef vector2); 451 void WriteIAddCarry(Blob *blob, 452 IdResultType idResultType1, 453 IdResult idResult2, 454 IdRef operand1, 455 IdRef operand2); 456 void WriteISubBorrow(Blob *blob, 457 IdResultType idResultType1, 458 IdResult idResult2, 459 IdRef operand1, 460 IdRef operand2); 461 void WriteUMulExtended(Blob *blob, 462 IdResultType idResultType1, 463 IdResult idResult2, 464 IdRef operand1, 465 IdRef operand2); 466 void WriteSMulExtended(Blob *blob, 467 IdResultType idResultType1, 468 IdResult idResult2, 469 IdRef operand1, 470 IdRef operand2); 471 void WriteAny(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef vector); 472 void WriteAll(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef vector); 473 void WriteIsNan(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef x); 474 void WriteIsInf(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef x); 475 void WriteLogicalEqual(Blob *blob, 476 IdResultType idResultType1, 477 IdResult idResult2, 478 IdRef operand1, 479 IdRef operand2); 480 void WriteLogicalNotEqual(Blob *blob, 481 IdResultType idResultType1, 482 IdResult idResult2, 483 IdRef operand1, 484 IdRef operand2); 485 void WriteLogicalOr(Blob *blob, 486 IdResultType idResultType1, 487 IdResult idResult2, 488 IdRef operand1, 489 IdRef operand2); 490 void WriteLogicalAnd(Blob *blob, 491 IdResultType idResultType1, 492 IdResult idResult2, 493 IdRef operand1, 494 IdRef operand2); 495 void WriteLogicalNot(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 496 void WriteSelect(Blob *blob, 497 IdResultType idResultType1, 498 IdResult idResult2, 499 IdRef condition, 500 IdRef object1, 501 IdRef object2); 502 void WriteIEqual(Blob *blob, 503 IdResultType idResultType1, 504 IdResult idResult2, 505 IdRef operand1, 506 IdRef operand2); 507 void WriteINotEqual(Blob *blob, 508 IdResultType idResultType1, 509 IdResult idResult2, 510 IdRef operand1, 511 IdRef operand2); 512 void WriteUGreaterThan(Blob *blob, 513 IdResultType idResultType1, 514 IdResult idResult2, 515 IdRef operand1, 516 IdRef operand2); 517 void WriteSGreaterThan(Blob *blob, 518 IdResultType idResultType1, 519 IdResult idResult2, 520 IdRef operand1, 521 IdRef operand2); 522 void WriteUGreaterThanEqual(Blob *blob, 523 IdResultType idResultType1, 524 IdResult idResult2, 525 IdRef operand1, 526 IdRef operand2); 527 void WriteSGreaterThanEqual(Blob *blob, 528 IdResultType idResultType1, 529 IdResult idResult2, 530 IdRef operand1, 531 IdRef operand2); 532 void WriteULessThan(Blob *blob, 533 IdResultType idResultType1, 534 IdResult idResult2, 535 IdRef operand1, 536 IdRef operand2); 537 void WriteSLessThan(Blob *blob, 538 IdResultType idResultType1, 539 IdResult idResult2, 540 IdRef operand1, 541 IdRef operand2); 542 void WriteULessThanEqual(Blob *blob, 543 IdResultType idResultType1, 544 IdResult idResult2, 545 IdRef operand1, 546 IdRef operand2); 547 void WriteSLessThanEqual(Blob *blob, 548 IdResultType idResultType1, 549 IdResult idResult2, 550 IdRef operand1, 551 IdRef operand2); 552 void WriteFOrdEqual(Blob *blob, 553 IdResultType idResultType1, 554 IdResult idResult2, 555 IdRef operand1, 556 IdRef operand2); 557 void WriteFUnordEqual(Blob *blob, 558 IdResultType idResultType1, 559 IdResult idResult2, 560 IdRef operand1, 561 IdRef operand2); 562 void WriteFOrdNotEqual(Blob *blob, 563 IdResultType idResultType1, 564 IdResult idResult2, 565 IdRef operand1, 566 IdRef operand2); 567 void WriteFUnordNotEqual(Blob *blob, 568 IdResultType idResultType1, 569 IdResult idResult2, 570 IdRef operand1, 571 IdRef operand2); 572 void WriteFOrdLessThan(Blob *blob, 573 IdResultType idResultType1, 574 IdResult idResult2, 575 IdRef operand1, 576 IdRef operand2); 577 void WriteFUnordLessThan(Blob *blob, 578 IdResultType idResultType1, 579 IdResult idResult2, 580 IdRef operand1, 581 IdRef operand2); 582 void WriteFOrdGreaterThan(Blob *blob, 583 IdResultType idResultType1, 584 IdResult idResult2, 585 IdRef operand1, 586 IdRef operand2); 587 void WriteFUnordGreaterThan(Blob *blob, 588 IdResultType idResultType1, 589 IdResult idResult2, 590 IdRef operand1, 591 IdRef operand2); 592 void WriteFOrdLessThanEqual(Blob *blob, 593 IdResultType idResultType1, 594 IdResult idResult2, 595 IdRef operand1, 596 IdRef operand2); 597 void WriteFUnordLessThanEqual(Blob *blob, 598 IdResultType idResultType1, 599 IdResult idResult2, 600 IdRef operand1, 601 IdRef operand2); 602 void WriteFOrdGreaterThanEqual(Blob *blob, 603 IdResultType idResultType1, 604 IdResult idResult2, 605 IdRef operand1, 606 IdRef operand2); 607 void WriteFUnordGreaterThanEqual(Blob *blob, 608 IdResultType idResultType1, 609 IdResult idResult2, 610 IdRef operand1, 611 IdRef operand2); 612 void WriteShiftRightLogical(Blob *blob, 613 IdResultType idResultType1, 614 IdResult idResult2, 615 IdRef base, 616 IdRef shift); 617 void WriteShiftRightArithmetic(Blob *blob, 618 IdResultType idResultType1, 619 IdResult idResult2, 620 IdRef base, 621 IdRef shift); 622 void WriteShiftLeftLogical(Blob *blob, 623 IdResultType idResultType1, 624 IdResult idResult2, 625 IdRef base, 626 IdRef shift); 627 void WriteBitwiseOr(Blob *blob, 628 IdResultType idResultType1, 629 IdResult idResult2, 630 IdRef operand1, 631 IdRef operand2); 632 void WriteBitwiseXor(Blob *blob, 633 IdResultType idResultType1, 634 IdResult idResult2, 635 IdRef operand1, 636 IdRef operand2); 637 void WriteBitwiseAnd(Blob *blob, 638 IdResultType idResultType1, 639 IdResult idResult2, 640 IdRef operand1, 641 IdRef operand2); 642 void WriteNot(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 643 void WriteBitFieldInsert(Blob *blob, 644 IdResultType idResultType1, 645 IdResult idResult2, 646 IdRef base, 647 IdRef insert, 648 IdRef offset, 649 IdRef count); 650 void WriteBitFieldSExtract(Blob *blob, 651 IdResultType idResultType1, 652 IdResult idResult2, 653 IdRef base, 654 IdRef offset, 655 IdRef count); 656 void WriteBitFieldUExtract(Blob *blob, 657 IdResultType idResultType1, 658 IdResult idResult2, 659 IdRef base, 660 IdRef offset, 661 IdRef count); 662 void WriteBitReverse(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef base); 663 void WriteBitCount(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef base); 664 void WriteDPdx(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 665 void WriteDPdy(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 666 void WriteFwidth(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 667 void WriteDPdxFine(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 668 void WriteDPdyFine(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 669 void WriteFwidthFine(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 670 void WriteDPdxCoarse(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 671 void WriteDPdyCoarse(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 672 void WriteFwidthCoarse(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef p); 673 void WriteEmitVertex(Blob *blob); 674 void WriteEndPrimitive(Blob *blob); 675 void WriteEmitStreamVertex(Blob *blob, IdRef stream); 676 void WriteEndStreamPrimitive(Blob *blob, IdRef stream); 677 void WriteControlBarrier(Blob *blob, 678 IdScope execution, 679 IdScope memory, 680 IdMemorySemantics semantics); 681 void WriteMemoryBarrier(Blob *blob, IdScope memory, IdMemorySemantics semantics); 682 void WriteAtomicLoad(Blob *blob, 683 IdResultType idResultType1, 684 IdResult idResult2, 685 IdRef pointer, 686 IdScope memory, 687 IdMemorySemantics semantics); 688 void WriteAtomicStore(Blob *blob, 689 IdRef pointer, 690 IdScope memory, 691 IdMemorySemantics semantics, 692 IdRef value); 693 void WriteAtomicExchange(Blob *blob, 694 IdResultType idResultType1, 695 IdResult idResult2, 696 IdRef pointer, 697 IdScope memory, 698 IdMemorySemantics semantics, 699 IdRef value); 700 void WriteAtomicCompareExchange(Blob *blob, 701 IdResultType idResultType1, 702 IdResult idResult2, 703 IdRef pointer, 704 IdScope memory, 705 IdMemorySemantics equal, 706 IdMemorySemantics unequal, 707 IdRef value, 708 IdRef comparator); 709 void WriteAtomicIIncrement(Blob *blob, 710 IdResultType idResultType1, 711 IdResult idResult2, 712 IdRef pointer, 713 IdScope memory, 714 IdMemorySemantics semantics); 715 void WriteAtomicIDecrement(Blob *blob, 716 IdResultType idResultType1, 717 IdResult idResult2, 718 IdRef pointer, 719 IdScope memory, 720 IdMemorySemantics semantics); 721 void WriteAtomicIAdd(Blob *blob, 722 IdResultType idResultType1, 723 IdResult idResult2, 724 IdRef pointer, 725 IdScope memory, 726 IdMemorySemantics semantics, 727 IdRef value); 728 void WriteAtomicISub(Blob *blob, 729 IdResultType idResultType1, 730 IdResult idResult2, 731 IdRef pointer, 732 IdScope memory, 733 IdMemorySemantics semantics, 734 IdRef value); 735 void WriteAtomicSMin(Blob *blob, 736 IdResultType idResultType1, 737 IdResult idResult2, 738 IdRef pointer, 739 IdScope memory, 740 IdMemorySemantics semantics, 741 IdRef value); 742 void WriteAtomicUMin(Blob *blob, 743 IdResultType idResultType1, 744 IdResult idResult2, 745 IdRef pointer, 746 IdScope memory, 747 IdMemorySemantics semantics, 748 IdRef value); 749 void WriteAtomicSMax(Blob *blob, 750 IdResultType idResultType1, 751 IdResult idResult2, 752 IdRef pointer, 753 IdScope memory, 754 IdMemorySemantics semantics, 755 IdRef value); 756 void WriteAtomicUMax(Blob *blob, 757 IdResultType idResultType1, 758 IdResult idResult2, 759 IdRef pointer, 760 IdScope memory, 761 IdMemorySemantics semantics, 762 IdRef value); 763 void WriteAtomicAnd(Blob *blob, 764 IdResultType idResultType1, 765 IdResult idResult2, 766 IdRef pointer, 767 IdScope memory, 768 IdMemorySemantics semantics, 769 IdRef value); 770 void WriteAtomicOr(Blob *blob, 771 IdResultType idResultType1, 772 IdResult idResult2, 773 IdRef pointer, 774 IdScope memory, 775 IdMemorySemantics semantics, 776 IdRef value); 777 void WriteAtomicXor(Blob *blob, 778 IdResultType idResultType1, 779 IdResult idResult2, 780 IdRef pointer, 781 IdScope memory, 782 IdMemorySemantics semantics, 783 IdRef value); 784 void WritePhi(Blob *blob, 785 IdResultType idResultType1, 786 IdResult idResult2, 787 const PairIdRefIdRefList &variableParentPairList); 788 void WriteLoopMerge(Blob *blob, 789 IdRef mergeBlock, 790 IdRef continueTarget, 791 spv::LoopControlMask loopControl3); 792 void WriteSelectionMerge(Blob *blob, IdRef mergeBlock, spv::SelectionControlMask selectionControl2); 793 void WriteLabel(Blob *blob, IdResult idResult1); 794 void WriteBranch(Blob *blob, IdRef targetLabel); 795 void WriteBranchConditional(Blob *blob, 796 IdRef condition, 797 IdRef trueLabel, 798 IdRef falseLabel, 799 const LiteralIntegerList &branchweightsList); 800 void WriteSwitch(Blob *blob, 801 IdRef selector, 802 IdRef default_, 803 const PairLiteralIntegerIdRefList &targetPairList); 804 void WriteKill(Blob *blob); 805 void WriteReturn(Blob *blob); 806 void WriteReturnValue(Blob *blob, IdRef value); 807 void WriteUnreachable(Blob *blob); 808 void WriteImageSparseSampleImplicitLod(Blob *blob, 809 IdResultType idResultType1, 810 IdResult idResult2, 811 IdRef sampledImage, 812 IdRef coordinate, 813 const spv::ImageOperandsMask *imageOperands5, 814 const IdRefList &imageOperandIdsList); 815 void WriteImageSparseSampleExplicitLod(Blob *blob, 816 IdResultType idResultType1, 817 IdResult idResult2, 818 IdRef sampledImage, 819 IdRef coordinate, 820 spv::ImageOperandsMask imageOperands5, 821 const IdRefList &imageOperandIdsList); 822 void WriteImageSparseSampleDrefImplicitLod(Blob *blob, 823 IdResultType idResultType1, 824 IdResult idResult2, 825 IdRef sampledImage, 826 IdRef coordinate, 827 IdRef dref, 828 const spv::ImageOperandsMask *imageOperands6, 829 const IdRefList &imageOperandIdsList); 830 void WriteImageSparseSampleDrefExplicitLod(Blob *blob, 831 IdResultType idResultType1, 832 IdResult idResult2, 833 IdRef sampledImage, 834 IdRef coordinate, 835 IdRef dref, 836 spv::ImageOperandsMask imageOperands6, 837 const IdRefList &imageOperandIdsList); 838 void WriteImageSparseSampleProjImplicitLod(Blob *blob, 839 IdResultType idResultType1, 840 IdResult idResult2, 841 IdRef sampledImage, 842 IdRef coordinate, 843 const spv::ImageOperandsMask *imageOperands5, 844 const IdRefList &imageOperandIdsList); 845 void WriteImageSparseSampleProjExplicitLod(Blob *blob, 846 IdResultType idResultType1, 847 IdResult idResult2, 848 IdRef sampledImage, 849 IdRef coordinate, 850 spv::ImageOperandsMask imageOperands5, 851 const IdRefList &imageOperandIdsList); 852 void WriteImageSparseSampleProjDrefImplicitLod(Blob *blob, 853 IdResultType idResultType1, 854 IdResult idResult2, 855 IdRef sampledImage, 856 IdRef coordinate, 857 IdRef dref, 858 const spv::ImageOperandsMask *imageOperands6, 859 const IdRefList &imageOperandIdsList); 860 void WriteImageSparseSampleProjDrefExplicitLod(Blob *blob, 861 IdResultType idResultType1, 862 IdResult idResult2, 863 IdRef sampledImage, 864 IdRef coordinate, 865 IdRef dref, 866 spv::ImageOperandsMask imageOperands6, 867 const IdRefList &imageOperandIdsList); 868 void WriteImageSparseFetch(Blob *blob, 869 IdResultType idResultType1, 870 IdResult idResult2, 871 IdRef image, 872 IdRef coordinate, 873 const spv::ImageOperandsMask *imageOperands5, 874 const IdRefList &imageOperandIdsList); 875 void WriteImageSparseGather(Blob *blob, 876 IdResultType idResultType1, 877 IdResult idResult2, 878 IdRef sampledImage, 879 IdRef coordinate, 880 IdRef component, 881 const spv::ImageOperandsMask *imageOperands6, 882 const IdRefList &imageOperandIdsList); 883 void WriteImageSparseDrefGather(Blob *blob, 884 IdResultType idResultType1, 885 IdResult idResult2, 886 IdRef sampledImage, 887 IdRef coordinate, 888 IdRef dref, 889 const spv::ImageOperandsMask *imageOperands6, 890 const IdRefList &imageOperandIdsList); 891 void WriteImageSparseTexelsResident(Blob *blob, 892 IdResultType idResultType1, 893 IdResult idResult2, 894 IdRef residentCode); 895 void WriteNoLine(Blob *blob); 896 void WriteImageSparseRead(Blob *blob, 897 IdResultType idResultType1, 898 IdResult idResult2, 899 IdRef image, 900 IdRef coordinate, 901 const spv::ImageOperandsMask *imageOperands5, 902 const IdRefList &imageOperandIdsList); 903 void WriteModuleProcessed(Blob *blob, LiteralString process); 904 void WriteExecutionModeId(Blob *blob, 905 IdRef entryPoint, 906 spv::ExecutionMode mode, 907 const LiteralIntegerList &operandsList); 908 void WriteGroupNonUniformElect(Blob *blob, 909 IdResultType idResultType1, 910 IdResult idResult2, 911 IdScope execution); 912 void WriteGroupNonUniformAll(Blob *blob, 913 IdResultType idResultType1, 914 IdResult idResult2, 915 IdScope execution, 916 IdRef predicate); 917 void WriteGroupNonUniformAny(Blob *blob, 918 IdResultType idResultType1, 919 IdResult idResult2, 920 IdScope execution, 921 IdRef predicate); 922 void WriteGroupNonUniformAllEqual(Blob *blob, 923 IdResultType idResultType1, 924 IdResult idResult2, 925 IdScope execution, 926 IdRef value); 927 void WriteGroupNonUniformBroadcast(Blob *blob, 928 IdResultType idResultType1, 929 IdResult idResult2, 930 IdScope execution, 931 IdRef value, 932 IdRef id); 933 void WriteGroupNonUniformBroadcastFirst(Blob *blob, 934 IdResultType idResultType1, 935 IdResult idResult2, 936 IdScope execution, 937 IdRef value); 938 void WriteGroupNonUniformBallot(Blob *blob, 939 IdResultType idResultType1, 940 IdResult idResult2, 941 IdScope execution, 942 IdRef predicate); 943 void WriteGroupNonUniformInverseBallot(Blob *blob, 944 IdResultType idResultType1, 945 IdResult idResult2, 946 IdScope execution, 947 IdRef value); 948 void WriteGroupNonUniformBallotBitExtract(Blob *blob, 949 IdResultType idResultType1, 950 IdResult idResult2, 951 IdScope execution, 952 IdRef value, 953 IdRef index); 954 void WriteGroupNonUniformBallotBitCount(Blob *blob, 955 IdResultType idResultType1, 956 IdResult idResult2, 957 IdScope execution, 958 spv::GroupOperation operation, 959 IdRef value); 960 void WriteGroupNonUniformBallotFindLSB(Blob *blob, 961 IdResultType idResultType1, 962 IdResult idResult2, 963 IdScope execution, 964 IdRef value); 965 void WriteGroupNonUniformBallotFindMSB(Blob *blob, 966 IdResultType idResultType1, 967 IdResult idResult2, 968 IdScope execution, 969 IdRef value); 970 void WriteGroupNonUniformShuffle(Blob *blob, 971 IdResultType idResultType1, 972 IdResult idResult2, 973 IdScope execution, 974 IdRef value, 975 IdRef id); 976 void WriteGroupNonUniformShuffleXor(Blob *blob, 977 IdResultType idResultType1, 978 IdResult idResult2, 979 IdScope execution, 980 IdRef value, 981 IdRef mask); 982 void WriteGroupNonUniformShuffleUp(Blob *blob, 983 IdResultType idResultType1, 984 IdResult idResult2, 985 IdScope execution, 986 IdRef value, 987 IdRef delta); 988 void WriteGroupNonUniformShuffleDown(Blob *blob, 989 IdResultType idResultType1, 990 IdResult idResult2, 991 IdScope execution, 992 IdRef value, 993 IdRef delta); 994 void WriteGroupNonUniformIAdd(Blob *blob, 995 IdResultType idResultType1, 996 IdResult idResult2, 997 IdScope execution, 998 spv::GroupOperation operation, 999 IdRef value, 1000 const IdRef *clusterSize); 1001 void WriteGroupNonUniformFAdd(Blob *blob, 1002 IdResultType idResultType1, 1003 IdResult idResult2, 1004 IdScope execution, 1005 spv::GroupOperation operation, 1006 IdRef value, 1007 const IdRef *clusterSize); 1008 void WriteGroupNonUniformIMul(Blob *blob, 1009 IdResultType idResultType1, 1010 IdResult idResult2, 1011 IdScope execution, 1012 spv::GroupOperation operation, 1013 IdRef value, 1014 const IdRef *clusterSize); 1015 void WriteGroupNonUniformFMul(Blob *blob, 1016 IdResultType idResultType1, 1017 IdResult idResult2, 1018 IdScope execution, 1019 spv::GroupOperation operation, 1020 IdRef value, 1021 const IdRef *clusterSize); 1022 void WriteGroupNonUniformSMin(Blob *blob, 1023 IdResultType idResultType1, 1024 IdResult idResult2, 1025 IdScope execution, 1026 spv::GroupOperation operation, 1027 IdRef value, 1028 const IdRef *clusterSize); 1029 void WriteGroupNonUniformUMin(Blob *blob, 1030 IdResultType idResultType1, 1031 IdResult idResult2, 1032 IdScope execution, 1033 spv::GroupOperation operation, 1034 IdRef value, 1035 const IdRef *clusterSize); 1036 void WriteGroupNonUniformFMin(Blob *blob, 1037 IdResultType idResultType1, 1038 IdResult idResult2, 1039 IdScope execution, 1040 spv::GroupOperation operation, 1041 IdRef value, 1042 const IdRef *clusterSize); 1043 void WriteGroupNonUniformSMax(Blob *blob, 1044 IdResultType idResultType1, 1045 IdResult idResult2, 1046 IdScope execution, 1047 spv::GroupOperation operation, 1048 IdRef value, 1049 const IdRef *clusterSize); 1050 void WriteGroupNonUniformUMax(Blob *blob, 1051 IdResultType idResultType1, 1052 IdResult idResult2, 1053 IdScope execution, 1054 spv::GroupOperation operation, 1055 IdRef value, 1056 const IdRef *clusterSize); 1057 void WriteGroupNonUniformFMax(Blob *blob, 1058 IdResultType idResultType1, 1059 IdResult idResult2, 1060 IdScope execution, 1061 spv::GroupOperation operation, 1062 IdRef value, 1063 const IdRef *clusterSize); 1064 void WriteGroupNonUniformBitwiseAnd(Blob *blob, 1065 IdResultType idResultType1, 1066 IdResult idResult2, 1067 IdScope execution, 1068 spv::GroupOperation operation, 1069 IdRef value, 1070 const IdRef *clusterSize); 1071 void WriteGroupNonUniformBitwiseOr(Blob *blob, 1072 IdResultType idResultType1, 1073 IdResult idResult2, 1074 IdScope execution, 1075 spv::GroupOperation operation, 1076 IdRef value, 1077 const IdRef *clusterSize); 1078 void WriteGroupNonUniformBitwiseXor(Blob *blob, 1079 IdResultType idResultType1, 1080 IdResult idResult2, 1081 IdScope execution, 1082 spv::GroupOperation operation, 1083 IdRef value, 1084 const IdRef *clusterSize); 1085 void WriteGroupNonUniformLogicalAnd(Blob *blob, 1086 IdResultType idResultType1, 1087 IdResult idResult2, 1088 IdScope execution, 1089 spv::GroupOperation operation, 1090 IdRef value, 1091 const IdRef *clusterSize); 1092 void WriteGroupNonUniformLogicalOr(Blob *blob, 1093 IdResultType idResultType1, 1094 IdResult idResult2, 1095 IdScope execution, 1096 spv::GroupOperation operation, 1097 IdRef value, 1098 const IdRef *clusterSize); 1099 void WriteGroupNonUniformLogicalXor(Blob *blob, 1100 IdResultType idResultType1, 1101 IdResult idResult2, 1102 IdScope execution, 1103 spv::GroupOperation operation, 1104 IdRef value, 1105 const IdRef *clusterSize); 1106 void WriteGroupNonUniformQuadBroadcast(Blob *blob, 1107 IdResultType idResultType1, 1108 IdResult idResult2, 1109 IdScope execution, 1110 IdRef value, 1111 IdRef index); 1112 void WriteGroupNonUniformQuadSwap(Blob *blob, 1113 IdResultType idResultType1, 1114 IdResult idResult2, 1115 IdScope execution, 1116 IdRef value, 1117 IdRef direction); 1118 void WriteCopyLogical(Blob *blob, IdResultType idResultType1, IdResult idResult2, IdRef operand); 1119 void WritePtrEqual(Blob *blob, 1120 IdResultType idResultType1, 1121 IdResult idResult2, 1122 IdRef operand1, 1123 IdRef operand2); 1124 void WritePtrNotEqual(Blob *blob, 1125 IdResultType idResultType1, 1126 IdResult idResult2, 1127 IdRef operand1, 1128 IdRef operand2); 1129 void WriteBeginInvocationInterlockEXT(Blob *blob); 1130 void WriteEndInvocationInterlockEXT(Blob *blob); 1131 1132 } // namespace spirv 1133 } // namespace angle 1134 1135 #endif // COMMON_SPIRV_SPIRVINSTRUCTIONBUILDERAUTOGEN_H_ 1136