|
@@ -199,68 +199,70 @@ public:
|
|
|
lastOpWasMergeInst(false) {}
|
|
|
|
|
|
// Visit different SPIR-V constructs for emitting.
|
|
|
- bool visit(SpirvModule *, Phase phase);
|
|
|
- bool visit(SpirvFunction *, Phase phase);
|
|
|
- bool visit(SpirvBasicBlock *, Phase phase);
|
|
|
-
|
|
|
- bool visit(SpirvCapability *);
|
|
|
- bool visit(SpirvExtension *);
|
|
|
- bool visit(SpirvExtInstImport *);
|
|
|
- bool visit(SpirvMemoryModel *);
|
|
|
- bool visit(SpirvEmitVertex *);
|
|
|
- bool visit(SpirvEndPrimitive *);
|
|
|
- bool visit(SpirvEntryPoint *);
|
|
|
- bool visit(SpirvExecutionMode *);
|
|
|
- bool visit(SpirvString *);
|
|
|
- bool visit(SpirvSource *);
|
|
|
- bool visit(SpirvModuleProcessed *);
|
|
|
- bool visit(SpirvDecoration *);
|
|
|
- bool visit(SpirvVariable *);
|
|
|
- bool visit(SpirvFunctionParameter *);
|
|
|
- bool visit(SpirvLoopMerge *);
|
|
|
- bool visit(SpirvSelectionMerge *);
|
|
|
- bool visit(SpirvBranch *);
|
|
|
- bool visit(SpirvBranchConditional *);
|
|
|
- bool visit(SpirvKill *);
|
|
|
- bool visit(SpirvReturn *);
|
|
|
- bool visit(SpirvSwitch *);
|
|
|
- bool visit(SpirvUnreachable *);
|
|
|
- bool visit(SpirvAccessChain *);
|
|
|
- bool visit(SpirvAtomic *);
|
|
|
- bool visit(SpirvBarrier *);
|
|
|
- bool visit(SpirvBinaryOp *);
|
|
|
- bool visit(SpirvBitFieldExtract *);
|
|
|
- bool visit(SpirvBitFieldInsert *);
|
|
|
- bool visit(SpirvConstantBoolean *);
|
|
|
- bool visit(SpirvConstantInteger *);
|
|
|
- bool visit(SpirvConstantFloat *);
|
|
|
- bool visit(SpirvConstantComposite *);
|
|
|
- bool visit(SpirvConstantNull *);
|
|
|
- bool visit(SpirvCompositeConstruct *);
|
|
|
- bool visit(SpirvCompositeExtract *);
|
|
|
- bool visit(SpirvCompositeInsert *);
|
|
|
- bool visit(SpirvExtInst *);
|
|
|
- bool visit(SpirvFunctionCall *);
|
|
|
- bool visit(SpirvNonUniformBinaryOp *);
|
|
|
- bool visit(SpirvNonUniformElect *);
|
|
|
- bool visit(SpirvNonUniformUnaryOp *);
|
|
|
- bool visit(SpirvImageOp *);
|
|
|
- bool visit(SpirvImageQuery *);
|
|
|
- bool visit(SpirvImageSparseTexelsResident *);
|
|
|
- bool visit(SpirvImageTexelPointer *);
|
|
|
- bool visit(SpirvLoad *);
|
|
|
- bool visit(SpirvCopyObject *);
|
|
|
- bool visit(SpirvSampledImage *);
|
|
|
- bool visit(SpirvSelect *);
|
|
|
- bool visit(SpirvSpecConstantBinaryOp *);
|
|
|
- bool visit(SpirvSpecConstantUnaryOp *);
|
|
|
- bool visit(SpirvStore *);
|
|
|
- bool visit(SpirvUnaryOp *);
|
|
|
- bool visit(SpirvVectorShuffle *);
|
|
|
- bool visit(SpirvArrayLength *);
|
|
|
- bool visit(SpirvRayTracingOpNV *);
|
|
|
- bool visit(SpirvDemoteToHelperInvocationEXT *);
|
|
|
- bool visit(SpirvRayQueryOpKHR *);
|
|
|
+ bool visit(SpirvModule *, Phase phase) override;
|
|
|
+ bool visit(SpirvFunction *, Phase phase) override;
|
|
|
+ bool visit(SpirvBasicBlock *, Phase phase) override;
|
|
|
+
|
|
|
+ bool visit(SpirvCapability *) override;
|
|
|
+ bool visit(SpirvExtension *) override;
|
|
|
+ bool visit(SpirvExtInstImport *) override;
|
|
|
+ bool visit(SpirvMemoryModel *) override;
|
|
|
+ bool visit(SpirvEmitVertex *) override;
|
|
|
+ bool visit(SpirvEndPrimitive *) override;
|
|
|
+ bool visit(SpirvEntryPoint *) override;
|
|
|
+ bool visit(SpirvExecutionMode *) override;
|
|
|
+ bool visit(SpirvString *) override;
|
|
|
+ bool visit(SpirvSource *) override;
|
|
|
+ bool visit(SpirvModuleProcessed *) override;
|
|
|
+ bool visit(SpirvDecoration *) override;
|
|
|
+ bool visit(SpirvVariable *) override;
|
|
|
+ bool visit(SpirvFunctionParameter *) override;
|
|
|
+ bool visit(SpirvLoopMerge *) override;
|
|
|
+ bool visit(SpirvSelectionMerge *) override;
|
|
|
+ bool visit(SpirvBranch *) override;
|
|
|
+ bool visit(SpirvBranchConditional *) override;
|
|
|
+ bool visit(SpirvKill *) override;
|
|
|
+ bool visit(SpirvReturn *) override;
|
|
|
+ bool visit(SpirvSwitch *) override;
|
|
|
+ bool visit(SpirvUnreachable *) override;
|
|
|
+ bool visit(SpirvAccessChain *) override;
|
|
|
+ bool visit(SpirvAtomic *) override;
|
|
|
+ bool visit(SpirvBarrier *) override;
|
|
|
+ bool visit(SpirvBinaryOp *) override;
|
|
|
+ bool visit(SpirvBitFieldExtract *) override;
|
|
|
+ bool visit(SpirvBitFieldInsert *) override;
|
|
|
+ bool visit(SpirvConstantBoolean *) override;
|
|
|
+ bool visit(SpirvConstantInteger *) override;
|
|
|
+ bool visit(SpirvConstantFloat *) override;
|
|
|
+ bool visit(SpirvConstantComposite *) override;
|
|
|
+ bool visit(SpirvConstantNull *) override;
|
|
|
+ bool visit(SpirvCompositeConstruct *) override;
|
|
|
+ bool visit(SpirvCompositeExtract *) override;
|
|
|
+ bool visit(SpirvCompositeInsert *) override;
|
|
|
+ bool visit(SpirvExtInst *) override;
|
|
|
+ bool visit(SpirvFunctionCall *) override;
|
|
|
+ bool visit(SpirvNonUniformBinaryOp *) override;
|
|
|
+ bool visit(SpirvNonUniformElect *) override;
|
|
|
+ bool visit(SpirvNonUniformUnaryOp *) override;
|
|
|
+ bool visit(SpirvImageOp *) override;
|
|
|
+ bool visit(SpirvImageQuery *) override;
|
|
|
+ bool visit(SpirvImageSparseTexelsResident *) override;
|
|
|
+ bool visit(SpirvImageTexelPointer *) override;
|
|
|
+ bool visit(SpirvLoad *) override;
|
|
|
+ bool visit(SpirvCopyObject *) override;
|
|
|
+ bool visit(SpirvSampledImage *) override;
|
|
|
+ bool visit(SpirvSelect *) override;
|
|
|
+ bool visit(SpirvSpecConstantBinaryOp *) override;
|
|
|
+ bool visit(SpirvSpecConstantUnaryOp *) override;
|
|
|
+ bool visit(SpirvStore *) override;
|
|
|
+ bool visit(SpirvUnaryOp *) override;
|
|
|
+ bool visit(SpirvVectorShuffle *) override;
|
|
|
+ bool visit(SpirvArrayLength *) override;
|
|
|
+ bool visit(SpirvRayTracingOpNV *) override;
|
|
|
+ bool visit(SpirvDemoteToHelperInvocationEXT *) override;
|
|
|
+ bool visit(SpirvRayQueryOpKHR *) override;
|
|
|
+
|
|
|
+ using Visitor::visit;
|
|
|
|
|
|
// Returns the assembled binary built up in this visitor.
|
|
|
std::vector<uint32_t> takeBinary();
|