package spvtools.fuzz.protobufs

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

message AccessChainClampingInfo

spvtoolsfuzz.proto:279

Used in: TransformationAddFunction

message DataDescriptor

spvtoolsfuzz.proto:81

Used in: FactDataSynonym

message Fact

spvtoolsfuzz.proto:164

Used in: FactSequence

message FactBlockIsDead

spvtoolsfuzz.proto:179

Used in: Fact

message FactConstantUniform

spvtoolsfuzz.proto:189

Used in: Fact

message FactDataSynonym

spvtoolsfuzz.proto:205

Used in: Fact

message FactFunctionIsLivesafe

spvtoolsfuzz.proto:218

Used in: Fact

message FactIdEquation

spvtoolsfuzz.proto:230

Used in: Fact

message FactIdIsIrrelevant

spvtoolsfuzz.proto:255

Used in: Fact

message FactPointeeValueIsIrrelevant

spvtoolsfuzz.proto:267

Used in: Fact

message FactSequence

spvtoolsfuzz.proto:160

message IdUseDescriptor

spvtoolsfuzz.proto:52

Used in: TransformationReplaceBooleanConstantWithConstantBinary, TransformationReplaceConstantWithUniform, TransformationReplaceIdWithSynonym, TransformationReplaceIrrelevantId

message Instruction

spvtoolsfuzz.proto:142

Used in: TransformationAddFunction

message InstructionDescriptor

spvtoolsfuzz.proto:34

Used in: IdUseDescriptor, SideEffectWrapperInfo, TransformationAccessChain, TransformationAddCopyMemory, TransformationAddImageSampleUnusedComponents, TransformationAddSynonym, TransformationAdjustBranchWeights, TransformationCompositeConstruct, TransformationCompositeExtract, TransformationCompositeInsert, TransformationEquationInstruction, TransformationFunctionCall, TransformationLoad, TransformationMoveInstructionDown, TransformationMutatePointer, TransformationPushIdThroughVariable, TransformationReplaceCopyMemoryWithLoadStore, TransformationReplaceLinearAlgebraInstruction, TransformationReplaceLoadStoreWithCopyMemory, TransformationSetMemoryOperandsMask, TransformationSplitBlock, TransformationStore, TransformationSwapCommutableOperands, TransformationSwapConditionalBranchOperands, TransformationToggleAccessChainInstruction, TransformationVectorShuffle, TransformationWrapEarlyTerminatorInFunction

message InstructionOperand

spvtoolsfuzz.proto:129

Used in: Instruction, TransformationAddSpecConstantOp

message LoopLimiterInfo

spvtoolsfuzz.proto:436

Used in: TransformationAddFunction

message ReturnMergingInfo

spvtoolsfuzz.proto:384

TransformationMergeFunctionReturns needs to modify each merge block of loops containing return instructions, by: - adding instructions to decide whether the function is returning - adding instructions to pass on the return value of the function, if it is returning - changing the branch instruction (which must be an unconditional branch) to a conditional branch that, if the function is returning, branches to the merge block of the innermost loop that contains this merge block (which can be the new merge block introduced by the transformation). One such merge block of the form: %block = OpLabel %phi1 = OpPhi %type1 %val1_1 %pred1 %val1_2 %pred2 %phi2 = OpPhi %type2 %val2_1 %pred1 %val2_2 %pred2 OpBranch %next is transformed into: %block = OpLabel %is_returning_id = OpPhi %bool %false %pred1 %false %pred2 %true %ret_bb1 %is_bb2_returning %mer_bb2 %maybe_return_val_id = OpPhi %return_type %any_returnable_val %pred1 %any_returnable_val %pred2 %ret_val1 %ret_bb1 %ret_val2 %mer_bb2 %phi1 = OpPhi %type1 %val1_1 %pred1 %val1_2 %pred2 %any_suitable_id_1 %ret_bb1 %any_suitable_id_1 %mer_bb2 %phi2 = OpPhi %type2 %val2_1 %pred1 %val2_2 %pred2 %any_suitable_id_1 %ret_bb1 %any_suitable_id_1 %mer_bb2 OpBranchConditional %is_returning_id %innermost_loop_merge %next where %ret_bb1 is a block that originally contains a return instruction and %mer_bb2 is the merge block of an inner loop, from where the function might be returning. Note that the block is required to only have OpLabel, OpPhi or OpBranch instructions.

Used in: TransformationMergeFunctionReturns

message SideEffectWrapperInfo

spvtoolsfuzz.proto:309

When flattening a conditional branch, it is necessary to enclose instructions that have side effects inside conditionals, so that they are only executed if the condition holds. Otherwise, there might be unintended changes in memory, or crashes that would not originally happen. For example, the instruction %id = OpLoad %type %ptr, found in the true branch of the conditional, will be enclosed in a new conditional (assuming that the block containing it can be split around it) as follows: [previous instructions in the block] OpSelectionMerge %merge_block_id None OpBranchConditional %cond %execute_block_id %alternative_block_id %execute_block_id = OpLabel %actual_result_id = OpLoad %type %ptr OpBranch %merge_block_id %alternative_block_id = OpLabel %placeholder_result_id = OpCopyObject %type %value_to_copy_id OpBranch %merge_block_id %merge_block_id = OpLabel %id = OpPhi %type %actual_result_id %execute_block_id %placeholder_result_id %alternative_block_id [following instructions from the original block] If the instruction does not have a result id, this is simplified. For example, OpStore %ptr %value, found in the true branch of a conditional, is enclosed as follows: [previous instructions in the block] OpSelectionMerge %merge_block None OpBranchConditional %cond %execute_block_id %merge_block_id %execute_block_id = OpLabel OpStore %ptr %value OpBranch %merge_block_id %merge_block_id = OpLabel [following instructions from the original block] The same happens if the instruction is found in the false branch of the conditional being flattened, except that the label ids in the OpBranchConditional are swapped.

Used in: TransformationFlattenConditionalBranch

message Transformation

spvtoolsfuzz.proto:470

Used in: TransformationSequence

message TransformationAccessChain

spvtoolsfuzz.proto:569

Used in: Transformation

message TransformationAddBitInstructionSynonym

spvtoolsfuzz.proto:599

Used in: Transformation

message TransformationAddConstantBoolean

spvtoolsfuzz.proto:626

Used in: Transformation

message TransformationAddConstantComposite

spvtoolsfuzz.proto:640

Used in: Transformation

message TransformationAddConstantNull

spvtoolsfuzz.proto:660

Used in: Transformation

message TransformationAddConstantScalar

spvtoolsfuzz.proto:672

Used in: Transformation

message TransformationAddCopyMemory

spvtoolsfuzz.proto:692

Used in: Transformation

message TransformationAddDeadBlock

spvtoolsfuzz.proto:716

Used in: Transformation

message TransformationAddDeadBreak

spvtoolsfuzz.proto:735

Used in: Transformation

message TransformationAddDeadContinue

spvtoolsfuzz.proto:757

Used in: Transformation

message TransformationAddEarlyTerminatorWrapper

spvtoolsfuzz.proto:776

Used in: Transformation

message TransformationAddFunction

spvtoolsfuzz.proto:798

Used in: Transformation

message TransformationAddGlobalUndef

spvtoolsfuzz.proto:835

Used in: Transformation

message TransformationAddGlobalVariable

spvtoolsfuzz.proto:847

Used in: Transformation

message TransformationAddImageSampleUnusedComponents

spvtoolsfuzz.proto:871

Used in: Transformation

message TransformationAddLocalVariable

spvtoolsfuzz.proto:883

Used in: Transformation

message TransformationAddLoopPreheader

spvtoolsfuzz.proto:908

Used in: Transformation

message TransformationAddLoopToCreateIntConstantSynonym

spvtoolsfuzz.proto:936

A transformation that uses a loop to create a synonym for an integer constant C (scalar or vector) using an initial value I, a step value S and a number of iterations N such that C = I - N * S. For each iteration, S is subtracted from the total. The loop can be made up of one or two blocks, and it is inserted before a block with a single predecessor. In the one-block case, it is of the form: %loop_id = OpLabel %ctr_id = OpPhi %int %int_0 %pred %incremented_ctr_id %loop_id %temp_id = OpPhi %type_of_I %I %pred %eventual_syn_id %loop_id %eventual_syn_id = OpISub %type_of_I %temp_id %step_val_id %incremented_ctr_id = OpIAdd %int %ctr_id %int_1 %cond_id = OpSLessThan %bool %incremented_ctr_id %num_iterations_id OpLoopMerge %block_after_loop_id %loop_id None OpBranchConditional %cond_id %loop_id %block_after_loop_id A new OpPhi instruction is then added to %block_after_loop_id, as follows: %block_after_loop_id = OpLabel %syn_id = OpPhi %type_of_I %eventual_syn_id %loop_id This can be translated, assuming that N > 0, to: int syn = I; for (int ctr = 0; ctr < N; ctr++) syn = syn - S; All existing OpPhi instructions in %block_after_loop_id are also updated to reflect the fact that its predecessor is now %loop_id.

Used in: Transformation

message TransformationAddNoContractionDecoration

spvtoolsfuzz.proto:1027

Used in: Transformation

message TransformationAddOpPhiSynonym

spvtoolsfuzz.proto:1036

Used in: Transformation

message TransformationAddParameter

spvtoolsfuzz.proto:1054

Used in: Transformation

message TransformationAddRelaxedDecoration

spvtoolsfuzz.proto:1078

Used in: Transformation

message TransformationAddSpecConstantOp

spvtoolsfuzz.proto:1087

Used in: Transformation

message TransformationAddSynonym

spvtoolsfuzz.proto:1105

Used in: Transformation

enum TransformationAddSynonym.SynonymType

spvtoolsfuzz.proto:1120

Type of the synonym to apply. Some types might produce instructions with commutative operands. Such types do not specify the order of the operands since we have a special transformation to swap commutable operands. TODO(https://github.com/KhronosGroup/SPIRV-Tools/issues/3499): Consider adding more types here.

Used in: TransformationAddSynonym

message TransformationAddTypeArray

spvtoolsfuzz.proto:1161

Used in: Transformation

message TransformationAddTypeBoolean

spvtoolsfuzz.proto:1176

Used in: Transformation

message TransformationAddTypeFloat

spvtoolsfuzz.proto:1185

Used in: Transformation

message TransformationAddTypeFunction

spvtoolsfuzz.proto:1197

Used in: Transformation

message TransformationAddTypeInt

spvtoolsfuzz.proto:1212

Used in: Transformation

message TransformationAddTypeMatrix

spvtoolsfuzz.proto:1227

Used in: Transformation

message TransformationAddTypePointer

spvtoolsfuzz.proto:1243

Used in: Transformation

message TransformationAddTypeStruct

spvtoolsfuzz.proto:1259

Used in: Transformation

message TransformationAddTypeVector

spvtoolsfuzz.proto:1271

Used in: Transformation

message TransformationAdjustBranchWeights

spvtoolsfuzz.proto:1286

Used in: Transformation

message TransformationCompositeConstruct

spvtoolsfuzz.proto:1299

Used in: Transformation

message TransformationCompositeExtract

spvtoolsfuzz.proto:1319

Used in: Transformation

message TransformationCompositeInsert

spvtoolsfuzz.proto:1339

Used in: Transformation

message TransformationComputeDataSynonymFactClosure

spvtoolsfuzz.proto:1362

Used in: Transformation

message TransformationDuplicateRegionWithSelection

spvtoolsfuzz.proto:1375

Used in: Transformation

message TransformationEquationInstruction

spvtoolsfuzz.proto:1410

Used in: Transformation

message TransformationExpandVectorReduction

spvtoolsfuzz.proto:1432

Used in: Transformation

message TransformationFlattenConditionalBranch

spvtoolsfuzz.proto:1447

Used in: Transformation

message TransformationFunctionCall

spvtoolsfuzz.proto:1517

Used in: Transformation

message TransformationInlineFunction

spvtoolsfuzz.proto:1540

Used in: Transformation

message TransformationInvertComparisonOperator

spvtoolsfuzz.proto:1554

Used in: Transformation

message TransformationLoad

spvtoolsfuzz.proto:1570

Used in: Transformation

message TransformationMakeVectorOperationDynamic

spvtoolsfuzz.proto:1595

Used in: Transformation

message TransformationMergeBlocks

spvtoolsfuzz.proto:1610

Used in: Transformation

message TransformationMergeFunctionReturns

spvtoolsfuzz.proto:1620

Used in: Transformation

message TransformationMoveBlockDown

spvtoolsfuzz.proto:1682

Used in: Transformation

message TransformationMoveInstructionDown

spvtoolsfuzz.proto:1691

Used in: Transformation

message TransformationMutatePointer

spvtoolsfuzz.proto:1700

Used in: Transformation

message TransformationOutlineFunction

spvtoolsfuzz.proto:1716

Used in: Transformation

message TransformationPermuteFunctionParameters

spvtoolsfuzz.proto:1763

Used in: Transformation

message TransformationPermutePhiOperands

spvtoolsfuzz.proto:1791

Used in: Transformation

message TransformationPropagateInstructionDown

spvtoolsfuzz.proto:1804

Used in: Transformation

message TransformationPropagateInstructionUp

spvtoolsfuzz.proto:1836

Used in: Transformation

message TransformationPushIdThroughVariable

spvtoolsfuzz.proto:1856

Used in: Transformation

message TransformationRecordSynonymousConstants

spvtoolsfuzz.proto:1883

Used in: Transformation

message TransformationReplaceAddSubMulWithCarryingExtended

spvtoolsfuzz.proto:1903

Used in: Transformation

message TransformationReplaceBooleanConstantWithConstantBinary

spvtoolsfuzz.proto:1956

Used in: Transformation

message TransformationReplaceBranchFromDeadBlockWithExit

spvtoolsfuzz.proto:1921

Used in: Transformation

message TransformationReplaceConstantWithUniform

spvtoolsfuzz.proto:1978

Used in: Transformation

message TransformationReplaceCopyMemoryWithLoadStore

spvtoolsfuzz.proto:1997

Used in: Transformation

message TransformationReplaceCopyObjectWithStoreLoad

spvtoolsfuzz.proto:2011

Used in: Transformation

message TransformationReplaceIdWithSynonym

spvtoolsfuzz.proto:2030

Used in: Transformation

message TransformationReplaceIrrelevantId

spvtoolsfuzz.proto:2043

Used in: Transformation

message TransformationReplaceLinearAlgebraInstruction

spvtoolsfuzz.proto:2054

Used in: Transformation

message TransformationReplaceLoadStoreWithCopyMemory

spvtoolsfuzz.proto:2067

A transformation that takes a pair of instruction descriptors to OpLoad and OpStore that have the same intermediate value and replaces the OpStore with an equivalent OpCopyMemory.

Used in: Transformation

message TransformationReplaceOpPhiIdFromDeadPredecessor

spvtoolsfuzz.proto:2079

Used in: Transformation

message TransformationReplaceOpSelectWithConditionalBranch

spvtoolsfuzz.proto:2099

Used in: Transformation

message TransformationReplaceParameterWithGlobal

spvtoolsfuzz.proto:1939

Used in: Transformation

message TransformationReplaceParamsWithStruct

spvtoolsfuzz.proto:2132

Used in: Transformation

message TransformationSequence

spvtoolsfuzz.proto:466

message TransformationSetFunctionControl

spvtoolsfuzz.proto:2154

Used in: Transformation

message TransformationSetLoopControl

spvtoolsfuzz.proto:2167

Used in: Transformation

message TransformationSetMemoryOperandsMask

spvtoolsfuzz.proto:2191

Used in: Transformation

message TransformationSetSelectionControl

spvtoolsfuzz.proto:2210

Used in: Transformation

message TransformationSplitBlock

spvtoolsfuzz.proto:2226

Used in: Transformation

message TransformationStore

spvtoolsfuzz.proto:2246

Used in: Transformation

message TransformationSwapCommutableOperands

spvtoolsfuzz.proto:2271

Used in: Transformation

message TransformationSwapConditionalBranchOperands

spvtoolsfuzz.proto:2280

Used in: Transformation

message TransformationSwapFunctionVariables

spvtoolsfuzz.proto:2295

A transformation that swaps function variables

Used in: Transformation

message TransformationSwapTwoFunctions

spvtoolsfuzz.proto:2305

A transformation that swaps the position of two functions within the same module.

Used in: Transformation

message TransformationToggleAccessChainInstruction

spvtoolsfuzz.proto:2313

Used in: Transformation

message TransformationVectorShuffle

spvtoolsfuzz.proto:2322

Used in: Transformation

message TransformationWrapEarlyTerminatorInFunction

spvtoolsfuzz.proto:2344

Used in: Transformation

message TransformationWrapRegionInSelection

spvtoolsfuzz.proto:2364

Used in: Transformation

message TransformationWrapVectorSynonym

spvtoolsfuzz.proto:2394

A transformation that wraps an arithmetic operation into a vector operation and get the result of the original operation from the corresponding index. For instance, for this transformation, an scalar operation between two scalars: define op ∈ {+, -, *} c = a op b requires the availability of two vectors: va = vector(..., a, ...) vb = vector(..., b, ...) where a and b are in the same position i in each of their corresponding vector and a is synonymous with va[i] and b is synonymous with vb[i]. The transformation then add an instruction vc = va op vb where c is synonymous with vc[i].

Used in: Transformation

message UInt32Pair

spvtoolsfuzz.proto:24

Used in: AccessChainClampingInfo, ReturnMergingInfo, TransformationAccessChain, TransformationAddOpPhiSynonym, TransformationAddParameter, TransformationAdjustBranchWeights, TransformationDuplicateRegionWithSelection, TransformationInlineFunction, TransformationOutlineFunction, TransformationPropagateInstructionDown, TransformationPropagateInstructionUp, TransformationReplaceParamsWithStruct

message UniformBufferElementDescriptor

spvtoolsfuzz.proto:97

Used in: FactConstantUniform, TransformationReplaceConstantWithUniform