// GENERATED FILE - DO NOT EDIT. // Generated by gen_spirv_builder_and_parser.py using data from spirv.core.grammar.json. // // Copyright 2021 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // spirv_instruction_builder_autogen.h: // Functions to generate SPIR-V binary for each instruction. #ifndef COMMON_SPIRV_SPIRVINSTRUCTIONBUILDERAUTOGEN_H_ #define COMMON_SPIRV_SPIRVINSTRUCTIONBUILDERAUTOGEN_H_ #include #include "spirv_types.h" namespace angle { namespace spirv { void WriteSpirvHeader(std::vector *blob, uint32_t idCount); void WriteNop(Blob *blob); void WriteUndef(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteSourceContinued(Blob *blob, LiteralString continuedSource); void WriteSource(Blob *blob, spv::SourceLanguage sourceLanguage, LiteralInteger version, const IdRef *file, const LiteralString *source); void WriteSourceExtension(Blob *blob, LiteralString extension); void WriteName(Blob *blob, IdRef target, LiteralString name); void WriteMemberName(Blob *blob, IdRef type, LiteralInteger member, LiteralString name); void WriteString(Blob *blob, IdResult idResult, LiteralString string); void WriteLine(Blob *blob, IdRef file, LiteralInteger line, LiteralInteger column); void WriteExtension(Blob *blob, LiteralString name); void WriteExtInstImport(Blob *blob, IdResult idResult, LiteralString name); void WriteExtInst(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef set, LiteralExtInstInteger instruction, const IdRefList &operandList); void WriteMemoryModel(Blob *blob, spv::AddressingModel addressingModel, spv::MemoryModel memoryModel); void WriteEntryPoint(Blob *blob, spv::ExecutionModel executionModel, IdRef entryPoint, LiteralString name, const IdRefList &interfaceList); void WriteExecutionMode(Blob *blob, IdRef entryPoint, spv::ExecutionMode mode, const LiteralIntegerList &operandsList); void WriteCapability(Blob *blob, spv::Capability capability); void WriteTypeVoid(Blob *blob, IdResult idResult); void WriteTypeBool(Blob *blob, IdResult idResult); void WriteTypeInt(Blob *blob, IdResult idResult, LiteralInteger width, LiteralInteger signedness); void WriteTypeFloat(Blob *blob, IdResult idResult, LiteralInteger width); void WriteTypeVector(Blob *blob, IdResult idResult, IdRef componentType, LiteralInteger componentCount); void WriteTypeMatrix(Blob *blob, IdResult idResult, IdRef columnType, LiteralInteger columnCount); void WriteTypeImage(Blob *blob, IdResult idResult, IdRef sampledType, spv::Dim dim, LiteralInteger depth, LiteralInteger arrayed, LiteralInteger mS, LiteralInteger sampled, spv::ImageFormat imageFormat, const spv::AccessQualifier *accessQualifier); void WriteTypeSampler(Blob *blob, IdResult idResult); void WriteTypeSampledImage(Blob *blob, IdResult idResult, IdRef imageType); void WriteTypeArray(Blob *blob, IdResult idResult, IdRef elementType, IdRef length); void WriteTypeRuntimeArray(Blob *blob, IdResult idResult, IdRef elementType); void WriteTypeStruct(Blob *blob, IdResult idResult, const IdRefList &memberList); void WriteTypePointer(Blob *blob, IdResult idResult, spv::StorageClass storageClass, IdRef type); void WriteTypeFunction(Blob *blob, IdResult idResult, IdRef returnType, const IdRefList ¶meterList); void WriteConstantTrue(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteConstantFalse(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteConstant(Blob *blob, IdResultType idResultType, IdResult idResult, LiteralContextDependentNumber value); void WriteConstantComposite(Blob *blob, IdResultType idResultType, IdResult idResult, const IdRefList &constituentsList); void WriteConstantNull(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteSpecConstantTrue(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteSpecConstantFalse(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteSpecConstant(Blob *blob, IdResultType idResultType, IdResult idResult, LiteralContextDependentNumber value); void WriteSpecConstantComposite(Blob *blob, IdResultType idResultType, IdResult idResult, const IdRefList &constituentsList); void WriteFunction(Blob *blob, IdResultType idResultType, IdResult idResult, spv::FunctionControlMask functionControl, IdRef functionType); void WriteFunctionParameter(Blob *blob, IdResultType idResultType, IdResult idResult); void WriteFunctionEnd(Blob *blob); void WriteFunctionCall(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef function, const IdRefList &argumentList); void WriteVariable(Blob *blob, IdResultType idResultType, IdResult idResult, spv::StorageClass storageClass, const IdRef *initializer); void WriteImageTexelPointer(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef coordinate, IdRef sample); void WriteLoad(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, const spv::MemoryAccessMask *memoryAccess); void WriteStore(Blob *blob, IdRef pointer, IdRef object, const spv::MemoryAccessMask *memoryAccess); void WriteCopyMemory(Blob *blob, IdRef target, IdRef source, const spv::MemoryAccessMask *memoryAccess); void WriteAccessChain(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, const IdRefList &indexesList); void WriteInBoundsAccessChain(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, const IdRefList &indexesList); void WriteArrayLength(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef structure, LiteralInteger arraymember); void WriteDecorate(Blob *blob, IdRef target, spv::Decoration decoration, const LiteralIntegerList &valuesList); void WriteMemberDecorate(Blob *blob, IdRef structureType, LiteralInteger member, spv::Decoration decoration, const LiteralIntegerList &valuesList); void WriteDecorationGroup(Blob *blob, IdResult idResult); void WriteGroupDecorate(Blob *blob, IdRef decorationGroup, const IdRefList &targetsList); void WriteGroupMemberDecorate(Blob *blob, IdRef decorationGroup, const PairIdRefLiteralIntegerList &targetsPairList); void WriteVectorExtractDynamic(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector, IdRef index); void WriteVectorInsertDynamic(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector, IdRef component, IdRef index); void WriteVectorShuffle(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector1, IdRef vector2, const LiteralIntegerList &componentsList); void WriteCompositeConstruct(Blob *blob, IdResultType idResultType, IdResult idResult, const IdRefList &constituentsList); void WriteCompositeExtract(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef composite, const LiteralIntegerList &indexesList); void WriteCompositeInsert(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef object, IdRef composite, const LiteralIntegerList &indexesList); void WriteCopyObject(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand); void WriteTranspose(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef matrix); void WriteSampledImage(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef sampler); void WriteImageSampleImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleDrefImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleDrefExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleProjImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleProjExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleProjDrefImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSampleProjDrefExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageFetch(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageGather(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef component, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageDrefGather(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageRead(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageWrite(Blob *blob, IdRef image, IdRef coordinate, IdRef texel, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImage(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage); void WriteImageQuerySizeLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef levelofDetail); void WriteImageQuerySize(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image); void WriteImageQueryLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate); void WriteImageQueryLevels(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image); void WriteImageQuerySamples(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image); void WriteConvertFToU(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef floatValue); void WriteConvertFToS(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef floatValue); void WriteConvertSToF(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef signedValue); void WriteConvertUToF(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef unsignedValue); void WriteUConvert(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef unsignedValue); void WriteSConvert(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef signedValue); void WriteFConvert(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef floatValue); void WriteQuantizeToF16(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef value); void WriteBitcast(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand); void WriteSNegate(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand); void WriteFNegate(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand); void WriteIAdd(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFAdd(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteISub(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFSub(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteIMul(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFMul(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteUDiv(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSDiv(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFDiv(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteUMod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSRem(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSMod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFRem(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFMod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteVectorTimesScalar(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector, IdRef scalar); void WriteMatrixTimesScalar(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef matrix, IdRef scalar); void WriteVectorTimesMatrix(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector, IdRef matrix); void WriteMatrixTimesVector(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef matrix, IdRef vector); void WriteMatrixTimesMatrix(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef leftMatrix, IdRef rightMatrix); void WriteOuterProduct(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector1, IdRef vector2); void WriteDot(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector1, IdRef vector2); void WriteIAddCarry(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteISubBorrow(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteUMulExtended(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSMulExtended(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteAny(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector); void WriteAll(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef vector); void WriteIsNan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef x); void WriteIsInf(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef x); void WriteLogicalEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteLogicalNotEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteLogicalOr(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteLogicalAnd(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteLogicalNot(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand); void WriteSelect(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef condition, IdRef object1, IdRef object2); void WriteIEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteINotEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteUGreaterThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSGreaterThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteUGreaterThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSGreaterThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteULessThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSLessThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteULessThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteSLessThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFOrdEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFUnordEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFOrdNotEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFUnordNotEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFOrdLessThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFUnordLessThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFOrdGreaterThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFUnordGreaterThan(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFOrdLessThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFUnordLessThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFOrdGreaterThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteFUnordGreaterThanEqual(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteShiftRightLogical(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, IdRef shift); void WriteShiftRightArithmetic(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, IdRef shift); void WriteShiftLeftLogical(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, IdRef shift); void WriteBitwiseOr(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteBitwiseXor(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteBitwiseAnd(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand1, IdRef operand2); void WriteNot(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef operand); void WriteBitFieldInsert(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, IdRef insert, IdRef offset, IdRef count); void WriteBitFieldSExtract(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, IdRef offset, IdRef count); void WriteBitFieldUExtract(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base, IdRef offset, IdRef count); void WriteBitReverse(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base); void WriteBitCount(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef base); void WriteDPdx(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteDPdy(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteFwidth(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteDPdxFine(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteDPdyFine(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteFwidthFine(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteDPdxCoarse(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteDPdyCoarse(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteFwidthCoarse(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef p); void WriteEmitVertex(Blob *blob); void WriteEndPrimitive(Blob *blob); void WriteEmitStreamVertex(Blob *blob, IdRef stream); void WriteEndStreamPrimitive(Blob *blob, IdRef stream); void WriteControlBarrier(Blob *blob, IdScope execution, IdScope memory, IdMemorySemantics semantics); void WriteMemoryBarrier(Blob *blob, IdScope memory, IdMemorySemantics semantics); void WriteAtomicLoad(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics); void WriteAtomicStore(Blob *blob, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicExchange(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicCompareExchange(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics equal, IdMemorySemantics unequal, IdRef value, IdRef comparator); void WriteAtomicIIncrement(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics); void WriteAtomicIDecrement(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics); void WriteAtomicIAdd(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicISub(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicSMin(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicUMin(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicSMax(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicUMax(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicAnd(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicOr(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WriteAtomicXor(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef pointer, IdScope scope, IdMemorySemantics semantics, IdRef value); void WritePhi(Blob *blob, IdResultType idResultType, IdResult idResult, const PairIdRefIdRefList &variableParentPairList); void WriteLoopMerge(Blob *blob, IdRef mergeBlock, IdRef continueTarget, spv::LoopControlMask loopControl); void WriteSelectionMerge(Blob *blob, IdRef mergeBlock, spv::SelectionControlMask selectionControl); void WriteLabel(Blob *blob, IdResult idResult); void WriteBranch(Blob *blob, IdRef targetLabel); void WriteBranchConditional(Blob *blob, IdRef condition, IdRef trueLabel, IdRef falseLabel, const LiteralIntegerList &branchweightsList); void WriteSwitch(Blob *blob, IdRef selector, IdRef default_, const PairLiteralIntegerIdRefList &targetPairList); void WriteKill(Blob *blob); void WriteReturn(Blob *blob); void WriteReturnValue(Blob *blob, IdRef value); void WriteUnreachable(Blob *blob); void WriteGroupAll(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, IdRef predicate); void WriteGroupAny(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, IdRef predicate); void WriteGroupBroadcast(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, IdRef value, IdRef localId); void WriteGroupIAdd(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupFAdd(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupFMin(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupUMin(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupSMin(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupFMax(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupUMax(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupSMax(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteImageSparseSampleImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleDrefImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleDrefExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleProjImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleProjExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleProjDrefImplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseSampleProjDrefExplicitLod(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, spv::ImageOperandsMask imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseFetch(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseGather(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef component, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseDrefGather(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef sampledImage, IdRef coordinate, IdRef dref, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteImageSparseTexelsResident(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef residentCode); void WriteNoLine(Blob *blob); void WriteImageSparseRead(Blob *blob, IdResultType idResultType, IdResult idResult, IdRef image, IdRef coordinate, const spv::ImageOperandsMask *imageOperands, const IdRefList &imageOperandIdsList); void WriteGroupIAddNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupFAddNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupFMinNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupUMinNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupSMinNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupFMaxNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupUMaxNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); void WriteGroupSMaxNonUniformAMD(Blob *blob, IdResultType idResultType, IdResult idResult, IdScope execution, spv::GroupOperation operation, IdRef x); } // namespace spirv } // namespace angle #endif // COMMON_SPIRV_SPIRVINSTRUCTIONBUILDERAUTOGEN_H_