From 5e4b1242bfbef52a5f3196898fc212d5edd3013e Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 6 Aug 2015 22:53:06 -0600 Subject: [PATCH] Move to revision 31 of SPIR-V. --- SPIRV/CMakeLists.txt | 3 +- SPIRV/GlslangToSpv.cpp | 300 ++- SPIRV/SPVRemapper.cpp | 50 +- SPIRV/SPVRemapper.h | 2 +- SPIRV/SpvBuilder.cpp | 198 +- SPIRV/SpvBuilder.h | 40 +- SPIRV/disassemble.cpp | 209 +- SPIRV/disassemble.h | 2 +- SPIRV/doc.cpp | 1977 ++++++++++------- SPIRV/doc.h | 46 +- SPIRV/spvIR.h | 2 +- StandAlone/StandAlone.cpp | 7 +- Test/baseResults/spv.100ops.frag.out | 58 +- Test/baseResults/spv.140.frag.out | 181 +- Test/baseResults/spv.150.geom.out | 73 +- Test/baseResults/spv.150.vert.out | 52 +- Test/baseResults/spv.300BuiltIns.vert.out | 61 +- Test/baseResults/spv.300layout.frag.out | 44 +- Test/baseResults/spv.300layoutp.vert.out | 136 +- Test/baseResults/spv.330.geom.out | 25 +- Test/baseResults/spv.400.tesc.out | 311 +-- Test/baseResults/spv.400.tese.out | 131 +- Test/baseResults/spv.430.vert.out | 120 +- Test/baseResults/spv.Operations.frag.out | 652 +++--- Test/baseResults/spv.accessChain.frag.out | 180 +- Test/baseResults/spv.always-discard.frag.out | 94 +- Test/baseResults/spv.always-discard2.frag.out | 38 +- Test/baseResults/spv.atomic.comp.out | 196 +- .../spv.conditionalDiscard.frag.out | 77 +- Test/baseResults/spv.conversion.frag.out | 494 ++-- Test/baseResults/spv.dataOut.frag.out | 16 +- Test/baseResults/spv.dataOutIndirect.frag.out | 20 +- Test/baseResults/spv.dataOutIndirect.vert.out | 39 +- Test/baseResults/spv.depthOut.frag.out | 26 +- Test/baseResults/spv.discard-dce.frag.out | 94 +- Test/baseResults/spv.do-simple.vert.out | 30 +- .../spv.do-while-continue-break.vert.out | 71 +- Test/baseResults/spv.doWhileLoop.frag.out | 40 +- Test/baseResults/spv.double.comp.out | 59 +- .../spv.earlyReturnDiscard.frag.out | 130 +- Test/baseResults/spv.flowControl.frag.out | 60 +- .../spv.for-continue-break.vert.out | 75 +- Test/baseResults/spv.for-simple.vert.out | 33 +- Test/baseResults/spv.forLoop.frag.out | 162 +- Test/baseResults/spv.forwardFun.frag.out | 70 +- Test/baseResults/spv.functionCall.frag.out | 80 +- .../spv.functionSemantics.frag.out | 164 +- Test/baseResults/spv.length.frag.out | 26 +- Test/baseResults/spv.localAggregates.frag.out | 165 +- Test/baseResults/spv.loops.frag.out | 864 +++---- Test/baseResults/spv.loopsArtificial.frag.out | 336 +-- Test/baseResults/spv.matFun.vert.out | 61 +- Test/baseResults/spv.nonSquare.vert.out | 47 +- Test/baseResults/spv.precision.frag.out | 144 +- Test/baseResults/spv.prepost.frag.out | 130 +- Test/baseResults/spv.qualifiers.vert.out | 55 +- Test/baseResults/spv.set.vert.out | 54 +- .../spv.simpleFunctionCall.frag.out | 28 +- Test/baseResults/spv.simpleMat.vert.out | 41 +- .../baseResults/spv.structAssignment.frag.out | 67 +- Test/baseResults/spv.structDeref.frag.out | 117 +- Test/baseResults/spv.structure.frag.out | 67 +- Test/baseResults/spv.switch.frag.out | 298 +-- Test/baseResults/spv.swizzle.frag.out | 168 +- Test/baseResults/spv.test.frag.out | 126 +- Test/baseResults/spv.texture.vert.out | 299 +-- Test/baseResults/spv.types.frag.out | 264 +-- Test/baseResults/spv.uint.frag.out | 541 ++--- Test/baseResults/spv.uniformArray.frag.out | 55 +- .../spv.variableArrayIndex.frag.out | 135 +- Test/baseResults/spv.varyingArray.frag.out | 141 +- .../spv.varyingArrayIndirect.frag.out | 161 +- Test/baseResults/spv.voidFunction.frag.out | 54 +- .../spv.while-continue-break.vert.out | 60 +- Test/baseResults/spv.while-simple.vert.out | 28 +- Test/baseResults/spv.whileLoop.frag.out | 38 +- glslang/Include/revision.h | 2 +- 77 files changed, 6050 insertions(+), 5450 deletions(-) mode change 100644 => 100755 SPIRV/CMakeLists.txt mode change 100644 => 100755 SPIRV/GlslangToSpv.cpp mode change 100644 => 100755 SPIRV/SPVRemapper.cpp mode change 100644 => 100755 SPIRV/SPVRemapper.h mode change 100644 => 100755 SPIRV/SpvBuilder.cpp mode change 100644 => 100755 SPIRV/SpvBuilder.h mode change 100644 => 100755 SPIRV/disassemble.cpp mode change 100644 => 100755 SPIRV/disassemble.h mode change 100644 => 100755 SPIRV/doc.cpp mode change 100644 => 100755 SPIRV/doc.h mode change 100644 => 100755 SPIRV/spvIR.h mode change 100644 => 100755 StandAlone/StandAlone.cpp mode change 100644 => 100755 Test/baseResults/spv.100ops.frag.out mode change 100644 => 100755 Test/baseResults/spv.140.frag.out mode change 100644 => 100755 Test/baseResults/spv.150.geom.out mode change 100644 => 100755 Test/baseResults/spv.150.vert.out mode change 100644 => 100755 Test/baseResults/spv.300BuiltIns.vert.out mode change 100644 => 100755 Test/baseResults/spv.300layout.frag.out mode change 100644 => 100755 Test/baseResults/spv.300layoutp.vert.out mode change 100644 => 100755 Test/baseResults/spv.330.geom.out mode change 100644 => 100755 Test/baseResults/spv.400.tesc.out mode change 100644 => 100755 Test/baseResults/spv.400.tese.out mode change 100644 => 100755 Test/baseResults/spv.430.vert.out mode change 100644 => 100755 Test/baseResults/spv.Operations.frag.out mode change 100644 => 100755 Test/baseResults/spv.accessChain.frag.out mode change 100644 => 100755 Test/baseResults/spv.always-discard.frag.out mode change 100644 => 100755 Test/baseResults/spv.always-discard2.frag.out mode change 100644 => 100755 Test/baseResults/spv.atomic.comp.out mode change 100644 => 100755 Test/baseResults/spv.conditionalDiscard.frag.out mode change 100644 => 100755 Test/baseResults/spv.conversion.frag.out mode change 100644 => 100755 Test/baseResults/spv.dataOut.frag.out mode change 100644 => 100755 Test/baseResults/spv.dataOutIndirect.frag.out mode change 100644 => 100755 Test/baseResults/spv.dataOutIndirect.vert.out mode change 100644 => 100755 Test/baseResults/spv.depthOut.frag.out mode change 100644 => 100755 Test/baseResults/spv.discard-dce.frag.out mode change 100644 => 100755 Test/baseResults/spv.do-simple.vert.out mode change 100644 => 100755 Test/baseResults/spv.do-while-continue-break.vert.out mode change 100644 => 100755 Test/baseResults/spv.doWhileLoop.frag.out mode change 100644 => 100755 Test/baseResults/spv.double.comp.out mode change 100644 => 100755 Test/baseResults/spv.earlyReturnDiscard.frag.out mode change 100644 => 100755 Test/baseResults/spv.flowControl.frag.out mode change 100644 => 100755 Test/baseResults/spv.for-continue-break.vert.out mode change 100644 => 100755 Test/baseResults/spv.for-simple.vert.out mode change 100644 => 100755 Test/baseResults/spv.forLoop.frag.out mode change 100644 => 100755 Test/baseResults/spv.forwardFun.frag.out mode change 100644 => 100755 Test/baseResults/spv.functionCall.frag.out mode change 100644 => 100755 Test/baseResults/spv.functionSemantics.frag.out mode change 100644 => 100755 Test/baseResults/spv.length.frag.out mode change 100644 => 100755 Test/baseResults/spv.localAggregates.frag.out mode change 100644 => 100755 Test/baseResults/spv.loops.frag.out mode change 100644 => 100755 Test/baseResults/spv.loopsArtificial.frag.out mode change 100644 => 100755 Test/baseResults/spv.matFun.vert.out mode change 100644 => 100755 Test/baseResults/spv.nonSquare.vert.out mode change 100644 => 100755 Test/baseResults/spv.precision.frag.out mode change 100644 => 100755 Test/baseResults/spv.prepost.frag.out mode change 100644 => 100755 Test/baseResults/spv.qualifiers.vert.out mode change 100644 => 100755 Test/baseResults/spv.set.vert.out mode change 100644 => 100755 Test/baseResults/spv.simpleFunctionCall.frag.out mode change 100644 => 100755 Test/baseResults/spv.simpleMat.vert.out mode change 100644 => 100755 Test/baseResults/spv.structAssignment.frag.out mode change 100644 => 100755 Test/baseResults/spv.structDeref.frag.out mode change 100644 => 100755 Test/baseResults/spv.structure.frag.out mode change 100644 => 100755 Test/baseResults/spv.switch.frag.out mode change 100644 => 100755 Test/baseResults/spv.swizzle.frag.out mode change 100644 => 100755 Test/baseResults/spv.test.frag.out mode change 100644 => 100755 Test/baseResults/spv.texture.vert.out mode change 100644 => 100755 Test/baseResults/spv.types.frag.out mode change 100644 => 100755 Test/baseResults/spv.uint.frag.out mode change 100644 => 100755 Test/baseResults/spv.uniformArray.frag.out mode change 100644 => 100755 Test/baseResults/spv.variableArrayIndex.frag.out mode change 100644 => 100755 Test/baseResults/spv.varyingArray.frag.out mode change 100644 => 100755 Test/baseResults/spv.varyingArrayIndirect.frag.out mode change 100644 => 100755 Test/baseResults/spv.voidFunction.frag.out mode change 100644 => 100755 Test/baseResults/spv.while-continue-break.vert.out mode change 100644 => 100755 Test/baseResults/spv.while-simple.vert.out mode change 100644 => 100755 Test/baseResults/spv.whileLoop.frag.out diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt old mode 100644 new mode 100755 index 6bb140be..a255aca9 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -10,7 +10,8 @@ set(SOURCES disassemble.cpp) set(HEADERS - spirv.h + spirv.hpp + GLSL.std.450.h GlslangToSpv.h SpvBuilder.h SPVRemapper.h diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp old mode 100644 new mode 100755 index ce4a5206..1d1dcaf5 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -39,14 +39,17 @@ // translate them to SPIR-V. // -#include "spirv.h" +#include "spirv.hpp" #include "GlslangToSpv.h" #include "SpvBuilder.h" -#include "GLSL450Lib.h" +namespace spv { + #include "GLSL.std.450.h" +} // Glslang includes #include "../glslang/MachineIndependent/localintermediate.h" #include "../glslang/MachineIndependent/SymbolTable.h" +#include "../glslang/Include/Common.h" #include #include @@ -85,6 +88,7 @@ protected: spv::Id createSpvVariable(const glslang::TIntermSymbol*); spv::Id getSampledType(const glslang::TSampler&); spv::Id convertGlslangToSpvType(const glslang::TType& type); + void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset); bool isShaderEntrypoint(const glslang::TIntermAggregate* node); void makeFunctions(const glslang::TIntermSequence&); @@ -93,6 +97,7 @@ protected: void handleFunctionEntry(const glslang::TIntermAggregate* node); void translateArguments(const glslang::TIntermSequence& glslangArguments, std::vector& arguments); spv::Id handleBuiltInFunctionCall(const glslang::TIntermAggregate*); + spv::Id handleTextureCall(spv::Decoration precision, glslang::TOperator, spv::Id typeId, glslang::TSampler, std::vector& idArguments); spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*); spv::Id createBinaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison = true); @@ -100,7 +105,7 @@ protected: spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Id destTypeId, spv::Id operand); spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands); - spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands); + spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id createNoArgOperation(glslang::TOperator op); spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addDecoration(spv::Id id, spv::Decoration dec); @@ -208,9 +213,9 @@ spv::Dim TranslateDimensionality(const glslang::TSampler& sampler) spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type) { switch (type.getQualifier().precision) { - case glslang::EpqLow: return spv::DecorationPrecisionLow; - case glslang::EpqMedium: return spv::DecorationPrecisionMedium; - case glslang::EpqHigh: return spv::DecorationPrecisionHigh; + case glslang::EpqLow: return spv::DecorationRelaxedPrecision; // TODO: Map instead to 16-bit types? + case glslang::EpqMedium: return spv::DecorationRelaxedPrecision; + case glslang::EpqHigh: return spv::NoPrecision; default: return spv::NoPrecision; } @@ -255,12 +260,9 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type) case glslang::EvqBuffer: switch (type.getQualifier().layoutPacking) { case glslang::ElpShared: return spv::DecorationGLSLShared; - case glslang::ElpStd140: return spv::DecorationGLSLStd140; - case glslang::ElpStd430: return spv::DecorationGLSLStd430; case glslang::ElpPacked: return spv::DecorationGLSLPacked; default: - spv::MissingFunctionality("uniform block layout"); - return spv::DecorationGLSLShared; + return (spv::Decoration)spv::BadValue; } case glslang::EvqVaryingIn: case glslang::EvqVaryingOut: @@ -309,7 +311,6 @@ spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn) switch (builtIn) { case glslang::EbvPosition: return spv::BuiltInPosition; case glslang::EbvPointSize: return spv::BuiltInPointSize; - case glslang::EbvClipVertex: return spv::BuiltInClipVertex; case glslang::EbvClipDistance: return spv::BuiltInClipDistance; case glslang::EbvCullDistance: return spv::BuiltInCullDistance; case glslang::EbvVertexId: return spv::BuiltInVertexId; @@ -359,7 +360,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls stdBuiltins = builder.import("GLSL.std.450"); builder.setMemoryModel(spv::AddressingModelLogical, spv::MemoryModelGLSL450); shaderEntry = builder.makeMain(); - builder.addEntryPoint(executionModel, shaderEntry); + builder.addEntryPoint(executionModel, shaderEntry, "main"); // Add the source extensions const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); @@ -374,13 +375,16 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls unsigned int mode; switch (glslangIntermediate->getStage()) { case EShLangVertex: + builder.addCapability(spv::CapabilityShader); break; case EShLangTessControl: + builder.addCapability(spv::CapabilityTessellation); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); break; case EShLangTessEvaluation: + builder.addCapability(spv::CapabilityTessellation); switch (glslangIntermediate->getInputPrimitive()) { case glslang::ElgTriangles: mode = spv::ExecutionModeInputTriangles; break; case glslang::ElgQuads: mode = spv::ExecutionModeInputQuads; break; @@ -397,6 +401,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls break; case EShLangGeometry: + builder.addCapability(spv::CapabilityGeometry); switch (glslangIntermediate->getInputPrimitive()) { case glslang::ElgPoints: mode = spv::ExecutionModeInputPoints; break; case glslang::ElgLines: mode = spv::ExecutionModeInputLines; break; @@ -421,13 +426,17 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls break; case EShLangFragment: + builder.addCapability(spv::CapabilityShader); if (glslangIntermediate->getPixelCenterInteger()) builder.addExecutionMode(shaderEntry, spv::ExecutionModePixelCenterInteger); if (glslangIntermediate->getOriginUpperLeft()) builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginUpperLeft); + else + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginLowerLeft); break; case EShLangCompute: + builder.addCapability(spv::CapabilityShader); break; default: @@ -1051,7 +1060,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt result = createUnaryOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands.front(), node->getType().getBasicType() == glslang::EbtFloat || node->getType().getBasicType() == glslang::EbtDouble); break; default: - result = createMiscOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands); + result = createMiscOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands, node->getBasicType()); break; } } @@ -1311,9 +1320,11 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtSampler: { const glslang::TSampler& sampler = type.getSampler(); - spvType = builder.makeSampler(getSampledType(sampler), TranslateDimensionality(sampler), - sampler.image ? spv::Builder::samplerContentImage : spv::Builder::samplerContentTextureFilter, - sampler.arrayed, sampler.shadow, sampler.ms); + spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms, + sampler.image ? 2 : 1, spv::ImageFormatUnknown); // TODO: translate format, needed for GLSL image ops + // OpenGL "textures" need to be combined with a sampler + if (! sampler.image) + spvType = builder.makeSampledImageType(spvType); } break; case glslang::EbtStruct: @@ -1350,6 +1361,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty structMap[glslangStruct] = spvType; // Name and decorate the non-hidden members + int offset = -1; for (int i = 0; i < (int)glslangStruct->size(); i++) { glslang::TType& glslangType = *(*glslangStruct)[i].type; int member = i; @@ -1368,6 +1380,14 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent); if (glslangType.getQualifier().hasXfbOffset()) builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangType.getQualifier().layoutXfbOffset); + else { + // figure out what to do with offset, which is accumulating + int nextOffset; + updateMemberOffset(type, glslangType, offset, nextOffset); + if (offset >= 0) + builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangType.getQualifier().layoutOffset); + offset = nextOffset; + } // built-in variable decorations spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangType.getQualifier().builtIn); @@ -1383,7 +1403,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream); if (glslangIntermediate->getXfbMode()) { if (type.getQualifier().hasXfbStride()) - builder.addDecoration(spvType, spv::DecorationStride, type.getQualifier().layoutXfbStride); + builder.addDecoration(spvType, spv::DecorationXfbStride, type.getQualifier().layoutXfbStride); if (type.getQualifier().hasXfbBuffer()) builder.addDecoration(spvType, spv::DecorationXfbBuffer, type.getQualifier().layoutXfbBuffer); } @@ -1415,6 +1435,49 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty return spvType; } +// Given a member type of a struct, realign the current offset for it, and compute +// the next (not yet aligned) offset for the next member, which will get aligned +// on the next call. +// 'currentOffset' should be passed in already initialized, ready to modify, and reflecting +// the migration of data from nextOffset -> currentOffset. It should be -1 on the first call. +// -1 means a non-forced member offset (no decoration needed). +void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset) +{ + // this will get a positive value when deemed necessary + nextOffset = -1; + + bool forceOffset = structType.getQualifier().layoutPacking == glslang::ElpStd140 || + structType.getQualifier().layoutPacking == glslang::ElpStd430; + + // override anything in currentOffset with user-set offset + if (memberType.getQualifier().hasOffset()) + currentOffset = memberType.getQualifier().layoutOffset; + + // It could be that current linker usage in glslang updated all the layoutOffset, + // in which case the following code does not matter. But, that's not quite right + // once cross-compilation unit GLSL validation is done, as the original user + // settings are needed in layoutOffset, and then the following will come into play. + + if (! forceOffset) { + if (! memberType.getQualifier().hasOffset()) + currentOffset = -1; + + return; + } + + // Getting this far means we are forcing offsets + if (currentOffset < 0) + currentOffset = 0; + + // Now, currentOffset is valid (either 0, or from a previous nextOffset), + // but possibly not yet correctly aligned. + + int memberSize; + int memberAlignment = glslangIntermediate->getBaseAlignment(memberType, memberSize, memberType.getQualifier().layoutPacking == glslang::ElpStd140); + glslang::RoundToPow2(currentOffset, memberAlignment); + nextOffset = currentOffset + memberSize; +} + bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate* node) { return node->getName() == "main("; @@ -1519,11 +1582,6 @@ spv::Id TGlslangToSpvTraverser::handleBuiltInFunctionCall(const glslang::TInterm { std::vector arguments; translateArguments(node->getSequence(), arguments); - - std::vector argTypes; - for (int a = 0; a < (int)arguments.size(); ++a) - argTypes.push_back(builder.getTypeId(arguments[a])); - spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); if (node->getName() == "ftransform(") { @@ -1544,22 +1602,22 @@ spv::Id TGlslangToSpvTraverser::handleBuiltInFunctionCall(const glslang::TInterm if (node->getName().find("textureSize", 0) != std::string::npos) { if (arguments.size() > 1) { params.lod = arguments[1]; - return builder.createTextureQueryCall(spv::OpTextureQuerySizeLod, params); + return builder.createTextureQueryCall(spv::OpImageQuerySizeLod, params); } else - return builder.createTextureQueryCall(spv::OpTextureQuerySize, params); + return builder.createTextureQueryCall(spv::OpImageQuerySize, params); } // special case the number of samples query if (node->getName().find("textureSamples", 0) != std::string::npos) - return builder.createTextureQueryCall(spv::OpTextureQuerySamples, params); + return builder.createTextureQueryCall(spv::OpImageQuerySamples, params); // special case the other queries if (node->getName().find("Query", 0) != std::string::npos) { if (node->getName().find("Levels", 0) != std::string::npos) - return builder.createTextureQueryCall(spv::OpTextureQueryLevels, params); + return builder.createTextureQueryCall(spv::OpImageQueryLevels, params); else if (node->getName().find("Lod", 0) != std::string::npos) { params.coords = arguments[1]; - return builder.createTextureQueryCall(spv::OpTextureQueryLod, params); + return builder.createTextureQueryCall(spv::OpImageQueryLod, params); } else spv::MissingFunctionality("glslang texture query"); } @@ -1599,6 +1657,16 @@ spv::Id TGlslangToSpvTraverser::handleBuiltInFunctionCall(const glslang::TInterm int extraArgs = 0; if (cubeCompare) params.Dref = arguments[2]; + else if (sampler.shadow) { + std::vector indexes; + int comp; + if (proj) + comp = 3; + else + comp = builder.getNumComponents(params.coords) - 1; + indexes.push_back(comp); + params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes); + } if (lod) { params.lod = arguments[2]; ++extraArgs; @@ -1835,7 +1903,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv break; case glslang::EOpLogicalXor: needMatchingVectors = false; - binOp = spv::OpLogicalXor; + binOp = spv::OpLogicalNotEqual; break; case glslang::EOpLessThan: @@ -1974,107 +2042,109 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: case glslang::EOpLogicalNot: case glslang::EOpVectorLogicalNot: + unaryOp = spv::OpLogicalNot; + break; case glslang::EOpBitwiseNot: unaryOp = spv::OpNot; break; - + case glslang::EOpDeterminant: - libCall = GLSL_STD_450::Determinant; + libCall = spv::GLSLstd450Determinant; break; case glslang::EOpMatrixInverse: - libCall = GLSL_STD_450::MatrixInverse; + libCall = spv::GLSLstd450MatrixInverse; break; case glslang::EOpTranspose: unaryOp = spv::OpTranspose; break; case glslang::EOpRadians: - libCall = GLSL_STD_450::Radians; + libCall = spv::GLSLstd450Radians; break; case glslang::EOpDegrees: - libCall = GLSL_STD_450::Degrees; + libCall = spv::GLSLstd450Degrees; break; case glslang::EOpSin: - libCall = GLSL_STD_450::Sin; + libCall = spv::GLSLstd450Sin; break; case glslang::EOpCos: - libCall = GLSL_STD_450::Cos; + libCall = spv::GLSLstd450Cos; break; case glslang::EOpTan: - libCall = GLSL_STD_450::Tan; + libCall = spv::GLSLstd450Tan; break; case glslang::EOpAcos: - libCall = GLSL_STD_450::Acos; + libCall = spv::GLSLstd450Acos; break; case glslang::EOpAsin: - libCall = GLSL_STD_450::Asin; + libCall = spv::GLSLstd450Asin; break; case glslang::EOpAtan: - libCall = GLSL_STD_450::Atan; + libCall = spv::GLSLstd450Atan; break; case glslang::EOpAcosh: - libCall = GLSL_STD_450::Acosh; + libCall = spv::GLSLstd450Acosh; break; case glslang::EOpAsinh: - libCall = GLSL_STD_450::Asinh; + libCall = spv::GLSLstd450Asinh; break; case glslang::EOpAtanh: - libCall = GLSL_STD_450::Atanh; + libCall = spv::GLSLstd450Atanh; break; case glslang::EOpTanh: - libCall = GLSL_STD_450::Tanh; + libCall = spv::GLSLstd450Tanh; break; case glslang::EOpCosh: - libCall = GLSL_STD_450::Cosh; + libCall = spv::GLSLstd450Cosh; break; case glslang::EOpSinh: - libCall = GLSL_STD_450::Sinh; + libCall = spv::GLSLstd450Sinh; break; case glslang::EOpLength: - libCall = GLSL_STD_450::Length; + libCall = spv::GLSLstd450Length; break; case glslang::EOpNormalize: - libCall = GLSL_STD_450::Normalize; + libCall = spv::GLSLstd450Normalize; break; case glslang::EOpExp: - libCall = GLSL_STD_450::Exp; + libCall = spv::GLSLstd450Exp; break; case glslang::EOpLog: - libCall = GLSL_STD_450::Log; + libCall = spv::GLSLstd450Log; break; case glslang::EOpExp2: - libCall = GLSL_STD_450::Exp2; + libCall = spv::GLSLstd450Exp2; break; case glslang::EOpLog2: - libCall = GLSL_STD_450::Log2; + libCall = spv::GLSLstd450Log2; break; case glslang::EOpSqrt: - libCall = GLSL_STD_450::Sqrt; + libCall = spv::GLSLstd450Sqrt; break; case glslang::EOpInverseSqrt: - libCall = GLSL_STD_450::InverseSqrt; + libCall = spv::GLSLstd450InverseSqrt; break; case glslang::EOpFloor: - libCall = GLSL_STD_450::Floor; + libCall = spv::GLSLstd450Floor; break; case glslang::EOpTrunc: - libCall = GLSL_STD_450::Trunc; + libCall = spv::GLSLstd450Trunc; break; case glslang::EOpRound: - libCall = GLSL_STD_450::Round; + libCall = spv::GLSLstd450Round; break; case glslang::EOpRoundEven: - libCall = GLSL_STD_450::RoundEven; + libCall = spv::GLSLstd450RoundEven; break; case glslang::EOpCeil: - libCall = GLSL_STD_450::Ceil; + libCall = spv::GLSLstd450Ceil; break; case glslang::EOpFract: - libCall = GLSL_STD_450::Fract; + libCall = spv::GLSLstd450Fract; break; case glslang::EOpIsNan: @@ -2084,35 +2154,23 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: unaryOp = spv::OpIsInf; break; - case glslang::EOpFloatBitsToInt: - libCall = GLSL_STD_450::FloatBitsToInt; - break; - case glslang::EOpFloatBitsToUint: - libCall = GLSL_STD_450::FloatBitsToUint; - break; - case glslang::EOpIntBitsToFloat: - libCall = GLSL_STD_450::IntBitsToFloat; - break; - case glslang::EOpUintBitsToFloat: - libCall = GLSL_STD_450::UintBitsToFloat; - break; case glslang::EOpPackSnorm2x16: - libCall = GLSL_STD_450::PackSnorm2x16; + libCall = spv::GLSLstd450PackSnorm2x16; break; case glslang::EOpUnpackSnorm2x16: - libCall = GLSL_STD_450::UnpackSnorm2x16; + libCall = spv::GLSLstd450UnpackSnorm2x16; break; case glslang::EOpPackUnorm2x16: - libCall = GLSL_STD_450::PackUnorm2x16; + libCall = spv::GLSLstd450PackUnorm2x16; break; case glslang::EOpUnpackUnorm2x16: - libCall = GLSL_STD_450::UnpackUnorm2x16; + libCall = spv::GLSLstd450UnpackUnorm2x16; break; case glslang::EOpPackHalf2x16: - libCall = GLSL_STD_450::PackHalf2x16; + libCall = spv::GLSLstd450PackHalf2x16; break; case glslang::EOpUnpackHalf2x16: - libCall = GLSL_STD_450::UnpackHalf2x16; + libCall = spv::GLSLstd450UnpackHalf2x16; break; case glslang::EOpDPdx: @@ -2151,10 +2209,16 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: break; case glslang::EOpAbs: - libCall = GLSL_STD_450::Abs; + if (isFloat) + libCall = spv::GLSLstd450FAbs; + else + libCall = spv::GLSLstd450SAbs; break; case glslang::EOpSign: - libCall = GLSL_STD_450::Sign; + if (isFloat) + libCall = spv::GLSLstd450FSign; + else + libCall = spv::GLSLstd450SSign; break; default: @@ -2291,10 +2355,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv opCode = spv::OpAtomicIAdd; break; case glslang::EOpAtomicMin: - opCode = spv::OpAtomicIMin; + opCode = spv::OpAtomicSMin; break; case glslang::EOpAtomicMax: - opCode = spv::OpAtomicIMax; + opCode = spv::OpAtomicSMax; break; case glslang::EOpAtomicAnd: opCode = spv::OpAtomicAnd; @@ -2331,8 +2395,8 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv std::vector spvAtomicOperands; // hold the spv operands auto opIt = operands.begin(); // walk the glslang operands spvAtomicOperands.push_back(*(opIt++)); - spvAtomicOperands.push_back(spv::ExecutionScopeDevice); // TBD: what is the correct scope? - spvAtomicOperands.push_back( spv::MemorySemanticsMaskNone); // TBD: what are the correct memory semantics? + spvAtomicOperands.push_back(builder.makeUintConstant(spv::ScopeDevice)); // TBD: what is the correct scope? + spvAtomicOperands.push_back(builder.makeUintConstant(spv::MemorySemanticsMaskNone)); // TBD: what are the correct memory semantics? // Add the rest of the operands, skipping the first one, which was dealt with above. // For some ops, there are none, for some 1, for compare-exchange, 2. @@ -2342,58 +2406,76 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv return builder.createOp(opCode, typeId, spvAtomicOperands); } -spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands) +spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { + bool isUnsigned = typeProxy == glslang::EbtUint; + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; + spv::Op opCode = spv::OpNop; int libCall = -1; switch (op) { case glslang::EOpMin: - libCall = GLSL_STD_450::Min; + if (isFloat) + libCall = spv::GLSLstd450FMin; + else if (isUnsigned) + libCall = spv::GLSLstd450UMin; + else + libCall = spv::GLSLstd450SMin; break; case glslang::EOpModf: - libCall = GLSL_STD_450::Modf; + libCall = spv::GLSLstd450Modf; break; case glslang::EOpMax: - libCall = GLSL_STD_450::Max; + if (isFloat) + libCall = spv::GLSLstd450FMax; + else if (isUnsigned) + libCall = spv::GLSLstd450UMax; + else + libCall = spv::GLSLstd450SMax; break; case glslang::EOpPow: - libCall = GLSL_STD_450::Pow; + libCall = spv::GLSLstd450Pow; break; case glslang::EOpDot: opCode = spv::OpDot; break; case glslang::EOpAtan: - libCall = GLSL_STD_450::Atan2; + libCall = spv::GLSLstd450Atan2; break; case glslang::EOpClamp: - libCall = GLSL_STD_450::Clamp; + if (isFloat) + libCall = spv::GLSLstd450FClamp; + else if (isUnsigned) + libCall = spv::GLSLstd450UClamp; + else + libCall = spv::GLSLstd450SClamp; break; case glslang::EOpMix: - libCall = GLSL_STD_450::Mix; + libCall = spv::GLSLstd450Mix; break; case glslang::EOpStep: - libCall = GLSL_STD_450::Step; + libCall = spv::GLSLstd450Step; break; case glslang::EOpSmoothStep: - libCall = GLSL_STD_450::SmoothStep; + libCall = spv::GLSLstd450SmoothStep; break; case glslang::EOpDistance: - libCall = GLSL_STD_450::Distance; + libCall = spv::GLSLstd450Distance; break; case glslang::EOpCross: - libCall = GLSL_STD_450::Cross; + libCall = spv::GLSLstd450Cross; break; case glslang::EOpFaceForward: - libCall = GLSL_STD_450::FaceForward; + libCall = spv::GLSLstd450FaceForward; break; case glslang::EOpReflect: - libCall = GLSL_STD_450::Reflect; + libCall = spv::GLSLstd450Reflect; break; case glslang::EOpRefract: - libCall = GLSL_STD_450::Refract; + libCall = spv::GLSLstd450Refract; break; default: @@ -2444,26 +2526,26 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op) builder.createNoResultOp(spv::OpEndPrimitive); return 0; case glslang::EOpBarrier: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsAllMemory); - builder.createControlBarrier(spv::ExecutionScopeDevice); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory); + builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone); return 0; case glslang::EOpMemoryBarrier: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsAllMemory); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory); return 0; case glslang::EOpMemoryBarrierAtomicCounter: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask); return 0; case glslang::EOpMemoryBarrierBuffer: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsUniformMemoryMask); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsUniformMemoryMask); return 0; case glslang::EOpMemoryBarrierImage: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsImageMemoryMask); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsImageMemoryMask); return 0; case glslang::EOpMemoryBarrierShared: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsWorkgroupLocalMemoryMask); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupLocalMemoryMask); return 0; case glslang::EOpGroupMemoryBarrier: - builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsWorkgroupGlobalMemoryMask); + builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupGlobalMemoryMask); return 0; default: spv::MissingFunctionality("operation with no arguments"); @@ -2495,7 +2577,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, spv::DecorationComponent, symbol->getQualifier().layoutComponent); if (glslangIntermediate->getXfbMode()) { if (symbol->getQualifier().hasXfbStride()) - builder.addDecoration(id, spv::DecorationStride, symbol->getQualifier().layoutXfbStride); + builder.addDecoration(id, spv::DecorationXfbStride, symbol->getQualifier().layoutXfbStride); if (symbol->getQualifier().hasXfbBuffer()) builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer); if (symbol->getQualifier().hasXfbOffset()) @@ -2512,14 +2594,14 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, spv::DecorationBinding, symbol->getQualifier().layoutBinding); if (glslangIntermediate->getXfbMode()) { if (symbol->getQualifier().hasXfbStride()) - builder.addDecoration(id, spv::DecorationStride, symbol->getQualifier().layoutXfbStride); + builder.addDecoration(id, spv::DecorationXfbStride, symbol->getQualifier().layoutXfbStride); if (symbol->getQualifier().hasXfbBuffer()) builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer); } // built-in variable decorations spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn); - if ((unsigned int)builtIn != spv::BadValue) + if (builtIn != spv::BadValue) builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); if (linkageOnly) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp old mode 100644 new mode 100755 index 3cec0e50..7349c16b --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -82,6 +82,8 @@ namespace spv { case spv::OpTypeFloat: // fall through... case spv::OpTypePointer: return range_t(2, 3); case spv::OpTypeInt: return range_t(2, 4); + // TODO: case spv::OpTypeImage: + // TODO: case spv::OpTypeSampledImage: case spv::OpTypeSampler: return range_t(3, 8); case spv::OpTypeVector: // fall through case spv::OpTypeMatrix: // ... @@ -164,8 +166,8 @@ namespace spv { case spv::OpTypeFloat: case spv::OpTypeVector: case spv::OpTypeMatrix: + case spv::OpTypeImage: case spv::OpTypeSampler: - case spv::OpTypeFilter: case spv::OpTypeArray: case spv::OpTypeRuntimeArray: case spv::OpTypeStruct: @@ -184,12 +186,11 @@ namespace spv { bool spirvbin_t::isConstOp(spv::Op opCode) const { switch (opCode) { - case spv::OpConstantNullObject: error("unimplemented constant type"); + case spv::OpConstantNull: error("unimplemented constant type"); case spv::OpConstantSampler: error("unimplemented constant type"); case spv::OpConstantTrue: case spv::OpConstantFalse: - case spv::OpConstantNullPointer: case spv::OpConstantComposite: case spv::OpConstant: return true; default: return false; @@ -486,7 +487,7 @@ namespace spv { case spv::OperandFunction: case spv::OperandMemorySemantics: case spv::OperandMemoryAccess: - case spv::OperandExecutionScope: + case spv::OperandScope: case spv::OperandGroupOperation: case spv::OperandKernelEnqueueFlags: case spv::OperandKernelProfilingInfo: @@ -610,19 +611,14 @@ namespace spv { fnId = asId(start + 2); break; - case spv::OpTextureSample: - case spv::OpTextureSampleDref: - case spv::OpTextureSampleLod: - case spv::OpTextureSampleProj: - case spv::OpTextureSampleGrad: - case spv::OpTextureSampleOffset: - case spv::OpTextureSampleProjLod: - case spv::OpTextureSampleProjGrad: - case spv::OpTextureSampleLodOffset: - case spv::OpTextureSampleProjOffset: - case spv::OpTextureSampleGradOffset: - case spv::OpTextureSampleProjLodOffset: - case spv::OpTextureSampleProjGradOffset: + case spv::OpImageSampleImplicitLod: + case spv::OpImageSampleExplicitLod: + case spv::OpImageSampleDrefImplicitLod: + case spv::OpImageSampleDrefExplicitLod: + case spv::OpImageSampleProjImplicitLod: + case spv::OpImageSampleProjExplicitLod: + case spv::OpImageSampleProjDrefImplicitLod: + case spv::OpImageSampleProjDrefExplicitLod: case spv::OpDot: case spv::OpCompositeExtract: case spv::OpCompositeInsert: @@ -668,7 +664,7 @@ namespace spv { process( [&](spv::Op opCode, unsigned start) { // Add inputs and uniforms to the map - if (((opCode == spv::OpVariable && asWordCount(start) == 4) || (opCode == spv::OpVariableArray)) && + if ((opCode == spv::OpVariable && asWordCount(start) == 4) && (spv[start+3] == spv::StorageClassUniform || spv[start+3] == spv::StorageClassUniformConstant || spv[start+3] == spv::StorageClassInput)) @@ -695,7 +691,7 @@ namespace spv { process( [&](spv::Op opCode, unsigned start) { // Add inputs and uniforms to the map - if (((opCode == spv::OpVariable && asWordCount(start) == 4) || (opCode == spv::OpVariableArray)) && + if ((opCode == spv::OpVariable && asWordCount(start) == 4) && (spv[start+3] == spv::StorageClassOutput)) fnLocalVars.insert(asId(start+2)); @@ -729,8 +725,7 @@ namespace spv { const int wordCount = asWordCount(start); // Add local variables to the map - if ((opCode == spv::OpVariable && spv[start+3] == spv::StorageClassFunction && asWordCount(start) == 4) || - (opCode == spv::OpVariableArray && spv[start+3] == spv::StorageClassFunction)) + if ((opCode == spv::OpVariable && spv[start+3] == spv::StorageClassFunction && asWordCount(start) == 4)) fnLocalVars.insert(asId(start+2)); // Ignore process vars referenced via access chain @@ -1008,14 +1003,14 @@ namespace spv { return 6 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1); case spv::OpTypeMatrix: return 30 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1); - case spv::OpTypeSampler: + case spv::OpTypeImage: return 120 + hashType(typePos(spv[typeStart+2])) + spv[typeStart+3] + // dimensionality - spv[typeStart+4] * 8 * 16 + // content + spv[typeStart+4] * 8 * 16 + // depth spv[typeStart+5] * 4 * 16 + // arrayed - spv[typeStart+6] * 2 * 16 + // compare - spv[typeStart+7] * 1 * 16; // multisampled - case spv::OpTypeFilter: + spv[typeStart+6] * 2 * 16 + // multisampled + spv[typeStart+7] * 1 * 16; // format + case spv::OpTypeSampler: return 500; case spv::OpTypeArray: return 501 + hashType(typePos(spv[typeStart+2])) * spv[typeStart+3]; @@ -1045,12 +1040,11 @@ namespace spv { case spv::OpTypeQueue: return 300003; case spv::OpTypePipe: return 300004; - case spv::OpConstantNullObject: return 300005; + case spv::OpConstantNull: return 300005; case spv::OpConstantSampler: return 300006; case spv::OpConstantTrue: return 300007; case spv::OpConstantFalse: return 300008; - case spv::OpConstantNullPointer: return 300009; case spv::OpConstantComposite: { std::uint32_t hash = 300011 + hashType(typePos(spv[typeStart+1])); diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h old mode 100644 new mode 100755 index 0dd8538b..37f995b6 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -101,7 +101,7 @@ public: #include #include -#include "spirv.h" +#include "spirv.hpp" #include "spvIR.h" namespace spv { diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp old mode 100644 new mode 100755 index 8d6b4e84..8401fcf6 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -295,31 +295,54 @@ Id Builder::makeFunctionType(Id returnType, std::vector& paramTypes) return type->getResultId(); } -Id Builder::makeSampler(Id sampledType, Dim dim, samplerContent content, bool arrayed, bool shadow, bool ms) +Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format) { // try to find it Instruction* type; - for (int t = 0; t < (int)groupedTypes[OpTypeSampler].size(); ++t) { - type = groupedTypes[OpTypeSampler][t]; + for (int t = 0; t < (int)groupedTypes[OpTypeImage].size(); ++t) { + type = groupedTypes[OpTypeImage][t]; if (type->getIdOperand(0) == sampledType && type->getImmediateOperand(1) == (unsigned int)dim && - type->getImmediateOperand(2) == (unsigned int)content && + type->getImmediateOperand(2) == ( depth ? 1u : 0u) && type->getImmediateOperand(3) == (arrayed ? 1u : 0u) && - type->getImmediateOperand(4) == ( shadow ? 1u : 0u) && - type->getImmediateOperand(5) == ( ms ? 1u : 0u)) + type->getImmediateOperand(4) == ( ms ? 1u : 0u) && + type->getImmediateOperand(5) == sampled && + type->getImmediateOperand(6) == (unsigned int)format) return type->getResultId(); } // not found, make it - type = new Instruction(getUniqueId(), NoType, OpTypeSampler); + type = new Instruction(getUniqueId(), NoType, OpTypeImage); type->addIdOperand(sampledType); type->addImmediateOperand( dim); - type->addImmediateOperand(content); + type->addImmediateOperand( depth ? 1 : 0); type->addImmediateOperand(arrayed ? 1 : 0); - type->addImmediateOperand( shadow ? 1 : 0); type->addImmediateOperand( ms ? 1 : 0); + type->addImmediateOperand(sampled); + type->addImmediateOperand((unsigned int)format); - groupedTypes[OpTypeSampler].push_back(type); + groupedTypes[OpTypeImage].push_back(type); + constantsTypesGlobals.push_back(type); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeSampledImageType(Id imageType) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedTypes[OpTypeSampledImage].size(); ++t) { + type = groupedTypes[OpTypeSampledImage][t]; + if (type->getIdOperand(0) == imageType) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), NoType, OpTypeSampledImage); + type->addIdOperand(imageType); + + groupedTypes[OpTypeSampledImage].push_back(type); constantsTypesGlobals.push_back(type); module.mapInstruction(type); @@ -606,11 +629,12 @@ Id Builder::makeCompositeConstant(Id typeId, std::vector& members) return c->getResultId(); } -void Builder::addEntryPoint(ExecutionModel model, Function* function) +void Builder::addEntryPoint(ExecutionModel model, Function* function, const char* name) { Instruction* entryPoint = new Instruction(OpEntryPoint); entryPoint->addImmediateOperand(model); entryPoint->addIdOperand(function->getId()); + entryPoint->addStringOperand(name); entryPoints.push_back(entryPoint); } @@ -945,18 +969,20 @@ void Builder::createNoResultOp(Op opCode, Id operand) buildPoint->addInstruction(op); } -void Builder::createControlBarrier(unsigned executionScope) +void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask semantics) { Instruction* op = new Instruction(OpControlBarrier); - op->addImmediateOperand(executionScope); + op->addImmediateOperand(makeUintConstant(execution)); + op->addImmediateOperand(makeUintConstant(memory)); + op->addImmediateOperand(makeUintConstant(semantics)); buildPoint->addInstruction(op); } void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemantics) { Instruction* op = new Instruction(OpMemoryBarrier); - op->addImmediateOperand(executionScope); - op->addImmediateOperand(memorySemantics); + op->addImmediateOperand(makeUintConstant(executionScope)); + op->addImmediateOperand(makeUintConstant(memorySemantics)); buildPoint->addInstruction(op); } @@ -991,7 +1017,7 @@ Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3) return op->getResultId(); } -Id Builder::createOp(Op opCode, Id typeId, std::vector& operands) +Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) { Instruction* op = new Instruction(getUniqueId(), typeId, opCode); for (auto operand : operands) @@ -1107,64 +1133,95 @@ Id Builder::createBuiltinCall(Decoration /*precision*/, Id resultType, Id builti // Create the correct instruction based on the inputs, and make the call. Id Builder::createTextureCall(Decoration precision, Id resultType, bool proj, const TextureParameters& parameters) { - static const int maxTextureArgs = 5; + static const int maxTextureArgs = 10; Id texArgs[maxTextureArgs] = {}; // - // Set up the arguments + // Set up the fixed arguments // - int numArgs = 0; + bool xplicit = false; texArgs[numArgs++] = parameters.sampler; texArgs[numArgs++] = parameters.coords; - - if (parameters.gradX) { - texArgs[numArgs++] = parameters.gradX; - texArgs[numArgs++] = parameters.gradY; - } - if (parameters.lod) - texArgs[numArgs++] = parameters.lod; - if (parameters.offset) - texArgs[numArgs++] = parameters.offset; - if (parameters.bias) - texArgs[numArgs++] = parameters.bias; if (parameters.Dref) texArgs[numArgs++] = parameters.Dref; + // + // Set up the optional arguments + // + int optArgNum = numArgs; // track which operand, if it exists, is the mask of optional arguments + ++numArgs; // speculatively make room for the mask operand + ImageOperandsMask mask = ImageOperandsMaskNone; // the mask operand + if (parameters.bias) { + mask = (ImageOperandsMask)(mask | ImageOperandsBiasMask); + texArgs[numArgs++] = parameters.bias; + } + if (parameters.lod) { + mask = (ImageOperandsMask)(mask | ImageOperandsLodMask); + texArgs[numArgs++] = parameters.lod; + xplicit = true; + } + if (parameters.gradX) { + mask = (ImageOperandsMask)(mask | ImageOperandsGradMask); + texArgs[numArgs++] = parameters.gradX; + texArgs[numArgs++] = parameters.gradY; + xplicit = true; + } + if (parameters.offset) { + mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask); + texArgs[numArgs++] = parameters.offset; + } + // TBD: if Offset is constant, use ImageOperandsConstOffsetMask + if (parameters.offsets) { + mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask); + texArgs[numArgs++] = parameters.offsets; + } + if (parameters.sample) { + mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask); + texArgs[numArgs++] = parameters.sample; + } + if (mask == ImageOperandsMaskNone) + --numArgs; // undo speculative reservation for the mask argument + else + texArgs[optArgNum] = mask; + // // Set up the instruction // - Op opCode; - if (proj && parameters.gradX && parameters.offset) - opCode = OpTextureSampleProjGradOffset; - else if (proj && parameters.lod && parameters.offset) - opCode = OpTextureSampleProjLodOffset; - else if (parameters.gradX && parameters.offset) - opCode = OpTextureSampleGradOffset; - else if (proj && parameters.offset) - opCode = OpTextureSampleProjOffset; - else if (parameters.lod && parameters.offset) - opCode = OpTextureSampleLodOffset; - else if (proj && parameters.gradX) - opCode = OpTextureSampleProjGrad; - else if (proj && parameters.lod) - opCode = OpTextureSampleProjLod; - else if (parameters.offset) - opCode = OpTextureSampleOffset; - else if (parameters.gradX) - opCode = OpTextureSampleGrad; - else if (proj) - opCode = OpTextureSampleProj; - else if (parameters.lod) - opCode = OpTextureSampleLod; - else if (parameters.Dref) - opCode = OpTextureSampleDref; - else - opCode = OpTextureSample; + opCode = OpImageSampleImplicitLod; + if (xplicit) { + if (parameters.Dref) { + if (proj) + opCode = OpImageSampleProjDrefExplicitLod; + else + opCode = OpImageSampleDrefExplicitLod; + } else { + if (proj) + opCode = OpImageSampleProjExplicitLod; + else + opCode = OpImageSampleExplicitLod; + } + } else { + if (parameters.Dref) { + if (proj) + opCode = OpImageSampleProjDrefImplicitLod; + else + opCode = OpImageSampleDrefImplicitLod; + } else { + if (proj) + opCode = OpImageSampleProjImplicitLod; + else + opCode = OpImageSampleImplicitLod; + } + } Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode); - for (int op = 0; op < numArgs; ++op) + for (int op = 0; op < optArgNum; ++op) + textureInst->addIdOperand(texArgs[op]); + if (optArgNum < numArgs) + textureInst->addImmediateOperand(texArgs[optArgNum]); + for (int op = optArgNum + 1; op < numArgs; ++op) textureInst->addIdOperand(texArgs[op]); setPrecision(textureInst->getResultId(), precision); buildPoint->addInstruction(textureInst); @@ -1176,13 +1233,13 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool proj, co Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameters) { // Figure out the result type - Id resultType = NoType; + Id resultType = 0; switch (opCode) { - case OpTextureQuerySize: - case OpTextureQuerySizeLod: + case OpImageQuerySize: + case OpImageQuerySizeLod: { int numComponents; - switch (getDimensionality(parameters.sampler)) { + switch (getTypeDimensionality(getImageType(parameters.sampler))) { case Dim1D: case DimBuffer: numComponents = 1; @@ -1199,7 +1256,7 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter MissingFunctionality("texture query dimensionality"); break; } - if (isArrayedSampler(parameters.sampler)) + if (isArrayedImageType(getImageType(parameters.sampler))) ++numComponents; if (numComponents == 1) resultType = makeIntType(32); @@ -1208,11 +1265,11 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter break; } - case OpTextureQueryLod: + case OpImageQueryLod: resultType = makeVectorType(makeFloatType(32), 2); break; - case OpTextureQueryLevels: - case OpTextureQuerySamples: + case OpImageQueryLevels: + case OpImageQuerySamples: resultType = makeIntType(32); break; default: @@ -2040,7 +2097,16 @@ void Builder::dump(std::vector& out) const extInst.addStringOperand(extensions[e]); extInst.dump(out); } + // TBD: OpExtension ... + + // Capabilities + for (auto cap : capabilities) { + Instruction capInst(0, 0, OpCapability); + capInst.addImmediateOperand(cap); + capInst.dump(out); + } + dumpInstructions(out, imports); Instruction memInst(0, 0, OpMemoryModel); memInst.addImmediateOperand(addressModel); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h old mode 100644 new mode 100755 index e8711e34..14515813 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -48,7 +48,7 @@ #ifndef SpvBuilder_H #define SpvBuilder_H -#include "spirv.h" +#include "spirv.hpp" #include "spvIR.h" #include @@ -77,6 +77,8 @@ public: memoryModel = mem; } + void addCapability(spv::Capability cap) { capabilities.push_back(cap); } + // To get a new for anything needing a new one. Id getUniqueId() { return ++uniqueId; } @@ -101,12 +103,8 @@ public: Id makeMatrixType(Id component, int cols, int rows); Id makeArrayType(Id element, unsigned size); Id makeFunctionType(Id returnType, std::vector& paramTypes); - enum samplerContent { - samplerContentTexture, - samplerContentImage, - samplerContentTextureFilter - }; - Id makeSampler(Id sampledType, Dim, samplerContent, bool arrayed, bool shadow, bool ms); + Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format); + Id makeSampledImageType(Id imageType); // For querying about types. Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } @@ -133,7 +131,9 @@ public: bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; } bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; } bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); } + bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; } bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; } + bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; } bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == OpConstant; } unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); } @@ -151,15 +151,20 @@ public: } int getNumRows(Id resultId) const { return getTypeNumRows(getTypeId(resultId)); } - Dim getDimensionality(Id resultId) const + Dim getTypeDimensionality(Id typeId) const { - assert(isSamplerType(getTypeId(resultId))); - return (Dim)module.getInstruction(getTypeId(resultId))->getImmediateOperand(1); + assert(isImageType(typeId)); + return (Dim)module.getInstruction(typeId)->getImmediateOperand(1); } - bool isArrayedSampler(Id resultId) const + Id getImageType(Id resultId) const { - assert(isSamplerType(getTypeId(resultId))); - return module.getInstruction(getTypeId(resultId))->getImmediateOperand(3) != 0; + assert(isSampledImageType(getTypeId(resultId))); + return module.getInstruction(getTypeId(resultId))->getIdOperand(0); + } + bool isArrayedImageType(Id typeId) const + { + assert(isImageType(typeId)); + return module.getInstruction(typeId)->getImmediateOperand(3) != 0; } // For making new constants (will return old constant if the requested one was already made). @@ -174,7 +179,7 @@ public: Id makeCompositeConstant(Id type, std::vector& comps); // Methods for adding information outside the CFG. - void addEntryPoint(ExecutionModel, Function*); + void addEntryPoint(ExecutionModel, Function*, const char* name); void addExecutionMode(Function*, ExecutionMode mode, int value = -1); void addName(Id, const char* name); void addMemberName(Id, int member, const char* name); @@ -233,12 +238,12 @@ public: void createNoResultOp(Op); void createNoResultOp(Op, Id operand); - void createControlBarrier(unsigned executionScope); + void createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask); void createMemoryBarrier(unsigned executionScope, unsigned memorySemantics); Id createUnaryOp(Op, Id typeId, Id operand); Id createBinOp(Op, Id typeId, Id operand1, Id operand2); Id createTriOp(Op, Id typeId, Id operand1, Id operand2, Id operand3); - Id createOp(Op, Id typeId, std::vector& operands); + Id createOp(Op, Id typeId, const std::vector& operands); Id createFunctionCall(spv::Function*, std::vector&); // Take an rvalue (source) and a set of channels to extract from it to @@ -283,8 +288,10 @@ public: Id lod; Id Dref; Id offset; + Id offsets; Id gradX; Id gradY; + Id sample; }; // Select the correct texture operation based on all inputs, and emit the correct instruction @@ -497,6 +504,7 @@ protected: std::vector extensions; AddressingModel addressModel; MemoryModel memoryModel; + std::vector capabilities; int builderNumber; Module module; Block* buildPoint; diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp old mode 100644 new mode 100755 index adbe1acf..eeadfc9a --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -1,5 +1,5 @@ // -//Copyright (C) 2014 LunarG, Inc. +//Copyright (C) 2014-2015 LunarG, Inc. // //All rights reserved. // @@ -21,16 +21,16 @@ // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTAstreamITY AND FITNESS +//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -//CAUSED AND ON ANY THEORY OF LIAstreamITY, WHETHER IN CONTRACT, STRICT -//LIAstreamITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -//POSSIstreamITY OF SUCH DAMAGE. +//POSSIBILITY OF SUCH DAMAGE. // // Author: John Kessenich, LunarG @@ -41,25 +41,34 @@ // #include +#include #include #include #include #include - -#include "GLSL450Lib.h" -extern const char* GlslStd450DebugNames[GLSL_STD_450::Count]; +#include #include "disassemble.h" #include "doc.h" namespace spv { +#include "GLSL.std.450.h" + +const char* GlslStd450DebugNames[spv::GLSLstd450Count]; + void Kill(std::ostream& out, const char* message) { out << std::endl << "Disassembly failed: " << message << std::endl; exit(1); } +// used to identify the extended instruction library imported when printing +enum ExtInstSet { + GLSL450Inst, + OpenCLExtInst, +}; + // Container class for a single instance of a SPIR-V stream, with methods for disassembly. class SpirvStream { public: @@ -70,9 +79,8 @@ public: void processInstructions(); protected: - SpirvStream(SpirvStream&); - SpirvStream& operator=(SpirvStream&); - + SpirvStream(const SpirvStream&); + SpirvStream& operator=(const SpirvStream&); Op getOpCode(int id) const { return idInstruction[id] ? (Op)(stream[idInstruction[id]] & OpCodeMask) : OpNop; } // Output methods @@ -81,6 +89,7 @@ protected: void outputResultId(Id id); void outputTypeId(Id id); void outputId(Id id); + void outputMask(OperandClass operandClass, unsigned mask); void disassembleImmediates(int numOperands); void disassembleIds(int numOperands); void disassembleString(); @@ -241,6 +250,18 @@ void SpirvStream::outputId(Id id) out << "(" << idDescriptor[id] << ")"; } +void SpirvStream::outputMask(OperandClass operandClass, unsigned mask) +{ + if (mask == 0) + out << "None"; + else { + for (int m = 0; m < OperandClassParams[operandClass].ceiling; ++m) { + if (mask & (1 << m)) + out << OperandClassParams[operandClass].getName(m) << " "; + } + } +} + void SpirvStream::disassembleImmediates(int numOperands) { for (int i = 0; i < numOperands; ++i) { @@ -294,8 +315,9 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, nestedControl.push(nextNestedControl); nextNestedControl = 0; } - } else if (opCode == OpExtInstImport) + } else if (opCode == OpExtInstImport) { idDescriptor[resultId] = (char*)(&stream[word]); + } else { if (idDescriptor[resultId].size() == 0) { switch (opCode) { @@ -337,27 +359,35 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, // Process the operands. Note, a new context-dependent set could be // swapped in mid-traversal. - // Handle textures specially, so can put out helpful strings. - if (opCode == OpTypeSampler) { + // Handle images specially, so can put out helpful strings. + if (opCode == OpTypeImage) { + out << " "; disassembleIds(1); out << " " << DimensionString((Dim)stream[word++]); - switch (stream[word++]) { - case 0: out << " texture"; break; - case 1: out << " image"; break; - case 2: out << " filter+texture"; break; - } - out << (stream[word++] != 0 ? " array" : ""); out << (stream[word++] != 0 ? " depth" : ""); + out << (stream[word++] != 0 ? " array" : ""); out << (stream[word++] != 0 ? " multi-sampled" : ""); + switch (stream[word++]) { + case 0: out << " runtime"; break; + case 1: out << " sampled"; break; + case 2: out << " nonsampled"; break; + } + out << " format:" << ImageFormatString((ImageFormat)stream[word++]); + + if (numOperands == 8) { + out << " " << AccessQualifierString(stream[word++]); + } return; } // Handle all the parameterized operands - for (int op = 0; op < InstructionDesc[opCode].operands.getNum(); ++op) { + for (int op = 0; op < InstructionDesc[opCode].operands.getNum() && numOperands > 0; ++op) { out << " "; OperandClass operandClass = InstructionDesc[opCode].operands.getClass(op); switch (operandClass) { case OperandId: + case OperandScope: + case OperandMemorySemantics: disassembleIds(1); // Get names for printing "(XXX)" for readability, *after* this id if (opCode == OpName) @@ -367,15 +397,34 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, case OperandVariableIds: disassembleIds(numOperands); return; + case OperandOptionalImage: + outputMask(operandClass, stream[word++]); + --numOperands; + disassembleIds(numOperands); + return; + case OperandOptionalLiteral: case OperandVariableLiterals: - if ((opCode == OpDecorate && stream[word - 1] == DecorationBuiltIn) || - (opCode == OpMemberDecorate && stream[word - 1] == DecorationBuiltIn)) { + if (opCode == OpDecorate && stream[word - 1] == DecorationBuiltIn || + opCode == OpMemberDecorate && stream[word - 1] == DecorationBuiltIn) { out << BuiltInString(stream[word++]); --numOperands; ++op; } disassembleImmediates(numOperands); return; + case OperandVariableIdLiteral: + while (numOperands > 0) { + out << std::endl; + outputResultId(0); + outputTypeId(0); + outputIndent(); + out << " Type "; + disassembleIds(1); + out << ", member "; + disassembleImmediates(1); + numOperands -= 2; + } + return; case OperandVariableLiteralId: while (numOperands > 0) { out << std::endl; @@ -392,9 +441,16 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, case OperandLiteralNumber: disassembleImmediates(1); if (opCode == OpExtInst) { + ExtInstSet extInstSet = GLSL450Inst; + if (0 == memcmp("OpenCL", (char*)(idDescriptor[stream[word-2]].c_str()), 6)) { + extInstSet = OpenCLExtInst; + } unsigned entrypoint = stream[word - 1]; - if (entrypoint < GLSL_STD_450::Count) - out << "(" << GlslStd450DebugNames[entrypoint] << ")"; + if (extInstSet == GLSL450Inst) { + if (entrypoint < spv::GLSLstd450Count) { + out << "(" << GlslStd450DebugNames[entrypoint] << ")"; + } + } } break; case OperandLiteralString: @@ -403,18 +459,9 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, default: assert(operandClass >= OperandSource && operandClass < OperandOpcode); - if (OperandClassParams[operandClass].bitmask) { - unsigned int mask = stream[word++]; - if (mask == 0) - out << "None"; - else { - for (int m = 0; m < OperandClassParams[operandClass].ceiling; ++m) { - if (mask & (1 << m)) - out << OperandClassParams[operandClass].getName(m) << " "; - } - } - break; - } else + if (OperandClassParams[operandClass].bitmask) + outputMask(operandClass, stream[word++]); + else out << OperandClassParams[operandClass].getName(stream[word++]); break; @@ -425,9 +472,97 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, return; } +void GLSLstd450GetDebugNames(const char** names) +{ + for (int i = 0; i < GLSLstd450Count; ++i) + names[i] = "Unknown"; + + names[GLSLstd450Round] = "Round"; + names[GLSLstd450RoundEven] = "RoundEven"; + names[GLSLstd450Trunc] = "Trunc"; + names[GLSLstd450FAbs] = "FAbs"; + names[GLSLstd450SAbs] = "SAbs"; + names[GLSLstd450FSign] = "FSign"; + names[GLSLstd450SSign] = "SSign"; + names[GLSLstd450Floor] = "Floor"; + names[GLSLstd450Ceil] = "Ceil"; + names[GLSLstd450Fract] = "Fract"; + names[GLSLstd450Radians] = "Radians"; + names[GLSLstd450Degrees] = "Degrees"; + names[GLSLstd450Sin] = "Sin"; + names[GLSLstd450Cos] = "Cos"; + names[GLSLstd450Tan] = "Tan"; + names[GLSLstd450Asin] = "Asin"; + names[GLSLstd450Acos] = "Acos"; + names[GLSLstd450Atan] = "Atan"; + names[GLSLstd450Sinh] = "Sinh"; + names[GLSLstd450Cosh] = "Cosh"; + names[GLSLstd450Tanh] = "Tanh"; + names[GLSLstd450Asinh] = "Asinh"; + names[GLSLstd450Acosh] = "Acosh"; + names[GLSLstd450Atanh] = "Atanh"; + names[GLSLstd450Atan2] = "Atan2"; + names[GLSLstd450Pow] = "Pow"; + names[GLSLstd450Exp] = "Exp"; + names[GLSLstd450Log] = "Log"; + names[GLSLstd450Exp2] = "Exp2"; + names[GLSLstd450Log2] = "Log2"; + names[GLSLstd450Sqrt] = "Sqrt"; + names[GLSLstd450InverseSqrt] = "Inversesqrt"; + names[GLSLstd450Determinant] = "Determinant"; + names[GLSLstd450MatrixInverse] = "Inverse"; + names[GLSLstd450Modf] = "Modf"; + names[GLSLstd450ModfStruct] = "ModfStruct"; + names[GLSLstd450FMin] = "FMin"; + names[GLSLstd450SMin] = "SMin"; + names[GLSLstd450UMin] = "UMin"; + names[GLSLstd450FMax] = "FMax"; + names[GLSLstd450SMax] = "SMax"; + names[GLSLstd450UMax] = "UMax"; + names[GLSLstd450FClamp] = "FClamp"; + names[GLSLstd450SClamp] = "SClamp"; + names[GLSLstd450UClamp] = "UClamp"; + names[GLSLstd450Mix] = "Mix"; + names[GLSLstd450Step] = "Step"; + names[GLSLstd450SmoothStep] = "Smoothstep"; + names[GLSLstd450Fma] = "Fma"; + names[GLSLstd450Frexp] = "Frexp"; + names[GLSLstd450FrexpStruct] = "FrexpStruct"; + names[GLSLstd450Ldexp] = "Ldexp"; + names[GLSLstd450PackSnorm4x8] = "PackSnorm4x8"; + names[GLSLstd450PackUnorm4x8] = "PackUnorm4x8"; + names[GLSLstd450PackSnorm2x16] = "PackSnorm2x16"; + names[GLSLstd450PackUnorm2x16] = "PackUnorm2x16"; + names[GLSLstd450PackHalf2x16] = "PackHalf2x16"; + names[GLSLstd450PackDouble2x32] = "PackDouble2x32"; + names[GLSLstd450UnpackSnorm2x16] = "UnpackSnorm2x16"; + names[GLSLstd450UnpackUnorm2x16] = "UnpackUnorm2x16"; + names[GLSLstd450UnpackHalf2x16] = "UnpackHalf2x16"; + names[GLSLstd450UnpackSnorm4x8] = "UnpackSnorm4x8"; + names[GLSLstd450UnpackUnorm4x8] = "UnpackUnorm4x8"; + names[GLSLstd450UnpackDouble2x32] = "UnpackDouble2x32"; + names[GLSLstd450Length] = "Length"; + names[GLSLstd450Distance] = "Distance"; + names[GLSLstd450Cross] = "Cross"; + names[GLSLstd450Normalize] = "Normalize"; + names[GLSLstd450FaceForward] = "Faceforward"; + names[GLSLstd450Reflect] = "Reflect"; + names[GLSLstd450Refract] = "Refract"; + names[GLSLstd450AddCarry] = "UaddCarry"; + names[GLSLstd450SubBorrow] = "UsubBorrow"; + names[GLSLstd450MulExtended] = "UmulExtended"; + names[GLSLstd450FindILSB] = "FindILsb"; + names[GLSLstd450FindSMSB] = "FindSMsb"; + names[GLSLstd450FindUMSB] = "FindUMsb"; + names[GLSLstd450InterpolateAtCentroid] = "InterpolateAtCentroid"; + names[GLSLstd450InterpolateAtSample] = "InterpolateAtSample"; + names[GLSLstd450InterpolateAtOffset] = "InterpolateAtOffset"; +} + void Disassemble(std::ostream& out, const std::vector& stream) { SpirvStream SpirvStream(out, stream); + GLSLstd450GetDebugNames(GlslStd450DebugNames); SpirvStream.validate(); SpirvStream.processInstructions(); } diff --git a/SPIRV/disassemble.h b/SPIRV/disassemble.h old mode 100644 new mode 100755 index bcb05ef2..be537a37 --- a/SPIRV/disassemble.h +++ b/SPIRV/disassemble.h @@ -1,5 +1,5 @@ // -//Copyright (C) 2014 LunarG, Inc. +//Copyright (C) 2014-2015 LunarG, Inc. // //All rights reserved. // diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp old mode 100644 new mode 100755 index a98ab4d5..ff0d7805 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1,5 +1,5 @@ // -//Copyright (C) 2014 LunarG, Inc. +//Copyright (C) 2014-2015 LunarG, Inc. // //All rights reserved. // @@ -54,7 +54,7 @@ namespace spv { // // Whole set of functions that translate enumerants to their text strings for // the specification (or their sanitized versions for auto-generating the -// spirv.h header. +// spirv headers. // // Also, the ceilings are declared next to these, to help keep them in sync. // Ceilings should be @@ -111,23 +111,21 @@ const char* AddressingString(int addr) } } -const int MemoryModelCeiling = 5; +const int MemoryModelCeiling = 3; const char* MemoryString(int mem) { switch (mem) { case 0: return "Simple"; case 1: return "GLSL450"; - case 2: return "OpenCL1.2"; - case 3: return "OpenCL2.0"; - case 4: return "OpenCL2.1"; + case 2: return "OpenCL"; case MemoryModelCeiling: default: return "Bad"; } } -const int ExecutionModeCeiling = 31; +const int ExecutionModeCeiling = 32; const char* ExecutionModeString(int mode) { @@ -140,36 +138,37 @@ const char* ExecutionModeString(int mode) case 5: return "VertexOrderCcw"; case 6: return "PixelCenterInteger"; case 7: return "OriginUpperLeft"; - case 8: return "EarlyFragmentTests"; - case 9: return "PointMode"; - case 10: return "Xfb"; - case 11: return "DepthReplacing"; - case 12: return "DepthAny"; - case 13: return "DepthGreater"; - case 14: return "DepthLess"; - case 15: return "DepthUnchanged"; - case 16: return "LocalSize"; - case 17: return "LocalSizeHint"; - case 18: return "InputPoints"; - case 19: return "InputLines"; - case 20: return "InputLinesAdjacency"; - case 21: return "InputTriangles"; - case 22: return "InputTrianglesAdjacency"; - case 23: return "InputQuads"; - case 24: return "InputIsolines"; - case 25: return "OutputVertices"; - case 26: return "OutputPoints"; - case 27: return "OutputLineStrip"; - case 28: return "OutputTriangleStrip"; - case 29: return "VecTypeHint"; - case 30: return "ContractionOff"; + case 8: return "OriginLowerLeft"; + case 9: return "EarlyFragmentTests"; + case 10: return "PointMode"; + case 11: return "Xfb"; + case 12: return "DepthReplacing"; + case 13: return "DepthAny"; + case 14: return "DepthGreater"; + case 15: return "DepthLess"; + case 16: return "DepthUnchanged"; + case 17: return "LocalSize"; + case 18: return "LocalSizeHint"; + case 19: return "InputPoints"; + case 20: return "InputLines"; + case 21: return "InputLinesAdjacency"; + case 22: return "InputTriangles"; + case 23: return "InputTrianglesAdjacency"; + case 24: return "InputQuads"; + case 25: return "InputIsolines"; + case 26: return "OutputVertices"; + case 27: return "OutputPoints"; + case 28: return "OutputLineStrip"; + case 29: return "OutputTriangleStrip"; + case 30: return "VecTypeHint"; + case 31: return "ContractionOff"; case ExecutionModeCeiling: default: return "Bad"; } } -const int StorageClassCeiling = 11; +const int StorageClassCeiling = 12; const char* StorageClassString(int StorageClass) { @@ -183,47 +182,48 @@ const char* StorageClassString(int StorageClass) case 6: return "PrivateGlobal"; case 7: return "Function"; case 8: return "Generic"; - case 9: return "Private"; + case 9: return "Bad"; case 10: return "AtomicCounter"; + case 11: return "Image"; case StorageClassCeiling: default: return "Bad"; } } -const int DecorationCeiling = 45; +const int DecorationCeiling = 42; const char* DecorationString(int decoration) { switch (decoration) { - case 0: return "PrecisionLow"; - case 1: return "PrecisionMedium"; - case 2: return "PrecisionHigh"; - case 3: return "Block"; - case 4: return "BufferBlock"; - case 5: return "RowMajor"; - case 6: return "ColMajor"; - case 7: return "GLSLShared"; - case 8: return "GLSLStd140"; - case 9: return "GLSLStd430"; - case 10: return "GLSLPacked"; - case 11: return "Smooth"; - case 12: return "Noperspective"; - case 13: return "Flat"; - case 14: return "Patch"; - case 15: return "Centroid"; - case 16: return "Sample"; - case 17: return "Invariant"; - case 18: return "Restrict"; - case 19: return "Aliased"; - case 20: return "Volatile"; - case 21: return "Constant"; - case 22: return "Coherent"; - case 23: return "Nonwritable"; - case 24: return "Nonreadable"; - case 25: return "Uniform"; - case 26: return "NoStaticUse"; - case 27: return "CPacked"; + case 0: return "RelaxedPrecision"; + case 1: return "SpecId"; + case 2: return "Block"; + case 3: return "BufferBlock"; + case 4: return "RowMajor"; + case 5: return "ColMajor"; + case 6: return "ArrayStride"; + case 7: return "MatrixStride"; + case 8: return "GLSLShared"; + case 9: return "GLSLPacked"; + case 10: return "CPacked"; + case 11: return "BuiltIn"; + case 12: return "Smooth"; + case 13: return "Noperspective"; + case 14: return "Flat"; + case 15: return "Patch"; + case 16: return "Centroid"; + case 17: return "Sample"; + case 18: return "Invariant"; + case 19: return "Restrict"; + case 20: return "Aliased"; + case 21: return "Volatile"; + case 22: return "Constant"; + case 23: return "Coherent"; + case 24: return "Nonwritable"; + case 25: return "Nonreadable"; + case 26: return "Uniform"; + case 27: return "NoStaticUse"; case 28: return "SaturatedConversion"; case 29: return "Stream"; case 30: return "Location"; @@ -232,15 +232,12 @@ const char* DecorationString(int decoration) case 33: return "Binding"; case 34: return "DescriptorSet"; case 35: return "Offset"; - case 36: return "Alignment"; - case 37: return "XfbBuffer"; - case 38: return "Stride"; - case 39: return "BuiltIn"; - case 40: return "FuncParamAttr"; - case 41: return "FP Rounding Mode"; - case 42: return "FP Fast Math Mode"; - case 43: return "Linkage Attributes"; - case 44: return "SpecId"; + case 36: return "XfbBuffer"; + case 37: return "XfbStride"; + case 38: return "FuncParamAttr"; + case 39: return "FP Rounding Mode"; + case 40: return "FP Fast Math Mode"; + case 41: return "Linkage Attributes"; case DecorationCeiling: default: return "Bad"; @@ -254,7 +251,7 @@ const char* BuiltInString(int builtIn) switch (builtIn) { case 0: return "Position"; case 1: return "PointSize"; - case 2: return "ClipVertex"; + case 2: return "Bad"; case 3: return "ClipDistance"; case 4: return "CullDistance"; case 5: return "VertexId"; @@ -346,6 +343,149 @@ const char* SamplerFilterModeString(int mode) } } +const int ImageFormatCeiling = 40; + +const char* ImageFormatString(int format) +{ + switch (format) { + case 0: return "Unknown"; + + // ES/Desktop float + case 1: return "Rgba32f"; + case 2: return "Rgba16f"; + case 3: return "R32f"; + case 4: return "Rgba8"; + case 5: return "Rgba8Snorm"; + + // Desktop float + case 6: return "Rg32f"; + case 7: return "Rg16f"; + case 8: return "R11fG11fB10f"; + case 9: return "R16f"; + case 10: return "Rgba16"; + case 11: return "Rgb10A2"; + case 12: return "Rg16"; + case 13: return "Rg8"; + case 14: return "R16"; + case 15: return "R8"; + case 16: return "Rgba16Snorm"; + case 17: return "Rg16Snorm"; + case 18: return "Rg8Snorm"; + case 19: return "R16Snorm"; + case 20: return "R8Snorm"; + + // ES/Desktop int + case 21: return "Rgba32i"; + case 22: return "Rgba16i"; + case 23: return "Rgba8i"; + case 24: return "R32i"; + + // Desktop int + case 25: return "Rg32i"; + case 26: return "Rg16i"; + case 27: return "Rg8i"; + case 28: return "R16i"; + case 29: return "R8i"; + + // ES/Desktop uint + case 30: return "Rgba32ui"; + case 31: return "Rgba16ui"; + case 32: return "Rgba8ui"; + case 33: return "R32ui"; + + // Desktop uint + case 34: return "Rgb10a2ui"; + case 35: return "Rg32ui"; + case 36: return "Rg16ui"; + case 37: return "Rg8ui"; + case 38: return "R16ui"; + case 39: return "R8ui"; + + case ImageFormatCeiling: + default: + return "Bad"; + } +} + +const int ImageChannelOrderCeiling = 19; + +const char* ImageChannelOrderString(int format) +{ + switch (format) { + case 0: return "R"; + case 1: return "A"; + case 2: return "RG"; + case 3: return "RA"; + case 4: return "RGB"; + case 5: return "RGBA"; + case 6: return "BGRA"; + case 7: return "ARGB"; + case 8: return "Intensity"; + case 9: return "Luminance"; + case 10: return "Rx"; + case 11: return "RGx"; + case 12: return "RGBx"; + case 13: return "Depth"; + case 14: return "DepthStencil"; + case 15: return "sRGB"; + case 16: return "sRGBx"; + case 17: return "sRGBA"; + case 18: return "sBGRA"; + + case ImageChannelOrderCeiling: + default: + return "Bad"; + } +} + +const int ImageChannelDataTypeCeiling = 16; + +const char* ImageChannelDataTypeString(int type) +{ + switch (type) + { + case 0: return "SnormInt8"; + case 1: return "SnormInt16"; + case 2: return "UnormInt8"; + case 3: return "UnormInt16"; + case 4: return "UnormShort565"; + case 5: return "UnormShort555"; + case 6: return "UnormInt101010"; + case 7: return "SignedInt8"; + case 8: return "SignedInt16"; + case 9: return "SignedInt32"; + case 10: return "UnsignedInt8"; + case 11: return "UnsignedInt16"; + case 12: return "UnsignedInt32"; + case 13: return "HalfFloat"; + case 14: return "Float"; + case 15: return "UnormInt24"; + + case ImageChannelDataTypeCeiling: + default: + return "Bad"; + } +} + +const int ImageOperandsCeiling = 7; + +const char* ImageOperandsString(int format) +{ + switch (format) { + case 0: return "Bias"; + case 1: return "Lod"; + case 2: return "Grad"; + case 3: return "ConstOffset"; + case 4: return "Offset"; + case 5: return "ConstOffsets"; + case 6: return "Sample"; + + case ImageOperandsCeiling: + default: + return "Bad"; + } +} + const int FPFastMathCeiling = 5; const char* FPFastMathString(int mode) @@ -390,7 +530,7 @@ const char* LinkageTypeString(int type) } } -const int FuncParamAttrCeiling = 9; +const int FuncParamAttrCeiling = 8; const char* FuncParamAttrString(int attr) { @@ -401,9 +541,8 @@ const char* FuncParamAttrString(int attr) case 3: return "Sret"; case 4: return "NoAlias"; case 5: return "NoCapture"; - case 6: return "SVM"; - case 7: return "NoWrite"; - case 8: return "NoReadWrite"; + case 6: return "NoWrite"; + case 7: return "NoReadWrite"; case FuncParamAttrCeiling: default: return "Bad"; @@ -433,7 +572,7 @@ const char* SelectControlString(int cont) case 1: return "DontFlatten"; case SelectControlCeiling: - default: return "Bad"; + default: return "Bad"; } } @@ -442,11 +581,11 @@ const int LoopControlCeiling = 2; const char* LoopControlString(int cont) { switch (cont) { - case 0: return "Unroll"; - case 1: return "DontUnroll"; + case 0: return "Unroll"; + case 1: return "DontUnroll"; case LoopControlCeiling: - default: return "Bad"; + default: return "Bad"; } } @@ -500,17 +639,18 @@ const char* MemoryAccessString(int mem) } } -const int ExecutionScopeCeiling = 4; +const int ScopeCeiling = 5; -const char* ExecutionScopeString(int mem) +const char* ScopeString(int mem) { switch (mem) { case 0: return "CrossDevice"; case 1: return "Device"; case 2: return "Workgroup"; case 3: return "Subgroup"; + case 4: return "Invocation"; - case ExecutionScopeCeiling: + case ScopeCeiling: default: return "Bad"; } } @@ -559,276 +699,362 @@ const char* KernelProfilingInfoString(int info) } } +const int CapabilityCeiling = 36; + +const char* CapabilityString(int info) +{ + switch (info) + { + case 0: return "Matrix"; + case 1: return "Shader"; + case 2: return "Geometry"; + case 3: return "Tessellation"; + case 4: return "Addresses"; + case 5: return "Linkage"; + case 6: return "Kernel"; + case 7: return "Vector16"; + case 8: return "Float16Buffer"; + case 9: return "Float16"; + case 10: return "Float64"; + case 11: return "Int64"; + case 12: return "Int64Atomics"; + case 13: return "ImageBasic"; + case 14: return "ImageReadWrite"; + case 15: return "ImageMipmap"; + case 16: return "ImageSRGBWrite"; + case 17: return "Pipes"; + case 18: return "Groups"; + case 19: return "DeviceEnqueue"; + case 20: return "LiteralSampler"; + case 21: return "AtomicStorage"; + case 22: return "Int16"; + case 23: return "TessellationPointSize"; + case 24: return "GeometryPointSize"; + case 25: return "ImageGatherExtended"; + case 26: return "StorageImageExtendedFormats"; + case 27: return "StorageImageMultisample"; + case 28: return "UniformBufferArrayDynamicIndexing"; + case 29: return "SampledImageArrayDynamicIndexing"; + case 30: return "StorageBufferArrayDynamicIndexing"; + case 31: return "StorageImageArrayDynamicIndexing"; + case 32: return "ClipDistance"; + case 33: return "CullDistance"; + case 34: return "ImageCubeArray"; + case 35: return "SampleRateShading"; + + case CapabilityCeiling: + default: return "Bad"; + } +} + const char* OpcodeString(int op) { switch (op) { case 0: return "OpNop"; - case 1: return "OpSource"; - case 2: return "OpSourceExtension"; - case 3: return "OpExtension"; - case 4: return "OpExtInstImport"; - case 5: return "OpMemoryModel"; - case 6: return "OpEntryPoint"; - case 7: return "OpExecutionMode"; - case 8: return "OpTypeVoid"; - case 9: return "OpTypeBool"; - case 10: return "OpTypeInt"; - case 11: return "OpTypeFloat"; - case 12: return "OpTypeVector"; - case 13: return "OpTypeMatrix"; - case 14: return "OpTypeSampler"; - case 15: return "OpTypeFilter"; - case 16: return "OpTypeArray"; - case 17: return "OpTypeRuntimeArray"; - case 18: return "OpTypeStruct"; - case 19: return "OpTypeOpaque"; - case 20: return "OpTypePointer"; - case 21: return "OpTypeFunction"; - case 22: return "OpTypeEvent"; - case 23: return "OpTypeDeviceEvent"; - case 24: return "OpTypeReserveId"; - case 25: return "OpTypeQueue"; - case 26: return "OpTypePipe"; - case 27: return "OpConstantTrue"; - case 28: return "OpConstantFalse"; - case 29: return "OpConstant"; - case 30: return "OpConstantComposite"; - case 31: return "OpConstantSampler"; - case 32: return "OpConstantNullPointer"; - case 33: return "OpConstantNullObject"; - case 34: return "OpSpecConstantTrue"; - case 35: return "OpSpecConstantFalse"; - case 36: return "OpSpecConstant"; - case 37: return "OpSpecConstantComposite"; - case 38: return "OpVariable"; - case 39: return "OpVariableArray"; - case 40: return "OpFunction"; - case 41: return "OpFunctionParameter"; - case 42: return "OpFunctionEnd"; - case 43: return "OpFunctionCall"; - case 44: return "OpExtInst"; - case 45: return "OpUndef"; - case 46: return "OpLoad"; - case 47: return "OpStore"; - case 48: return "OpPhi"; - case 49: return "OpDecorationGroup"; - case 50: return "OpDecorate"; - case 51: return "OpMemberDecorate"; - case 52: return "OpGroupDecorate"; - case 53: return "OpGroupMemberDecorate"; - case 54: return "OpName"; - case 55: return "OpMemberName"; - case 56: return "OpString"; - case 57: return "OpLine"; - case 58: return "OpVectorExtractDynamic"; - case 59: return "OpVectorInsertDynamic"; - case 60: return "OpVectorShuffle"; - case 61: return "OpCompositeConstruct"; - case 62: return "OpCompositeExtract"; - case 63: return "OpCompositeInsert"; - case 64: return "OpCopyObject"; - case 65: return "OpCopyMemory"; - case 66: return "OpCopyMemorySized"; - case 67: return "OpSampler"; - case 68: return "OpTextureSample"; - case 69: return "OpTextureSampleDref"; - case 70: return "OpTextureSampleLod"; - case 71: return "OpTextureSampleProj"; - case 72: return "OpTextureSampleGrad"; - case 73: return "OpTextureSampleOffset"; - case 74: return "OpTextureSampleProjLod"; - case 75: return "OpTextureSampleProjGrad"; - case 76: return "OpTextureSampleLodOffset"; - case 77: return "OpTextureSampleProjOffset"; - case 78: return "OpTextureSampleGradOffset"; - case 79: return "OpTextureSampleProjLodOffset"; - case 80: return "OpTextureSampleProjGradOffset"; - case 81: return "OpTextureFetchTexelLod"; - case 82: return "OpTextureFetchTexelOffset"; - case 83: return "OpTextureFetchSample"; - case 84: return "OpTextureFetchTexel"; - case 85: return "OpTextureGather"; - case 86: return "OpTextureGatherOffset"; - case 87: return "OpTextureGatherOffsets"; - case 88: return "OpTextureQuerySizeLod"; - case 89: return "OpTextureQuerySize"; - case 90: return "OpTextureQueryLod"; - case 91: return "OpTextureQueryLevels"; - case 92: return "OpTextureQuerySamples"; - case 93: return "OpAccessChain"; - case 94: return "OpInBoundsAccessChain"; - case 95: return "OpSNegate"; - case 96: return "OpFNegate"; - case 97: return "OpNot"; - case 98: return "OpAny"; - case 99: return "OpAll"; - case 100: return "OpConvertFToU"; - case 101: return "OpConvertFToS"; - case 102: return "OpConvertSToF"; - case 103: return "OpConvertUToF"; - case 104: return "OpUConvert"; - case 105: return "OpSConvert"; - case 106: return "OpFConvert"; - case 107: return "OpConvertPtrToU"; - case 108: return "OpConvertUToPtr"; - case 109: return "OpPtrCastToGeneric"; - case 110: return "OpGenericCastToPtr"; - case 111: return "OpBitcast"; - case 112: return "OpTranspose"; - case 113: return "OpIsNan"; - case 114: return "OpIsInf"; - case 115: return "OpIsFinite"; - case 116: return "OpIsNormal"; - case 117: return "OpSignBitSet"; - case 118: return "OpLessOrGreater"; - case 119: return "OpOrdered"; - case 120: return "OpUnordered"; - case 121: return "OpArrayLength"; - case 122: return "OpIAdd"; - case 123: return "OpFAdd"; - case 124: return "OpISub"; - case 125: return "OpFSub"; - case 126: return "OpIMul"; - case 127: return "OpFMul"; - case 128: return "OpUDiv"; - case 129: return "OpSDiv"; - case 130: return "OpFDiv"; - case 131: return "OpUMod"; - case 132: return "OpSRem"; - case 133: return "OpSMod"; - case 134: return "OpFRem"; - case 135: return "OpFMod"; - case 136: return "OpVectorTimesScalar"; - case 137: return "OpMatrixTimesScalar"; - case 138: return "OpVectorTimesMatrix"; - case 139: return "OpMatrixTimesVector"; - case 140: return "OpMatrixTimesMatrix"; - case 141: return "OpOuterProduct"; - case 142: return "OpDot"; - case 143: return "OpShiftRightLogical"; - case 144: return "OpShiftRightArithmetic"; - case 145: return "OpShiftLeftLogical"; - case 146: return "OpLogicalOr"; - case 147: return "OpLogicalXor"; - case 148: return "OpLogicalAnd"; - case 149: return "OpBitwiseOr"; - case 150: return "OpBitwiseXor"; - case 151: return "OpBitwiseAnd"; - case 152: return "OpSelect"; - case 153: return "OpIEqual"; - case 154: return "OpFOrdEqual"; - case 155: return "OpFUnordEqual"; - case 156: return "OpINotEqual"; - case 157: return "OpFOrdNotEqual"; - case 158: return "OpFUnordNotEqual"; - case 159: return "OpULessThan"; - case 160: return "OpSLessThan"; - case 161: return "OpFOrdLessThan"; - case 162: return "OpFUnordLessThan"; - case 163: return "OpUGreaterThan"; - case 164: return "OpSGreaterThan"; - case 165: return "OpFOrdGreaterThan"; - case 166: return "OpFUnordGreaterThan"; - case 167: return "OpULessThanEqual"; - case 168: return "OpSLessThanEqual"; - case 169: return "OpFOrdLessThanEqual"; - case 170: return "OpFUnordLessThanEqual"; - case 171: return "OpUGreaterThanEqual"; - case 172: return "OpSGreaterThanEqual"; - case 173: return "OpFOrdGreaterThanEqual"; - case 174: return "OpFUnordGreaterThanEqual"; - case 175: return "OpDPdx"; - case 176: return "OpDPdy"; - case 177: return "OpFwidth"; - case 178: return "OpDPdxFine"; - case 179: return "OpDPdyFine"; - case 180: return "OpFwidthFine"; - case 181: return "OpDPdxCoarse"; - case 182: return "OpDPdyCoarse"; - case 183: return "OpFwidthCoarse"; - case 184: return "OpEmitVertex"; - case 185: return "OpEndPrimitive"; - case 186: return "OpEmitStreamVertex"; - case 187: return "OpEndStreamPrimitive"; - case 188: return "OpControlBarrier"; - case 189: return "OpMemoryBarrier"; - case 190: return "OpImagePointer"; - case 191: return "OpAtomicInit"; - case 192: return "OpAtomicLoad"; - case 193: return "OpAtomicStore"; - case 194: return "OpAtomicExchange"; - case 195: return "OpAtomicCompareExchange"; - case 196: return "OpAtomicCompareExchangeWeak"; - case 197: return "OpAtomicIIncrement"; - case 198: return "OpAtomicIDecrement"; - case 199: return "OpAtomicIAdd"; - case 200: return "OpAtomicISub"; - case 201: return "OpAtomicUMin"; - case 202: return "OpAtomicUMax"; - case 203: return "OpAtomicAnd"; - case 204: return "OpAtomicOr"; - case 205: return "OpAtomicXor"; - case 206: return "OpLoopMerge"; - case 207: return "OpSelectionMerge"; - case 208: return "OpLabel"; - case 209: return "OpBranch"; - case 210: return "OpBranchConditional"; - case 211: return "OpSwitch"; - case 212: return "OpKill"; - case 213: return "OpReturn"; - case 214: return "OpReturnValue"; - case 215: return "OpUnreachable"; - case 216: return "OpLifetimeStart"; - case 217: return "OpLifetimeStop"; - case 218: return "OpCompileFlag"; - case 219: return "OpAsyncGroupCopy"; - case 220: return "OpWaitGroupEvents"; - case 221: return "OpGroupAll"; - case 222: return "OpGroupAny"; - case 223: return "OpGroupBroadcast"; - case 224: return "OpGroupIAdd"; - case 225: return "OpGroupFAdd"; - case 226: return "OpGroupFMin"; - case 227: return "OpGroupUMin"; - case 228: return "OpGroupSMin"; - case 229: return "OpGroupFMax"; - case 230: return "OpGroupUMax"; - case 231: return "OpGroupSMax"; - case 232: return "OpGenericCastToPtrExplicit"; - case 233: return "OpGenericPtrMemSemantics"; - case 234: return "OpReadPipe"; - case 235: return "OpWritePipe"; - case 236: return "OpReservedReadPipe"; - case 237: return "OpReservedWritePipe"; - case 238: return "OpReserveReadPipePackets"; - case 239: return "OpReserveWritePipePackets"; - case 240: return "OpCommitReadPipe"; - case 241: return "OpCommitWritePipe"; - case 242: return "OpIsValidReserveId"; - case 243: return "OpGetNumPipePackets"; - case 244: return "OpGetMaxPipePackets"; - case 245: return "OpGroupReserveReadPipePackets"; - case 246: return "OpGroupReserveWritePipePackets"; - case 247: return "OpGroupCommitReadPipe"; - case 248: return "OpGroupCommitWritePipe"; - case 249: return "OpEnqueueMarker"; - case 250: return "OpEnqueueKernel"; - case 251: return "OpGetKernelNDrangeSubGroupCount"; - case 252: return "OpGetKernelNDrangeMaxSubGroupSize"; - case 253: return "OpGetKernelWorkGroupSize"; - case 254: return "OpGetKernelPreferredWorkGroupSizeMultiple"; - case 255: return "OpRetainEvent"; - case 256: return "OpReleaseEvent"; - case 257: return "OpCreateUserEvent"; - case 258: return "OpIsValidEvent"; - case 259: return "OpSetUserEventStatus"; - case 260: return "OpCaptureEventProfilingInfo"; - case 261: return "OpGetDefaultQueue"; - case 262: return "OpBuildNDRange"; - case 263: return "OpSatConvertSToU"; - case 264: return "OpSatConvertUToS"; - case 265: return "OpAtomicIMin"; - case 266: return "OpAtomicIMax"; + case 1: return "OpUndef"; + case 2: return "Bad"; + case 3: return "OpSource"; + case 4: return "OpSourceExtension"; + case 5: return "OpName"; + case 6: return "OpMemberName"; + case 7: return "OpString"; + case 8: return "OpLine"; + case 9: return "Bad"; + case 10: return "OpExtension"; + case 11: return "OpExtInstImport"; + case 12: return "OpExtInst"; + case 13: return "Bad"; + case 14: return "OpMemoryModel"; + case 15: return "OpEntryPoint"; + case 16: return "OpExecutionMode"; + case 17: return "OpCapability"; + case 18: return "Bad"; + case 19: return "OpTypeVoid"; + case 20: return "OpTypeBool"; + case 21: return "OpTypeInt"; + case 22: return "OpTypeFloat"; + case 23: return "OpTypeVector"; + case 24: return "OpTypeMatrix"; + case 25: return "OpTypeImage"; + case 26: return "OpTypeSampler"; + case 27: return "OpTypeSampledImage"; + case 28: return "OpTypeArray"; + case 29: return "OpTypeRuntimeArray"; + case 30: return "OpTypeStruct"; + case 31: return "OpTypeOpaque"; + case 32: return "OpTypePointer"; + case 33: return "OpTypeFunction"; + case 34: return "OpTypeEvent"; + case 35: return "OpTypeDeviceEvent"; + case 36: return "OpTypeReserveId"; + case 37: return "OpTypeQueue"; + case 38: return "OpTypePipe"; + case 39: return "Bad"; + case 40: return "Bad"; + case 41: return "OpConstantTrue"; + case 42: return "OpConstantFalse"; + case 43: return "OpConstant"; + case 44: return "OpConstantComposite"; + case 45: return "OpConstantSampler"; + case 46: return "OpConstantNull"; + case 47: return "Bad"; + case 48: return "OpSpecConstantTrue"; + case 49: return "OpSpecConstantFalse"; + case 50: return "OpSpecConstant"; + case 51: return "OpSpecConstantComposite"; + case 52: return "OpSpecConstantOp"; + case 53: return "Bad"; + case 54: return "OpFunction"; + case 55: return "OpFunctionParameter"; + case 56: return "OpFunctionEnd"; + case 57: return "OpFunctionCall"; + case 58: return "Bad"; + case 59: return "OpVariable"; + case 60: return "OpImageTexelPointer"; + case 61: return "OpLoad"; + case 62: return "OpStore"; + case 63: return "OpCopyMemory"; + case 64: return "OpCopyMemorySized"; + case 65: return "OpAccessChain"; + case 66: return "OpInBoundsAccessChain"; + case 67: return "OpPtrAccessChain"; + case 68: return "OpArrayLength"; + case 69: return "OpGenericPtrMemSemantics"; + case 70: return "Bad"; + case 71: return "OpDecorate"; + case 72: return "OpMemberDecorate"; + case 73: return "OpDecorationGroup"; + case 74: return "OpGroupDecorate"; + case 75: return "OpGroupMemberDecorate"; + case 76: return "Bad"; + case 77: return "OpVectorExtractDynamic"; + case 78: return "OpVectorInsertDynamic"; + case 79: return "OpVectorShuffle"; + case 80: return "OpCompositeConstruct"; + case 81: return "OpCompositeExtract"; + case 82: return "OpCompositeInsert"; + case 83: return "OpCopyObject"; + case 84: return "OpTranspose"; + case 85: return "Bad"; + case 86: return "OpSampledImage"; + case 87: return "OpImageSampleImplicitLod"; + case 88: return "OpImageSampleExplicitLod"; + case 89: return "OpImageSampleDrefImplicitLod"; + case 90: return "OpImageSampleDrefExplicitLod"; + case 91: return "OpImageSampleProjImplicitLod"; + case 92: return "OpImageSampleProjExplicitLod"; + case 93: return "OpImageSampleProjDrefImplicitLod"; + case 94: return "OpImageSampleProjDrefExplicitLod"; + case 95: return "OpImageFetch"; + case 96: return "OpImageGather"; + case 97: return "OpImageDrefGather"; + case 98: return "OpImageRead"; + case 99: return "OpImageWrite"; + case 100: return "OpImageQueryDim"; + case 101: return "OpImageQueryFormat"; + case 102: return "OpImageQueryOrder"; + case 103: return "OpImageQuerySizeLod"; + case 104: return "OpImageQuerySize"; + case 105: return "OpImageQueryLod"; + case 106: return "OpImageQueryLevels"; + case 107: return "OpImageQuerySamples"; + case 108: return "Bad"; + case 109: return "OpConvertFToU"; + case 110: return "OpConvertFToS"; + case 111: return "OpConvertSToF"; + case 112: return "OpConvertUToF"; + case 113: return "OpUConvert"; + case 114: return "OpSConvert"; + case 115: return "OpFConvert"; + case 116: return "OpQuantizeToF16"; + case 117: return "OpConvertPtrToU"; + case 118: return "OpSatConvertSToU"; + case 119: return "OpSatConvertUToS"; + case 120: return "OpConvertUToPtr"; + case 121: return "OpPtrCastToGeneric"; + case 122: return "OpGenericCastToPtr"; + case 123: return "OpGenericCastToPtrExplicit"; + case 124: return "OpBitcast"; + case 125: return "Bad"; + case 126: return "OpSNegate"; + case 127: return "OpFNegate"; + case 128: return "OpIAdd"; + case 129: return "OpFAdd"; + case 130: return "OpISub"; + case 131: return "OpFSub"; + case 132: return "OpIMul"; + case 133: return "OpFMul"; + case 134: return "OpUDiv"; + case 135: return "OpSDiv"; + case 136: return "OpFDiv"; + case 137: return "OpUMod"; + case 138: return "OpSRem"; + case 139: return "OpSMod"; + case 140: return "OpFRem"; + case 141: return "OpFMod"; + case 142: return "OpVectorTimesScalar"; + case 143: return "OpMatrixTimesScalar"; + case 144: return "OpVectorTimesMatrix"; + case 145: return "OpMatrixTimesVector"; + case 146: return "OpMatrixTimesMatrix"; + case 147: return "OpOuterProduct"; + case 148: return "OpDot"; + case 149: return "OpIAddCarry"; + case 150: return "OpISubBorrow"; + case 151: return "OpIMulExtended"; + case 152: return "Bad"; + case 153: return "Bad"; + case 154: return "OpAny"; + case 155: return "OpAll"; + case 156: return "OpIsNan"; + case 157: return "OpIsInf"; + case 158: return "OpIsFinite"; + case 159: return "OpIsNormal"; + case 160: return "OpSignBitSet"; + case 161: return "OpLessOrGreater"; + case 162: return "OpOrdered"; + case 163: return "OpUnordered"; + case 164: return "OpLogicalEqual"; + case 165: return "OpLogicalNotEqual"; + case 166: return "OpLogicalOr"; + case 167: return "OpLogicalAnd"; + case 168: return "OpLogicalNot"; + case 169: return "OpSelect"; + case 170: return "OpIEqual"; + case 171: return "OpINotEqual"; + case 172: return "OpUGreaterThan"; + case 173: return "OpSGreaterThan"; + case 174: return "OpUGreaterThanEqual"; + case 175: return "OpSGreaterThanEqual"; + case 176: return "OpULessThan"; + case 177: return "OpSLessThan"; + case 178: return "OpULessThanEqual"; + case 179: return "OpSLessThanEqual"; + case 180: return "OpFOrdEqual"; + case 181: return "OpFUnordEqual"; + case 182: return "OpFOrdNotEqual"; + case 183: return "OpFUnordNotEqual"; + case 184: return "OpFOrdLessThan"; + case 185: return "OpFUnordLessThan"; + case 186: return "OpFOrdGreaterThan"; + case 187: return "OpFUnordGreaterThan"; + case 188: return "OpFOrdLessThanEqual"; + case 189: return "OpFUnordLessThanEqual"; + case 190: return "OpFOrdGreaterThanEqual"; + case 191: return "OpFUnordGreaterThanEqual"; + case 192: return "Bad"; + case 193: return "Bad"; + case 194: return "OpShiftRightLogical"; + case 195: return "OpShiftRightArithmetic"; + case 196: return "OpShiftLeftLogical"; + case 197: return "OpBitwiseOr"; + case 198: return "OpBitwiseXor"; + case 199: return "OpBitwiseAnd"; + case 200: return "OpNot"; + case 201: return "OpBitFieldInsert"; + case 202: return "OpBitFieldSExtract"; + case 203: return "OpBitFieldUExtract"; + case 204: return "OpBitReverse"; + case 205: return "OpBitCount"; + case 206: return "Bad"; + case 207: return "OpDPdx"; + case 208: return "OpDPdy"; + case 209: return "OpFwidth"; + case 210: return "OpDPdxFine"; + case 211: return "OpDPdyFine"; + case 212: return "OpFwidthFine"; + case 213: return "OpDPdxCoarse"; + case 214: return "OpDPdyCoarse"; + case 215: return "OpFwidthCoarse"; + case 216: return "Bad"; + case 217: return "Bad"; + case 218: return "OpEmitVertex"; + case 219: return "OpEndPrimitive"; + case 220: return "OpEmitStreamVertex"; + case 221: return "OpEndStreamPrimitive"; + case 222: return "Bad"; + case 223: return "Bad"; + case 224: return "OpControlBarrier"; + case 225: return "OpMemoryBarrier"; + case 226: return "Bad"; + case 227: return "OpAtomicLoad"; + case 228: return "OpAtomicStore"; + case 229: return "OpAtomicExchange"; + case 230: return "OpAtomicCompareExchange"; + case 231: return "OpAtomicCompareExchangeWeak"; + case 232: return "OpAtomicIIncrement"; + case 233: return "OpAtomicIDecrement"; + case 234: return "OpAtomicIAdd"; + case 235: return "OpAtomicISub"; + case 236: return "OpAtomicSMin"; + case 237: return "OpAtomicUMin"; + case 238: return "OpAtomicSMax"; + case 239: return "OpAtomicUMax"; + case 240: return "OpAtomicAnd"; + case 241: return "OpAtomicOr"; + case 242: return "OpAtomicXor"; + case 243: return "Bad"; + case 244: return "Bad"; + case 245: return "OpPhi"; + case 246: return "OpLoopMerge"; + case 247: return "OpSelectionMerge"; + case 248: return "OpLabel"; + case 249: return "OpBranch"; + case 250: return "OpBranchConditional"; + case 251: return "OpSwitch"; + case 252: return "OpKill"; + case 253: return "OpReturn"; + case 254: return "OpReturnValue"; + case 255: return "OpUnreachable"; + case 256: return "OpLifetimeStart"; + case 257: return "OpLifetimeStop"; + case 258: return "Bad"; + case 259: return "OpAsyncGroupCopy"; + case 260: return "OpWaitGroupEvents"; + case 261: return "OpGroupAll"; + case 262: return "OpGroupAny"; + case 263: return "OpGroupBroadcast"; + case 264: return "OpGroupIAdd"; + case 265: return "OpGroupFAdd"; + case 266: return "OpGroupFMin"; + case 267: return "OpGroupUMin"; + case 268: return "OpGroupSMin"; + case 269: return "OpGroupFMax"; + case 270: return "OpGroupUMax"; + case 271: return "OpGroupSMax"; + case 272: return "Bad"; + case 273: return "Bad"; + case 274: return "OpReadPipe"; + case 275: return "OpWritePipe"; + case 276: return "OpReservedReadPipe"; + case 277: return "OpReservedWritePipe"; + case 278: return "OpReserveReadPipePackets"; + case 279: return "OpReserveWritePipePackets"; + case 280: return "OpCommitReadPipe"; + case 281: return "OpCommitWritePipe"; + case 282: return "OpIsValidReserveId"; + case 283: return "OpGetNumPipePackets"; + case 284: return "OpGetMaxPipePackets"; + case 285: return "OpGroupReserveReadPipePackets"; + case 286: return "OpGroupReserveWritePipePackets"; + case 287: return "OpGroupCommitReadPipe"; + case 288: return "OpGroupCommitWritePipe"; + case 289: return "Bad"; + case 290: return "Bad"; + case 291: return "OpEnqueueMarker"; + case 292: return "OpEnqueueKernel"; + case 293: return "OpGetKernelNDrangeSubGroupCount"; + case 294: return "OpGetKernelNDrangeMaxSubGroupSize"; + case 295: return "OpGetKernelWorkGroupSize"; + case 296: return "OpGetKernelPreferredWorkGroupSizeMultiple"; + case 297: return "OpRetainEvent"; + case 298: return "OpReleaseEvent"; + case 299: return "OpCreateUserEvent"; + case 300: return "OpIsValidEvent"; + case 301: return "OpSetUserEventStatus"; + case 302: return "OpCaptureEventProfilingInfo"; + case 303: return "OpGetDefaultQueue"; + case 304: return "OpBuildNDRange"; case OpcodeCeiling: default: @@ -850,6 +1076,10 @@ EnumParameters ExecutionModeParams[ExecutionModeCeiling]; EnumParameters StorageParams[StorageClassCeiling]; EnumParameters SamplerAddressingModeParams[SamplerAddressingModeCeiling]; EnumParameters SamplerFilterModeParams[SamplerFilterModeCeiling]; +EnumParameters ImageFormatParams[ImageFormatCeiling]; +EnumParameters ImageChannelOrderParams[ImageChannelOrderCeiling]; +EnumParameters ImageChannelDataTypeParams[ImageChannelDataTypeCeiling]; +EnumParameters ImageOperandsParams[ImageOperandsCeiling]; EnumParameters FPFastMathParams[FPFastMathCeiling]; EnumParameters FPRoundingModeParams[FPRoundingModeCeiling]; EnumParameters LinkageTypeParams[LinkageTypeCeiling]; @@ -864,19 +1094,18 @@ EnumParameters SelectionControlParams[SelectControlCeiling]; EnumParameters FunctionControlParams[FunctionControlCeiling]; EnumParameters MemorySemanticsParams[MemorySemanticsCeiling]; EnumParameters MemoryAccessParams[MemoryAccessCeiling]; -EnumParameters ExecutionScopeParams[ExecutionScopeCeiling]; +EnumParameters ScopeParams[ScopeCeiling]; EnumParameters KernelEnqueueFlagsParams[KernelEnqueueFlagsCeiling]; EnumParameters KernelProfilingInfoParams[KernelProfilingInfoCeiling]; +EnumParameters CapabilityParams[CapabilityCeiling]; // Set up all the parameterizing descriptions of the opcodes, operands, etc. void Parameterize() { - static bool initialized = false; - // only do this once. + static bool initialized = false; if (initialized) return; - initialized = true; // Exceptions to having a result and a resulting type . @@ -887,6 +1116,7 @@ void Parameterize() InstructionDesc[OpSourceExtension].setResultAndType(false, false); InstructionDesc[OpExtension].setResultAndType(false, false); InstructionDesc[OpExtInstImport].setResultAndType(true, false); + InstructionDesc[OpCapability].setResultAndType(false, false); InstructionDesc[OpMemoryModel].setResultAndType(false, false); InstructionDesc[OpEntryPoint].setResultAndType(false, false); InstructionDesc[OpExecutionMode].setResultAndType(false, false); @@ -896,8 +1126,9 @@ void Parameterize() InstructionDesc[OpTypeFloat].setResultAndType(true, false); InstructionDesc[OpTypeVector].setResultAndType(true, false); InstructionDesc[OpTypeMatrix].setResultAndType(true, false); + InstructionDesc[OpTypeImage].setResultAndType(true, false); InstructionDesc[OpTypeSampler].setResultAndType(true, false); - InstructionDesc[OpTypeFilter].setResultAndType(true, false); + InstructionDesc[OpTypeSampledImage].setResultAndType(true, false); InstructionDesc[OpTypeArray].setResultAndType(true, false); InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false); InstructionDesc[OpTypeStruct].setResultAndType(true, false); @@ -911,6 +1142,7 @@ void Parameterize() InstructionDesc[OpTypePipe].setResultAndType(true, false); InstructionDesc[OpFunctionEnd].setResultAndType(false, false); InstructionDesc[OpStore].setResultAndType(false, false); + InstructionDesc[OpImageWrite].setResultAndType(false, false); InstructionDesc[OpDecorationGroup].setResultAndType(true, false); InstructionDesc[OpDecorate].setResultAndType(false, false); InstructionDesc[OpMemberDecorate].setResultAndType(false, false); @@ -928,7 +1160,6 @@ void Parameterize() InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false); InstructionDesc[OpControlBarrier].setResultAndType(false, false); InstructionDesc[OpMemoryBarrier].setResultAndType(false, false); - InstructionDesc[OpAtomicInit].setResultAndType(false, false); InstructionDesc[OpAtomicStore].setResultAndType(false, false); InstructionDesc[OpLoopMerge].setResultAndType(false, false); InstructionDesc[OpSelectionMerge].setResultAndType(false, false); @@ -942,7 +1173,6 @@ void Parameterize() InstructionDesc[OpUnreachable].setResultAndType(false, false); InstructionDesc[OpLifetimeStart].setResultAndType(false, false); InstructionDesc[OpLifetimeStop].setResultAndType(false, false); - InstructionDesc[OpCompileFlag].setResultAndType(false, false); InstructionDesc[OpCommitReadPipe].setResultAndType(false, false); InstructionDesc[OpCommitWritePipe].setResultAndType(false, false); InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false); @@ -951,10 +1181,11 @@ void Parameterize() InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false); InstructionDesc[OpRetainEvent].setResultAndType(false, false); InstructionDesc[OpReleaseEvent].setResultAndType(false, false); + InstructionDesc[OpWaitGroupEvents].setResultAndType(false, false); // Specific additional context-dependent operands - ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "Number of invocations"); + ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "Number of <>"); ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'"); ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'"); @@ -964,8 +1195,8 @@ void Parameterize() ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'"); ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'"); - ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "Vertex count"); - ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandId, "Vector type"); + ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'"); + ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'"); DecorationOperands[DecorationStream].push(OperandLiteralNumber, "Stream number"); DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "Location"); @@ -974,9 +1205,10 @@ void Parameterize() DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "Binding point"); DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "Descriptor set"); DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "Byte offset"); - DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "Declared alignment"); - DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "XFB Buffer number"); - DecorationOperands[DecorationStride].push(OperandLiteralNumber, "Stride"); + DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "XFB buffer number"); + DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "XFB stride"); + DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "Array stride"); + DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "Matrix stride"); DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <>"); DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "floating-point rounding mode"); DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "fast-math mode"); @@ -995,6 +1227,10 @@ void Parameterize() OperandClassParams[OperandDimensionality].set(DimensionCeiling, DimensionString, DimensionalityParams); OperandClassParams[OperandSamplerAddressingMode].set(SamplerAddressingModeCeiling, SamplerAddressingModeString, SamplerAddressingModeParams); OperandClassParams[OperandSamplerFilterMode].set(SamplerFilterModeCeiling, SamplerFilterModeString, SamplerFilterModeParams); + OperandClassParams[OperandSamplerImageFormat].set(ImageFormatCeiling, ImageFormatString, ImageFormatParams); + OperandClassParams[OperandImageChannelOrder].set(ImageChannelOrderCeiling, ImageChannelOrderString, ImageChannelOrderParams); + OperandClassParams[OperandImageChannelDataType].set(ImageChannelDataTypeCeiling, ImageChannelDataTypeString, ImageChannelDataTypeParams); + OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true); OperandClassParams[OperandFPFastMath].set(FPFastMathCeiling, FPFastMathString, FPFastMathParams, true); OperandClassParams[OperandFPRoundingMode].set(FPRoundingModeCeiling, FPRoundingModeString, FPRoundingModeParams); OperandClassParams[OperandLinkageType].set(LinkageTypeCeiling, LinkageTypeString, LinkageTypeParams); @@ -1008,200 +1244,215 @@ void Parameterize() OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true); OperandClassParams[OperandMemorySemantics].set(MemorySemanticsCeiling, MemorySemanticsString, MemorySemanticsParams, true); OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true); - OperandClassParams[OperandExecutionScope].set(ExecutionScopeCeiling, ExecutionScopeString, ExecutionScopeParams); + OperandClassParams[OperandScope].set(ScopeCeiling, ScopeString, ScopeParams); OperandClassParams[OperandGroupOperation].set(GroupOperationCeiling, GroupOperationString, GroupOperationParams); OperandClassParams[OperandKernelEnqueueFlags].set(KernelEnqueueFlagsCeiling, KernelEnqueueFlagsString, KernelEnqueueFlagsParams); OperandClassParams[OperandKernelProfilingInfo].set(KernelProfilingInfoCeiling, KernelProfilingInfoString, KernelProfilingInfoParams, true); + OperandClassParams[OperandCapability].set(CapabilityCeiling, CapabilityString, CapabilityParams); OperandClassParams[OperandOpcode].set(OpcodeCeiling, OpcodeString, 0); - AddressingParams[AddressingModelPhysical32].caps.push_back(CapAddr); - AddressingParams[AddressingModelPhysical64].caps.push_back(CapAddr); + AddressingParams[AddressingModelPhysical32].caps.push_back(CapabilityAddresses); + AddressingParams[AddressingModelPhysical64].caps.push_back(CapabilityAddresses); - MemoryParams[MemoryModelSimple].caps.push_back(CapShader); - MemoryParams[MemoryModelGLSL450].caps.push_back(CapShader); - MemoryParams[MemoryModelOpenCL12].caps.push_back(CapKernel); - MemoryParams[MemoryModelOpenCL20].caps.push_back(CapKernel); - MemoryParams[MemoryModelOpenCL21].caps.push_back(CapKernel); + MemoryParams[MemoryModelSimple].caps.push_back(CapabilityShader); + MemoryParams[MemoryModelGLSL450].caps.push_back(CapabilityShader); + MemoryParams[MemoryModelOpenCL].caps.push_back(CapabilityKernel); - ExecutionModelParams[ExecutionModelVertex].caps.push_back(CapShader); - ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapTess); - ExecutionModelParams[ExecutionModelTessellationEvaluation].caps.push_back(CapTess); - ExecutionModelParams[ExecutionModelGeometry].caps.push_back(CapGeom); - ExecutionModelParams[ExecutionModelFragment].caps.push_back(CapShader); - ExecutionModelParams[ExecutionModelGLCompute].caps.push_back(CapShader); - ExecutionModelParams[ExecutionModelKernel].caps.push_back(CapKernel); + ExecutionModelParams[ExecutionModelVertex].caps.push_back(CapabilityShader); + ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapabilityTessellation); + ExecutionModelParams[ExecutionModelTessellationEvaluation].caps.push_back(CapabilityTessellation); + ExecutionModelParams[ExecutionModelGeometry].caps.push_back(CapabilityGeometry); + ExecutionModelParams[ExecutionModelFragment].caps.push_back(CapabilityShader); + ExecutionModelParams[ExecutionModelGLCompute].caps.push_back(CapabilityShader); + ExecutionModelParams[ExecutionModelKernel].caps.push_back(CapabilityKernel); // Storage capabilites - StorageParams[StorageClassInput].caps.push_back(CapShader); - StorageParams[StorageClassUniform].caps.push_back(CapShader); - StorageParams[StorageClassOutput].caps.push_back(CapShader); - StorageParams[StorageClassPrivateGlobal].caps.push_back(CapShader); - StorageParams[StorageClassFunction].caps.push_back(CapShader); - StorageParams[StorageClassGeneric].caps.push_back(CapKernel); - StorageParams[StorageClassPrivate].caps.push_back(CapKernel); - StorageParams[StorageClassAtomicCounter].caps.push_back(CapShader); + StorageParams[StorageClassInput].caps.push_back(CapabilityShader); + StorageParams[StorageClassUniform].caps.push_back(CapabilityShader); + StorageParams[StorageClassOutput].caps.push_back(CapabilityShader); + StorageParams[StorageClassPrivateGlobal].caps.push_back(CapabilityShader); + StorageParams[StorageClassGeneric].caps.push_back(CapabilityKernel); + StorageParams[StorageClassAtomicCounter].caps.push_back(CapabilityAtomicStorage); + // Sampler Filter & Addressing mode capabilities - SamplerAddressingModeParams[SamplerAddressingModeNone].caps.push_back(CapKernel); - SamplerAddressingModeParams[SamplerAddressingModeClampToEdge].caps.push_back(CapKernel); - SamplerAddressingModeParams[SamplerAddressingModeClamp].caps.push_back(CapKernel); - SamplerAddressingModeParams[SamplerAddressingModeRepeat].caps.push_back(CapKernel); - SamplerAddressingModeParams[SamplerAddressingModeRepeatMirrored].caps.push_back(CapKernel); + SamplerAddressingModeParams[SamplerAddressingModeNone].caps.push_back(CapabilityKernel); + SamplerAddressingModeParams[SamplerAddressingModeClampToEdge].caps.push_back(CapabilityKernel); + SamplerAddressingModeParams[SamplerAddressingModeClamp].caps.push_back(CapabilityKernel); + SamplerAddressingModeParams[SamplerAddressingModeRepeat].caps.push_back(CapabilityKernel); + SamplerAddressingModeParams[SamplerAddressingModeRepeatMirrored].caps.push_back(CapabilityKernel); - SamplerFilterModeParams[SamplerFilterModeNearest].caps.push_back(CapKernel); - SamplerFilterModeParams[SamplerFilterModeLinear].caps.push_back(CapKernel); + SamplerFilterModeParams[SamplerFilterModeNearest].caps.push_back(CapabilityKernel); + SamplerFilterModeParams[SamplerFilterModeLinear].caps.push_back(CapabilityKernel); + + // image format capabilities + for (int i = 0; i < ImageFormatCeiling; ++i) { + ImageFormatParams[i].caps.push_back(CapabilityShader); + } + + // image channel order capabilities + for (int i = 0; i < ImageChannelOrderCeiling; ++i) { + ImageChannelOrderParams[i].caps.push_back(CapabilityKernel); + } + + // image channel type capabilities + for (int i = 0; i < ImageChannelDataTypeCeiling; ++i) { + ImageChannelDataTypeParams[i].caps.push_back(CapabilityKernel); + } + + // image lookup operands + ImageOperandsParams[ImageOperandsBiasShift].caps.push_back(CapabilityShader); + ImageOperandsParams[ImageOperandsOffsetShift].caps.push_back(CapabilityImageGatherExtended); // fast math flags capabilities for (int i = 0; i < FPFastMathCeiling; ++i) { - FPFastMathParams[i].caps.push_back(CapKernel); + FPFastMathParams[i].caps.push_back(CapabilityKernel); } // fp rounding mode capabilities for (int i = 0; i < FPRoundingModeCeiling; ++i) { - FPRoundingModeParams[i].caps.push_back(CapKernel); + FPRoundingModeParams[i].caps.push_back(CapabilityKernel); } // linkage types for (int i = 0; i < LinkageTypeCeiling; ++i) { - LinkageTypeParams[i].caps.push_back(CapLink); + LinkageTypeParams[i].caps.push_back(CapabilityLinkage); } // function argument types for (int i = 0; i < FuncParamAttrCeiling; ++i) { - FuncParamAttrParams[i].caps.push_back(CapKernel); + FuncParamAttrParams[i].caps.push_back(CapabilityKernel); } // function argument types for (int i = 0; i < AccessQualifierCeiling; ++i) { - AccessQualifierParams[i].caps.push_back(CapKernel); + AccessQualifierParams[i].caps.push_back(CapabilityKernel); } - ExecutionModeParams[ExecutionModeInvocations].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeSpacingEqual].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeSpacingFractionalEven].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeSpacingFractionalOdd].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeVertexOrderCw].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeVertexOrderCcw].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModePixelCenterInteger].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeOriginUpperLeft].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeEarlyFragmentTests].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModePointMode].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeXfb].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeDepthReplacing].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeDepthAny].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeDepthGreater].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeDepthLess].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeDepthUnchanged].caps.push_back(CapShader); - ExecutionModeParams[ExecutionModeLocalSizeHint].caps.push_back(CapKernel); - ExecutionModeParams[ExecutionModeInputPoints].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeInputLines].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeInputLinesAdjacency].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeInputTrianglesAdjacency].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeInputQuads].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeInputIsolines].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapTess); - ExecutionModeParams[ExecutionModeOutputPoints].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeOutputLineStrip].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeOutputTriangleStrip].caps.push_back(CapGeom); - ExecutionModeParams[ExecutionModeVecTypeHint].caps.push_back(CapKernel); - ExecutionModeParams[ExecutionModeContractionOff].caps.push_back(CapKernel); + ExecutionModeParams[ExecutionModeInvocations].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeSpacingEqual].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeSpacingFractionalEven].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeSpacingFractionalOdd].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeVertexOrderCw].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeVertexOrderCcw].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModePixelCenterInteger].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeOriginUpperLeft].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeOriginLowerLeft].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeEarlyFragmentTests].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModePointMode].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeXfb].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeDepthReplacing].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeDepthAny].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeDepthGreater].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeDepthLess].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeDepthUnchanged].caps.push_back(CapabilityShader); + ExecutionModeParams[ExecutionModeLocalSizeHint].caps.push_back(CapabilityKernel); + ExecutionModeParams[ExecutionModeInputPoints].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeInputLines].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeInputLinesAdjacency].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeInputTrianglesAdjacency].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeInputQuads].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeInputIsolines].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapabilityTessellation); + ExecutionModeParams[ExecutionModeOutputPoints].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeOutputLineStrip].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeOutputTriangleStrip].caps.push_back(CapabilityGeometry); + ExecutionModeParams[ExecutionModeVecTypeHint].caps.push_back(CapabilityKernel); + ExecutionModeParams[ExecutionModeContractionOff].caps.push_back(CapabilityKernel); - DecorationParams[DecorationPrecisionLow].caps.push_back(CapShader); - DecorationParams[DecorationPrecisionMedium].caps.push_back(CapShader); - DecorationParams[DecorationPrecisionHigh].caps.push_back(CapShader); - DecorationParams[DecorationBlock].caps.push_back(CapShader); - DecorationParams[DecorationBufferBlock].caps.push_back(CapShader); - DecorationParams[DecorationRowMajor].caps.push_back(CapMatrix); - DecorationParams[DecorationColMajor].caps.push_back(CapMatrix); - DecorationParams[DecorationGLSLShared].caps.push_back(CapShader); - DecorationParams[DecorationGLSLStd140].caps.push_back(CapShader); - DecorationParams[DecorationGLSLStd430].caps.push_back(CapShader); - DecorationParams[DecorationGLSLPacked].caps.push_back(CapShader); - DecorationParams[DecorationSmooth].caps.push_back(CapShader); - DecorationParams[DecorationNoperspective].caps.push_back(CapShader); - DecorationParams[DecorationFlat].caps.push_back(CapShader); - DecorationParams[DecorationPatch].caps.push_back(CapTess); - DecorationParams[DecorationCentroid].caps.push_back(CapShader); - DecorationParams[DecorationSample].caps.push_back(CapShader); - DecorationParams[DecorationInvariant].caps.push_back(CapShader); - DecorationParams[DecorationConstant].caps.push_back(CapKernel); - DecorationParams[DecorationUniform].caps.push_back(CapShader); - DecorationParams[DecorationCPacked].caps.push_back(CapKernel); - DecorationParams[DecorationSaturatedConversion].caps.push_back(CapKernel); - DecorationParams[DecorationStream].caps.push_back(CapGeom); - DecorationParams[DecorationLocation].caps.push_back(CapShader); - DecorationParams[DecorationComponent].caps.push_back(CapShader); - DecorationParams[DecorationIndex].caps.push_back(CapShader); - DecorationParams[DecorationBinding].caps.push_back(CapShader); - DecorationParams[DecorationDescriptorSet].caps.push_back(CapShader); - DecorationParams[DecorationXfbBuffer].caps.push_back(CapShader); - DecorationParams[DecorationStride].caps.push_back(CapShader); - DecorationParams[DecorationBuiltIn].caps.push_back(CapShader); - DecorationParams[DecorationFuncParamAttr].caps.push_back(CapKernel); - DecorationParams[DecorationFPRoundingMode].caps.push_back(CapKernel); - DecorationParams[DecorationFPFastMathMode].caps.push_back(CapKernel); - DecorationParams[DecorationLinkageAttributes].caps.push_back(CapLink); - DecorationParams[DecorationSpecId].caps.push_back(CapShader); + DecorationParams[DecorationRelaxedPrecision].caps.push_back(CapabilityShader); + DecorationParams[DecorationBlock].caps.push_back(CapabilityShader); + DecorationParams[DecorationBufferBlock].caps.push_back(CapabilityShader); + DecorationParams[DecorationRowMajor].caps.push_back(CapabilityMatrix); + DecorationParams[DecorationColMajor].caps.push_back(CapabilityMatrix); + DecorationParams[DecorationGLSLShared].caps.push_back(CapabilityShader); + DecorationParams[DecorationGLSLPacked].caps.push_back(CapabilityShader); + DecorationParams[DecorationSmooth].caps.push_back(CapabilityShader); + DecorationParams[DecorationNoperspective].caps.push_back(CapabilityShader); + DecorationParams[DecorationFlat].caps.push_back(CapabilityShader); + DecorationParams[DecorationPatch].caps.push_back(CapabilityTessellation); + DecorationParams[DecorationCentroid].caps.push_back(CapabilityShader); + DecorationParams[DecorationSample].caps.push_back(CapabilityShader); + DecorationParams[DecorationInvariant].caps.push_back(CapabilityShader); + DecorationParams[DecorationConstant].caps.push_back(CapabilityKernel); + DecorationParams[DecorationUniform].caps.push_back(CapabilityShader); + DecorationParams[DecorationCPacked].caps.push_back(CapabilityKernel); + DecorationParams[DecorationSaturatedConversion].caps.push_back(CapabilityKernel); + DecorationParams[DecorationStream].caps.push_back(CapabilityGeometry); + DecorationParams[DecorationLocation].caps.push_back(CapabilityShader); + DecorationParams[DecorationComponent].caps.push_back(CapabilityShader); + DecorationParams[DecorationIndex].caps.push_back(CapabilityShader); + DecorationParams[DecorationBinding].caps.push_back(CapabilityShader); + DecorationParams[DecorationDescriptorSet].caps.push_back(CapabilityShader); + DecorationParams[DecorationXfbBuffer].caps.push_back(CapabilityShader); + DecorationParams[DecorationXfbStride].caps.push_back(CapabilityShader); + DecorationParams[DecorationArrayStride].caps.push_back(CapabilityShader); + DecorationParams[DecorationMatrixStride].caps.push_back(CapabilityShader); + DecorationParams[DecorationBuiltIn].caps.push_back(CapabilityShader); + DecorationParams[DecorationFuncParamAttr].caps.push_back(CapabilityKernel); + DecorationParams[DecorationFPRoundingMode].caps.push_back(CapabilityKernel); + DecorationParams[DecorationFPFastMathMode].caps.push_back(CapabilityKernel); + DecorationParams[DecorationLinkageAttributes].caps.push_back(CapabilityLinkage); + DecorationParams[DecorationSpecId].caps.push_back(CapabilityShader); - BuiltInParams[BuiltInPosition].caps.push_back(CapShader); - BuiltInParams[BuiltInPointSize].caps.push_back(CapShader); - BuiltInParams[BuiltInClipVertex].caps.push_back(CapShader); - BuiltInParams[BuiltInClipDistance].caps.push_back(CapShader); - BuiltInParams[BuiltInCullDistance].caps.push_back(CapShader); - BuiltInParams[BuiltInVertexId].caps.push_back(CapShader); - BuiltInParams[BuiltInInstanceId].caps.push_back(CapShader); - BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapGeom); - BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapTess); - BuiltInParams[BuiltInInvocationId].caps.push_back(CapGeom); - BuiltInParams[BuiltInInvocationId].caps.push_back(CapTess); - BuiltInParams[BuiltInLayer].caps.push_back(CapGeom); - BuiltInParams[BuiltInViewportIndex].caps.push_back(CapGeom); - BuiltInParams[BuiltInTessLevelOuter].caps.push_back(CapTess); - BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapTess); - BuiltInParams[BuiltInTessCoord].caps.push_back(CapTess); - BuiltInParams[BuiltInPatchVertices].caps.push_back(CapTess); - BuiltInParams[BuiltInFragCoord].caps.push_back(CapShader); - BuiltInParams[BuiltInPointCoord].caps.push_back(CapShader); - BuiltInParams[BuiltInFrontFacing].caps.push_back(CapShader); - BuiltInParams[BuiltInSampleId].caps.push_back(CapShader); - BuiltInParams[BuiltInSamplePosition].caps.push_back(CapShader); - BuiltInParams[BuiltInSampleMask].caps.push_back(CapShader); - BuiltInParams[BuiltInFragColor].caps.push_back(CapShader); - BuiltInParams[BuiltInFragDepth].caps.push_back(CapShader); - BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapShader); - BuiltInParams[BuiltInLocalInvocationIndex].caps.push_back(CapShader); - BuiltInParams[BuiltInWorkDim].caps.push_back(CapKernel); - BuiltInParams[BuiltInGlobalSize].caps.push_back(CapKernel); - BuiltInParams[BuiltInEnqueuedWorkgroupSize].caps.push_back(CapKernel); - BuiltInParams[BuiltInGlobalOffset].caps.push_back(CapKernel); - BuiltInParams[BuiltInGlobalLinearId].caps.push_back(CapKernel); - BuiltInParams[BuiltInWorkgroupLinearId].caps.push_back(CapKernel); + BuiltInParams[BuiltInPosition].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInPointSize].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInClipDistance].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInCullDistance].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInVertexId].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInInstanceId].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapabilityGeometry); + BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapabilityTessellation); + BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityGeometry); + BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityTessellation); + BuiltInParams[BuiltInLayer].caps.push_back(CapabilityGeometry); + BuiltInParams[BuiltInViewportIndex].caps.push_back(CapabilityGeometry); + BuiltInParams[BuiltInTessLevelOuter].caps.push_back(CapabilityTessellation); + BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapabilityTessellation); + BuiltInParams[BuiltInTessCoord].caps.push_back(CapabilityTessellation); + BuiltInParams[BuiltInPatchVertices].caps.push_back(CapabilityTessellation); + BuiltInParams[BuiltInFragCoord].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInPointCoord].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInFrontFacing].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInSampleId].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInSamplePosition].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInSampleMask].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInFragColor].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInFragDepth].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInLocalInvocationIndex].caps.push_back(CapabilityShader); + BuiltInParams[BuiltInWorkDim].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInGlobalSize].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInEnqueuedWorkgroupSize].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInGlobalOffset].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInGlobalLinearId].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInWorkgroupLinearId].caps.push_back(CapabilityKernel); - BuiltInParams[BuiltInSubgroupSize].caps.push_back(CapKernel); - BuiltInParams[BuiltInSubgroupMaxSize].caps.push_back(CapKernel); - BuiltInParams[BuiltInNumSubgroups].caps.push_back(CapKernel); - BuiltInParams[BuiltInNumEnqueuedSubgroups].caps.push_back(CapKernel); - BuiltInParams[BuiltInSubgroupId].caps.push_back(CapKernel); - BuiltInParams[BuiltInSubgroupLocalInvocationId].caps.push_back(CapKernel); + BuiltInParams[BuiltInSubgroupSize].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInSubgroupMaxSize].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInNumSubgroups].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInNumEnqueuedSubgroups].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInSubgroupId].caps.push_back(CapabilityKernel); + BuiltInParams[BuiltInSubgroupLocalInvocationId].caps.push_back(CapabilityKernel); - DimensionalityParams[DimCube].caps.push_back(CapShader); - DimensionalityParams[DimRect].caps.push_back(CapShader); + DimensionalityParams[DimCube].caps.push_back(CapabilityShader); + DimensionalityParams[DimRect].caps.push_back(CapabilityShader); // Group Operations for (int i = 0; i < GroupOperationCeiling; ++i) { - GroupOperationParams[i].caps.push_back(CapKernel); + GroupOperationParams[i].caps.push_back(CapabilityKernel); } // Enqueue flags for (int i = 0; i < KernelEnqueueFlagsCeiling; ++i) { - KernelEnqueueFlagsParams[i].caps.push_back(CapKernel); + KernelEnqueueFlagsParams[i].caps.push_back(CapabilityKernel); } // Profiling info - KernelProfilingInfoParams[0].caps.push_back(CapKernel); + KernelProfilingInfoParams[0].caps.push_back(CapabilityKernel); // set name of operator, an initial set of style operands, and the description @@ -1228,61 +1479,67 @@ void Parameterize() InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'"); + InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'"); + InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, ""); InstructionDesc[OpMemoryModel].operands.push(OperandMemory, ""); InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, ""); InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'"); + InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'"); InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'"); InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'"); - InstructionDesc[OpExecutionMode].operands.push(OperandVariableLiterals, "See <>"); + InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <>"); InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'"); InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'"); InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'"); - InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component type'"); - InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component count'"); + InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'"); + InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'"); - InstructionDesc[OpTypeMatrix].capabilities.push_back(CapMatrix); - InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column type'"); - InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column count'"); + InstructionDesc[OpTypeMatrix].capabilities.push_back(CapabilityMatrix); + InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'"); + InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'"); - InstructionDesc[OpTypeSampler].operands.push(OperandId, "'Sampled Type'"); - InstructionDesc[OpTypeSampler].operands.push(OperandDimensionality, ""); - InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Content'"); - InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Arrayed'"); - InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Compare'"); - InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'MS'"); - InstructionDesc[OpTypeSampler].operands.push(OperandOptionalId, "'Qualifier'"); + InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'"); + InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, ""); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'"); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'"); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'"); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'"); + InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, ""); + InstructionDesc[OpTypeImage].operands.push(OperandOptionalLiteral, "'Access Qualifier'"); - InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element type'"); + InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'"); + + InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'"); InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'"); - InstructionDesc[OpTypeRuntimeArray].capabilities.push_back(CapShader); - InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element type'"); + InstructionDesc[OpTypeRuntimeArray].capabilities.push_back(CapabilityShader); + InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'"); InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n..."); - InstructionDesc[OpTypeOpaque].capabilities.push_back(CapKernel); + InstructionDesc[OpTypeOpaque].capabilities.push_back(CapabilityKernel); InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type."); InstructionDesc[OpTypePointer].operands.push(OperandStorage, ""); InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'"); - InstructionDesc[OpTypeEvent].capabilities.push_back(CapKernel); + InstructionDesc[OpTypeEvent].capabilities.push_back(CapabilityKernel); - InstructionDesc[OpTypeDeviceEvent].capabilities.push_back(CapKernel); + InstructionDesc[OpTypeDeviceEvent].capabilities.push_back(CapabilityKernel); - InstructionDesc[OpTypeReserveId].capabilities.push_back(CapKernel); + InstructionDesc[OpTypeReserveId].capabilities.push_back(CapabilityPipes); - InstructionDesc[OpTypeQueue].capabilities.push_back(CapKernel); + InstructionDesc[OpTypeQueue].capabilities.push_back(CapabilityKernel); InstructionDesc[OpTypePipe].operands.push(OperandId, "'Type'"); InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'"); - InstructionDesc[OpTypePipe].capabilities.push_back(CapKernel); + InstructionDesc[OpTypePipe].capabilities.push_back(CapabilityPipes); InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'"); InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..."); @@ -1291,32 +1548,21 @@ void Parameterize() InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); - InstructionDesc[OpConstantNullPointer].capabilities.push_back(CapAddr); - - InstructionDesc[OpConstantNullObject].capabilities.push_back(CapKernel); - - InstructionDesc[OpConstantSampler].capabilities.push_back(CapKernel); - InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Mode'"); + InstructionDesc[OpConstantSampler].capabilities.push_back(CapabilityLiteralSampler); + InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, ""); InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'"); - InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Filter'"); - - InstructionDesc[OpSpecConstantTrue].capabilities.push_back(CapShader); - - InstructionDesc[OpSpecConstantFalse].capabilities.push_back(CapShader); + InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, ""); InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'"); - InstructionDesc[OpSpecConstant].capabilities.push_back(CapShader); InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); - InstructionDesc[OpSpecConstantComposite].capabilities.push_back(CapShader); + + InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'"); + InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'"); InstructionDesc[OpVariable].operands.push(OperandStorage, ""); InstructionDesc[OpVariable].operands.push(OperandOptionalId, "'Initializer'"); - InstructionDesc[OpVariableArray].operands.push(OperandStorage, ""); - InstructionDesc[OpVariableArray].operands.push(OperandId, "'N'"); - InstructionDesc[OpVariableArray].capabilities.push_back(CapAddr); - InstructionDesc[OpFunction].operands.push(OperandFunction, ""); InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'"); @@ -1328,28 +1574,28 @@ void Parameterize() InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpLoad].operands.push(OperandVariableLiterals, "'Memory Access'"); + InstructionDesc[OpLoad].operands.push(OperandOptionalLiteral, "'Memory Access'"); InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'"); InstructionDesc[OpStore].operands.push(OperandId, "'Object'"); - InstructionDesc[OpStore].operands.push(OperandVariableLiterals, "'Memory Access'"); + InstructionDesc[OpStore].operands.push(OperandOptionalLiteral, "'Memory Access'"); - InstructionDesc[OpPhi].operands.push(OperandVariableIds, ""); + InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'"); InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'"); InstructionDesc[OpDecorate].operands.push(OperandDecoration, ""); InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <>."); - InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure type'"); + InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'"); InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'"); InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, ""); InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <>."); - InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration group'"); - InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Target', 'Target', ..."); + InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'"); + InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'"); - InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration group'"); - InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIds, "'Target', 'Target', ..."); + InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'"); + InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'"); InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'"); InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'"); @@ -1375,145 +1621,107 @@ void Parameterize() InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'"); InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'"); - InstructionDesc[OpCopyMemory].operands.push(OperandVariableLiterals, "'Memory Access'"); + InstructionDesc[OpCopyMemory].operands.push(OperandOptionalLiteral, "'Memory Access'"); InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'"); InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'"); InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'"); - InstructionDesc[OpCopyMemorySized].operands.push(OperandVariableLiterals, "'Memory Access'"); + InstructionDesc[OpCopyMemorySized].operands.push(OperandOptionalLiteral, "'Memory Access'"); - InstructionDesc[OpCopyMemorySized].capabilities.push_back(CapAddr); + InstructionDesc[OpCopyMemorySized].capabilities.push_back(CapabilityAddresses); - InstructionDesc[OpSampler].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpSampler].operands.push(OperandId, "'Filter'"); + InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'"); + InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSample].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSample].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSample].operands.push(OperandOptionalId, "['Bias']"); - InstructionDesc[OpTextureSample].capabilities.push_back(CapShader); + InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpTextureSampleDref].capabilities.push_back(CapShader); + InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'"); - InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureSampleLod].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleImplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleProj].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleProj].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleProj].operands.push(OperandOptionalId, "['Bias']"); - InstructionDesc[OpTextureSampleProj].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandOptionalImage, ""); - InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'dx'"); - InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'dy'"); - InstructionDesc[OpTextureSampleGrad].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleDrefImplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureSampleOffset].operands.push(OperandOptionalId, "['Bias']"); - InstructionDesc[OpTextureSampleOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleDrefExplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureSampleProjLod].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleProjImplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'dx'"); - InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'dy'"); - InstructionDesc[OpTextureSampleProjGrad].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleProjExplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureSampleLodOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleProjDrefImplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandOptionalId, "['Bias']"); - InstructionDesc[OpTextureSampleProjOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageSampleProjDrefExplicitLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'dx'"); - InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'dy'"); - InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureSampleGradOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageFetch].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageFetch].operands.push(OperandOptionalImage, ""); - InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureSampleProjLodOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'"); + InstructionDesc[OpImageGather].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageGather].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'dx'"); - InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'dy'"); - InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureSampleProjGradOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageDrefGather].operands.push(OperandOptionalImage, ""); + InstructionDesc[OpImageDrefGather].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureFetchTexelLod].capabilities.push_back(CapShader); + InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureFetchTexelOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'"); - InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Sample'"); - InstructionDesc[OpTextureFetchSample].capabilities.push_back(CapShader); + InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageQueryLod].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureFetchTexel].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureFetchTexel].operands.push(OperandId, "'Element'"); - InstructionDesc[OpTextureFetchTexel].capabilities.push_back(CapShader); + InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryLevels].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureGather].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureGather].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureGather].operands.push(OperandId, "'Component'"); - InstructionDesc[OpTextureGather].capabilities.push_back(CapShader); + InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQuerySamples].capabilities.push_back(CapabilityShader); - InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Component'"); - InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpTextureGatherOffset].capabilities.push_back(CapShader); + InstructionDesc[OpImageQueryDim].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryDim].capabilities.push_back(CapabilityKernel); - InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Component'"); - InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Offsets'"); - InstructionDesc[OpTextureGatherOffsets].capabilities.push_back(CapShader); + InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryFormat].capabilities.push_back(CapabilityKernel); - InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpTextureQuerySizeLod].capabilities.push_back(CapShader); - - InstructionDesc[OpTextureQuerySize].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureQuerySize].capabilities.push_back(CapShader); - - InstructionDesc[OpTextureQueryLod].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureQueryLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpTextureQueryLod].capabilities.push_back(CapShader); - - InstructionDesc[OpTextureQueryLevels].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureQueryLevels].capabilities.push_back(CapShader); - - InstructionDesc[OpTextureQuerySamples].operands.push(OperandId, "'Sampler'"); - InstructionDesc[OpTextureQuerySamples].capabilities.push_back(CapShader); + InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryOrder].capabilities.push_back(CapabilityKernel); InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'"); InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'"); @@ -1521,6 +1729,11 @@ void Parameterize() InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'"); InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'"); + InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'"); + InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'"); + InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); + InstructionDesc[OpPtrAccessChain].capabilities.push_back(CapabilityAddresses); + InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'"); InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'"); @@ -1537,73 +1750,74 @@ void Parameterize() InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'"); - InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned value'"); + InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'"); - InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned value'"); + InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'"); InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'"); InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'"); InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'"); - InstructionDesc[OpSatConvertSToU].capabilities.push_back(CapKernel); + InstructionDesc[OpSatConvertSToU].capabilities.push_back(CapabilityKernel); InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'"); - InstructionDesc[OpSatConvertUToS].capabilities.push_back(CapKernel); + InstructionDesc[OpSatConvertUToS].capabilities.push_back(CapabilityKernel); InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpConvertPtrToU].capabilities.push_back(CapAddr); + InstructionDesc[OpConvertPtrToU].capabilities.push_back(CapabilityAddresses); - InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer value'"); - InstructionDesc[OpConvertUToPtr].capabilities.push_back(CapAddr); + InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'"); + InstructionDesc[OpConvertUToPtr].capabilities.push_back(CapabilityAddresses); - InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Source pointer'"); - InstructionDesc[OpPtrCastToGeneric].capabilities.push_back(CapKernel); + InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpPtrCastToGeneric].capabilities.push_back(CapabilityKernel); + InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpGenericCastToPtr].capabilities.push_back(CapabilityKernel); - InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Source pointer'"); - InstructionDesc[OpGenericCastToPtr].capabilities.push_back(CapKernel); + InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'"); + InstructionDesc[OpGenericCastToPtrExplicit].capabilities.push_back(CapabilityKernel); - InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Source pointer'"); - InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'storage'"); - InstructionDesc[OpGenericCastToPtrExplicit].capabilities.push_back(CapKernel); - - InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'ptr'"); - InstructionDesc[OpGenericPtrMemSemantics].capabilities.push_back(CapKernel); + InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpGenericPtrMemSemantics].capabilities.push_back(CapabilityKernel); InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpTranspose].capabilities.push_back(CapMatrix); + InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpTranspose].capabilities.push_back(CapabilityMatrix); InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'"); InstructionDesc[OpIsNan].operands.push(OperandId, "'x'"); InstructionDesc[OpIsInf].operands.push(OperandId, "'x'"); - InstructionDesc[OpIsFinite].capabilities.push_back(CapKernel); + InstructionDesc[OpIsFinite].capabilities.push_back(CapabilityKernel); InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'"); - InstructionDesc[OpIsNormal].capabilities.push_back(CapKernel); + InstructionDesc[OpIsNormal].capabilities.push_back(CapabilityKernel); InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'"); - InstructionDesc[OpSignBitSet].capabilities.push_back(CapKernel); + InstructionDesc[OpSignBitSet].capabilities.push_back(CapabilityKernel); InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'"); - InstructionDesc[OpLessOrGreater].capabilities.push_back(CapKernel); + InstructionDesc[OpLessOrGreater].capabilities.push_back(CapabilityKernel); InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'"); InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'"); - InstructionDesc[OpOrdered].capabilities.push_back(CapKernel); + InstructionDesc[OpOrdered].capabilities.push_back(CapabilityKernel); InstructionDesc[OpOrdered].operands.push(OperandId, "'x'"); InstructionDesc[OpOrdered].operands.push(OperandId, "'y'"); - InstructionDesc[OpUnordered].capabilities.push_back(CapKernel); + InstructionDesc[OpUnordered].capabilities.push_back(CapabilityKernel); InstructionDesc[OpUnordered].operands.push(OperandId, "'x'"); InstructionDesc[OpUnordered].operands.push(OperandId, "'y'"); InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'"); InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'"); - InstructionDesc[OpArrayLength].capabilities.push_back(CapShader); + InstructionDesc[OpArrayLength].capabilities.push_back(CapabilityShader); InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'"); InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'"); @@ -1650,47 +1864,52 @@ void Parameterize() InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'"); InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'"); - InstructionDesc[OpMatrixTimesScalar].capabilities.push_back(CapMatrix); + InstructionDesc[OpMatrixTimesScalar].capabilities.push_back(CapabilityMatrix); InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'"); InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'"); - InstructionDesc[OpVectorTimesMatrix].capabilities.push_back(CapMatrix); + InstructionDesc[OpVectorTimesMatrix].capabilities.push_back(CapabilityMatrix); InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'"); InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'"); - InstructionDesc[OpMatrixTimesVector].capabilities.push_back(CapMatrix); + InstructionDesc[OpMatrixTimesVector].capabilities.push_back(CapabilityMatrix); InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'"); InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpMatrixTimesMatrix].capabilities.push_back(CapMatrix); + InstructionDesc[OpMatrixTimesMatrix].capabilities.push_back(CapabilityMatrix); InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'"); InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'"); - InstructionDesc[OpOuterProduct].capabilities.push_back(CapMatrix); + InstructionDesc[OpOuterProduct].capabilities.push_back(CapabilityMatrix); InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'"); InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'"); InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'"); InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'"); - InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'"); + InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'"); - InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'"); + InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'"); - InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'"); + InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'"); InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'"); InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpLogicalXor].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpLogicalXor].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'"); InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'"); + + InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'"); + + InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'"); InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'"); @@ -1700,6 +1919,27 @@ void Parameterize() InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'"); InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpBitFieldInsert].capabilities.push_back(CapabilityShader); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'"); + + InstructionDesc[OpBitFieldSExtract].capabilities.push_back(CapabilityShader); + InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'"); + InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'"); + + InstructionDesc[OpBitFieldUExtract].capabilities.push_back(CapabilityShader); + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'"); + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'"); + + InstructionDesc[OpBitReverse].capabilities.push_back(CapabilityShader); + InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'"); + + InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'"); + InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'"); InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'"); InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'"); @@ -1770,138 +2010,140 @@ void Parameterize() InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpDPdx].capabilities.push_back(CapShader); + InstructionDesc[OpDPdx].capabilities.push_back(CapabilityShader); InstructionDesc[OpDPdx].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdy].capabilities.push_back(CapShader); + InstructionDesc[OpDPdy].capabilities.push_back(CapabilityShader); InstructionDesc[OpDPdy].operands.push(OperandId, "'P'"); - InstructionDesc[OpFwidth].capabilities.push_back(CapShader); + InstructionDesc[OpFwidth].capabilities.push_back(CapabilityShader); InstructionDesc[OpFwidth].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdxFine].capabilities.push_back(CapShader); + InstructionDesc[OpDPdxFine].capabilities.push_back(CapabilityShader); InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdyFine].capabilities.push_back(CapShader); + InstructionDesc[OpDPdyFine].capabilities.push_back(CapabilityShader); InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'"); - InstructionDesc[OpFwidthFine].capabilities.push_back(CapShader); + InstructionDesc[OpFwidthFine].capabilities.push_back(CapabilityShader); InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdxCoarse].capabilities.push_back(CapShader); + InstructionDesc[OpDPdxCoarse].capabilities.push_back(CapabilityShader); InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdyCoarse].capabilities.push_back(CapShader); + InstructionDesc[OpDPdyCoarse].capabilities.push_back(CapabilityShader); InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'"); - InstructionDesc[OpFwidthCoarse].capabilities.push_back(CapShader); + InstructionDesc[OpFwidthCoarse].capabilities.push_back(CapabilityShader); InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'"); - InstructionDesc[OpEmitVertex].capabilities.push_back(CapGeom); + InstructionDesc[OpEmitVertex].capabilities.push_back(CapabilityGeometry); - InstructionDesc[OpEndPrimitive].capabilities.push_back(CapGeom); + InstructionDesc[OpEndPrimitive].capabilities.push_back(CapabilityGeometry); InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'"); - InstructionDesc[OpEmitStreamVertex].capabilities.push_back(CapGeom); + InstructionDesc[OpEmitStreamVertex].capabilities.push_back(CapabilityGeometry); InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'"); - InstructionDesc[OpEndStreamPrimitive].capabilities.push_back(CapGeom); + InstructionDesc[OpEndStreamPrimitive].capabilities.push_back(CapabilityGeometry); - InstructionDesc[OpControlBarrier].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'"); + InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpMemoryBarrier].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'"); InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpImagePointer].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImagePointer].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImagePointer].operands.push(OperandId, "'Sample'"); - - InstructionDesc[OpAtomicInit].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicInit].operands.push(OperandId, "'Value'"); + InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'"); InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicLoad].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicStore].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicExchange].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'"); InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'"); InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'"); InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'"); + InstructionDesc[OpAtomicCompareExchangeWeak].capabilities.push_back(CapabilityKernel); InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIIncrement].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIDecrement].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIAdd].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicISub].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicUMin].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicUMax].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicIMin].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIMin].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpAtomicIMin].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicIMin].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicIMax].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIMax].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpAtomicIMax].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicIMax].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicAnd].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicOr].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'"); InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicXor].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'"); - InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Label'"); + InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'"); InstructionDesc[OpLoopMerge].operands.push(OperandLoop, ""); - InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Label'"); + InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'"); InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, ""); InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'"); @@ -1915,198 +2157,205 @@ void Parameterize() InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'"); InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'"); - InstructionDesc[OpKill].capabilities.push_back(CapShader); + InstructionDesc[OpKill].capabilities.push_back(CapabilityShader); InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'"); - InstructionDesc[OpUnreachable].capabilities.push_back(CapKernel); + InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'"); - InstructionDesc[OpLifetimeStart].operands.push(OperandId, ""); - InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, ""); + InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'"); - InstructionDesc[OpLifetimeStop].operands.push(OperandId, ""); - InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, ""); - - InstructionDesc[OpCompileFlag].capabilities.push_back(CapKernel); - InstructionDesc[OpCompileFlag].operands.push(OperandLiteralString, "'Flag'"); - - InstructionDesc[OpAsyncGroupCopy].capabilities.push_back(CapKernel); - InstructionDesc[OpAsyncGroupCopy].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpAsyncGroupCopy].capabilities.push_back(CapabilityKernel); + InstructionDesc[OpAsyncGroupCopy].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Destination'"); InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Source'"); InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Num Elements'"); InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Stride'"); InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Event'"); - InstructionDesc[OpWaitGroupEvents].capabilities.push_back(CapKernel); - InstructionDesc[OpWaitGroupEvents].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpWaitGroupEvents].capabilities.push_back(CapabilityKernel); + InstructionDesc[OpWaitGroupEvents].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpWaitGroupEvents].operands.push(OperandId, "'Num Events'"); InstructionDesc[OpWaitGroupEvents].operands.push(OperandId, "'Events List'"); - InstructionDesc[OpGroupAll].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupAll].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupAll].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'"); - InstructionDesc[OpGroupAny].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupAny].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupAny].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'"); - InstructionDesc[OpGroupBroadcast].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupBroadcast].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupBroadcast].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'"); InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'"); - InstructionDesc[OpGroupIAdd].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupIAdd].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupIAdd].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'"); - InstructionDesc[OpGroupFAdd].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupFAdd].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupFAdd].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'"); - InstructionDesc[OpGroupUMin].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupUMin].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupUMin].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'"); - InstructionDesc[OpGroupSMin].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupSMin].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupSMin].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupSMin].operands.push(OperandId, "X"); - InstructionDesc[OpGroupFMin].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupFMin].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupFMin].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupFMin].operands.push(OperandId, "X"); - InstructionDesc[OpGroupUMax].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupUMax].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupUMax].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupUMax].operands.push(OperandId, "X"); - InstructionDesc[OpGroupSMax].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupSMax].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupSMax].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupSMax].operands.push(OperandId, "X"); - InstructionDesc[OpGroupFMax].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupFMax].operands.push(OperandExecutionScope, "'Scope'"); + InstructionDesc[OpGroupFMax].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupFMax].operands.push(OperandId, "X"); - InstructionDesc[OpReadPipe].capabilities.push_back(CapKernel); - InstructionDesc[OpReadPipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpReadPipe].operands.push(OperandId, "'ptr'"); + InstructionDesc[OpReadPipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpWritePipe].capabilities.push_back(CapKernel); - InstructionDesc[OpWritePipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpWritePipe].operands.push(OperandId, "'ptr'"); + InstructionDesc[OpWritePipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpReservedReadPipe].capabilities.push_back(CapKernel); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'reserve_id'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'index'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'ptr'"); + InstructionDesc[OpReservedReadPipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpReservedWritePipe].capabilities.push_back(CapKernel); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'reserve_id'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'index'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'ptr'"); + InstructionDesc[OpReservedWritePipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpReserveReadPipePackets].capabilities.push_back(CapKernel); - InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'p'"); - InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'num_packets'"); + InstructionDesc[OpReserveReadPipePackets].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpReserveWritePipePackets].capabilities.push_back(CapKernel); - InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'p'"); - InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'num_packets'"); + InstructionDesc[OpReserveWritePipePackets].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpCommitReadPipe].capabilities.push_back(CapKernel); - InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'reserve_id'"); + InstructionDesc[OpCommitReadPipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpCommitWritePipe].capabilities.push_back(CapKernel); - InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'reserve_id'"); + InstructionDesc[OpCommitWritePipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpIsValidReserveId].capabilities.push_back(CapKernel); - InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'reserve_id'"); + InstructionDesc[OpIsValidReserveId].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpGetNumPipePackets].capabilities.push_back(CapKernel); - InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'p'"); + InstructionDesc[OpGetNumPipePackets].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGetMaxPipePackets].capabilities.push_back(CapKernel); - InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'p'"); + InstructionDesc[OpGetMaxPipePackets].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGroupReserveReadPipePackets].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'p'"); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'num_packets'"); + InstructionDesc[OpGroupReserveReadPipePackets].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpGroupReserveWritePipePackets].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'p'"); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'num_packets'"); + InstructionDesc[OpGroupReserveWritePipePackets].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpGroupCommitReadPipe].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'reserve_id'"); + InstructionDesc[OpGroupCommitReadPipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpGroupCommitWritePipe].capabilities.push_back(CapKernel); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandExecutionScope, "'Scope'"); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'p'"); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'reserve_id'"); + InstructionDesc[OpGroupCommitWritePipe].capabilities.push_back(CapabilityPipes); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpBuildNDRange].capabilities.push_back(CapKernel); + InstructionDesc[OpBuildNDRange].capabilities.push_back(CapabilityDeviceEnqueue); InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'"); InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'"); InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'"); - InstructionDesc[OpGetDefaultQueue].capabilities.push_back(CapKernel); + InstructionDesc[OpGetDefaultQueue].capabilities.push_back(CapabilityDeviceEnqueue); - InstructionDesc[OpCaptureEventProfilingInfo].capabilities.push_back(CapKernel); + InstructionDesc[OpCaptureEventProfilingInfo].capabilities.push_back(CapabilityDeviceEnqueue); - InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'event'"); - InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandKernelProfilingInfo, "'info'"); - InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'value'"); + InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'"); + InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'"); + InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'"); - InstructionDesc[OpSetUserEventStatus].capabilities.push_back(CapKernel); + InstructionDesc[OpSetUserEventStatus].capabilities.push_back(CapabilityDeviceEnqueue); - InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'event'"); - InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'status'"); + InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'"); + InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'"); - InstructionDesc[OpIsValidEvent].capabilities.push_back(CapKernel); - InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'event'"); + InstructionDesc[OpIsValidEvent].capabilities.push_back(CapabilityDeviceEnqueue); + InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'"); - InstructionDesc[OpCreateUserEvent].capabilities.push_back(CapKernel); + InstructionDesc[OpCreateUserEvent].capabilities.push_back(CapabilityDeviceEnqueue); - InstructionDesc[OpRetainEvent].capabilities.push_back(CapKernel); - InstructionDesc[OpRetainEvent].operands.push(OperandId, "'event'"); + InstructionDesc[OpRetainEvent].capabilities.push_back(CapabilityDeviceEnqueue); + InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'"); - InstructionDesc[OpReleaseEvent].capabilities.push_back(CapKernel); - InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'event'"); + InstructionDesc[OpReleaseEvent].capabilities.push_back(CapabilityDeviceEnqueue); + InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'"); - InstructionDesc[OpGetKernelWorkGroupSize].capabilities.push_back(CapKernel); + InstructionDesc[OpGetKernelWorkGroupSize].capabilities.push_back(CapabilityDeviceEnqueue); InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'"); - InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].capabilities.push_back(CapKernel); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].capabilities.push_back(CapabilityDeviceEnqueue); InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'"); - InstructionDesc[OpGetKernelNDrangeSubGroupCount].capabilities.push_back(CapKernel); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].capabilities.push_back(CapabilityDeviceEnqueue); InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'"); InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'"); - InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].capabilities.push_back(CapKernel); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].capabilities.push_back(CapabilityDeviceEnqueue); InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'"); InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'"); - InstructionDesc[OpEnqueueKernel].capabilities.push_back(CapKernel); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'q'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandKernelEnqueueFlags, "'flags'"); + InstructionDesc[OpEnqueueKernel].capabilities.push_back(CapabilityDeviceEnqueue); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'"); InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'"); InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'"); InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'"); @@ -2117,8 +2366,8 @@ void Parameterize() InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'"); InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'"); - InstructionDesc[OpEnqueueMarker].capabilities.push_back(CapKernel); - InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'q'"); + InstructionDesc[OpEnqueueMarker].capabilities.push_back(CapabilityDeviceEnqueue); + InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'"); InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'"); InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'"); InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'"); diff --git a/SPIRV/doc.h b/SPIRV/doc.h old mode 100644 new mode 100755 index 9295af0c..c97ca850 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -1,5 +1,5 @@ // -//Copyright (C) 2014 LunarG, Inc. +//Copyright (C) 2014-2015 LunarG, Inc. // //All rights reserved. // @@ -40,7 +40,7 @@ // Parameterize the SPIR-V enumerants. // -#include "spirv.h" +#include "spirv.hpp" #include @@ -64,6 +64,10 @@ const char* LoopControlString(int); const char* FunctionControlString(int); const char* SamplerAddressingModeString(int); const char* SamplerFilterModeString(int); +const char* ImageFormatString(int); +const char* ImageChannelOrderString(int); +const char* ImageChannelTypeString(int); +const char* ImageOperands(int); const char* FPFastMathString(int); const char* FPRoundingModeString(int); const char* LinkageTypeString(int); @@ -75,11 +79,12 @@ const char* ExecutionScopeString(int); const char* GroupOperationString(int); const char* KernelEnqueueFlagsString(int); const char* KernelProfilingInfoString(int); +const char* CapabilityString(int); const char* OpcodeString(int); // For grouping opcodes into subsections enum OpcodeClass { - OpClassMisc, // default, until opcode is classified + OpClassMisc, OpClassDebug, OpClassAnnotate, OpClassExtension, @@ -88,10 +93,11 @@ enum OpcodeClass { OpClassConstant, OpClassMemory, OpClassFunction, - OpClassTexture, + OpClassImage, OpClassConvert, OpClassComposite, OpClassArithmetic, + OpClassBit, OpClassRelationalLogical, OpClassDerivative, OpClassFlowControl, @@ -102,7 +108,8 @@ enum OpcodeClass { OpClassDeviceSideEnqueue, OpClassPipe, - OpClassCount + OpClassCount, + OpClassMissing // all instructions start out as missing }; // For parameterizing operands. @@ -110,8 +117,11 @@ enum OperandClass { OperandNone, OperandId, OperandOptionalId, + OperandOptionalImage, OperandVariableIds, + OperandOptionalLiteral, OperandVariableLiterals, + OperandVariableIdLiteral, OperandVariableLiteralId, OperandLiteralNumber, OperandLiteralString, @@ -124,6 +134,10 @@ enum OperandClass { OperandDimensionality, OperandSamplerAddressingMode, OperandSamplerFilterMode, + OperandSamplerImageFormat, + OperandImageChannelOrder, + OperandImageChannelDataType, + OperandImageOperands, OperandFPFastMath, OperandFPRoundingMode, OperandLinkageType, @@ -136,29 +150,17 @@ enum OperandClass { OperandFunction, OperandMemorySemantics, OperandMemoryAccess, - OperandExecutionScope, + OperandScope, OperandGroupOperation, OperandKernelEnqueueFlags, OperandKernelProfilingInfo, + OperandCapability, OperandOpcode, OperandCount }; -// Set of capabilities. Generally, something is assumed to be in core, -// if nothing else is said. So, these are used to identify when something -// requires a specific capability to be declared. -enum Capability { - CapMatrix, - CapShader, - CapGeom, - CapTess, - CapAddr, - CapLink, - CapKernel -}; - // Any specific enum can have a set of capabilities that allow it: typedef std::vector EnumCaps; @@ -213,8 +215,8 @@ public: class InstructionParameters { public: InstructionParameters() : - opDesc(0), - opClass(OpClassMisc), + opDesc("TBD"), + opClass(OpClassMissing), typePresent(true), // most normal, only exceptions have to be spelled out resultPresent(true) // most normal, only exceptions have to be spelled out { } @@ -238,7 +240,7 @@ protected: int resultPresent : 1; }; -const int OpcodeCeiling = 267; +const int OpcodeCeiling = 305; // The set of objects that hold all the instruction/operand // parameterization information. diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h old mode 100644 new mode 100755 index 028671d7..8bf369c7 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -50,7 +50,7 @@ #ifndef spvIR_H #define spvIR_H -#include "spirv.h" +#include "spirv.hpp" #include #include diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp old mode 100644 new mode 100755 index 8eb3ee3e..f5646c04 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -42,7 +42,7 @@ #include "./../glslang/Include/revision.h" #include "./../glslang/Public/ShaderLang.h" #include "../SPIRV/GlslangToSpv.h" -#include "../SPIRV/GLSL450Lib.h" +#include "../SPIRV/GLSL.std.450.h" #include "../SPIRV/doc.h" #include "../SPIRV/disassemble.h" #include @@ -644,8 +644,6 @@ CompileShaders(void*) return 0; } -const char* GlslStd450DebugNames[GLSL_STD_450::Count]; - // Outputs the given string, but only if it is non-null and non-empty. // This prevents erroneous newlines from appearing. void PutsIfNonEmpty(const char* str) @@ -754,7 +752,6 @@ void CompileAndLinkShaders() glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage)); if (Options & EOptionHumanReadableSpv) { spv::Parameterize(); - GLSL_STD_450::GetDebugNames(GlslStd450DebugNames); spv::Disassemble(std::cout, spirv); } } @@ -790,7 +787,7 @@ int C_DECL main(int argc, char* argv[]) std::string spirvVersion; glslang::GetSpirvVersion(spirvVersion); printf("SPIR-V Version %s\n", spirvVersion.c_str()); - printf("GLSL.std.450 Version %d, Revision %d\n", GLSL_STD_450::Version, GLSL_STD_450::Revision); + printf("GLSL.std.450 Version %d, Revision %d\n", GLSLstd450Version, GLSLstd450Revision); if (Worklist.empty()) return ESuccess; } diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out old mode 100644 new mode 100755 index 151535b0..45e733c8 --- a/Test/baseResults/spv.100ops.frag.out +++ b/Test/baseResults/spv.100ops.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 48 Source ESSL 100 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "foo(" Name 12 "face1" @@ -19,68 +21,68 @@ Linked fragment stage: Name 22 "low" Name 27 "high" Name 37 "gl_FragColor" - Decorate 12(face1) PrecisionLow - Decorate 14(face2) PrecisionLow - Decorate 18(z) PrecisionMedium - Decorate 22(low) PrecisionMedium - Decorate 27(high) PrecisionMedium - Decorate 37(gl_FragColor) PrecisionMedium + Decorate 12(face1) RelaxedPrecision + Decorate 14(face2) RelaxedPrecision + Decorate 18(z) RelaxedPrecision + Decorate 22(low) RelaxedPrecision + Decorate 27(high) RelaxedPrecision + Decorate 37(gl_FragColor) RelaxedPrecision Decorate 37(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 - 8: TypeFunction 7(float) + 8: TypeFunction 7(float) 11: TypePointer PrivateGlobal 7(float) - 12(face1): 11(ptr) Variable PrivateGlobal + 12(face1): 11(ptr) Variable PrivateGlobal 13: 7(float) Constant 1093664768 - 14(face2): 11(ptr) Variable PrivateGlobal + 14(face2): 11(ptr) Variable PrivateGlobal 15: 7(float) Constant 3221225472 16: TypeInt 32 1 17: TypePointer Function 16(int) 19: 16(int) Constant 3 20: 16(int) Constant 2 21: TypePointer UniformConstant 16(int) - 22(low): 21(ptr) Variable UniformConstant + 22(low): 21(ptr) Variable UniformConstant 25: 16(int) Constant 1 - 27(high): 21(ptr) Variable UniformConstant + 27(high): 21(ptr) Variable UniformConstant 29: TypeBool 35: TypeVector 7(float) 4 36: TypePointer Output 35(fvec4) -37(gl_FragColor): 36(ptr) Variable Output +37(gl_FragColor): 36(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 18(z): 17(ptr) Variable Function - Store 12(face1) 13 - Store 14(face2) 15 - Store 18(z) 19 - 23: 16(int) Load 22(low) + 18(z): 17(ptr) Variable Function + Store 12(face1) 13 + Store 14(face2) 15 + Store 18(z) 19 + 23: 16(int) Load 22(low) 24: 16(int) IMul 20 23 26: 16(int) IAdd 24 25 - 28: 16(int) Load 27(high) + 28: 16(int) Load 27(high) 30: 29(bool) SLessThan 26 28 SelectionMerge 32 None - BranchConditional 30 31 32 + BranchConditional 30 31 32 31: Label - 33: 16(int) Load 18(z) + 33: 16(int) Load 18(z) 34: 16(int) IAdd 33 25 - Store 18(z) 34 + Store 18(z) 34 Branch 32 32: Label - 38: 7(float) Load 12(face1) - 39: 16(int) Load 18(z) + 38: 7(float) Load 12(face1) + 39: 16(int) Load 18(z) 40: 7(float) ConvertSToF 39 41: 35(fvec4) CompositeConstruct 40 40 40 40 42: 35(fvec4) VectorTimesScalar 41 38 - 43: 7(float) FunctionCall 9(foo() + 43: 7(float) FunctionCall 9(foo() 44: 35(fvec4) CompositeConstruct 43 43 43 43 45: 35(fvec4) FAdd 42 44 - Store 37(gl_FragColor) 45 + Store 37(gl_FragColor) 45 Branch 6 6: Label Return FunctionEnd 9(foo(): 7(float) Function None 8 10: Label - 46: 7(float) Load 14(face2) + 46: 7(float) Load 14(face2) ReturnValue 46 FunctionEnd diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out old mode 100644 new mode 100755 index afcd6e0c..e86e3f95 --- a/Test/baseResults/spv.140.frag.out +++ b/Test/baseResults/spv.140.frag.out @@ -5,12 +5,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 90 +// Id's are bound by 93 Source GLSL 140 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "foo(" Name 12 "i1" @@ -19,130 +21,137 @@ Linked fragment stage: Name 29 "o" Name 34 "gl_ClipDistance" Name 43 "k" - Name 54 "sampR" - Name 60 "sampB" - Name 83 "samp2Da" - Name 87 "bn" - MemberName 87(bn) 0 "matra" - MemberName 87(bn) 1 "matca" - MemberName 87(bn) 2 "matr" - MemberName 87(bn) 3 "matc" - MemberName 87(bn) 4 "matrdef" - Name 89 "" + Name 55 "sampR" + Name 62 "sampB" + Name 86 "samp2Da" + Name 90 "bn" + MemberName 90(bn) 0 "matra" + MemberName 90(bn) 1 "matca" + MemberName 90(bn) 2 "matr" + MemberName 90(bn) 3 "matc" + MemberName 90(bn) 4 "matrdef" + Name 92 "" Decorate 17(gl_FrontFacing) BuiltIn FrontFacing - Decorate 34(gl_ClipDistance) Smooth + Decorate 34(gl_ClipDistance) Smooth Decorate 34(gl_ClipDistance) BuiltIn ClipDistance - Decorate 43(k) Smooth - Decorate 83(samp2Da) NoStaticUse - MemberDecorate 87(bn) 0 RowMajor - MemberDecorate 87(bn) 1 ColMajor - MemberDecorate 87(bn) 2 RowMajor - MemberDecorate 87(bn) 3 ColMajor - MemberDecorate 87(bn) 4 RowMajor - Decorate 87(bn) GLSLStd140 - Decorate 87(bn) Block - Decorate 89 NoStaticUse + Decorate 43(k) Smooth + Decorate 86(samp2Da) NoStaticUse + MemberDecorate 90(bn) 0 RowMajor + MemberDecorate 90(bn) 0 Offset 0 + MemberDecorate 90(bn) 1 ColMajor + MemberDecorate 90(bn) 1 Offset 256 + MemberDecorate 90(bn) 2 RowMajor + MemberDecorate 90(bn) 2 Offset 512 + MemberDecorate 90(bn) 3 ColMajor + MemberDecorate 90(bn) 3 Offset 576 + MemberDecorate 90(bn) 4 RowMajor + MemberDecorate 90(bn) 4 Offset 640 + Decorate 90(bn) Block + Decorate 92 NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 - 8: TypeFunction 7(float) + 8: TypeFunction 7(float) 11: TypePointer PrivateGlobal 7(float) - 12(i1): 11(ptr) Variable PrivateGlobal + 12(i1): 11(ptr) Variable PrivateGlobal 13: TypePointer Function 7(float) 15: TypeBool 16: TypePointer Input 15(bool) -17(gl_FrontFacing): 16(ptr) Variable Input +17(gl_FrontFacing): 16(ptr) Variable Input 21: 7(float) Constant 3221225472 23: 7(float) Constant 1073741824 - 25(i2): 11(ptr) Variable PrivateGlobal + 25(i2): 11(ptr) Variable PrivateGlobal 26: 7(float) Constant 1120665600 27: TypeVector 7(float) 4 28: TypePointer Output 27(fvec4) - 29(o): 28(ptr) Variable Output + 29(o): 28(ptr) Variable Output 30: TypeInt 32 0 31: 30(int) Constant 5 32: TypeArray 7(float) 31 33: TypePointer Input 32 -34(gl_ClipDistance): 33(ptr) Variable Input +34(gl_ClipDistance): 33(ptr) Variable Input 35: TypeInt 32 1 36: 35(int) Constant 2 37: TypePointer Input 7(float) 42: TypePointer Input 27(fvec4) - 43(k): 42(ptr) Variable Input + 43(k): 42(ptr) Variable Input 45: TypeVector 35(int) 4 - 52: TypeSampler7(float) Rect filter+texture - 53: TypePointer UniformConstant 52 - 54(sampR): 53(ptr) Variable UniformConstant - 56: TypeVector 35(int) 2 - 58: TypeSampler35(int) Buffer filter+texture - 59: TypePointer UniformConstant 58 - 60(sampB): 59(ptr) Variable UniformConstant - 65: TypeVector 7(float) 2 - 68: 7(float) Constant 1120403456 - 79: TypeSampler7(float) 2D filter+texture - 80: 30(int) Constant 3 - 81: TypeArray 79 80 - 82: TypePointer UniformConstant 81 - 83(samp2Da): 82(ptr) Variable UniformConstant - 84: TypeMatrix 27(fvec4) 4 - 85: 30(int) Constant 4 - 86: TypeArray 84 85 - 87(bn): TypeStruct 86 86 84 84 84 - 88: TypePointer Uniform 87(bn) - 89: 88(ptr) Variable Uniform + 52: TypeImage 7(float) Rect sampled format:Unknown + 53: TypeSampledImage 52 + 54: TypePointer UniformConstant 53 + 55(sampR): 54(ptr) Variable UniformConstant + 57: TypeVector 35(int) 2 + 59: TypeImage 35(int) Buffer sampled format:Unknown + 60: TypeSampledImage 59 + 61: TypePointer UniformConstant 60 + 62(sampB): 61(ptr) Variable UniformConstant + 67: TypeVector 7(float) 2 + 70: 7(float) Constant 1120403456 + 81: TypeImage 7(float) 2D sampled format:Unknown + 82: TypeSampledImage 81 + 83: 30(int) Constant 3 + 84: TypeArray 82 83 + 85: TypePointer UniformConstant 84 + 86(samp2Da): 85(ptr) Variable UniformConstant + 87: TypeMatrix 27(fvec4) 4 + 88: 30(int) Constant 4 + 89: TypeArray 87 88 + 90(bn): TypeStruct 89 89 87 87 87 + 91: TypePointer Uniform 90(bn) + 92: 91(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label - 14: 13(ptr) Variable Function - 18: 15(bool) Load 17(gl_FrontFacing) + 14: 13(ptr) Variable Function + 18: 15(bool) Load 17(gl_FrontFacing) SelectionMerge 20 None - BranchConditional 18 19 22 + BranchConditional 18 19 22 19: Label - Store 14 21 + Store 14 21 Branch 20 22: Label - Store 14 23 + Store 14 23 Branch 20 20: Label - 24: 7(float) Load 14 - Store 12(i1) 24 - Store 25(i2) 26 + 24: 7(float) Load 14 + Store 12(i1) 24 + Store 25(i2) 26 38: 37(ptr) AccessChain 34(gl_ClipDistance) 36 - 39: 7(float) Load 38 - 40: 27(fvec4) Load 29(o) + 39: 7(float) Load 38 + 40: 27(fvec4) Load 29(o) 41: 27(fvec4) CompositeInsert 39 40 1 - Store 29(o) 41 - 44: 27(fvec4) Load 43(k) + Store 29(o) 41 + 44: 27(fvec4) Load 43(k) 46: 45(ivec4) ConvertFToS 44 47: 35(int) CompositeExtract 46 0 48: 37(ptr) AccessChain 34(gl_ClipDistance) 47 - 49: 7(float) Load 48 - 50: 27(fvec4) Load 29(o) + 49: 7(float) Load 48 + 50: 27(fvec4) Load 29(o) 51: 27(fvec4) CompositeInsert 49 50 2 - Store 29(o) 51 - 55: 52 Load 54(sampR) - 57: 56(ivec2) TextureQuerySize 55 - 61: 58 Load 60(sampB) - 62: 35(int) TextureQuerySize 61 - 63: 56(ivec2) CompositeConstruct 62 62 - 64: 56(ivec2) IAdd 57 63 - 66: 65(fvec2) ConvertSToF 64 - 67: 7(float) CompositeExtract 66 0 - 69: 7(float) FDiv 67 68 - 70: 27(fvec4) Load 29(o) - 71: 27(fvec4) CompositeInsert 69 70 3 - Store 29(o) 71 - 72: 7(float) FunctionCall 9(foo() - 73: 27(fvec4) Load 29(o) - 74: 27(fvec4) CompositeInsert 72 73 2 - Store 29(o) 74 + Store 29(o) 51 + 56: 53 Load 55(sampR) + 58: 57(ivec2) ImageQuerySize 56 + 63: 60 Load 62(sampB) + 64: 35(int) ImageQuerySize 63 + 65: 57(ivec2) CompositeConstruct 64 64 + 66: 57(ivec2) IAdd 58 65 + 68: 67(fvec2) ConvertSToF 66 + 69: 7(float) CompositeExtract 68 0 + 71: 7(float) FDiv 69 70 + 72: 27(fvec4) Load 29(o) + 73: 27(fvec4) CompositeInsert 71 72 3 + Store 29(o) 73 + 74: 7(float) FunctionCall 9(foo() + 75: 27(fvec4) Load 29(o) + 76: 27(fvec4) CompositeInsert 74 75 2 + Store 29(o) 76 Branch 6 6: Label Return FunctionEnd 9(foo(): 7(float) Function None 8 10: Label - 75: 7(float) Load 12(i1) - 76: 7(float) Load 25(i2) - 77: 7(float) FAdd 75 76 - ReturnValue 77 + 77: 7(float) Load 12(i1) + 78: 7(float) Load 25(i2) + 79: 7(float) FAdd 77 78 + ReturnValue 79 FunctionEnd diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out old mode 100644 new mode 100755 index c3a9fe6e..dcd1feba --- a/Test/baseResults/spv.150.geom.out +++ b/Test/baseResults/spv.150.geom.out @@ -8,12 +8,13 @@ Linked geometry stage: // Id's are bound by 72 Source GLSL 150 + Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 4 - ExecutionMode 4 InputTrianglesAdjacency + EntryPoint Geometry 4 "main" + ExecutionMode 4 InputTrianglesAdjacency ExecutionMode 4 Invocations 0 - ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 30 Name 4 "main" Name 9 "fromVertex" @@ -38,36 +39,36 @@ Linked geometry stage: Name 69 "toFragment" MemberName 69(toFragment) 0 "color" Name 71 "toF" - Decorate 9(fromVertex) Block + Decorate 9(fromVertex) Block Decorate 9(fromVertex) Stream 3 Decorate 11 Stream 3 - Decorate 14(fromVertex) Block + Decorate 14(fromVertex) Block MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 28(gl_PerVertex) Block + Decorate 28(gl_PerVertex) Block Decorate 28(gl_PerVertex) Stream 0 Decorate 30 Stream 0 MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 31(gl_PerVertex) Block + Decorate 31(gl_PerVertex) Block Decorate 48(gl_PrimitiveID) Stream 0 Decorate 48(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 50(gl_PrimitiveIDIn) BuiltIn PrimitiveId Decorate 52(gl_Layer) Stream 0 Decorate 52(gl_Layer) BuiltIn Layer - Decorate 69(toFragment) Block + Decorate 69(toFragment) Block Decorate 69(toFragment) Stream 3 Decorate 71(toF) Stream 3 - Decorate 71(toF) NoStaticUse + Decorate 71(toF) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 3 9(fromVertex): TypeStruct 8(fvec3) 10: TypePointer Output 9(fromVertex) - 11: 10(ptr) Variable Output + 11: 10(ptr) Variable Output 12: TypeInt 32 1 13: 12(int) Constant 0 14(fromVertex): TypeStruct 8(fvec3) @@ -75,7 +76,7 @@ Linked geometry stage: 16: 15(int) Constant 6 17: TypeArray 14(fromVertex) 16 18: TypePointer Input 17 - 19(fromV): 18(ptr) Variable Input + 19(fromV): 18(ptr) Variable Input 20: TypePointer Input 8(fvec3) 23: TypePointer Output 8(fvec3) 25: TypeVector 7(float) 4 @@ -83,11 +84,11 @@ Linked geometry stage: 27: TypeArray 7(float) 26 28(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27 29: TypePointer Output 28(gl_PerVertex) - 30: 29(ptr) Variable Output + 30: 29(ptr) Variable Output 31(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27 32: TypeArray 31(gl_PerVertex) 16 33: TypePointer Input 32 - 34(gl_in): 33(ptr) Variable Input + 34(gl_in): 33(ptr) Variable Input 35: TypePointer Input 25(fvec4) 38: TypePointer Output 25(fvec4) 40: 12(int) Constant 1 @@ -95,52 +96,52 @@ Linked geometry stage: 42: TypePointer Input 7(float) 45: TypePointer Output 7(float) 47: TypePointer Output 12(int) -48(gl_PrimitiveID): 47(ptr) Variable Output +48(gl_PrimitiveID): 47(ptr) Variable Output 49: TypePointer Input 12(int) -50(gl_PrimitiveIDIn): 49(ptr) Variable Input - 52(gl_Layer): 47(ptr) Variable Output +50(gl_PrimitiveIDIn): 49(ptr) Variable Input + 52(gl_Layer): 47(ptr) Variable Output 53: 12(int) Constant 2 54: 7(float) Constant 1073741824 69(toFragment): TypeStruct 8(fvec3) 70: TypePointer Output 69(toFragment) - 71(toF): 70(ptr) Variable Output + 71(toF): 70(ptr) Variable Output 4(main): 2 Function None 3 5: Label 21: 20(ptr) AccessChain 19(fromV) 13 13 - 22: 8(fvec3) Load 21 + 22: 8(fvec3) Load 21 24: 23(ptr) AccessChain 11 13 - Store 24 22 + Store 24 22 36: 35(ptr) AccessChain 34(gl_in) 13 13 - 37: 25(fvec4) Load 36 + 37: 25(fvec4) Load 36 39: 38(ptr) AccessChain 30 13 - Store 39 37 + Store 39 37 43: 42(ptr) AccessChain 34(gl_in) 41 40 - 44: 7(float) Load 43 + 44: 7(float) Load 43 46: 45(ptr) AccessChain 30 40 - Store 46 44 - 51: 12(int) Load 50(gl_PrimitiveIDIn) - Store 48(gl_PrimitiveID) 51 - Store 52(gl_Layer) 53 + Store 46 44 + 51: 12(int) Load 50(gl_PrimitiveIDIn) + Store 48(gl_PrimitiveID) 51 + Store 52(gl_Layer) 53 EmitVertex 55: 20(ptr) AccessChain 19(fromV) 13 13 - 56: 8(fvec3) Load 55 + 56: 8(fvec3) Load 55 57: 8(fvec3) VectorTimesScalar 56 54 58: 23(ptr) AccessChain 11 13 - Store 58 57 + Store 58 57 59: 35(ptr) AccessChain 34(gl_in) 13 13 - 60: 25(fvec4) Load 59 + 60: 25(fvec4) Load 59 61: 25(fvec4) VectorTimesScalar 60 54 62: 38(ptr) AccessChain 30 13 - Store 62 61 + Store 62 61 63: 42(ptr) AccessChain 34(gl_in) 41 40 - 64: 7(float) Load 63 + 64: 7(float) Load 63 65: 7(float) FMul 54 64 66: 45(ptr) AccessChain 30 40 - Store 66 65 - 67: 12(int) Load 50(gl_PrimitiveIDIn) + Store 66 65 + 67: 12(int) Load 50(gl_PrimitiveIDIn) 68: 12(int) IAdd 67 40 - Store 48(gl_PrimitiveID) 68 - Store 52(gl_Layer) 41 + Store 48(gl_PrimitiveID) 68 + Store 52(gl_Layer) 41 EmitVertex EndPrimitive Branch 6 diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out old mode 100644 new mode 100755 index 424ecc87..f55399fe --- a/Test/baseResults/spv.150.vert.out +++ b/Test/baseResults/spv.150.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 53 Source GLSL 150 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 14 "gl_PerVertex" MemberName 14(gl_PerVertex) 0 "gl_Position" @@ -38,19 +39,18 @@ Linked vertex stage: Name 49 "ui" Name 51 "gl_VertexID" Name 52 "gl_InstanceID" - MemberDecorate 14(gl_PerVertex) 0 Invariant + MemberDecorate 14(gl_PerVertex) 0 Invariant MemberDecorate 14(gl_PerVertex) 0 BuiltIn Position MemberDecorate 14(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 14(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 14(gl_PerVertex) 3 BuiltIn ClipVertex - Decorate 14(gl_PerVertex) Block - Decorate 49(ui) NoStaticUse + Decorate 14(gl_PerVertex) Block + Decorate 49(ui) NoStaticUse Decorate 51(gl_VertexID) BuiltIn VertexId - Decorate 51(gl_VertexID) NoStaticUse + Decorate 51(gl_VertexID) NoStaticUse Decorate 52(gl_InstanceID) BuiltIn InstanceId - Decorate 52(gl_InstanceID) NoStaticUse + Decorate 52(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypeInt 32 0 @@ -60,15 +60,15 @@ Linked vertex stage: 13: TypeArray 8(fvec4) 12 14(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 11 8(fvec4) 8(fvec4) 8(fvec4) 8(fvec4) 8(fvec4) 13 7(float) 15: TypePointer Output 14(gl_PerVertex) - 16: 15(ptr) Variable Output + 16: 15(ptr) Variable Output 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Input 8(fvec4) - 20(iv4): 19(ptr) Variable Input + 20(iv4): 19(ptr) Variable Input 22: TypePointer Output 8(fvec4) 24: 17(int) Constant 1 25: TypePointer UniformConstant 7(float) - 26(ps): 25(ptr) Variable UniformConstant + 26(ps): 25(ptr) Variable UniformConstant 28: TypePointer Output 7(float) 30: 17(int) Constant 2 34: 9(int) Constant 3 @@ -77,32 +77,32 @@ Linked vertex stage: 37: TypeArray 36(s1) 10 38(s2): TypeStruct 17(int) 37 39: TypePointer Output 38(s2) - 40(s2out): 39(ptr) Variable Output + 40(s2out): 39(ptr) Variable Output 41: TypePointer Function 17(int) 48: TypePointer UniformConstant 17(int) - 49(ui): 48(ptr) Variable UniformConstant + 49(ui): 48(ptr) Variable UniformConstant 50: TypePointer Input 17(int) - 51(gl_VertexID): 50(ptr) Variable Input -52(gl_InstanceID): 50(ptr) Variable Input + 51(gl_VertexID): 50(ptr) Variable Input +52(gl_InstanceID): 50(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 42(i): 41(ptr) Variable Function - 21: 8(fvec4) Load 20(iv4) + 42(i): 41(ptr) Variable Function + 21: 8(fvec4) Load 20(iv4) 23: 22(ptr) AccessChain 16 18 - Store 23 21 - 27: 7(float) Load 26(ps) + Store 23 21 + 27: 7(float) Load 26(ps) 29: 28(ptr) AccessChain 16 24 - Store 29 27 - 31: 8(fvec4) Load 20(iv4) + Store 29 27 + 31: 8(fvec4) Load 20(iv4) 32: 7(float) CompositeExtract 31 0 33: 28(ptr) AccessChain 16 30 30 - Store 33 32 - 43: 17(int) Load 42(i) - 44: 7(float) Load 26(ps) + Store 33 32 + 43: 17(int) Load 42(i) + 44: 7(float) Load 26(ps) 45: 22(ptr) AccessChain 40(s2out) 24 43 30 30 - 46: 8(fvec4) Load 45 + 46: 8(fvec4) Load 45 47: 8(fvec4) CompositeInsert 44 46 3 - Store 45 47 + Store 45 47 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out old mode 100644 new mode 100755 index 1e61e9ac..916a5a94 --- a/Test/baseResults/spv.300BuiltIns.vert.out +++ b/Test/baseResults/spv.300BuiltIns.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 41 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 12 "gl_VertexID" @@ -19,63 +20,59 @@ Linked vertex stage: Name 26 "ps" Name 34 "gl_PointSize" Name 40 "gl_InstanceID" - Decorate 9(i) PrecisionMedium - Decorate 12(gl_VertexID) PrecisionHigh + Decorate 9(i) RelaxedPrecision Decorate 12(gl_VertexID) BuiltIn VertexId - Decorate 17(j) PrecisionMedium - Decorate 24(gl_Position) PrecisionHigh - Decorate 24(gl_Position) Invariant + Decorate 17(j) RelaxedPrecision + Decorate 24(gl_Position) Invariant Decorate 24(gl_Position) BuiltIn Position - Decorate 26(ps) PrecisionMedium - Decorate 34(gl_PointSize) PrecisionHigh + Decorate 26(ps) RelaxedPrecision Decorate 34(gl_PointSize) BuiltIn PointSize - Decorate 40(gl_InstanceID) PrecisionHigh Decorate 40(gl_InstanceID) BuiltIn InstanceId - Decorate 40(gl_InstanceID) NoStaticUse + Decorate 40(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 4 11: TypePointer Input 7(int) - 12(gl_VertexID): 11(ptr) Variable Input + 12(gl_VertexID): 11(ptr) Variable Input 15: 7(int) Constant 10 21: TypeFloat 32 22: TypeVector 21(float) 4 23: TypePointer Output 22(fvec4) - 24(gl_Position): 23(ptr) Variable Output + 24(gl_Position): 23(ptr) Variable Output 25: TypePointer Input 21(float) - 26(ps): 25(ptr) Variable Input + 26(ps): 25(ptr) Variable Input 33: TypePointer Output 21(float) -34(gl_PointSize): 33(ptr) Variable Output -40(gl_InstanceID): 11(ptr) Variable Input +34(gl_PointSize): 33(ptr) Variable Output +40(gl_InstanceID): 11(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - 17(j): 8(ptr) Variable Function - 13: 7(int) Load 12(gl_VertexID) + 9(i): 8(ptr) Variable Function + 17(j): 8(ptr) Variable Function + 13: 7(int) Load 12(gl_VertexID) 14: 7(int) IMul 10 13 16: 7(int) ISub 14 15 - Store 9(i) 16 - 18: 7(int) Load 12(gl_VertexID) + Store 9(i) 16 + 18: 7(int) Load 12(gl_VertexID) 19: 7(int) IMul 10 18 20: 7(int) ISub 19 15 - Store 17(j) 20 - 27: 21(float) Load 26(ps) + Store 17(j) 20 + 27: 21(float) Load 26(ps) 28: 22(fvec4) CompositeConstruct 27 27 27 27 - Store 24(gl_Position) 28 - 29: 7(int) Load 9(i) + Store 24(gl_Position) 28 + 29: 7(int) Load 9(i) 30: 21(float) ConvertSToF 29 - 31: 22(fvec4) Load 24(gl_Position) + 31: 22(fvec4) Load 24(gl_Position) 32: 22(fvec4) VectorTimesScalar 31 30 - Store 24(gl_Position) 32 - 35: 21(float) Load 26(ps) - Store 34(gl_PointSize) 35 - 36: 7(int) Load 17(j) + Store 24(gl_Position) 32 + 35: 21(float) Load 26(ps) + Store 34(gl_PointSize) 35 + 36: 7(int) Load 17(j) 37: 21(float) ConvertSToF 36 - 38: 21(float) Load 34(gl_PointSize) + 38: 21(float) Load 34(gl_PointSize) 39: 21(float) FMul 38 37 - Store 34(gl_PointSize) 39 + Store 34(gl_PointSize) 39 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out old mode 100644 new mode 100755 index 678ceeca..9845acfc --- a/Test/baseResults/spv.300layout.frag.out +++ b/Test/baseResults/spv.300layout.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 38 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "c" Name 12 "color" @@ -20,27 +22,27 @@ Linked fragment stage: Name 16 "s" Name 27 "p" Name 30 "pos" - Decorate 10(c) PrecisionMedium + Decorate 10(c) RelaxedPrecision Decorate 10(c) Location 7 - Decorate 12(color) PrecisionMedium - Decorate 12(color) Smooth - MemberDecorate 14(S) 0 PrecisionMedium - MemberDecorate 14(S) 1 PrecisionMedium - Decorate 27(p) PrecisionMedium + Decorate 12(color) RelaxedPrecision + Decorate 12(color) Smooth + MemberDecorate 14(S) 0 RelaxedPrecision + MemberDecorate 14(S) 1 RelaxedPrecision + Decorate 27(p) RelaxedPrecision Decorate 27(p) Location 3 - Decorate 30(pos) PrecisionMedium - Decorate 30(pos) Smooth + Decorate 30(pos) RelaxedPrecision + Decorate 30(pos) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 3 9: TypePointer Output 8(fvec3) - 10(c): 9(ptr) Variable Output + 10(c): 9(ptr) Variable Output 11: TypePointer Input 8(fvec3) - 12(color): 11(ptr) Variable Input + 12(color): 11(ptr) Variable Input 14(S): TypeStruct 8(fvec3) 7(float) 15: TypePointer Input 14(S) - 16(s): 15(ptr) Variable Input + 16(s): 15(ptr) Variable Input 17: TypeInt 32 1 18: 17(int) Constant 0 22: TypeVector 7(float) 4 @@ -48,25 +50,25 @@ Linked fragment stage: 24: 23(int) Constant 2 25: TypeArray 22(fvec4) 24 26: TypePointer Output 25 - 27(p): 26(ptr) Variable Output + 27(p): 26(ptr) Variable Output 28: 17(int) Constant 1 29: TypePointer Input 22(fvec4) - 30(pos): 29(ptr) Variable Input + 30(pos): 29(ptr) Variable Input 32: TypePointer Input 7(float) 36: TypePointer Output 22(fvec4) 4(main): 2 Function None 3 5: Label - 13: 8(fvec3) Load 12(color) + 13: 8(fvec3) Load 12(color) 19: 11(ptr) AccessChain 16(s) 18 - 20: 8(fvec3) Load 19 + 20: 8(fvec3) Load 19 21: 8(fvec3) FAdd 13 20 - Store 10(c) 21 - 31: 22(fvec4) Load 30(pos) + Store 10(c) 21 + 31: 22(fvec4) Load 30(pos) 33: 32(ptr) AccessChain 16(s) 28 - 34: 7(float) Load 33 + 34: 7(float) Load 33 35: 22(fvec4) VectorTimesScalar 31 34 37: 36(ptr) AccessChain 27(p) 28 - Store 37 35 + Store 37 35 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out old mode 100644 new mode 100755 index 5a813b86..1c78f6f7 --- a/Test/baseResults/spv.300layoutp.vert.out +++ b/Test/baseResults/spv.300layoutp.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 112 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 10 "pos" Name 12 "p" @@ -41,64 +42,47 @@ Linked vertex stage: Name 80 "s" Name 110 "gl_VertexID" Name 111 "gl_InstanceID" - Decorate 10(pos) PrecisionHigh - Decorate 10(pos) Smooth - Decorate 12(p) PrecisionHigh + Decorate 10(pos) Smooth Decorate 12(p) Location 3 - MemberDecorate 18(Transform) 0 RowMajor - MemberDecorate 18(Transform) 0 PrecisionHigh - MemberDecorate 18(Transform) 1 ColMajor - MemberDecorate 18(Transform) 1 PrecisionHigh - MemberDecorate 18(Transform) 2 RowMajor - MemberDecorate 18(Transform) 2 PrecisionHigh - MemberDecorate 18(Transform) 3 PrecisionHigh - Decorate 18(Transform) GLSLStd140 - Decorate 18(Transform) Block - MemberDecorate 34(T3) 0 ColMajor - MemberDecorate 34(T3) 0 PrecisionHigh - MemberDecorate 34(T3) 1 RowMajor - MemberDecorate 34(T3) 1 PrecisionHigh - MemberDecorate 34(T3) 2 ColMajor - MemberDecorate 34(T3) 2 PrecisionHigh - MemberDecorate 34(T3) 3 PrecisionHigh - Decorate 34(T3) GLSLShared - Decorate 34(T3) Block - MemberDecorate 44(T2) 1 RowMajor - MemberDecorate 44(T2) 1 PrecisionHigh - Decorate 44(T2) GLSLShared - Decorate 44(T2) Block - Decorate 52(color) PrecisionHigh - Decorate 52(color) Smooth - Decorate 54(c) PrecisionHigh + MemberDecorate 18(Transform) 0 RowMajor + MemberDecorate 18(Transform) 0 Offset 0 + MemberDecorate 18(Transform) 1 ColMajor + MemberDecorate 18(Transform) 1 Offset 64 + MemberDecorate 18(Transform) 2 RowMajor + MemberDecorate 18(Transform) 2 Offset 128 + MemberDecorate 18(Transform) 3 Offset 176 + Decorate 18(Transform) Block + MemberDecorate 34(T3) 0 ColMajor + MemberDecorate 34(T3) 1 RowMajor + MemberDecorate 34(T3) 2 ColMajor + Decorate 34(T3) GLSLShared + Decorate 34(T3) Block + MemberDecorate 44(T2) 1 RowMajor + Decorate 44(T2) GLSLShared + Decorate 44(T2) Block + Decorate 52(color) Smooth Decorate 54(c) Location 7 - Decorate 62(iout) PrecisionHigh - Decorate 62(iout) Flat - Decorate 68(uiuin) PrecisionHigh - Decorate 74(aiv2) PrecisionHigh + Decorate 62(iout) Flat Decorate 74(aiv2) Location 9 - MemberDecorate 78(S) 0 PrecisionHigh - MemberDecorate 78(S) 1 PrecisionHigh - Decorate 110(gl_VertexID) PrecisionHigh Decorate 110(gl_VertexID) BuiltIn VertexId - Decorate 110(gl_VertexID) NoStaticUse - Decorate 111(gl_InstanceID) PrecisionHigh + Decorate 110(gl_VertexID) NoStaticUse Decorate 111(gl_InstanceID) BuiltIn InstanceId - Decorate 111(gl_InstanceID) NoStaticUse + Decorate 111(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Output 8(fvec4) - 10(pos): 9(ptr) Variable Output + 10(pos): 9(ptr) Variable Output 11: TypePointer Input 8(fvec4) - 12(p): 11(ptr) Variable Input + 12(p): 11(ptr) Variable Input 14: TypeMatrix 8(fvec4) 4 15: TypeVector 7(float) 3 16: TypeMatrix 15(fvec3) 3 17: TypeInt 32 1 18(Transform): TypeStruct 14 14 16 17(int) 19: TypePointer Uniform 18(Transform) - 20(tblock): 19(ptr) Variable Uniform + 20(tblock): 19(ptr) Variable Uniform 21: 17(int) Constant 0 22: TypePointer Uniform 14 25: 17(int) Constant 1 @@ -109,29 +93,29 @@ Linked vertex stage: 33: TypeArray 31(ivec3) 32 34(T3): TypeStruct 14 14 29 33 35: TypePointer Uniform 34(T3) - 36: 35(ptr) Variable Uniform + 36: 35(ptr) Variable Uniform 43: TypeBool 44(T2): TypeStruct 43(bool) 14 45: TypePointer Uniform 44(T2) - 46: 45(ptr) Variable Uniform + 46: 45(ptr) Variable Uniform 51: TypePointer Output 15(fvec3) - 52(color): 51(ptr) Variable Output + 52(color): 51(ptr) Variable Output 53: TypePointer Input 15(fvec3) - 54(c): 53(ptr) Variable Input + 54(c): 53(ptr) Variable Input 56: 17(int) Constant 2 57: TypePointer Uniform 16 61: TypePointer Output 17(int) - 62(iout): 61(ptr) Variable Output + 62(iout): 61(ptr) Variable Output 63: 17(int) Constant 3 64: TypePointer Uniform 17(int) 67: TypePointer UniformConstant 30(int) - 68(uiuin): 67(ptr) Variable UniformConstant + 68(uiuin): 67(ptr) Variable UniformConstant 72: TypeVector 17(int) 2 73: TypePointer Input 72(ivec2) - 74(aiv2): 73(ptr) Variable Input + 74(aiv2): 73(ptr) Variable Input 78(S): TypeStruct 15(fvec3) 7(float) 79: TypePointer Output 78(S) - 80(s): 79(ptr) Variable Output + 80(s): 79(ptr) Variable Output 85: TypePointer Output 7(float) 87: TypePointer Uniform 15(fvec3) 90: 7(float) Constant 1065353216 @@ -141,65 +125,65 @@ Linked vertex stage: 98: 30(int) Constant 5 99: 31(ivec3) ConstantComposite 98 98 98 109: TypePointer Input 17(int) -110(gl_VertexID): 109(ptr) Variable Input -111(gl_InstanceID): 109(ptr) Variable Input +110(gl_VertexID): 109(ptr) Variable Input +111(gl_InstanceID): 109(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 13: 8(fvec4) Load 12(p) + 13: 8(fvec4) Load 12(p) 23: 22(ptr) AccessChain 20(tblock) 21 - 24: 14 Load 23 + 24: 14 Load 23 26: 22(ptr) AccessChain 20(tblock) 25 - 27: 14 Load 26 + 27: 14 Load 26 28: 14 MatrixTimesMatrix 24 27 37: 22(ptr) AccessChain 36 25 - 38: 14 Load 37 + 38: 14 Load 37 39: 14 MatrixTimesMatrix 28 38 40: 22(ptr) AccessChain 36 21 - 41: 14 Load 40 + 41: 14 Load 40 42: 14 MatrixTimesMatrix 39 41 47: 22(ptr) AccessChain 46 25 - 48: 14 Load 47 + 48: 14 Load 47 49: 14 MatrixTimesMatrix 42 48 50: 8(fvec4) VectorTimesMatrix 13 49 - Store 10(pos) 50 - 55: 15(fvec3) Load 54(c) + Store 10(pos) 50 + 55: 15(fvec3) Load 54(c) 58: 57(ptr) AccessChain 20(tblock) 56 - 59: 16 Load 58 + 59: 16 Load 58 60: 15(fvec3) VectorTimesMatrix 55 59 - Store 52(color) 60 + Store 52(color) 60 65: 64(ptr) AccessChain 20(tblock) 63 - 66: 17(int) Load 65 - 69: 30(int) Load 68(uiuin) + 66: 17(int) Load 65 + 69: 30(int) Load 68(uiuin) 70: 17(int) Bitcast 69 71: 17(int) IAdd 66 70 - 75: 72(ivec2) Load 74(aiv2) + 75: 72(ivec2) Load 74(aiv2) 76: 17(int) CompositeExtract 75 1 77: 17(int) IAdd 71 76 - Store 62(iout) 77 - 81: 15(fvec3) Load 54(c) + Store 62(iout) 77 + 81: 15(fvec3) Load 54(c) 82: 51(ptr) AccessChain 80(s) 21 - Store 82 81 - 83: 8(fvec4) Load 12(p) + Store 82 81 + 83: 8(fvec4) Load 12(p) 84: 7(float) CompositeExtract 83 0 86: 85(ptr) AccessChain 80(s) 25 - Store 86 84 + Store 86 84 88: 87(ptr) AccessChain 36 56 25 - 89: 15(fvec3) Load 88 + 89: 15(fvec3) Load 88 93: 92(bvec3) FOrdNotEqual 89 91 94: 43(bool) Any 93 96: 95(ptr) AccessChain 36 63 56 - 97: 31(ivec3) Load 96 + 97: 31(ivec3) Load 96 100: 92(bvec3) INotEqual 97 99 101: 43(bool) Any 100 102: 43(bool) LogicalOr 94 101 SelectionMerge 104 None - BranchConditional 102 103 104 + BranchConditional 102 103 104 103: Label 105: 51(ptr) AccessChain 80(s) 21 - 106: 15(fvec3) Load 105 + 106: 15(fvec3) Load 105 107: 15(fvec3) CompositeConstruct 90 90 90 108: 15(fvec3) FAdd 106 107 - Store 105 108 + Store 105 108 Branch 104 104: Label Branch 6 diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out old mode 100644 new mode 100755 index 24c938e9..7ce0eb4f --- a/Test/baseResults/spv.330.geom.out +++ b/Test/baseResults/spv.330.geom.out @@ -9,12 +9,13 @@ Linked geometry stage: Source GLSL 330 SourceExtension "GL_ARB_separate_shader_objects" + Capability Geometry 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 4 - ExecutionMode 4 InputTriangles + EntryPoint Geometry 4 "main" + ExecutionMode 4 InputTriangles ExecutionMode 4 Invocations 0 - ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputVertices 3 Name 4 "main" Name 12 "gl_PerVertex" @@ -27,14 +28,14 @@ Linked geometry stage: Name 21 "gl_in" MemberDecorate 12(gl_PerVertex) 0 BuiltIn Position MemberDecorate 12(gl_PerVertex) 1 BuiltIn ClipDistance - Decorate 12(gl_PerVertex) Block + Decorate 12(gl_PerVertex) Block Decorate 12(gl_PerVertex) Stream 0 Decorate 14 Stream 0 MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position MemberDecorate 17(gl_PerVertex) 1 BuiltIn ClipDistance - Decorate 17(gl_PerVertex) Block + Decorate 17(gl_PerVertex) Block 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypeInt 32 0 @@ -42,14 +43,14 @@ Linked geometry stage: 11: TypeArray 7(float) 10 12(gl_PerVertex): TypeStruct 8(fvec4) 11 13: TypePointer Output 12(gl_PerVertex) - 14: 13(ptr) Variable Output + 14: 13(ptr) Variable Output 15: TypeInt 32 1 16: 15(int) Constant 0 17(gl_PerVertex): TypeStruct 8(fvec4) 11 18: 9(int) Constant 3 19: TypeArray 17(gl_PerVertex) 18 20: TypePointer Input 19 - 21(gl_in): 20(ptr) Variable Input + 21(gl_in): 20(ptr) Variable Input 22: 15(int) Constant 1 23: TypePointer Input 8(fvec4) 26: TypePointer Output 8(fvec4) @@ -58,13 +59,13 @@ Linked geometry stage: 4(main): 2 Function None 3 5: Label 24: 23(ptr) AccessChain 21(gl_in) 22 16 - 25: 8(fvec4) Load 24 + 25: 8(fvec4) Load 24 27: 26(ptr) AccessChain 14 16 - Store 27 25 + Store 27 25 29: 28(ptr) AccessChain 21(gl_in) 22 22 16 - 30: 7(float) Load 29 + 30: 7(float) Load 29 32: 31(ptr) AccessChain 14 22 16 - Store 32 30 + Store 32 30 EmitVertex EndPrimitive Branch 6 diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out old mode 100644 new mode 100755 index 56ece6d5..49ff1b85 --- a/Test/baseResults/spv.400.tesc.out +++ b/Test/baseResults/spv.400.tesc.out @@ -7,170 +7,173 @@ Linked tessellation control stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 89 +// Id's are bound by 91 Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" + Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 4 + EntryPoint TessellationControl 4 "main" ExecutionMode 4 OutputVertices 4 Name 4 "main" - Name 9 "a" - Name 14 "p" - Name 18 "gl_PerVertex" - MemberName 18(gl_PerVertex) 0 "gl_Position" - MemberName 18(gl_PerVertex) 1 "gl_PointSize" - MemberName 18(gl_PerVertex) 2 "gl_ClipDistance" - Name 22 "gl_in" - Name 29 "ps" - Name 33 "cd" - Name 37 "pvi" - Name 39 "gl_PatchVerticesIn" - Name 41 "pid" - Name 42 "gl_PrimitiveID" - Name 44 "iid" - Name 45 "gl_InvocationID" - Name 47 "gl_PerVertex" - MemberName 47(gl_PerVertex) 0 "gl_Position" - MemberName 47(gl_PerVertex) 1 "gl_PointSize" - MemberName 47(gl_PerVertex) 2 "gl_ClipDistance" - Name 51 "gl_out" - Name 62 "gl_TessLevelOuter" - Name 69 "gl_TessLevelInner" - Name 74 "outa" - Name 75 "patchOut" - Name 79 "inb" - Name 80 "ind" - Name 83 "ivla" - Name 84 "ivlb" - Name 87 "ovla" - Name 88 "ovlb" - Decorate 18(gl_PerVertex) Block - Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices - Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId - Decorate 45(gl_InvocationID) BuiltIn InvocationId - MemberDecorate 47(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 47(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 47(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 47(gl_PerVertex) Block - Decorate 62(gl_TessLevelOuter) Patch - Decorate 62(gl_TessLevelOuter) BuiltIn TessLevelOuter - Decorate 69(gl_TessLevelInner) Patch - Decorate 69(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 74(outa) NoStaticUse - Decorate 75(patchOut) Patch - Decorate 75(patchOut) NoStaticUse - Decorate 79(inb) NoStaticUse - Decorate 80(ind) NoStaticUse - Decorate 83(ivla) Location 3 - Decorate 83(ivla) NoStaticUse - Decorate 84(ivlb) Location 4 - Decorate 84(ivlb) NoStaticUse - Decorate 87(ovla) Location 3 - Decorate 87(ovla) NoStaticUse - Decorate 88(ovlb) Location 4 - Decorate 88(ovlb) NoStaticUse + Name 13 "a" + Name 18 "p" + Name 20 "gl_PerVertex" + MemberName 20(gl_PerVertex) 0 "gl_Position" + MemberName 20(gl_PerVertex) 1 "gl_PointSize" + MemberName 20(gl_PerVertex) 2 "gl_ClipDistance" + Name 24 "gl_in" + Name 31 "ps" + Name 35 "cd" + Name 39 "pvi" + Name 41 "gl_PatchVerticesIn" + Name 43 "pid" + Name 44 "gl_PrimitiveID" + Name 46 "iid" + Name 47 "gl_InvocationID" + Name 49 "gl_PerVertex" + MemberName 49(gl_PerVertex) 0 "gl_Position" + MemberName 49(gl_PerVertex) 1 "gl_PointSize" + MemberName 49(gl_PerVertex) 2 "gl_ClipDistance" + Name 53 "gl_out" + Name 64 "gl_TessLevelOuter" + Name 71 "gl_TessLevelInner" + Name 76 "outa" + Name 77 "patchOut" + Name 81 "inb" + Name 82 "ind" + Name 85 "ivla" + Name 86 "ivlb" + Name 89 "ovla" + Name 90 "ovlb" + Decorate 20(gl_PerVertex) Block + Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices + Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 47(gl_InvocationID) BuiltIn InvocationId + MemberDecorate 49(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 49(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 49(gl_PerVertex) 2 BuiltIn ClipDistance + Decorate 49(gl_PerVertex) Block + Decorate 64(gl_TessLevelOuter) Patch + Decorate 64(gl_TessLevelOuter) BuiltIn TessLevelOuter + Decorate 71(gl_TessLevelInner) Patch + Decorate 71(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 76(outa) NoStaticUse + Decorate 77(patchOut) Patch + Decorate 77(patchOut) NoStaticUse + Decorate 81(inb) NoStaticUse + Decorate 82(ind) NoStaticUse + Decorate 85(ivla) Location 3 + Decorate 85(ivla) NoStaticUse + Decorate 86(ivlb) Location 4 + Decorate 86(ivlb) NoStaticUse + Decorate 89(ovla) Location 3 + Decorate 89(ovla) NoStaticUse + Decorate 90(ovlb) Location 4 + Decorate 90(ovlb) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 - 7: TypeInt 32 1 - 8: TypePointer Function 7(int) - 10: 7(int) Constant 5392 - 11: TypeFloat 32 - 12: TypeVector 11(float) 4 - 13: TypePointer Function 12(fvec4) - 15: TypeInt 32 0 - 16: 15(int) Constant 1 - 17: TypeArray 11(float) 16 -18(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 - 19: 15(int) Constant 32 - 20: TypeArray 18(gl_PerVertex) 19 - 21: TypePointer Input 20 - 22(gl_in): 21(ptr) Variable Input - 23: 7(int) Constant 1 - 24: 7(int) Constant 0 - 25: TypePointer Input 12(fvec4) - 28: TypePointer Function 11(float) - 30: TypePointer Input 11(float) - 34: 7(int) Constant 2 - 38: TypePointer Input 7(int) -39(gl_PatchVerticesIn): 38(ptr) Variable Input -42(gl_PrimitiveID): 38(ptr) Variable Input -45(gl_InvocationID): 38(ptr) Variable Input -47(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 - 48: 15(int) Constant 4 - 49: TypeArray 47(gl_PerVertex) 48 - 50: TypePointer Output 49 - 51(gl_out): 50(ptr) Variable Output - 53: TypePointer Output 12(fvec4) - 56: TypePointer Output 11(float) - 60: TypeArray 11(float) 48 - 61: TypePointer Output 60 -62(gl_TessLevelOuter): 61(ptr) Variable Output - 63: 7(int) Constant 3 - 64: 11(float) Constant 1078774989 - 66: 15(int) Constant 2 - 67: TypeArray 11(float) 66 - 68: TypePointer Output 67 -69(gl_TessLevelInner): 68(ptr) Variable Output - 70: 11(float) Constant 1067869798 - 72: TypeArray 7(int) 48 - 73: TypePointer PrivateGlobal 72 - 74(outa): 73(ptr) Variable PrivateGlobal - 75(patchOut): 53(ptr) Variable Output - 76: TypeVector 11(float) 2 - 77: TypeArray 76(fvec2) 19 - 78: TypePointer Input 77 - 79(inb): 78(ptr) Variable Input - 80(ind): 78(ptr) Variable Input - 81: TypeArray 12(fvec4) 19 - 82: TypePointer Input 81 - 83(ivla): 82(ptr) Variable Input - 84(ivlb): 82(ptr) Variable Input - 85: TypeArray 12(fvec4) 48 - 86: TypePointer Output 85 - 87(ovla): 86(ptr) Variable Output - 88(ovlb): 86(ptr) Variable Output + 3: TypeFunction 2 + 7: TypeInt 32 0 + 8: 7(int) Constant 1 + 9: 7(int) Constant 1023 + 10: 7(int) Constant 0 + 11: TypeInt 32 1 + 12: TypePointer Function 11(int) + 14: 11(int) Constant 5392 + 15: TypeFloat 32 + 16: TypeVector 15(float) 4 + 17: TypePointer Function 16(fvec4) + 19: TypeArray 15(float) 8 +20(gl_PerVertex): TypeStruct 16(fvec4) 15(float) 19 + 21: 7(int) Constant 32 + 22: TypeArray 20(gl_PerVertex) 21 + 23: TypePointer Input 22 + 24(gl_in): 23(ptr) Variable Input + 25: 11(int) Constant 1 + 26: 11(int) Constant 0 + 27: TypePointer Input 16(fvec4) + 30: TypePointer Function 15(float) + 32: TypePointer Input 15(float) + 36: 11(int) Constant 2 + 40: TypePointer Input 11(int) +41(gl_PatchVerticesIn): 40(ptr) Variable Input +44(gl_PrimitiveID): 40(ptr) Variable Input +47(gl_InvocationID): 40(ptr) Variable Input +49(gl_PerVertex): TypeStruct 16(fvec4) 15(float) 19 + 50: 7(int) Constant 4 + 51: TypeArray 49(gl_PerVertex) 50 + 52: TypePointer Output 51 + 53(gl_out): 52(ptr) Variable Output + 55: TypePointer Output 16(fvec4) + 58: TypePointer Output 15(float) + 62: TypeArray 15(float) 50 + 63: TypePointer Output 62 +64(gl_TessLevelOuter): 63(ptr) Variable Output + 65: 11(int) Constant 3 + 66: 15(float) Constant 1078774989 + 68: 7(int) Constant 2 + 69: TypeArray 15(float) 68 + 70: TypePointer Output 69 +71(gl_TessLevelInner): 70(ptr) Variable Output + 72: 15(float) Constant 1067869798 + 74: TypeArray 11(int) 50 + 75: TypePointer PrivateGlobal 74 + 76(outa): 75(ptr) Variable PrivateGlobal + 77(patchOut): 55(ptr) Variable Output + 78: TypeVector 15(float) 2 + 79: TypeArray 78(fvec2) 21 + 80: TypePointer Input 79 + 81(inb): 80(ptr) Variable Input + 82(ind): 80(ptr) Variable Input + 83: TypeArray 16(fvec4) 21 + 84: TypePointer Input 83 + 85(ivla): 84(ptr) Variable Input + 86(ivlb): 84(ptr) Variable Input + 87: TypeArray 16(fvec4) 50 + 88: TypePointer Output 87 + 89(ovla): 88(ptr) Variable Output + 90(ovlb): 88(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 9(a): 8(ptr) Variable Function - 14(p): 13(ptr) Variable Function - 29(ps): 28(ptr) Variable Function - 33(cd): 28(ptr) Variable Function - 37(pvi): 8(ptr) Variable Function - 41(pid): 8(ptr) Variable Function - 44(iid): 8(ptr) Variable Function - MemoryBarrier Device Relaxed SequentiallyConsistent Acquire Release UniformMemory SubgroupMemory WorkgroupLocalMemory WorkgroupGlobalMemory AtomicCounterMemory ImageMemory - ControlBarrier Device - Store 9(a) 10 - 26: 25(ptr) AccessChain 22(gl_in) 23 24 - 27: 12(fvec4) Load 26 - Store 14(p) 27 - 31: 30(ptr) AccessChain 22(gl_in) 23 23 - 32: 11(float) Load 31 - Store 29(ps) 32 - 35: 30(ptr) AccessChain 22(gl_in) 23 34 34 - 36: 11(float) Load 35 - Store 33(cd) 36 - 40: 7(int) Load 39(gl_PatchVerticesIn) - Store 37(pvi) 40 - 43: 7(int) Load 42(gl_PrimitiveID) - Store 41(pid) 43 - 46: 7(int) Load 45(gl_InvocationID) - Store 44(iid) 46 - 52: 12(fvec4) Load 14(p) - 54: 53(ptr) AccessChain 51(gl_out) 23 24 - Store 54 52 - 55: 11(float) Load 29(ps) - 57: 56(ptr) AccessChain 51(gl_out) 23 23 - Store 57 55 - 58: 11(float) Load 33(cd) - 59: 56(ptr) AccessChain 51(gl_out) 23 34 23 - Store 59 58 - 65: 56(ptr) AccessChain 62(gl_TessLevelOuter) 63 - Store 65 64 - 71: 56(ptr) AccessChain 69(gl_TessLevelInner) 23 - Store 71 70 + 13(a): 12(ptr) Variable Function + 18(p): 17(ptr) Variable Function + 31(ps): 30(ptr) Variable Function + 35(cd): 30(ptr) Variable Function + 39(pvi): 12(ptr) Variable Function + 43(pid): 12(ptr) Variable Function + 46(iid): 12(ptr) Variable Function + MemoryBarrier 8 9 + ControlBarrier 8 8 10 + Store 13(a) 14 + 28: 27(ptr) AccessChain 24(gl_in) 25 26 + 29: 16(fvec4) Load 28 + Store 18(p) 29 + 33: 32(ptr) AccessChain 24(gl_in) 25 25 + 34: 15(float) Load 33 + Store 31(ps) 34 + 37: 32(ptr) AccessChain 24(gl_in) 25 36 36 + 38: 15(float) Load 37 + Store 35(cd) 38 + 42: 11(int) Load 41(gl_PatchVerticesIn) + Store 39(pvi) 42 + 45: 11(int) Load 44(gl_PrimitiveID) + Store 43(pid) 45 + 48: 11(int) Load 47(gl_InvocationID) + Store 46(iid) 48 + 54: 16(fvec4) Load 18(p) + 56: 55(ptr) AccessChain 53(gl_out) 25 26 + Store 56 54 + 57: 15(float) Load 31(ps) + 59: 58(ptr) AccessChain 53(gl_out) 25 25 + Store 59 57 + 60: 15(float) Load 35(cd) + 61: 58(ptr) AccessChain 53(gl_out) 25 36 25 + Store 61 60 + 67: 58(ptr) AccessChain 64(gl_TessLevelOuter) 65 + Store 67 66 + 73: 58(ptr) AccessChain 71(gl_TessLevelInner) 25 + Store 73 72 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out old mode 100644 new mode 100755 index 5bcd393d..fab82350 --- a/Test/baseResults/spv.400.tese.out +++ b/Test/baseResults/spv.400.tese.out @@ -11,10 +11,11 @@ Linked tessellation evaluation stage: Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" + Capability Tessellation 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 4 - ExecutionMode 4 InputTriangles + EntryPoint TessellationEvaluation 4 "main" + ExecutionMode 4 InputTriangles Name 4 "main" Name 9 "a" Name 14 "p" @@ -52,34 +53,34 @@ Linked tessellation evaluation stage: Name 94 "ivla" Name 95 "ivlb" Name 98 "ovla" - Decorate 18(gl_PerVertex) Block + Decorate 18(gl_PerVertex) Block Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 48(gl_TessCoord) BuiltIn TessCoord - Decorate 54(gl_TessLevelOuter) Patch + Decorate 54(gl_TessLevelOuter) Patch Decorate 54(gl_TessLevelOuter) BuiltIn TessLevelOuter - Decorate 62(gl_TessLevelInner) Patch + Decorate 62(gl_TessLevelInner) Patch Decorate 62(gl_TessLevelInner) BuiltIn TessLevelInner MemberDecorate 67(gl_PerVertex) 0 BuiltIn Position MemberDecorate 67(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 67(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 67(gl_PerVertex) Block - Decorate 78(patchIn) Patch - Decorate 78(patchIn) NoStaticUse - Decorate 82(inb) NoStaticUse - Decorate 83(ind) NoStaticUse - Decorate 84(testblb) Block - Decorate 87(blb) NoStaticUse - Decorate 88(testbld) Block - Decorate 91(bld) NoStaticUse + Decorate 67(gl_PerVertex) Block + Decorate 78(patchIn) Patch + Decorate 78(patchIn) NoStaticUse + Decorate 82(inb) NoStaticUse + Decorate 83(ind) NoStaticUse + Decorate 84(testblb) Block + Decorate 87(blb) NoStaticUse + Decorate 88(testbld) Block + Decorate 91(bld) NoStaticUse Decorate 94(ivla) Location 23 - Decorate 94(ivla) NoStaticUse + Decorate 94(ivla) NoStaticUse Decorate 95(ivlb) Location 24 - Decorate 95(ivlb) NoStaticUse + Decorate 95(ivlb) NoStaticUse Decorate 98(ovla) Location 23 - Decorate 98(ovla) NoStaticUse + Decorate 98(ovla) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 1512 @@ -93,7 +94,7 @@ Linked tessellation evaluation stage: 19: 15(int) Constant 32 20: TypeArray 18(gl_PerVertex) 19 21: TypePointer Input 20 - 22(gl_in): 21(ptr) Variable Input + 22(gl_in): 21(ptr) Variable Input 23: 7(int) Constant 1 24: 7(int) Constant 0 25: TypePointer Input 12(fvec4) @@ -101,91 +102,91 @@ Linked tessellation evaluation stage: 30: TypePointer Input 11(float) 34: 7(int) Constant 2 38: TypePointer Input 7(int) -39(gl_PatchVerticesIn): 38(ptr) Variable Input -42(gl_PrimitiveID): 38(ptr) Variable Input +39(gl_PatchVerticesIn): 38(ptr) Variable Input +42(gl_PrimitiveID): 38(ptr) Variable Input 44: TypeVector 11(float) 3 45: TypePointer Function 44(fvec3) 47: TypePointer Input 44(fvec3) -48(gl_TessCoord): 47(ptr) Variable Input +48(gl_TessCoord): 47(ptr) Variable Input 51: 15(int) Constant 4 52: TypeArray 11(float) 51 53: TypePointer Input 52 -54(gl_TessLevelOuter): 53(ptr) Variable Input +54(gl_TessLevelOuter): 53(ptr) Variable Input 55: 7(int) Constant 3 59: 15(int) Constant 2 60: TypeArray 11(float) 59 61: TypePointer Input 60 -62(gl_TessLevelInner): 61(ptr) Variable Input +62(gl_TessLevelInner): 61(ptr) Variable Input 65: 15(int) Constant 3 66: TypeArray 11(float) 65 67(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 66 68: TypePointer Output 67(gl_PerVertex) - 69: 68(ptr) Variable Output + 69: 68(ptr) Variable Output 71: TypePointer Output 12(fvec4) 74: TypePointer Output 11(float) - 78(patchIn): 25(ptr) Variable Input + 78(patchIn): 25(ptr) Variable Input 79: TypeVector 11(float) 2 80: TypeArray 79(fvec2) 19 81: TypePointer Input 80 - 82(inb): 81(ptr) Variable Input - 83(ind): 81(ptr) Variable Input + 82(inb): 81(ptr) Variable Input + 83(ind): 81(ptr) Variable Input 84(testblb): TypeStruct 7(int) 85: TypeArray 84(testblb) 19 86: TypePointer Input 85 - 87(blb): 86(ptr) Variable Input + 87(blb): 86(ptr) Variable Input 88(testbld): TypeStruct 7(int) 89: TypeArray 88(testbld) 19 90: TypePointer Input 89 - 91(bld): 90(ptr) Variable Input + 91(bld): 90(ptr) Variable Input 92: TypeArray 12(fvec4) 19 93: TypePointer Input 92 - 94(ivla): 93(ptr) Variable Input - 95(ivlb): 93(ptr) Variable Input + 94(ivla): 93(ptr) Variable Input + 95(ivlb): 93(ptr) Variable Input 96: TypeArray 12(fvec4) 59 97: TypePointer Output 96 - 98(ovla): 97(ptr) Variable Output + 98(ovla): 97(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 9(a): 8(ptr) Variable Function - 14(p): 13(ptr) Variable Function - 29(ps): 28(ptr) Variable Function - 33(cd): 28(ptr) Variable Function - 37(pvi): 8(ptr) Variable Function - 41(pid): 8(ptr) Variable Function - 46(tc): 45(ptr) Variable Function - 50(tlo): 28(ptr) Variable Function - 58(tli): 28(ptr) Variable Function - Store 9(a) 10 + 9(a): 8(ptr) Variable Function + 14(p): 13(ptr) Variable Function + 29(ps): 28(ptr) Variable Function + 33(cd): 28(ptr) Variable Function + 37(pvi): 8(ptr) Variable Function + 41(pid): 8(ptr) Variable Function + 46(tc): 45(ptr) Variable Function + 50(tlo): 28(ptr) Variable Function + 58(tli): 28(ptr) Variable Function + Store 9(a) 10 26: 25(ptr) AccessChain 22(gl_in) 23 24 - 27: 12(fvec4) Load 26 - Store 14(p) 27 + 27: 12(fvec4) Load 26 + Store 14(p) 27 31: 30(ptr) AccessChain 22(gl_in) 23 23 - 32: 11(float) Load 31 - Store 29(ps) 32 + 32: 11(float) Load 31 + Store 29(ps) 32 35: 30(ptr) AccessChain 22(gl_in) 23 34 34 - 36: 11(float) Load 35 - Store 33(cd) 36 - 40: 7(int) Load 39(gl_PatchVerticesIn) - Store 37(pvi) 40 - 43: 7(int) Load 42(gl_PrimitiveID) - Store 41(pid) 43 - 49: 44(fvec3) Load 48(gl_TessCoord) - Store 46(tc) 49 + 36: 11(float) Load 35 + Store 33(cd) 36 + 40: 7(int) Load 39(gl_PatchVerticesIn) + Store 37(pvi) 40 + 43: 7(int) Load 42(gl_PrimitiveID) + Store 41(pid) 43 + 49: 44(fvec3) Load 48(gl_TessCoord) + Store 46(tc) 49 56: 30(ptr) AccessChain 54(gl_TessLevelOuter) 55 - 57: 11(float) Load 56 - Store 50(tlo) 57 + 57: 11(float) Load 56 + Store 50(tlo) 57 63: 30(ptr) AccessChain 62(gl_TessLevelInner) 23 - 64: 11(float) Load 63 - Store 58(tli) 64 - 70: 12(fvec4) Load 14(p) + 64: 11(float) Load 63 + Store 58(tli) 64 + 70: 12(fvec4) Load 14(p) 72: 71(ptr) AccessChain 69 24 - Store 72 70 - 73: 11(float) Load 29(ps) + Store 72 70 + 73: 11(float) Load 29(ps) 75: 74(ptr) AccessChain 69 23 - Store 75 73 - 76: 11(float) Load 33(cd) + Store 75 73 + 76: 11(float) Load 33(cd) 77: 74(ptr) AccessChain 69 34 34 - Store 77 76 + Store 77 76 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out old mode 100644 new mode 100755 index 5a556cf5..082ae0a0 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -7,12 +7,13 @@ Linked vertex stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 62 +// Id's are bound by 63 Source GLSL 430 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 11 "gl_PerVertex" MemberName 11(gl_PerVertex) 0 "gl_ClipDistance" @@ -29,49 +30,49 @@ Linked vertex stage: Name 49 "anonblock" MemberName 49(anonblock) 0 "aoeu" Name 51 "" - Name 54 "sampb1" - Name 57 "sampb2" - Name 58 "sampb4" - Name 60 "gl_VertexID" - Name 61 "gl_InstanceID" + Name 55 "sampb1" + Name 58 "sampb2" + Name 59 "sampb4" + Name 61 "gl_VertexID" + Name 62 "gl_InstanceID" MemberDecorate 11(gl_PerVertex) 0 BuiltIn ClipDistance - Decorate 11(gl_PerVertex) Block - Decorate 35(badorder3) Flat + Decorate 11(gl_PerVertex) Block + Decorate 35(badorder3) Flat Decorate 43(uv4) Location 4 - Decorate 43(uv4) NoStaticUse - Decorate 29 NoStaticUse - Decorate 29 NoStaticUse - Decorate 44(badorder) NoStaticUse - Decorate 45(badorder2) Smooth - Decorate 45(badorder2) Invariant - Decorate 45(badorder2) NoStaticUse - Decorate 46(boundblock) GLSLShared - Decorate 46(boundblock) Block + Decorate 43(uv4) NoStaticUse + Decorate 29 NoStaticUse + Decorate 29 NoStaticUse + Decorate 44(badorder) NoStaticUse + Decorate 45(badorder2) Smooth + Decorate 45(badorder2) Invariant + Decorate 45(badorder2) NoStaticUse + Decorate 46(boundblock) GLSLShared + Decorate 46(boundblock) Block Decorate 48(boundInst) Binding 3 - Decorate 48(boundInst) NoStaticUse - Decorate 49(anonblock) GLSLShared - Decorate 49(anonblock) Block + Decorate 48(boundInst) NoStaticUse + Decorate 49(anonblock) GLSLShared + Decorate 49(anonblock) Block Decorate 51 Binding 7 - Decorate 51 NoStaticUse - Decorate 54(sampb1) Binding 4 - Decorate 54(sampb1) NoStaticUse - Decorate 57(sampb2) Binding 5 - Decorate 57(sampb2) NoStaticUse - Decorate 58(sampb4) Binding 31 - Decorate 58(sampb4) NoStaticUse - Decorate 60(gl_VertexID) BuiltIn VertexId - Decorate 60(gl_VertexID) NoStaticUse - Decorate 61(gl_InstanceID) BuiltIn InstanceId - Decorate 61(gl_InstanceID) NoStaticUse + Decorate 51 NoStaticUse + Decorate 55(sampb1) Binding 4 + Decorate 55(sampb1) NoStaticUse + Decorate 58(sampb2) Binding 5 + Decorate 58(sampb2) NoStaticUse + Decorate 59(sampb4) Binding 31 + Decorate 59(sampb4) NoStaticUse + Decorate 61(gl_VertexID) BuiltIn VertexId + Decorate 61(gl_VertexID) NoStaticUse + Decorate 62(gl_InstanceID) BuiltIn InstanceId + Decorate 62(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeInt 32 0 9: 8(int) Constant 3 10: TypeArray 7(float) 9 11(gl_PerVertex): TypeStruct 10 12: TypePointer Output 11(gl_PerVertex) - 13: 12(ptr) Variable Output + 13: 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 0 16: 14(int) Constant 2 @@ -81,53 +82,54 @@ Linked vertex stage: 21: 8(int) Constant 10 22: TypeArray 20(fvec4) 21 23: TypePointer Input 22 - 24(bad): 23(ptr) Variable Input + 24(bad): 23(ptr) Variable Input 25: TypePointer Input 20(fvec4) 29: 7(float) Constant 1082549862 30: TypeBool 34: TypePointer Output 20(fvec4) - 35(badorder3): 34(ptr) Variable Output + 35(badorder3): 34(ptr) Variable Output 38: TypePointer UniformConstant 7(float) - 39(f): 38(ptr) Variable UniformConstant + 39(f): 38(ptr) Variable UniformConstant 42: TypePointer UniformConstant 20(fvec4) - 43(uv4): 42(ptr) Variable UniformConstant - 44(badorder): 25(ptr) Variable Input - 45(badorder2): 34(ptr) Variable Output + 43(uv4): 42(ptr) Variable UniformConstant + 44(badorder): 25(ptr) Variable Input + 45(badorder2): 34(ptr) Variable Output 46(boundblock): TypeStruct 14(int) 47: TypePointer Uniform 46(boundblock) - 48(boundInst): 47(ptr) Variable Uniform + 48(boundInst): 47(ptr) Variable Uniform 49(anonblock): TypeStruct 14(int) 50: TypePointer Uniform 49(anonblock) - 51: 50(ptr) Variable Uniform - 52: TypeSampler7(float) 2D filter+texture - 53: TypePointer UniformConstant 52 - 54(sampb1): 53(ptr) Variable UniformConstant - 55: TypeArray 52 21 - 56: TypePointer UniformConstant 55 - 57(sampb2): 56(ptr) Variable UniformConstant - 58(sampb4): 53(ptr) Variable UniformConstant - 59: TypePointer Input 14(int) - 60(gl_VertexID): 59(ptr) Variable Input -61(gl_InstanceID): 59(ptr) Variable Input + 51: 50(ptr) Variable Uniform + 52: TypeImage 7(float) 2D sampled format:Unknown + 53: TypeSampledImage 52 + 54: TypePointer UniformConstant 53 + 55(sampb1): 54(ptr) Variable UniformConstant + 56: TypeArray 53 21 + 57: TypePointer UniformConstant 56 + 58(sampb2): 57(ptr) Variable UniformConstant + 59(sampb4): 54(ptr) Variable UniformConstant + 60: TypePointer Input 14(int) + 61(gl_VertexID): 60(ptr) Variable Input +62(gl_InstanceID): 60(ptr) Variable Input 4(main): 2 Function None 3 5: Label 19: 18(ptr) AccessChain 13 15 16 - Store 19 17 + Store 19 17 26: 25(ptr) AccessChain 24(bad) 15 - 27: 20(fvec4) Load 26 + 27: 20(fvec4) Load 26 28: 7(float) CompositeExtract 27 0 31: 30(bool) FOrdEqual 28 29 SelectionMerge 33 None - BranchConditional 31 32 33 + BranchConditional 31 32 33 32: Label 36: 25(ptr) AccessChain 24(bad) 15 - 37: 20(fvec4) Load 36 - Store 35(badorder3) 37 + 37: 20(fvec4) Load 36 + Store 35(badorder3) 37 Branch 33 33: Label - 40: 7(float) Load 39(f) + 40: 7(float) Load 39(f) 41: 18(ptr) AccessChain 13 15 15 - Store 41 40 + Store 41 40 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out old mode 100644 new mode 100755 index 38ddcd9e..9858f85f --- a/Test/baseResults/spv.Operations.frag.out +++ b/Test/baseResults/spv.Operations.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 399 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "v" Name 12 "uv4" @@ -25,27 +27,27 @@ Linked fragment stage: Name 396 "uiv4" Name 398 "ub" Decorate 378(gl_FragColor) BuiltIn FragColor - Decorate 396(uiv4) NoStaticUse - Decorate 398(ub) NoStaticUse + Decorate 396(uiv4) NoStaticUse + Decorate 398(ub) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer UniformConstant 8(fvec4) - 12(uv4): 11(ptr) Variable UniformConstant + 12(uv4): 11(ptr) Variable UniformConstant 19: TypeInt 32 1 20: TypePointer Function 19(int) 22: TypePointer UniformConstant 19(int) - 23(ui): 22(ptr) Variable UniformConstant + 23(ui): 22(ptr) Variable UniformConstant 169: TypePointer UniformConstant 7(float) - 170(uf): 169(ptr) Variable UniformConstant + 170(uf): 169(ptr) Variable UniformConstant 215: TypeBool 216: TypePointer Function 215(bool) 220: TypeVector 215(bool) 4 242: TypePointer UniformConstant 220(bvec4) - 243(ub41): 242(ptr) Variable UniformConstant - 245(ub42): 242(ptr) Variable UniformConstant + 243(ub41): 242(ptr) Variable UniformConstant + 245(ub42): 242(ptr) Variable UniformConstant 292: 19(int) Constant 2 299: 19(int) Constant 1 301: TypePointer Function 7(float) @@ -55,458 +57,458 @@ Linked fragment stage: 359: 19(int) Constant 66 365: 19(int) Constant 17 377: TypePointer Output 8(fvec4) -378(gl_FragColor): 377(ptr) Variable Output +378(gl_FragColor): 377(ptr) Variable Output 394: TypeVector 19(int) 4 395: TypePointer UniformConstant 394(ivec4) - 396(uiv4): 395(ptr) Variable UniformConstant + 396(uiv4): 395(ptr) Variable UniformConstant 397: TypePointer UniformConstant 215(bool) - 398(ub): 397(ptr) Variable UniformConstant + 398(ub): 397(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 10(v): 9(ptr) Variable Function - 21(i): 20(ptr) Variable Function - 217(b): 216(ptr) Variable Function - 302(f): 301(ptr) Variable Function - 379: 9(ptr) Variable Function - 13: 8(fvec4) Load 12(uv4) - 14: 8(fvec4) ExtInst 1(GLSL.std.450) 8(radians) 13 - Store 10(v) 14 - 15: 8(fvec4) Load 10(v) - 16: 8(fvec4) ExtInst 1(GLSL.std.450) 9(degrees) 15 - 17: 8(fvec4) Load 10(v) + 10(v): 9(ptr) Variable Function + 21(i): 20(ptr) Variable Function + 217(b): 216(ptr) Variable Function + 302(f): 301(ptr) Variable Function + 379: 9(ptr) Variable Function + 13: 8(fvec4) Load 12(uv4) + 14: 8(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 13 + Store 10(v) 14 + 15: 8(fvec4) Load 10(v) + 16: 8(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 15 + 17: 8(fvec4) Load 10(v) 18: 8(fvec4) FAdd 17 16 - Store 10(v) 18 - 24: 19(int) Load 23(ui) - 25: 19(int) Load 23(ui) + Store 10(v) 18 + 24: 19(int) Load 23(ui) + 25: 19(int) Load 23(ui) 26: 19(int) IMul 24 25 - Store 21(i) 26 - 27: 8(fvec4) Load 10(v) - 28: 8(fvec4) ExtInst 1(GLSL.std.450) 10(sin) 27 - 29: 8(fvec4) Load 10(v) + Store 21(i) 26 + 27: 8(fvec4) Load 10(v) + 28: 8(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 27 + 29: 8(fvec4) Load 10(v) 30: 8(fvec4) FAdd 29 28 - Store 10(v) 30 - 31: 8(fvec4) Load 10(v) - 32: 8(fvec4) ExtInst 1(GLSL.std.450) 11(cos) 31 - 33: 8(fvec4) Load 10(v) + Store 10(v) 30 + 31: 8(fvec4) Load 10(v) + 32: 8(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 31 + 33: 8(fvec4) Load 10(v) 34: 8(fvec4) FAdd 33 32 - Store 10(v) 34 - 35: 8(fvec4) Load 10(v) - 36: 8(fvec4) ExtInst 1(GLSL.std.450) 12(tan) 35 - 37: 8(fvec4) Load 10(v) + Store 10(v) 34 + 35: 8(fvec4) Load 10(v) + 36: 8(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 35 + 37: 8(fvec4) Load 10(v) 38: 8(fvec4) FAdd 37 36 - Store 10(v) 38 - 39: 8(fvec4) Load 10(v) - 40: 8(fvec4) ExtInst 1(GLSL.std.450) 13(asin) 39 - 41: 8(fvec4) Load 10(v) + Store 10(v) 38 + 39: 8(fvec4) Load 10(v) + 40: 8(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 39 + 41: 8(fvec4) Load 10(v) 42: 8(fvec4) FAdd 41 40 - Store 10(v) 42 - 43: 8(fvec4) Load 10(v) - 44: 8(fvec4) ExtInst 1(GLSL.std.450) 14(acos) 43 - 45: 8(fvec4) Load 10(v) + Store 10(v) 42 + 43: 8(fvec4) Load 10(v) + 44: 8(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 43 + 45: 8(fvec4) Load 10(v) 46: 8(fvec4) FAdd 45 44 - Store 10(v) 46 - 47: 8(fvec4) Load 10(v) - 48: 8(fvec4) ExtInst 1(GLSL.std.450) 15(atan) 47 - 49: 8(fvec4) Load 10(v) + Store 10(v) 46 + 47: 8(fvec4) Load 10(v) + 48: 8(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 47 + 49: 8(fvec4) Load 10(v) 50: 8(fvec4) FAdd 49 48 - Store 10(v) 50 - 51: 8(fvec4) Load 10(v) - 52: 8(fvec4) ExtInst 1(GLSL.std.450) 16(sinh) 51 - 53: 8(fvec4) Load 10(v) + Store 10(v) 50 + 51: 8(fvec4) Load 10(v) + 52: 8(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 51 + 53: 8(fvec4) Load 10(v) 54: 8(fvec4) FAdd 53 52 - Store 10(v) 54 - 55: 8(fvec4) Load 10(v) - 56: 8(fvec4) ExtInst 1(GLSL.std.450) 17(cosh) 55 - 57: 8(fvec4) Load 10(v) + Store 10(v) 54 + 55: 8(fvec4) Load 10(v) + 56: 8(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 55 + 57: 8(fvec4) Load 10(v) 58: 8(fvec4) FAdd 57 56 - Store 10(v) 58 - 59: 8(fvec4) Load 10(v) - 60: 8(fvec4) ExtInst 1(GLSL.std.450) 18(tanh) 59 - 61: 8(fvec4) Load 10(v) + Store 10(v) 58 + 59: 8(fvec4) Load 10(v) + 60: 8(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 59 + 61: 8(fvec4) Load 10(v) 62: 8(fvec4) FAdd 61 60 - Store 10(v) 62 - 63: 8(fvec4) Load 10(v) - 64: 8(fvec4) ExtInst 1(GLSL.std.450) 19(asinh) 63 - 65: 8(fvec4) Load 10(v) + Store 10(v) 62 + 63: 8(fvec4) Load 10(v) + 64: 8(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 63 + 65: 8(fvec4) Load 10(v) 66: 8(fvec4) FAdd 65 64 - Store 10(v) 66 - 67: 8(fvec4) Load 10(v) - 68: 8(fvec4) ExtInst 1(GLSL.std.450) 20(acosh) 67 - 69: 8(fvec4) Load 10(v) + Store 10(v) 66 + 67: 8(fvec4) Load 10(v) + 68: 8(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 67 + 69: 8(fvec4) Load 10(v) 70: 8(fvec4) FAdd 69 68 - Store 10(v) 70 - 71: 8(fvec4) Load 10(v) - 72: 8(fvec4) ExtInst 1(GLSL.std.450) 21(atanh) 71 - 73: 8(fvec4) Load 10(v) + Store 10(v) 70 + 71: 8(fvec4) Load 10(v) + 72: 8(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 71 + 73: 8(fvec4) Load 10(v) 74: 8(fvec4) FAdd 73 72 - Store 10(v) 74 - 75: 8(fvec4) Load 10(v) - 76: 8(fvec4) Load 10(v) - 77: 8(fvec4) ExtInst 1(GLSL.std.450) 23(pow) 75 76 - 78: 8(fvec4) Load 10(v) + Store 10(v) 74 + 75: 8(fvec4) Load 10(v) + 76: 8(fvec4) Load 10(v) + 77: 8(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 75 76 + 78: 8(fvec4) Load 10(v) 79: 8(fvec4) FAdd 78 77 - Store 10(v) 79 - 80: 8(fvec4) Load 10(v) - 81: 8(fvec4) ExtInst 1(GLSL.std.450) 24(exp) 80 - 82: 8(fvec4) Load 10(v) + Store 10(v) 79 + 80: 8(fvec4) Load 10(v) + 81: 8(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 80 + 82: 8(fvec4) Load 10(v) 83: 8(fvec4) FAdd 82 81 - Store 10(v) 83 - 84: 8(fvec4) Load 10(v) - 85: 8(fvec4) ExtInst 1(GLSL.std.450) 25(log) 84 - 86: 8(fvec4) Load 10(v) + Store 10(v) 83 + 84: 8(fvec4) Load 10(v) + 85: 8(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 84 + 86: 8(fvec4) Load 10(v) 87: 8(fvec4) FAdd 86 85 - Store 10(v) 87 - 88: 8(fvec4) Load 10(v) - 89: 8(fvec4) ExtInst 1(GLSL.std.450) 26(exp2) 88 - 90: 8(fvec4) Load 10(v) + Store 10(v) 87 + 88: 8(fvec4) Load 10(v) + 89: 8(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 88 + 90: 8(fvec4) Load 10(v) 91: 8(fvec4) FAdd 90 89 - Store 10(v) 91 - 92: 8(fvec4) Load 10(v) - 93: 8(fvec4) ExtInst 1(GLSL.std.450) 27(log2) 92 - 94: 8(fvec4) Load 10(v) + Store 10(v) 91 + 92: 8(fvec4) Load 10(v) + 93: 8(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 92 + 94: 8(fvec4) Load 10(v) 95: 8(fvec4) FAdd 94 93 - Store 10(v) 95 - 96: 8(fvec4) Load 10(v) - 97: 8(fvec4) ExtInst 1(GLSL.std.450) 28(sqrt) 96 - 98: 8(fvec4) Load 10(v) + Store 10(v) 95 + 96: 8(fvec4) Load 10(v) + 97: 8(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 96 + 98: 8(fvec4) Load 10(v) 99: 8(fvec4) FAdd 98 97 - Store 10(v) 99 - 100: 8(fvec4) Load 10(v) - 101: 8(fvec4) ExtInst 1(GLSL.std.450) 29(inverseSqrt) 100 - 102: 8(fvec4) Load 10(v) + Store 10(v) 99 + 100: 8(fvec4) Load 10(v) + 101: 8(fvec4) ExtInst 1(GLSL.std.450) 32(Inversesqrt) 100 + 102: 8(fvec4) Load 10(v) 103: 8(fvec4) FAdd 102 101 - Store 10(v) 103 - 104: 8(fvec4) Load 10(v) - 105: 8(fvec4) ExtInst 1(GLSL.std.450) 3(abs) 104 - 106: 8(fvec4) Load 10(v) + Store 10(v) 103 + 104: 8(fvec4) Load 10(v) + 105: 8(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 104 + 106: 8(fvec4) Load 10(v) 107: 8(fvec4) FAdd 106 105 - Store 10(v) 107 - 108: 8(fvec4) Load 10(v) - 109: 8(fvec4) ExtInst 1(GLSL.std.450) 4(sign) 108 - 110: 8(fvec4) Load 10(v) + Store 10(v) 107 + 108: 8(fvec4) Load 10(v) + 109: 8(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 108 + 110: 8(fvec4) Load 10(v) 111: 8(fvec4) FAdd 110 109 - Store 10(v) 111 - 112: 8(fvec4) Load 10(v) - 113: 8(fvec4) ExtInst 1(GLSL.std.450) 5(floor) 112 - 114: 8(fvec4) Load 10(v) + Store 10(v) 111 + 112: 8(fvec4) Load 10(v) + 113: 8(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 112 + 114: 8(fvec4) Load 10(v) 115: 8(fvec4) FAdd 114 113 - Store 10(v) 115 - 116: 8(fvec4) Load 10(v) - 117: 8(fvec4) ExtInst 1(GLSL.std.450) 6(ceil) 116 - 118: 8(fvec4) Load 10(v) + Store 10(v) 115 + 116: 8(fvec4) Load 10(v) + 117: 8(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 116 + 118: 8(fvec4) Load 10(v) 119: 8(fvec4) FAdd 118 117 - Store 10(v) 119 - 120: 8(fvec4) Load 10(v) - 121: 8(fvec4) ExtInst 1(GLSL.std.450) 7(fract) 120 - 122: 8(fvec4) Load 10(v) + Store 10(v) 119 + 120: 8(fvec4) Load 10(v) + 121: 8(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 120 + 122: 8(fvec4) Load 10(v) 123: 8(fvec4) FAdd 122 121 - Store 10(v) 123 - 124: 8(fvec4) Load 10(v) - 125: 8(fvec4) Load 10(v) + Store 10(v) 123 + 124: 8(fvec4) Load 10(v) + 125: 8(fvec4) Load 10(v) 126: 8(fvec4) FMod 124 125 - 127: 8(fvec4) Load 10(v) + 127: 8(fvec4) Load 10(v) 128: 8(fvec4) FAdd 127 126 - Store 10(v) 128 - 129: 8(fvec4) Load 10(v) - 130: 8(fvec4) Load 10(v) + Store 10(v) 128 + 129: 8(fvec4) Load 10(v) + 130: 8(fvec4) Load 10(v) 131: 7(float) CompositeExtract 130 0 132: 8(fvec4) CompositeConstruct 131 131 131 131 133: 8(fvec4) FMod 129 132 - 134: 8(fvec4) Load 10(v) + 134: 8(fvec4) Load 10(v) 135: 8(fvec4) FAdd 134 133 - Store 10(v) 135 - 136: 8(fvec4) Load 10(v) - 137: 8(fvec4) Load 12(uv4) - 138: 8(fvec4) ExtInst 1(GLSL.std.450) 33(min) 136 137 - 139: 8(fvec4) Load 10(v) + Store 10(v) 135 + 136: 8(fvec4) Load 10(v) + 137: 8(fvec4) Load 12(uv4) + 138: 8(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 136 137 + 139: 8(fvec4) Load 10(v) 140: 8(fvec4) FAdd 139 138 - Store 10(v) 140 - 141: 8(fvec4) Load 10(v) - 142: 8(fvec4) Load 12(uv4) - 143: 8(fvec4) ExtInst 1(GLSL.std.450) 34(max) 141 142 - 144: 8(fvec4) Load 10(v) + Store 10(v) 140 + 141: 8(fvec4) Load 10(v) + 142: 8(fvec4) Load 12(uv4) + 143: 8(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 141 142 + 144: 8(fvec4) Load 10(v) 145: 8(fvec4) FAdd 144 143 - Store 10(v) 145 - 146: 8(fvec4) Load 10(v) - 147: 8(fvec4) Load 12(uv4) - 148: 8(fvec4) Load 12(uv4) - 149: 8(fvec4) ExtInst 1(GLSL.std.450) 35(clamp) 146 147 148 - 150: 8(fvec4) Load 10(v) + Store 10(v) 145 + 146: 8(fvec4) Load 10(v) + 147: 8(fvec4) Load 12(uv4) + 148: 8(fvec4) Load 12(uv4) + 149: 8(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 146 147 148 + 150: 8(fvec4) Load 10(v) 151: 8(fvec4) FAdd 150 149 - Store 10(v) 151 - 152: 8(fvec4) Load 10(v) - 153: 8(fvec4) Load 10(v) - 154: 8(fvec4) Load 10(v) - 155: 8(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 152 153 154 - 156: 8(fvec4) Load 10(v) + Store 10(v) 151 + 152: 8(fvec4) Load 10(v) + 153: 8(fvec4) Load 10(v) + 154: 8(fvec4) Load 10(v) + 155: 8(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 152 153 154 + 156: 8(fvec4) Load 10(v) 157: 8(fvec4) FAdd 156 155 - Store 10(v) 157 - 158: 8(fvec4) Load 10(v) - 159: 8(fvec4) Load 10(v) - 160: 8(fvec4) ExtInst 1(GLSL.std.450) 37(step) 158 159 - 161: 8(fvec4) Load 10(v) + Store 10(v) 157 + 158: 8(fvec4) Load 10(v) + 159: 8(fvec4) Load 10(v) + 160: 8(fvec4) ExtInst 1(GLSL.std.450) 47(Step) 158 159 + 161: 8(fvec4) Load 10(v) 162: 8(fvec4) FAdd 161 160 - Store 10(v) 162 - 163: 8(fvec4) Load 10(v) - 164: 8(fvec4) Load 10(v) - 165: 8(fvec4) Load 10(v) - 166: 8(fvec4) ExtInst 1(GLSL.std.450) 38(smoothStep) 163 164 165 - 167: 8(fvec4) Load 10(v) + Store 10(v) 162 + 163: 8(fvec4) Load 10(v) + 164: 8(fvec4) Load 10(v) + 165: 8(fvec4) Load 10(v) + 166: 8(fvec4) ExtInst 1(GLSL.std.450) 48(Smoothstep) 163 164 165 + 167: 8(fvec4) Load 10(v) 168: 8(fvec4) FAdd 167 166 - Store 10(v) 168 - 171: 7(float) Load 170(uf) - 172: 8(fvec4) Load 10(v) - 173: 8(fvec4) ExtInst 1(GLSL.std.450) 37(step) 171 172 - 174: 8(fvec4) Load 10(v) + Store 10(v) 168 + 171: 7(float) Load 170(uf) + 172: 8(fvec4) Load 10(v) + 173: 8(fvec4) ExtInst 1(GLSL.std.450) 47(Step) 171 172 + 174: 8(fvec4) Load 10(v) 175: 8(fvec4) FAdd 174 173 - Store 10(v) 175 - 176: 7(float) Load 170(uf) - 177: 7(float) Load 170(uf) - 178: 8(fvec4) Load 10(v) - 179: 8(fvec4) ExtInst 1(GLSL.std.450) 38(smoothStep) 176 177 178 - 180: 8(fvec4) Load 10(v) + Store 10(v) 175 + 176: 7(float) Load 170(uf) + 177: 7(float) Load 170(uf) + 178: 8(fvec4) Load 10(v) + 179: 8(fvec4) ExtInst 1(GLSL.std.450) 48(Smoothstep) 176 177 178 + 180: 8(fvec4) Load 10(v) 181: 8(fvec4) FAdd 180 179 - Store 10(v) 181 - 182: 8(fvec4) Load 10(v) - 183: 8(fvec4) ExtInst 1(GLSL.std.450) 61(normalize) 182 - 184: 8(fvec4) Load 10(v) + Store 10(v) 181 + 182: 8(fvec4) Load 10(v) + 183: 8(fvec4) ExtInst 1(GLSL.std.450) 68(Normalize) 182 + 184: 8(fvec4) Load 10(v) 185: 8(fvec4) FAdd 184 183 - Store 10(v) 185 - 186: 8(fvec4) Load 10(v) - 187: 8(fvec4) Load 10(v) - 188: 8(fvec4) Load 10(v) - 189: 8(fvec4) ExtInst 1(GLSL.std.450) 63(faceForward) 186 187 188 - 190: 8(fvec4) Load 10(v) + Store 10(v) 185 + 186: 8(fvec4) Load 10(v) + 187: 8(fvec4) Load 10(v) + 188: 8(fvec4) Load 10(v) + 189: 8(fvec4) ExtInst 1(GLSL.std.450) 69(Faceforward) 186 187 188 + 190: 8(fvec4) Load 10(v) 191: 8(fvec4) FAdd 190 189 - Store 10(v) 191 - 192: 8(fvec4) Load 10(v) - 193: 8(fvec4) Load 10(v) - 194: 8(fvec4) ExtInst 1(GLSL.std.450) 64(reflect) 192 193 - 195: 8(fvec4) Load 10(v) + Store 10(v) 191 + 192: 8(fvec4) Load 10(v) + 193: 8(fvec4) Load 10(v) + 194: 8(fvec4) ExtInst 1(GLSL.std.450) 70(Reflect) 192 193 + 195: 8(fvec4) Load 10(v) 196: 8(fvec4) FAdd 195 194 - Store 10(v) 196 - 197: 8(fvec4) Load 10(v) - 198: 8(fvec4) Load 10(v) - 199: 7(float) Load 170(uf) - 200: 8(fvec4) ExtInst 1(GLSL.std.450) 65(refract) 197 198 199 - 201: 8(fvec4) Load 10(v) + Store 10(v) 196 + 197: 8(fvec4) Load 10(v) + 198: 8(fvec4) Load 10(v) + 199: 7(float) Load 170(uf) + 200: 8(fvec4) ExtInst 1(GLSL.std.450) 71(Refract) 197 198 199 + 201: 8(fvec4) Load 10(v) 202: 8(fvec4) FAdd 201 200 - Store 10(v) 202 - 203: 8(fvec4) Load 10(v) + Store 10(v) 202 + 203: 8(fvec4) Load 10(v) 204: 8(fvec4) DPdx 203 - 205: 8(fvec4) Load 10(v) + 205: 8(fvec4) Load 10(v) 206: 8(fvec4) FAdd 205 204 - Store 10(v) 206 - 207: 8(fvec4) Load 10(v) + Store 10(v) 206 + 207: 8(fvec4) Load 10(v) 208: 8(fvec4) DPdy 207 - 209: 8(fvec4) Load 10(v) + 209: 8(fvec4) Load 10(v) 210: 8(fvec4) FAdd 209 208 - Store 10(v) 210 - 211: 8(fvec4) Load 10(v) + Store 10(v) 210 + 211: 8(fvec4) Load 10(v) 212: 8(fvec4) Fwidth 211 - 213: 8(fvec4) Load 10(v) + 213: 8(fvec4) Load 10(v) 214: 8(fvec4) FAdd 213 212 - Store 10(v) 214 - 218: 8(fvec4) Load 10(v) - 219: 8(fvec4) Load 12(uv4) + Store 10(v) 214 + 218: 8(fvec4) Load 10(v) + 219: 8(fvec4) Load 12(uv4) 221: 220(bvec4) FOrdLessThan 218 219 222: 215(bool) Any 221 - Store 217(b) 222 - 223: 215(bool) Load 217(b) - 224: 8(fvec4) Load 10(v) - 225: 8(fvec4) Load 12(uv4) + Store 217(b) 222 + 223: 215(bool) Load 217(b) + 224: 8(fvec4) Load 10(v) + 225: 8(fvec4) Load 12(uv4) 226: 220(bvec4) FOrdLessThanEqual 224 225 227: 215(bool) Any 226 228: 215(bool) LogicalAnd 223 227 - Store 217(b) 228 - 229: 215(bool) Load 217(b) - 230: 8(fvec4) Load 10(v) - 231: 8(fvec4) Load 12(uv4) + Store 217(b) 228 + 229: 215(bool) Load 217(b) + 230: 8(fvec4) Load 10(v) + 231: 8(fvec4) Load 12(uv4) 232: 220(bvec4) FOrdGreaterThan 230 231 233: 215(bool) Any 232 234: 215(bool) LogicalAnd 229 233 - Store 217(b) 234 - 235: 215(bool) Load 217(b) - 236: 8(fvec4) Load 10(v) - 237: 8(fvec4) Load 12(uv4) + Store 217(b) 234 + 235: 215(bool) Load 217(b) + 236: 8(fvec4) Load 10(v) + 237: 8(fvec4) Load 12(uv4) 238: 220(bvec4) FOrdGreaterThanEqual 236 237 239: 215(bool) Any 238 240: 215(bool) LogicalAnd 235 239 - Store 217(b) 240 - 241: 215(bool) Load 217(b) - 244: 220(bvec4) Load 243(ub41) - 246: 220(bvec4) Load 245(ub42) + Store 217(b) 240 + 241: 215(bool) Load 217(b) + 244: 220(bvec4) Load 243(ub41) + 246: 220(bvec4) Load 245(ub42) 247: 220(bvec4) IEqual 244 246 248: 215(bool) Any 247 249: 215(bool) LogicalAnd 241 248 - Store 217(b) 249 - 250: 215(bool) Load 217(b) - 251: 220(bvec4) Load 243(ub41) - 252: 220(bvec4) Load 245(ub42) + Store 217(b) 249 + 250: 215(bool) Load 217(b) + 251: 220(bvec4) Load 243(ub41) + 252: 220(bvec4) Load 245(ub42) 253: 220(bvec4) INotEqual 251 252 254: 215(bool) Any 253 255: 215(bool) LogicalAnd 250 254 - Store 217(b) 255 - 256: 215(bool) Load 217(b) - 257: 220(bvec4) Load 243(ub41) + Store 217(b) 255 + 256: 215(bool) Load 217(b) + 257: 220(bvec4) Load 243(ub41) 258: 215(bool) Any 257 259: 215(bool) LogicalAnd 256 258 - Store 217(b) 259 - 260: 215(bool) Load 217(b) - 261: 220(bvec4) Load 243(ub41) + Store 217(b) 259 + 260: 215(bool) Load 217(b) + 261: 220(bvec4) Load 243(ub41) 262: 215(bool) All 261 263: 215(bool) LogicalAnd 260 262 - Store 217(b) 263 - 264: 215(bool) Load 217(b) - 265: 220(bvec4) Load 243(ub41) - 266: 220(bvec4) Not 265 + Store 217(b) 263 + 264: 215(bool) Load 217(b) + 265: 220(bvec4) Load 243(ub41) + 266: 220(bvec4) LogicalNot 265 267: 215(bool) Any 266 268: 215(bool) LogicalAnd 264 267 - Store 217(b) 268 - 269: 19(int) Load 21(i) - 270: 19(int) Load 23(ui) + Store 217(b) 268 + 269: 19(int) Load 21(i) + 270: 19(int) Load 23(ui) 271: 19(int) IAdd 269 270 - 272: 19(int) Load 21(i) + 272: 19(int) Load 21(i) 273: 19(int) IMul 271 272 - 274: 19(int) Load 23(ui) + 274: 19(int) Load 23(ui) 275: 19(int) ISub 273 274 - 276: 19(int) Load 21(i) + 276: 19(int) Load 21(i) 277: 19(int) SDiv 275 276 - Store 21(i) 277 - 278: 19(int) Load 21(i) - 279: 19(int) Load 23(ui) + Store 21(i) 277 + 278: 19(int) Load 21(i) + 279: 19(int) Load 23(ui) 280: 19(int) SMod 278 279 - Store 21(i) 280 - 281: 19(int) Load 21(i) - 282: 19(int) Load 23(ui) + Store 21(i) 280 + 281: 19(int) Load 21(i) + 282: 19(int) Load 23(ui) 283: 215(bool) IEqual 281 282 - 284: 19(int) Load 21(i) - 285: 19(int) Load 23(ui) + 284: 19(int) Load 21(i) + 285: 19(int) Load 23(ui) 286: 215(bool) INotEqual 284 285 - 287: 19(int) Load 21(i) - 288: 19(int) Load 23(ui) + 287: 19(int) Load 21(i) + 288: 19(int) Load 23(ui) 289: 215(bool) IEqual 287 288 290: 215(bool) LogicalAnd 286 289 - 291: 19(int) Load 21(i) + 291: 19(int) Load 21(i) 293: 215(bool) INotEqual 291 292 - 294: 215(bool) LogicalXor 290 293 + 294: 215(bool) LogicalNotEqual 290 293 295: 215(bool) LogicalOr 283 294 SelectionMerge 297 None - BranchConditional 295 296 297 + BranchConditional 295 296 297 296: Label - 298: 19(int) Load 21(i) + 298: 19(int) Load 21(i) 300: 19(int) IAdd 298 299 - Store 21(i) 300 + Store 21(i) 300 Branch 297 297: Label - 303: 7(float) Load 170(uf) - 304: 7(float) Load 170(uf) + 303: 7(float) Load 170(uf) + 304: 7(float) Load 170(uf) 305: 7(float) FAdd 303 304 - 306: 7(float) Load 170(uf) + 306: 7(float) Load 170(uf) 307: 7(float) FMul 305 306 - 308: 7(float) Load 170(uf) + 308: 7(float) Load 170(uf) 309: 7(float) FSub 307 308 - 310: 7(float) Load 170(uf) + 310: 7(float) Load 170(uf) 311: 7(float) FDiv 309 310 - Store 302(f) 311 - 312: 8(fvec4) Load 10(v) - 313: 7(float) ExtInst 1(GLSL.std.450) 58(length) 312 - 314: 7(float) Load 302(f) + Store 302(f) 311 + 312: 8(fvec4) Load 10(v) + 313: 7(float) ExtInst 1(GLSL.std.450) 65(Length) 312 + 314: 7(float) Load 302(f) 315: 7(float) FAdd 314 313 - Store 302(f) 315 - 316: 8(fvec4) Load 10(v) - 317: 8(fvec4) Load 10(v) - 318: 7(float) ExtInst 1(GLSL.std.450) 59(distance) 316 317 - 319: 7(float) Load 302(f) + Store 302(f) 315 + 316: 8(fvec4) Load 10(v) + 317: 8(fvec4) Load 10(v) + 318: 7(float) ExtInst 1(GLSL.std.450) 66(Distance) 316 317 + 319: 7(float) Load 302(f) 320: 7(float) FAdd 319 318 - Store 302(f) 320 - 321: 8(fvec4) Load 10(v) - 322: 8(fvec4) Load 10(v) + Store 302(f) 320 + 321: 8(fvec4) Load 10(v) + 322: 8(fvec4) Load 10(v) 323: 7(float) Dot 321 322 - 324: 7(float) Load 302(f) + 324: 7(float) Load 302(f) 325: 7(float) FAdd 324 323 - Store 302(f) 325 - 326: 7(float) Load 302(f) - 327: 7(float) Load 170(uf) + Store 302(f) 325 + 326: 7(float) Load 302(f) + 327: 7(float) Load 170(uf) 328: 7(float) FMul 326 327 - 329: 7(float) Load 302(f) + 329: 7(float) Load 302(f) 330: 7(float) FAdd 329 328 - Store 302(f) 330 - 331: 8(fvec4) Load 10(v) + Store 302(f) 330 + 331: 8(fvec4) Load 10(v) 333: 332(fvec3) VectorShuffle 331 331 0 1 2 - 334: 8(fvec4) Load 10(v) + 334: 8(fvec4) Load 10(v) 335: 332(fvec3) VectorShuffle 334 334 0 1 2 - 336: 332(fvec3) ExtInst 1(GLSL.std.450) 60(cross) 333 335 + 336: 332(fvec3) ExtInst 1(GLSL.std.450) 67(Cross) 333 335 337: 7(float) CompositeExtract 336 0 - 338: 7(float) Load 302(f) + 338: 7(float) Load 302(f) 339: 7(float) FAdd 338 337 - Store 302(f) 339 - 340: 7(float) Load 302(f) - 341: 7(float) Load 170(uf) + Store 302(f) 339 + 340: 7(float) Load 302(f) + 341: 7(float) Load 170(uf) 342: 215(bool) FOrdEqual 340 341 - 343: 7(float) Load 302(f) - 344: 7(float) Load 170(uf) + 343: 7(float) Load 302(f) + 344: 7(float) Load 170(uf) 345: 215(bool) FOrdNotEqual 343 344 - 346: 7(float) Load 302(f) + 346: 7(float) Load 302(f) 348: 215(bool) FOrdNotEqual 346 347 349: 215(bool) LogicalAnd 345 348 350: 215(bool) LogicalOr 342 349 SelectionMerge 352 None - BranchConditional 350 351 352 + BranchConditional 350 351 352 351: Label - 353: 7(float) Load 302(f) + 353: 7(float) Load 302(f) 355: 7(float) FAdd 353 354 - Store 302(f) 355 + Store 302(f) 355 Branch 352 352: Label - 356: 19(int) Load 23(ui) - 357: 19(int) Load 21(i) + 356: 19(int) Load 23(ui) + 357: 19(int) Load 21(i) 358: 19(int) BitwiseAnd 357 356 - Store 21(i) 358 - 360: 19(int) Load 21(i) + Store 21(i) 358 + 360: 19(int) Load 21(i) 361: 19(int) BitwiseOr 360 359 - Store 21(i) 361 - 362: 19(int) Load 23(ui) - 363: 19(int) Load 21(i) + Store 21(i) 361 + 362: 19(int) Load 23(ui) + 363: 19(int) Load 21(i) 364: 19(int) BitwiseXor 363 362 - Store 21(i) 364 - 366: 19(int) Load 21(i) + Store 21(i) 364 + 366: 19(int) Load 21(i) 367: 19(int) SMod 366 365 - Store 21(i) 367 - 368: 19(int) Load 21(i) + Store 21(i) 367 + 368: 19(int) Load 21(i) 369: 19(int) ShiftRightArithmetic 368 292 - Store 21(i) 369 - 370: 19(int) Load 23(ui) - 371: 19(int) Load 21(i) + Store 21(i) 369 + 370: 19(int) Load 23(ui) + 371: 19(int) Load 21(i) 372: 19(int) ShiftLeftLogical 371 370 - Store 21(i) 372 - 373: 19(int) Load 21(i) + Store 21(i) 372 + 373: 19(int) Load 21(i) 374: 19(int) Not 373 - Store 21(i) 374 - 375: 215(bool) Load 217(b) - 376: 215(bool) Not 375 - Store 217(b) 376 - 380: 215(bool) Load 217(b) + Store 21(i) 374 + 375: 215(bool) Load 217(b) + 376: 215(bool) LogicalNot 375 + Store 217(b) 376 + 380: 215(bool) Load 217(b) SelectionMerge 382 None - BranchConditional 380 381 391 + BranchConditional 380 381 391 381: Label - 383: 19(int) Load 21(i) + 383: 19(int) Load 21(i) 384: 7(float) ConvertSToF 383 385: 8(fvec4) CompositeConstruct 384 384 384 384 - 386: 7(float) Load 302(f) + 386: 7(float) Load 302(f) 387: 8(fvec4) CompositeConstruct 386 386 386 386 388: 8(fvec4) FAdd 385 387 - 389: 8(fvec4) Load 10(v) + 389: 8(fvec4) Load 10(v) 390: 8(fvec4) FAdd 388 389 - Store 379 390 + Store 379 390 Branch 382 391: Label - 392: 8(fvec4) Load 10(v) - Store 379 392 + 392: 8(fvec4) Load 10(v) + Store 379 392 Branch 382 382: Label - 393: 8(fvec4) Load 379 - Store 378(gl_FragColor) 393 + 393: 8(fvec4) Load 379 + Store 378(gl_FragColor) 393 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out old mode 100644 new mode 100755 index fc3a321c..f45cc343 --- a/Test/baseResults/spv.accessChain.frag.out +++ b/Test/baseResults/spv.accessChain.frag.out @@ -10,9 +10,11 @@ Linked fragment stage: // Id's are bound by 198 Source GLSL 420 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "S" MemberName 9(S) 0 "color" @@ -71,7 +73,7 @@ Linked fragment stage: Name 195 "param" Decorate 66(OutColor) Location 0 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 3 9(S): TypeStruct 8(fvec3) @@ -80,7 +82,7 @@ Linked fragment stage: 15: TypePointer Function 14(int) 16: TypeFunction 2 9(S) 15(ptr) 65: TypePointer Output 8(fvec3) - 66(OutColor): 65(ptr) Variable Output + 66(OutColor): 65(ptr) Variable Output 67: 14(int) Constant 0 68: TypeInt 32 0 69: 68(int) Constant 0 @@ -90,72 +92,72 @@ Linked fragment stage: 143: 8(fvec3) ConstantComposite 142 142 142 144: TypePointer Function 9(S) 149: TypePointer UniformConstant 14(int) - 150(u): 149(ptr) Variable UniformConstant + 150(u): 149(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 145(s): 144(ptr) Variable Function - 151(param): 15(ptr) Variable Function - 155(param): 15(ptr) Variable Function - 159(param): 15(ptr) Variable Function - 163(param): 15(ptr) Variable Function - 167(param): 15(ptr) Variable Function - 171(param): 15(ptr) Variable Function - 175(param): 15(ptr) Variable Function - 179(param): 15(ptr) Variable Function - 183(param): 15(ptr) Variable Function - 187(param): 15(ptr) Variable Function - 191(param): 15(ptr) Variable Function - 195(param): 15(ptr) Variable Function - Store 66(OutColor) 143 - 146: 9(S) Load 145(s) + 145(s): 144(ptr) Variable Function + 151(param): 15(ptr) Variable Function + 155(param): 15(ptr) Variable Function + 159(param): 15(ptr) Variable Function + 163(param): 15(ptr) Variable Function + 167(param): 15(ptr) Variable Function + 171(param): 15(ptr) Variable Function + 175(param): 15(ptr) Variable Function + 179(param): 15(ptr) Variable Function + 183(param): 15(ptr) Variable Function + 187(param): 15(ptr) Variable Function + 191(param): 15(ptr) Variable Function + 195(param): 15(ptr) Variable Function + Store 66(OutColor) 143 + 146: 9(S) Load 145(s) 147: 2 FunctionCall 12(GetColor1(struct-S-vf31;) 146 - 148: 9(S) Load 145(s) - 152: 14(int) Load 150(u) - Store 151(param) 152 + 148: 9(S) Load 145(s) + 152: 14(int) Load 150(u) + Store 151(param) 152 153: 2 FunctionCall 19(GetColor2(struct-S-vf31;i1;) 148 151(param) - 154: 9(S) Load 145(s) - 156: 14(int) Load 150(u) - Store 155(param) 156 + 154: 9(S) Load 145(s) + 156: 14(int) Load 150(u) + Store 155(param) 156 157: 2 FunctionCall 23(GetColor3(struct-S-vf31;i1;) 154 155(param) - 158: 9(S) Load 145(s) - 160: 14(int) Load 150(u) - Store 159(param) 160 + 158: 9(S) Load 145(s) + 160: 14(int) Load 150(u) + Store 159(param) 160 161: 2 FunctionCall 27(GetColor4(struct-S-vf31;i1;) 158 159(param) - 162: 9(S) Load 145(s) - 164: 14(int) Load 150(u) - Store 163(param) 164 + 162: 9(S) Load 145(s) + 164: 14(int) Load 150(u) + Store 163(param) 164 165: 2 FunctionCall 31(GetColor5(struct-S-vf31;i1;) 162 163(param) - 166: 9(S) Load 145(s) - 168: 14(int) Load 150(u) - Store 167(param) 168 + 166: 9(S) Load 145(s) + 168: 14(int) Load 150(u) + Store 167(param) 168 169: 2 FunctionCall 35(GetColor6(struct-S-vf31;i1;) 166 167(param) - 170: 9(S) Load 145(s) - 172: 14(int) Load 150(u) - Store 171(param) 172 + 170: 9(S) Load 145(s) + 172: 14(int) Load 150(u) + Store 171(param) 172 173: 2 FunctionCall 39(GetColor7(struct-S-vf31;i1;) 170 171(param) - 174: 9(S) Load 145(s) - 176: 14(int) Load 150(u) - Store 175(param) 176 + 174: 9(S) Load 145(s) + 176: 14(int) Load 150(u) + Store 175(param) 176 177: 2 FunctionCall 43(GetColor8(struct-S-vf31;i1;) 174 175(param) - 178: 9(S) Load 145(s) - 180: 14(int) Load 150(u) - Store 179(param) 180 + 178: 9(S) Load 145(s) + 180: 14(int) Load 150(u) + Store 179(param) 180 181: 2 FunctionCall 47(GetColor9(struct-S-vf31;i1;) 178 179(param) - 182: 9(S) Load 145(s) - 184: 14(int) Load 150(u) - Store 183(param) 184 + 182: 9(S) Load 145(s) + 184: 14(int) Load 150(u) + Store 183(param) 184 185: 2 FunctionCall 51(GetColor10(struct-S-vf31;i1;) 182 183(param) - 186: 9(S) Load 145(s) - 188: 14(int) Load 150(u) - Store 187(param) 188 + 186: 9(S) Load 145(s) + 188: 14(int) Load 150(u) + Store 187(param) 188 189: 2 FunctionCall 55(GetColor11(struct-S-vf31;i1;) 186 187(param) - 190: 9(S) Load 145(s) - 192: 14(int) Load 150(u) - Store 191(param) 192 + 190: 9(S) Load 145(s) + 192: 14(int) Load 150(u) + Store 191(param) 192 193: 2 FunctionCall 59(GetColor12(struct-S-vf31;i1;) 190 191(param) - 194: 9(S) Load 145(s) - 196: 14(int) Load 150(u) - Store 195(param) 196 + 194: 9(S) Load 145(s) + 196: 14(int) Load 150(u) + Store 195(param) 196 197: 2 FunctionCall 63(GetColor13(struct-S-vf31;i1;) 194 195(param) Branch 6 6: Label @@ -165,49 +167,49 @@ Linked fragment stage: 11(i): 9(S) FunctionParameter 13: Label 70: 7(float) CompositeExtract 11(i) 0 0 - 71: 8(fvec3) Load 66(OutColor) + 71: 8(fvec3) Load 66(OutColor) 72: 8(fvec3) CompositeConstruct 70 70 70 73: 8(fvec3) FAdd 71 72 - Store 66(OutColor) 73 + Store 66(OutColor) 73 Return FunctionEnd 19(GetColor2(struct-S-vf31;i1;): 2 Function None 16 17(i): 9(S) FunctionParameter 18(comp): 15(ptr) FunctionParameter 20: Label - 74: 14(int) Load 18(comp) + 74: 14(int) Load 18(comp) 75: 8(fvec3) CompositeExtract 17(i) 0 76: 7(float) VectorExtractDynamic 75 74 - 77: 8(fvec3) Load 66(OutColor) + 77: 8(fvec3) Load 66(OutColor) 78: 8(fvec3) CompositeConstruct 76 76 76 79: 8(fvec3) FAdd 77 78 - Store 66(OutColor) 79 + Store 66(OutColor) 79 Return FunctionEnd 23(GetColor3(struct-S-vf31;i1;): 2 Function None 16 21(i): 9(S) FunctionParameter 22(comp): 15(ptr) FunctionParameter 24: Label - 80: 14(int) Load 22(comp) + 80: 14(int) Load 22(comp) 81: 8(fvec3) CompositeExtract 21(i) 0 82: 7(float) VectorExtractDynamic 81 80 - 83: 8(fvec3) Load 66(OutColor) + 83: 8(fvec3) Load 66(OutColor) 84: 8(fvec3) CompositeConstruct 82 82 82 85: 8(fvec3) FAdd 83 84 - Store 66(OutColor) 85 + Store 66(OutColor) 85 Return FunctionEnd 27(GetColor4(struct-S-vf31;i1;): 2 Function None 16 25(i): 9(S) FunctionParameter 26(comp): 15(ptr) FunctionParameter 28: Label - 86: 14(int) Load 26(comp) + 86: 14(int) Load 26(comp) 87: 8(fvec3) CompositeExtract 25(i) 0 88: 7(float) VectorExtractDynamic 87 86 - 89: 8(fvec3) Load 66(OutColor) + 89: 8(fvec3) Load 66(OutColor) 90: 8(fvec3) CompositeConstruct 88 88 88 91: 8(fvec3) FAdd 89 90 - Store 66(OutColor) 91 + Store 66(OutColor) 91 Return FunctionEnd 31(GetColor5(struct-S-vf31;i1;): 2 Function None 16 @@ -215,23 +217,23 @@ Linked fragment stage: 30(comp): 15(ptr) FunctionParameter 32: Label 92: 8(fvec3) CompositeExtract 29(i) 0 - 93: 8(fvec3) Load 66(OutColor) + 93: 8(fvec3) Load 66(OutColor) 94: 8(fvec3) FAdd 93 92 - Store 66(OutColor) 94 + Store 66(OutColor) 94 Return FunctionEnd 35(GetColor6(struct-S-vf31;i1;): 2 Function None 16 33(i): 9(S) FunctionParameter 34(comp): 15(ptr) FunctionParameter 36: Label - 95: 14(int) Load 34(comp) + 95: 14(int) Load 34(comp) 96: 8(fvec3) CompositeExtract 33(i) 0 98: 97(fvec2) VectorShuffle 96 96 1 0 99: 7(float) VectorExtractDynamic 98 95 - 100: 8(fvec3) Load 66(OutColor) + 100: 8(fvec3) Load 66(OutColor) 101: 8(fvec3) CompositeConstruct 99 99 99 102: 8(fvec3) FAdd 100 101 - Store 66(OutColor) 102 + Store 66(OutColor) 102 Return FunctionEnd 39(GetColor7(struct-S-vf31;i1;): 2 Function None 16 @@ -240,12 +242,12 @@ Linked fragment stage: 40: Label 103: 8(fvec3) CompositeExtract 37(i) 0 104: 97(fvec2) VectorShuffle 103 103 0 1 - 105: 8(fvec3) Load 66(OutColor) + 105: 8(fvec3) Load 66(OutColor) 106: 97(fvec2) VectorShuffle 105 105 0 1 107: 97(fvec2) FAdd 106 104 - 108: 8(fvec3) Load 66(OutColor) + 108: 8(fvec3) Load 66(OutColor) 109: 8(fvec3) VectorShuffle 108 107 3 4 2 - Store 66(OutColor) 109 + Store 66(OutColor) 109 Return FunctionEnd 43(GetColor8(struct-S-vf31;i1;): 2 Function None 16 @@ -253,10 +255,10 @@ Linked fragment stage: 42(comp): 15(ptr) FunctionParameter 44: Label 111: 7(float) CompositeExtract 41(i) 0 2 - 112: 8(fvec3) Load 66(OutColor) + 112: 8(fvec3) Load 66(OutColor) 113: 8(fvec3) CompositeConstruct 111 111 111 114: 8(fvec3) FAdd 112 113 - Store 66(OutColor) 114 + Store 66(OutColor) 114 Return FunctionEnd 47(GetColor9(struct-S-vf31;i1;): 2 Function None 16 @@ -264,12 +266,12 @@ Linked fragment stage: 46(comp): 15(ptr) FunctionParameter 48: Label 115: 8(fvec3) CompositeExtract 45(i) 0 - 116: 8(fvec3) Load 66(OutColor) + 116: 8(fvec3) Load 66(OutColor) 117: 8(fvec3) VectorShuffle 116 116 2 0 1 118: 8(fvec3) FAdd 117 115 - 119: 8(fvec3) Load 66(OutColor) + 119: 8(fvec3) Load 66(OutColor) 120: 8(fvec3) VectorShuffle 119 118 4 5 3 - Store 66(OutColor) 120 + Store 66(OutColor) 120 Return FunctionEnd 51(GetColor10(struct-S-vf31;i1;): 2 Function None 16 @@ -278,12 +280,12 @@ Linked fragment stage: 52: Label 121: 8(fvec3) CompositeExtract 49(i) 0 122: 97(fvec2) VectorShuffle 121 121 0 1 - 123: 8(fvec3) Load 66(OutColor) + 123: 8(fvec3) Load 66(OutColor) 124: 97(fvec2) VectorShuffle 123 123 2 1 125: 97(fvec2) FAdd 124 122 - 126: 8(fvec3) Load 66(OutColor) + 126: 8(fvec3) Load 66(OutColor) 127: 8(fvec3) VectorShuffle 126 125 0 4 3 - Store 66(OutColor) 127 + Store 66(OutColor) 127 Return FunctionEnd 55(GetColor11(struct-S-vf31;i1;): 2 Function None 16 @@ -292,26 +294,26 @@ Linked fragment stage: 56: Label 128: 8(fvec3) CompositeExtract 53(i) 0 129: 97(fvec2) VectorShuffle 128 128 0 1 - 130: 8(fvec3) Load 66(OutColor) + 130: 8(fvec3) Load 66(OutColor) 131: 97(fvec2) VectorShuffle 130 130 0 2 132: 97(fvec2) FAdd 131 129 - 133: 8(fvec3) Load 66(OutColor) + 133: 8(fvec3) Load 66(OutColor) 134: 8(fvec3) VectorShuffle 133 132 3 1 4 - Store 66(OutColor) 134 + Store 66(OutColor) 134 Return FunctionEnd 59(GetColor12(struct-S-vf31;i1;): 2 Function None 16 57(i): 9(S) FunctionParameter 58(comp): 15(ptr) FunctionParameter 60: Label - 135: 14(int) Load 58(comp) + 135: 14(int) Load 58(comp) 136: 7(float) CompositeExtract 57(i) 0 0 - 137: 8(fvec3) Load 66(OutColor) + 137: 8(fvec3) Load 66(OutColor) 138: 7(float) VectorExtractDynamic 137 135 139: 7(float) FAdd 138 136 - 140: 8(fvec3) Load 66(OutColor) + 140: 8(fvec3) Load 66(OutColor) 141: 8(fvec3) VectorInsertDynamic 140 139 135 - Store 66(OutColor) 141 + Store 66(OutColor) 141 Return FunctionEnd 63(GetColor13(struct-S-vf31;i1;): 2 Function None 16 diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out old mode 100644 new mode 100755 index b57b543c..ffcd1a9d --- a/Test/baseResults/spv.always-discard.frag.out +++ b/Test/baseResults/spv.always-discard.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 81 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "white" Name 13 "black" @@ -20,10 +22,10 @@ Linked fragment stage: Name 28 "y" Name 33 "radius" Name 56 "gl_FragColor" - Decorate 22(tex_coord) Smooth + Decorate 22(tex_coord) Smooth Decorate 56(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) @@ -34,96 +36,96 @@ Linked fragment stage: 18: TypePointer Function 7(float) 20: TypeVector 7(float) 2 21: TypePointer Input 20(fvec2) - 22(tex_coord): 21(ptr) Variable Input + 22(tex_coord): 21(ptr) Variable Input 25: 7(float) Constant 1073741824 43: TypeBool 48: 7(float) Constant 1066192077 55: TypePointer Output 8(fvec4) -56(gl_FragColor): 55(ptr) Variable Output +56(gl_FragColor): 55(ptr) Variable Output 59: 7(float) Constant 1067030938 68: 7(float) Constant 1061158912 73: 7(float) Constant 1098907648 4(main): 2 Function None 3 5: Label - 10(white): 9(ptr) Variable Function - 13(black): 9(ptr) Variable Function - 16(color): 9(ptr) Variable Function - 19(x): 18(ptr) Variable Function - 28(y): 18(ptr) Variable Function - 33(radius): 18(ptr) Variable Function - Store 10(white) 12 - Store 13(black) 15 - 17: 8(fvec4) Load 10(white) - Store 16(color) 17 - 23: 20(fvec2) Load 22(tex_coord) + 10(white): 9(ptr) Variable Function + 13(black): 9(ptr) Variable Function + 16(color): 9(ptr) Variable Function + 19(x): 18(ptr) Variable Function + 28(y): 18(ptr) Variable Function + 33(radius): 18(ptr) Variable Function + Store 10(white) 12 + Store 13(black) 15 + 17: 8(fvec4) Load 10(white) + Store 16(color) 17 + 23: 20(fvec2) Load 22(tex_coord) 24: 7(float) CompositeExtract 23 0 26: 7(float) FMul 24 25 27: 7(float) FSub 26 11 - Store 19(x) 27 - 29: 20(fvec2) Load 22(tex_coord) + Store 19(x) 27 + 29: 20(fvec2) Load 22(tex_coord) 30: 7(float) CompositeExtract 29 1 31: 7(float) FMul 30 25 32: 7(float) FSub 31 11 - Store 28(y) 32 - 34: 7(float) Load 19(x) - 35: 7(float) Load 19(x) + Store 28(y) 32 + 34: 7(float) Load 19(x) + 35: 7(float) Load 19(x) 36: 7(float) FMul 34 35 - 37: 7(float) Load 28(y) - 38: 7(float) Load 28(y) + 37: 7(float) Load 28(y) + 38: 7(float) Load 28(y) 39: 7(float) FMul 37 38 40: 7(float) FAdd 36 39 - 41: 7(float) ExtInst 1(GLSL.std.450) 28(sqrt) 40 - Store 33(radius) 41 - 42: 7(float) Load 33(radius) + 41: 7(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 40 + Store 33(radius) 41 + 42: 7(float) Load 33(radius) 44: 43(bool) FOrdGreaterThan 42 11 SelectionMerge 46 None - BranchConditional 44 45 46 + BranchConditional 44 45 46 45: Label - 47: 7(float) Load 33(radius) + 47: 7(float) Load 33(radius) 49: 43(bool) FOrdGreaterThan 47 48 SelectionMerge 51 None - BranchConditional 49 50 51 + BranchConditional 49 50 51 50: Label - 52: 8(fvec4) Load 16(color) + 52: 8(fvec4) Load 16(color) 53: 8(fvec4) CompositeConstruct 11 11 11 11 54: 8(fvec4) FAdd 52 53 - Store 16(color) 54 + Store 16(color) 54 Branch 51 51: Label - 57: 8(fvec4) Load 16(color) - Store 56(gl_FragColor) 57 - 58: 7(float) Load 33(radius) + 57: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 57 + 58: 7(float) Load 33(radius) 60: 43(bool) FOrdGreaterThan 58 59 SelectionMerge 62 None - BranchConditional 60 61 62 + BranchConditional 60 61 62 61: Label - 63: 8(fvec4) Load 16(color) + 63: 8(fvec4) Load 16(color) 64: 8(fvec4) CompositeConstruct 11 11 11 11 65: 8(fvec4) FAdd 63 64 - Store 16(color) 65 + Store 16(color) 65 Branch 62 62: Label Branch 46 46: Label Kill 66: Label - 67: 7(float) Load 33(radius) + 67: 7(float) Load 33(radius) 69: 43(bool) FOrdGreaterThanEqual 67 68 SelectionMerge 71 None - BranchConditional 69 70 71 + BranchConditional 69 70 71 70: Label - 72: 7(float) Load 33(radius) - 74: 7(float) ExtInst 1(GLSL.std.450) 23(pow) 72 73 + 72: 7(float) Load 33(radius) + 74: 7(float) ExtInst 1(GLSL.std.450) 26(Pow) 72 73 75: 7(float) FDiv 74 25 - 76: 7(float) ExtInst 1(GLSL.std.450) 3(abs) 75 - 77: 8(fvec4) Load 16(color) + 76: 7(float) ExtInst 1(GLSL.std.450) 4(FAbs) 75 + 77: 8(fvec4) Load 16(color) 78: 8(fvec4) CompositeConstruct 76 76 76 76 79: 8(fvec4) FSub 77 78 - Store 16(color) 79 + Store 16(color) 79 Branch 71 71: Label - 80: 8(fvec4) Load 16(color) - Store 56(gl_FragColor) 80 + 80: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 80 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out old mode 100644 new mode 100755 index 06cc5433..767558ef --- a/Test/baseResults/spv.always-discard2.frag.out +++ b/Test/baseResults/spv.always-discard2.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 37 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "white" Name 13 "black" @@ -19,10 +21,10 @@ Linked fragment stage: Name 22 "tex_coord" Name 28 "y" Name 35 "gl_FragColor" - Decorate 22(tex_coord) Smooth + Decorate 22(tex_coord) Smooth Decorate 35(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) @@ -33,31 +35,31 @@ Linked fragment stage: 18: TypePointer Function 7(float) 20: TypeVector 7(float) 2 21: TypePointer Input 20(fvec2) - 22(tex_coord): 21(ptr) Variable Input + 22(tex_coord): 21(ptr) Variable Input 25: 7(float) Constant 1073741824 34: TypePointer Output 8(fvec4) -35(gl_FragColor): 34(ptr) Variable Output +35(gl_FragColor): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 10(white): 9(ptr) Variable Function - 13(black): 9(ptr) Variable Function - 16(color): 9(ptr) Variable Function - 19(x): 18(ptr) Variable Function - 28(y): 18(ptr) Variable Function - Store 10(white) 12 - Store 13(black) 15 - 17: 8(fvec4) Load 10(white) - Store 16(color) 17 - 23: 20(fvec2) Load 22(tex_coord) + 10(white): 9(ptr) Variable Function + 13(black): 9(ptr) Variable Function + 16(color): 9(ptr) Variable Function + 19(x): 18(ptr) Variable Function + 28(y): 18(ptr) Variable Function + Store 10(white) 12 + Store 13(black) 15 + 17: 8(fvec4) Load 10(white) + Store 16(color) 17 + 23: 20(fvec2) Load 22(tex_coord) 24: 7(float) CompositeExtract 23 0 26: 7(float) FMul 24 25 27: 7(float) FSub 26 11 - Store 19(x) 27 - 29: 20(fvec2) Load 22(tex_coord) + Store 19(x) 27 + 29: 20(fvec2) Load 22(tex_coord) 30: 7(float) CompositeExtract 29 1 31: 7(float) FMul 30 25 32: 7(float) FSub 31 11 - Store 28(y) 32 + Store 28(y) 32 Kill 6: Label Return diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out old mode 100644 new mode 100755 index c5183807..4396dff3 --- a/Test/baseResults/spv.atomic.comp.out +++ b/Test/baseResults/spv.atomic.comp.out @@ -8,88 +8,80 @@ Linked compute stage: TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class? // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 75 +// Id's are bound by 77 Source ESSL 310 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 + EntryPoint GLCompute 4 "main" Name 4 "main" Name 11 "func(au1;" Name 10 "c" Name 13 "atoms(" - Name 20 "counter" - Name 21 "param" - Name 24 "val" - Name 28 "countArr" - Name 38 "origi" - Name 40 "atomi" - Name 44 "origu" - Name 46 "atomu" - Name 48 "value" - Name 72 "arrX" - Name 73 "arrY" - Name 74 "arrZ" - Decorate 20(counter) PrecisionHigh - Decorate 20(counter) Binding 0 - Decorate 24(val) PrecisionHigh - Decorate 28(countArr) PrecisionHigh - Decorate 28(countArr) Binding 0 - Decorate 38(origi) PrecisionHigh - Decorate 40(atomi) PrecisionHigh - Decorate 44(origu) PrecisionHigh - Decorate 46(atomu) PrecisionHigh - Decorate 48(value) PrecisionHigh - Decorate 72(arrX) PrecisionHigh - Decorate 72(arrX) NoStaticUse - Decorate 73(arrY) PrecisionHigh - Decorate 73(arrY) NoStaticUse - Decorate 74(arrZ) PrecisionHigh - Decorate 74(arrZ) NoStaticUse + Name 23 "counter" + Name 24 "param" + Name 27 "val" + Name 31 "countArr" + Name 41 "origi" + Name 43 "atomi" + Name 47 "origu" + Name 49 "atomu" + Name 51 "value" + Name 74 "arrX" + Name 75 "arrY" + Name 76 "arrZ" + Decorate 23(counter) Binding 0 + Decorate 31(countArr) Binding 0 + Decorate 74(arrX) NoStaticUse + Decorate 75(arrY) NoStaticUse + Decorate 76(arrZ) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 0 8: TypePointer Function 7(int) 9: TypeFunction 7(int) 8(ptr) - 19: TypePointer UniformConstant 7(int) - 20(counter): 19(ptr) Variable UniformConstant - 25: 7(int) Constant 4 - 26: TypeArray 7(int) 25 - 27: TypePointer UniformConstant 26 - 28(countArr): 27(ptr) Variable UniformConstant - 29: TypeInt 32 1 - 30: 29(int) Constant 2 - 37: TypePointer Function 29(int) - 39: TypePointer WorkgroupLocal 29(int) - 40(atomi): 39(ptr) Variable WorkgroupLocal - 42: 29(int) Constant 3 - 45: TypePointer WorkgroupLocal 7(int) - 46(atomu): 45(ptr) Variable WorkgroupLocal - 48(value): 19(ptr) Variable UniformConstant - 52: 7(int) Constant 7 - 60: 29(int) Constant 7 - 66: 7(int) Constant 10 - 69: 7(int) Constant 1 - 70: TypeArray 29(int) 69 - 71: TypePointer PrivateGlobal 70 - 72(arrX): 71(ptr) Variable PrivateGlobal - 73(arrY): 71(ptr) Variable PrivateGlobal - 74(arrZ): 71(ptr) Variable PrivateGlobal + 16: 7(int) Constant 1 + 17: 7(int) Constant 0 + 21: 7(int) Constant 256 + 22: TypePointer UniformConstant 7(int) + 23(counter): 22(ptr) Variable UniformConstant + 28: 7(int) Constant 4 + 29: TypeArray 7(int) 28 + 30: TypePointer UniformConstant 29 + 31(countArr): 30(ptr) Variable UniformConstant + 32: TypeInt 32 1 + 33: 32(int) Constant 2 + 40: TypePointer Function 32(int) + 42: TypePointer WorkgroupLocal 32(int) + 43(atomi): 42(ptr) Variable WorkgroupLocal + 45: 32(int) Constant 3 + 48: TypePointer WorkgroupLocal 7(int) + 49(atomu): 48(ptr) Variable WorkgroupLocal + 51(value): 22(ptr) Variable UniformConstant + 55: 7(int) Constant 7 + 63: 32(int) Constant 7 + 69: 7(int) Constant 10 + 72: TypeArray 32(int) 16 + 73: TypePointer PrivateGlobal 72 + 74(arrX): 73(ptr) Variable PrivateGlobal + 75(arrY): 73(ptr) Variable PrivateGlobal + 76(arrZ): 73(ptr) Variable PrivateGlobal 4(main): 2 Function None 3 5: Label - 21(param): 8(ptr) Variable Function - 24(val): 8(ptr) Variable Function - MemoryBarrier Device AtomicCounterMemory - 22: 7(int) Load 20(counter) - Store 21(param) 22 - 23: 7(int) FunctionCall 11(func(au1;) 21(param) - 31: 19(ptr) AccessChain 28(countArr) 30 - 32: 7(int) Load 31 - 33: 7(int) AtomicLoad 32 Device None - 34: 7(int) Load 31 - Store 24(val) 34 - 35: 7(int) Load 20(counter) - 36: 7(int) AtomicIDecrement 35 Device None + 24(param): 8(ptr) Variable Function + 27(val): 8(ptr) Variable Function + MemoryBarrier 16 21 + 25: 7(int) Load 23(counter) + Store 24(param) 25 + 26: 7(int) FunctionCall 11(func(au1;) 24(param) + 34: 22(ptr) AccessChain 31(countArr) 33 + 35: 7(int) Load 34 + 36: 7(int) AtomicLoad 35 16 17 + 37: 7(int) Load 34 + Store 27(val) 37 + 38: 7(int) Load 23(counter) + 39: 7(int) AtomicIDecrement 38 16 17 Branch 6 6: Label Return @@ -97,42 +89,42 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, 11(func(au1;): 7(int) Function None 9 10(c): 8(ptr) FunctionParameter 12: Label - 15: 7(int) Load 10(c) - 16: 7(int) AtomicIIncrement 15 Device None - 17: 7(int) Load 10(c) - ReturnValue 17 + 15: 7(int) Load 10(c) + 18: 7(int) AtomicIIncrement 15 16 17 + 19: 7(int) Load 10(c) + ReturnValue 19 FunctionEnd 13(atoms(): 2 Function None 3 14: Label - 38(origi): 37(ptr) Variable Function - 44(origu): 8(ptr) Variable Function - 41: 29(int) Load 40(atomi) - 43: 29(int) AtomicIAdd 41 Device None 42 - Store 38(origi) 43 - 47: 7(int) Load 46(atomu) - 49: 7(int) Load 48(value) - 50: 7(int) AtomicAnd 47 Device None 49 - Store 44(origu) 50 - 51: 7(int) Load 46(atomu) - 53: 7(int) AtomicOr 51 Device None 52 - Store 44(origu) 53 - 54: 7(int) Load 46(atomu) - 55: 7(int) AtomicXor 54 Device None 52 - Store 44(origu) 55 - 56: 7(int) Load 46(atomu) - 57: 7(int) Load 48(value) - 58: 7(int) AtomicIMin 56 Device None 57 - Store 44(origu) 58 - 59: 29(int) Load 40(atomi) - 61: 29(int) AtomicIMax 59 Device None 60 - Store 38(origi) 61 - 62: 29(int) Load 40(atomi) - 63: 29(int) Load 38(origi) - 64: 29(int) AtomicExchange 62 Device None 63 - Store 38(origi) 64 - 65: 7(int) Load 46(atomu) - 67: 7(int) Load 48(value) - 68: 7(int) AtomicCompareExchange 65 Device None 66 67 - Store 44(origu) 68 + 41(origi): 40(ptr) Variable Function + 47(origu): 8(ptr) Variable Function + 44: 32(int) Load 43(atomi) + 46: 32(int) AtomicIAdd 44 16 17 45 + Store 41(origi) 46 + 50: 7(int) Load 49(atomu) + 52: 7(int) Load 51(value) + 53: 7(int) AtomicAnd 50 16 17 52 + Store 47(origu) 53 + 54: 7(int) Load 49(atomu) + 56: 7(int) AtomicOr 54 16 17 55 + Store 47(origu) 56 + 57: 7(int) Load 49(atomu) + 58: 7(int) AtomicXor 57 16 17 55 + Store 47(origu) 58 + 59: 7(int) Load 49(atomu) + 60: 7(int) Load 51(value) + 61: 7(int) AtomicSMin 59 16 17 60 + Store 47(origu) 61 + 62: 32(int) Load 43(atomi) + 64: 32(int) AtomicSMax 62 16 17 63 + Store 41(origi) 64 + 65: 32(int) Load 43(atomi) + 66: 32(int) Load 41(origi) + 67: 32(int) AtomicExchange 65 16 17 66 + Store 41(origi) 67 + 68: 7(int) Load 49(atomu) + 70: 7(int) Load 51(value) + 71: 7(int) AtomicCompareExchange 68 16 17 69 70 + Store 47(origu) 71 Return FunctionEnd diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out old mode 100644 new mode 100755 index ea21a72b..b5488af2 --- a/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -5,56 +5,59 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 36 +// Id's are bound by 37 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "v" - Name 13 "tex" - Name 17 "coord" - Name 34 "gl_FragColor" - Decorate 17(coord) Smooth - Decorate 34(gl_FragColor) BuiltIn FragColor + Name 14 "tex" + Name 18 "coord" + Name 35 "gl_FragColor" + Decorate 18(coord) Smooth + Decorate 35(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) - 11: TypeSampler7(float) 2D filter+texture - 12: TypePointer UniformConstant 11 - 13(tex): 12(ptr) Variable UniformConstant - 15: TypeVector 7(float) 2 - 16: TypePointer Input 15(fvec2) - 17(coord): 16(ptr) Variable Input - 21: 7(float) Constant 1036831949 - 22: 7(float) Constant 1045220557 - 23: 7(float) Constant 1050253722 - 24: 7(float) Constant 1053609165 - 25: 8(fvec4) ConstantComposite 21 22 23 24 - 26: TypeBool - 27: TypeVector 26(bool) 4 - 33: TypePointer Output 8(fvec4) -34(gl_FragColor): 33(ptr) Variable Output + 11: TypeImage 7(float) 2D sampled format:Unknown + 12: TypeSampledImage 11 + 13: TypePointer UniformConstant 12 + 14(tex): 13(ptr) Variable UniformConstant + 16: TypeVector 7(float) 2 + 17: TypePointer Input 16(fvec2) + 18(coord): 17(ptr) Variable Input + 22: 7(float) Constant 1036831949 + 23: 7(float) Constant 1045220557 + 24: 7(float) Constant 1050253722 + 25: 7(float) Constant 1053609165 + 26: 8(fvec4) ConstantComposite 22 23 24 25 + 27: TypeBool + 28: TypeVector 27(bool) 4 + 34: TypePointer Output 8(fvec4) +35(gl_FragColor): 34(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 10(v): 9(ptr) Variable Function - 14: 11 Load 13(tex) - 18: 15(fvec2) Load 17(coord) - 19: 8(fvec4) TextureSample 14 18 - Store 10(v) 19 - 20: 8(fvec4) Load 10(v) - 28: 27(bvec4) FOrdEqual 20 25 - 29: 26(bool) All 28 - SelectionMerge 31 None - BranchConditional 29 30 31 - 30: Label + 10(v): 9(ptr) Variable Function + 15: 12 Load 14(tex) + 19: 16(fvec2) Load 18(coord) + 20: 8(fvec4) ImageSampleImplicitLod 15 19 + Store 10(v) 20 + 21: 8(fvec4) Load 10(v) + 29: 28(bvec4) FOrdEqual 21 26 + 30: 27(bool) All 29 + SelectionMerge 32 None + BranchConditional 30 31 32 + 31: Label Kill - 31: Label - 35: 8(fvec4) Load 10(v) - Store 34(gl_FragColor) 35 + 32: Label + 36: 8(fvec4) Load 10(v) + Store 35(gl_FragColor) 36 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out old mode 100644 new mode 100755 index f8ba2cd5..ebe95e00 --- a/Test/baseResults/spv.conversion.frag.out +++ b/Test/baseResults/spv.conversion.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 444 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "b" Name 12 "u_i" @@ -51,54 +53,54 @@ Linked fragment stage: Name 439 "i_f2" Name 441 "i_f3" Name 443 "i_f4" - Decorate 40(i_i) Flat - Decorate 54(i_f) Smooth - Decorate 158(i_i4) Flat + Decorate 40(i_i) Flat + Decorate 54(i_f) Smooth + Decorate 158(i_i4) Flat Decorate 313(gl_FragColor) BuiltIn FragColor - Decorate 417(u_b) NoStaticUse - Decorate 419(u_b2) NoStaticUse - Decorate 421(u_b3) NoStaticUse - Decorate 423(u_b4) NoStaticUse - Decorate 425(u_i2) NoStaticUse - Decorate 427(u_i3) NoStaticUse - Decorate 429(u_i4) NoStaticUse - Decorate 430(i_b) NoStaticUse - Decorate 431(i_b2) NoStaticUse - Decorate 432(i_b3) NoStaticUse - Decorate 433(i_b4) NoStaticUse - Decorate 435(i_i2) Flat - Decorate 435(i_i2) NoStaticUse - Decorate 437(i_i3) Flat - Decorate 437(i_i3) NoStaticUse - Decorate 439(i_f2) Smooth - Decorate 439(i_f2) NoStaticUse - Decorate 441(i_f3) Smooth - Decorate 441(i_f3) NoStaticUse - Decorate 443(i_f4) Smooth - Decorate 443(i_f4) NoStaticUse + Decorate 417(u_b) NoStaticUse + Decorate 419(u_b2) NoStaticUse + Decorate 421(u_b3) NoStaticUse + Decorate 423(u_b4) NoStaticUse + Decorate 425(u_i2) NoStaticUse + Decorate 427(u_i3) NoStaticUse + Decorate 429(u_i4) NoStaticUse + Decorate 430(i_b) NoStaticUse + Decorate 431(i_b2) NoStaticUse + Decorate 432(i_b3) NoStaticUse + Decorate 433(i_b4) NoStaticUse + Decorate 435(i_i2) Flat + Decorate 435(i_i2) NoStaticUse + Decorate 437(i_i3) Flat + Decorate 437(i_i3) NoStaticUse + Decorate 439(i_f2) Smooth + Decorate 439(i_f2) NoStaticUse + Decorate 441(i_f3) Smooth + Decorate 441(i_f3) NoStaticUse + Decorate 443(i_f4) Smooth + Decorate 443(i_f4) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeBool 8: TypePointer Function 7(bool) 10: TypeInt 32 1 11: TypePointer UniformConstant 10(int) - 12(u_i): 11(ptr) Variable UniformConstant + 12(u_i): 11(ptr) Variable UniformConstant 14: TypeInt 32 0 15: 14(int) Constant 0 17: TypeFloat 32 18: TypePointer UniformConstant 17(float) - 19(u_f): 18(ptr) Variable UniformConstant + 19(u_f): 18(ptr) Variable UniformConstant 21: 17(float) Constant 0 24: TypeVector 7(bool) 2 25: TypePointer Function 24(bvec2) 32: TypeVector 7(bool) 3 33: TypePointer Function 32(bvec3) 39: TypePointer Input 10(int) - 40(i_i): 39(ptr) Variable Input + 40(i_i): 39(ptr) Variable Input 44: TypeVector 7(bool) 4 45: TypePointer Function 44(bvec4) 53: TypePointer Input 17(float) - 54(i_f): 53(ptr) Variable Input + 54(i_f): 53(ptr) Variable Input 58: TypePointer Function 10(int) 63: 10(int) Constant 0 64: 10(int) Constant 1 @@ -106,21 +108,21 @@ Linked fragment stage: 68: TypePointer Function 67(ivec2) 70: TypeVector 17(float) 2 71: TypePointer UniformConstant 70(fvec2) - 72(u_f2): 71(ptr) Variable UniformConstant + 72(u_f2): 71(ptr) Variable UniformConstant 76: 67(ivec2) ConstantComposite 63 63 77: 67(ivec2) ConstantComposite 64 64 80: TypeVector 10(int) 3 81: TypePointer Function 80(ivec3) 83: TypeVector 17(float) 3 84: TypePointer UniformConstant 83(fvec3) - 85(u_f3): 84(ptr) Variable UniformConstant + 85(u_f3): 84(ptr) Variable UniformConstant 89: 80(ivec3) ConstantComposite 63 63 63 90: 80(ivec3) ConstantComposite 64 64 64 93: TypeVector 10(int) 4 94: TypePointer Function 93(ivec4) 96: TypeVector 17(float) 4 97: TypePointer UniformConstant 96(fvec4) - 98(u_f4): 97(ptr) Variable UniformConstant + 98(u_f4): 97(ptr) Variable UniformConstant 102: 93(ivec4) ConstantComposite 63 63 63 63 103: 93(ivec4) ConstantComposite 64 64 64 64 106: TypePointer Function 17(float) @@ -135,442 +137,442 @@ Linked fragment stage: 151: 96(fvec4) ConstantComposite 21 21 21 21 152: 96(fvec4) ConstantComposite 125 125 125 125 157: TypePointer Input 93(ivec4) - 158(i_i4): 157(ptr) Variable Input + 158(i_i4): 157(ptr) Variable Input 160: TypeVector 14(int) 4 161: 160(ivec4) ConstantComposite 15 15 15 15 312: TypePointer Output 96(fvec4) -313(gl_FragColor): 312(ptr) Variable Output +313(gl_FragColor): 312(ptr) Variable Output 416: TypePointer UniformConstant 7(bool) - 417(u_b): 416(ptr) Variable UniformConstant + 417(u_b): 416(ptr) Variable UniformConstant 418: TypePointer UniformConstant 24(bvec2) - 419(u_b2): 418(ptr) Variable UniformConstant + 419(u_b2): 418(ptr) Variable UniformConstant 420: TypePointer UniformConstant 32(bvec3) - 421(u_b3): 420(ptr) Variable UniformConstant + 421(u_b3): 420(ptr) Variable UniformConstant 422: TypePointer UniformConstant 44(bvec4) - 423(u_b4): 422(ptr) Variable UniformConstant + 423(u_b4): 422(ptr) Variable UniformConstant 424: TypePointer UniformConstant 67(ivec2) - 425(u_i2): 424(ptr) Variable UniformConstant + 425(u_i2): 424(ptr) Variable UniformConstant 426: TypePointer UniformConstant 80(ivec3) - 427(u_i3): 426(ptr) Variable UniformConstant + 427(u_i3): 426(ptr) Variable UniformConstant 428: TypePointer UniformConstant 93(ivec4) - 429(u_i4): 428(ptr) Variable UniformConstant - 430(i_b): 416(ptr) Variable UniformConstant - 431(i_b2): 418(ptr) Variable UniformConstant - 432(i_b3): 420(ptr) Variable UniformConstant - 433(i_b4): 422(ptr) Variable UniformConstant + 429(u_i4): 428(ptr) Variable UniformConstant + 430(i_b): 416(ptr) Variable UniformConstant + 431(i_b2): 418(ptr) Variable UniformConstant + 432(i_b3): 420(ptr) Variable UniformConstant + 433(i_b4): 422(ptr) Variable UniformConstant 434: TypePointer Input 67(ivec2) - 435(i_i2): 434(ptr) Variable Input + 435(i_i2): 434(ptr) Variable Input 436: TypePointer Input 80(ivec3) - 437(i_i3): 436(ptr) Variable Input + 437(i_i3): 436(ptr) Variable Input 438: TypePointer Input 70(fvec2) - 439(i_f2): 438(ptr) Variable Input + 439(i_f2): 438(ptr) Variable Input 440: TypePointer Input 83(fvec3) - 441(i_f3): 440(ptr) Variable Input + 441(i_f3): 440(ptr) Variable Input 442: TypePointer Input 96(fvec4) - 443(i_f4): 442(ptr) Variable Input + 443(i_f4): 442(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(b): 8(ptr) Variable Function - 26(b2): 25(ptr) Variable Function - 34(b3): 33(ptr) Variable Function - 46(b4): 45(ptr) Variable Function - 59(i): 58(ptr) Variable Function - 69(i2): 68(ptr) Variable Function - 82(i3): 81(ptr) Variable Function - 95(i4): 94(ptr) Variable Function - 107(f): 106(ptr) Variable Function - 111(f2): 110(ptr) Variable Function - 115(f3): 114(ptr) Variable Function - 119(f4): 118(ptr) Variable Function - 289: 106(ptr) Variable Function - 299: 106(ptr) Variable Function - 314: 118(ptr) Variable Function - 406(cv2): 94(ptr) Variable Function - 407(cv5): 45(ptr) Variable Function - 13: 10(int) Load 12(u_i) + 9(b): 8(ptr) Variable Function + 26(b2): 25(ptr) Variable Function + 34(b3): 33(ptr) Variable Function + 46(b4): 45(ptr) Variable Function + 59(i): 58(ptr) Variable Function + 69(i2): 68(ptr) Variable Function + 82(i3): 81(ptr) Variable Function + 95(i4): 94(ptr) Variable Function + 107(f): 106(ptr) Variable Function + 111(f2): 110(ptr) Variable Function + 115(f3): 114(ptr) Variable Function + 119(f4): 118(ptr) Variable Function + 289: 106(ptr) Variable Function + 299: 106(ptr) Variable Function + 314: 118(ptr) Variable Function + 406(cv2): 94(ptr) Variable Function + 407(cv5): 45(ptr) Variable Function + 13: 10(int) Load 12(u_i) 16: 7(bool) INotEqual 13 15 - 20: 17(float) Load 19(u_f) + 20: 17(float) Load 19(u_f) 22: 7(bool) FOrdNotEqual 20 21 - 23: 7(bool) LogicalXor 16 22 - Store 9(b) 23 - 27: 10(int) Load 12(u_i) + 23: 7(bool) LogicalNotEqual 16 22 + Store 9(b) 23 + 27: 10(int) Load 12(u_i) 28: 7(bool) INotEqual 27 15 - 29: 17(float) Load 19(u_f) + 29: 17(float) Load 19(u_f) 30: 7(bool) FOrdNotEqual 29 21 31: 24(bvec2) CompositeConstruct 28 30 - Store 26(b2) 31 - 35: 10(int) Load 12(u_i) + Store 26(b2) 31 + 35: 10(int) Load 12(u_i) 36: 7(bool) INotEqual 35 15 - 37: 17(float) Load 19(u_f) + 37: 17(float) Load 19(u_f) 38: 7(bool) FOrdNotEqual 37 21 - 41: 10(int) Load 40(i_i) + 41: 10(int) Load 40(i_i) 42: 7(bool) INotEqual 41 15 43: 32(bvec3) CompositeConstruct 36 38 42 - Store 34(b3) 43 - 47: 10(int) Load 12(u_i) + Store 34(b3) 43 + 47: 10(int) Load 12(u_i) 48: 7(bool) INotEqual 47 15 - 49: 17(float) Load 19(u_f) + 49: 17(float) Load 19(u_f) 50: 7(bool) FOrdNotEqual 49 21 - 51: 10(int) Load 40(i_i) + 51: 10(int) Load 40(i_i) 52: 7(bool) INotEqual 51 15 - 55: 17(float) Load 54(i_f) + 55: 17(float) Load 54(i_f) 56: 7(bool) FOrdNotEqual 55 21 57: 44(bvec4) CompositeConstruct 48 50 52 56 - Store 46(b4) 57 - 60: 17(float) Load 19(u_f) + Store 46(b4) 57 + 60: 17(float) Load 19(u_f) 61: 10(int) ConvertFToS 60 - 62: 7(bool) Load 9(b) + 62: 7(bool) Load 9(b) 65: 10(int) Select 62 64 63 66: 10(int) IAdd 61 65 - Store 59(i) 66 - 73: 70(fvec2) Load 72(u_f2) + Store 59(i) 66 + 73: 70(fvec2) Load 72(u_f2) 74: 67(ivec2) ConvertFToS 73 - 75: 24(bvec2) Load 26(b2) + 75: 24(bvec2) Load 26(b2) 78: 67(ivec2) Select 75 77 76 79: 67(ivec2) IAdd 74 78 - Store 69(i2) 79 - 86: 83(fvec3) Load 85(u_f3) + Store 69(i2) 79 + 86: 83(fvec3) Load 85(u_f3) 87: 80(ivec3) ConvertFToS 86 - 88: 32(bvec3) Load 34(b3) + 88: 32(bvec3) Load 34(b3) 91: 80(ivec3) Select 88 90 89 92: 80(ivec3) IAdd 87 91 - Store 82(i3) 92 - 99: 96(fvec4) Load 98(u_f4) + Store 82(i3) 92 + 99: 96(fvec4) Load 98(u_f4) 100: 93(ivec4) ConvertFToS 99 - 101: 44(bvec4) Load 46(b4) + 101: 44(bvec4) Load 46(b4) 104: 93(ivec4) Select 101 103 102 105: 93(ivec4) IAdd 100 104 - Store 95(i4) 105 - 108: 10(int) Load 59(i) + Store 95(i4) 105 + 108: 10(int) Load 59(i) 109: 17(float) ConvertSToF 108 - Store 107(f) 109 - 112: 67(ivec2) Load 69(i2) + Store 107(f) 109 + 112: 67(ivec2) Load 69(i2) 113: 70(fvec2) ConvertSToF 112 - Store 111(f2) 113 - 116: 80(ivec3) Load 82(i3) + Store 111(f2) 113 + 116: 80(ivec3) Load 82(i3) 117: 83(fvec3) ConvertSToF 116 - Store 115(f3) 117 - 120: 93(ivec4) Load 95(i4) + Store 115(f3) 117 + 120: 93(ivec4) Load 95(i4) 121: 96(fvec4) ConvertSToF 120 - Store 119(f4) 121 - 122: 10(int) Load 59(i) + Store 119(f4) 121 + 122: 10(int) Load 59(i) 123: 17(float) ConvertSToF 122 - 124: 7(bool) Load 9(b) + 124: 7(bool) Load 9(b) 126: 17(float) Select 124 125 21 127: 17(float) FAdd 123 126 - 128: 17(float) Load 107(f) + 128: 17(float) Load 107(f) 129: 17(float) FAdd 128 127 - Store 107(f) 129 - 130: 67(ivec2) Load 69(i2) + Store 107(f) 129 + 130: 67(ivec2) Load 69(i2) 131: 70(fvec2) ConvertSToF 130 - 132: 24(bvec2) Load 26(b2) + 132: 24(bvec2) Load 26(b2) 135: 70(fvec2) Select 132 134 133 136: 70(fvec2) FAdd 131 135 - 137: 70(fvec2) Load 111(f2) + 137: 70(fvec2) Load 111(f2) 138: 70(fvec2) FSub 137 136 - Store 111(f2) 138 - 139: 80(ivec3) Load 82(i3) + Store 111(f2) 138 + 139: 80(ivec3) Load 82(i3) 140: 83(fvec3) ConvertSToF 139 - 141: 32(bvec3) Load 34(b3) + 141: 32(bvec3) Load 34(b3) 144: 83(fvec3) Select 141 143 142 145: 83(fvec3) FAdd 140 144 - 146: 83(fvec3) Load 115(f3) + 146: 83(fvec3) Load 115(f3) 147: 83(fvec3) FDiv 146 145 - Store 115(f3) 147 - 148: 93(ivec4) Load 95(i4) + Store 115(f3) 147 + 148: 93(ivec4) Load 95(i4) 149: 96(fvec4) ConvertSToF 148 - 150: 44(bvec4) Load 46(b4) + 150: 44(bvec4) Load 46(b4) 153: 96(fvec4) Select 150 152 151 154: 96(fvec4) FAdd 149 153 - 155: 96(fvec4) Load 119(f4) + 155: 96(fvec4) Load 119(f4) 156: 96(fvec4) FAdd 155 154 - Store 119(f4) 156 - 159: 93(ivec4) Load 158(i_i4) + Store 119(f4) 156 + 159: 93(ivec4) Load 158(i_i4) 162: 44(bvec4) INotEqual 159 161 163: 96(fvec4) Select 162 152 151 - 164: 96(fvec4) Load 119(f4) + 164: 96(fvec4) Load 119(f4) 165: 96(fvec4) FAdd 164 163 - Store 119(f4) 165 - 166: 96(fvec4) Load 98(u_f4) + Store 119(f4) 165 + 166: 96(fvec4) Load 98(u_f4) 167: 44(bvec4) FOrdNotEqual 166 151 168: 96(fvec4) Select 167 152 151 - 169: 96(fvec4) Load 119(f4) + 169: 96(fvec4) Load 119(f4) 170: 96(fvec4) FAdd 169 168 - Store 119(f4) 170 - 171: 17(float) Load 107(f) - 172: 10(int) Load 59(i) + Store 119(f4) 170 + 171: 17(float) Load 107(f) + 172: 10(int) Load 59(i) 173: 17(float) ConvertSToF 172 174: 17(float) FSub 171 173 - 175: 17(float) Load 107(f) + 175: 17(float) Load 107(f) 176: 17(float) FAdd 175 174 - Store 107(f) 176 - 177: 17(float) Load 107(f) - 178: 10(int) Load 59(i) + Store 107(f) 176 + 177: 17(float) Load 107(f) + 178: 10(int) Load 59(i) 179: 17(float) ConvertSToF 178 180: 70(fvec2) CompositeConstruct 177 179 - 181: 67(ivec2) Load 69(i2) + 181: 67(ivec2) Load 69(i2) 182: 70(fvec2) ConvertSToF 181 183: 70(fvec2) FAdd 180 182 - 184: 70(fvec2) Load 111(f2) + 184: 70(fvec2) Load 111(f2) 185: 70(fvec2) FAdd 184 183 - Store 111(f2) 185 - 186: 80(ivec3) Load 82(i3) + Store 111(f2) 185 + 186: 80(ivec3) Load 82(i3) 187: 83(fvec3) ConvertSToF 186 - 188: 17(float) Load 107(f) - 189: 10(int) Load 59(i) + 188: 17(float) Load 107(f) + 189: 10(int) Load 59(i) 190: 17(float) ConvertSToF 189 - 191: 17(float) Load 107(f) + 191: 17(float) Load 107(f) 192: 83(fvec3) CompositeConstruct 188 190 191 193: 83(fvec3) FAdd 187 192 - 194: 83(fvec3) Load 115(f3) + 194: 83(fvec3) Load 115(f3) 195: 83(fvec3) FAdd 194 193 - Store 115(f3) 195 - 196: 7(bool) Load 9(b) + Store 115(f3) 195 + 196: 7(bool) Load 9(b) 197: 17(float) Select 196 125 21 - 198: 10(int) Load 59(i) + 198: 10(int) Load 59(i) 199: 17(float) ConvertSToF 198 - 200: 17(float) Load 107(f) - 201: 10(int) Load 59(i) + 200: 17(float) Load 107(f) + 201: 10(int) Load 59(i) 202: 17(float) ConvertSToF 201 203: 96(fvec4) CompositeConstruct 197 199 200 202 - 204: 93(ivec4) Load 95(i4) + 204: 93(ivec4) Load 95(i4) 205: 96(fvec4) ConvertSToF 204 206: 96(fvec4) FAdd 203 205 - 207: 96(fvec4) Load 119(f4) + 207: 96(fvec4) Load 119(f4) 208: 96(fvec4) FAdd 207 206 - Store 119(f4) 208 - 209: 17(float) Load 107(f) - 210: 10(int) Load 59(i) + Store 119(f4) 208 + 209: 17(float) Load 107(f) + 210: 10(int) Load 59(i) 211: 17(float) ConvertSToF 210 212: 70(fvec2) CompositeConstruct 209 211 - 213: 10(int) Load 59(i) + 213: 10(int) Load 59(i) 214: 17(float) ConvertSToF 213 215: 70(fvec2) VectorTimesScalar 212 214 - 216: 70(fvec2) Load 111(f2) + 216: 70(fvec2) Load 111(f2) 217: 70(fvec2) FAdd 216 215 - Store 111(f2) 217 - 218: 17(float) Load 107(f) - 219: 10(int) Load 59(i) + Store 111(f2) 217 + 218: 17(float) Load 107(f) + 219: 10(int) Load 59(i) 220: 17(float) ConvertSToF 219 - 221: 17(float) Load 107(f) + 221: 17(float) Load 107(f) 222: 83(fvec3) CompositeConstruct 218 220 221 - 223: 10(int) Load 59(i) + 223: 10(int) Load 59(i) 224: 17(float) ConvertSToF 223 225: 83(fvec3) CompositeConstruct 224 224 224 226: 83(fvec3) FAdd 222 225 - 227: 83(fvec3) Load 115(f3) + 227: 83(fvec3) Load 115(f3) 228: 83(fvec3) FAdd 227 226 - Store 115(f3) 228 - 229: 10(int) Load 59(i) + Store 115(f3) 228 + 229: 10(int) Load 59(i) 230: 17(float) ConvertSToF 229 - 231: 7(bool) Load 9(b) + 231: 7(bool) Load 9(b) 232: 17(float) Select 231 125 21 - 233: 10(int) Load 59(i) + 233: 10(int) Load 59(i) 234: 17(float) ConvertSToF 233 - 235: 17(float) Load 107(f) - 236: 10(int) Load 59(i) + 235: 17(float) Load 107(f) + 236: 10(int) Load 59(i) 237: 17(float) ConvertSToF 236 238: 96(fvec4) CompositeConstruct 232 234 235 237 239: 96(fvec4) CompositeConstruct 230 230 230 230 240: 96(fvec4) FSub 239 238 - 241: 96(fvec4) Load 119(f4) + 241: 96(fvec4) Load 119(f4) 242: 96(fvec4) FAdd 241 240 - Store 119(f4) 242 - 243: 17(float) Load 107(f) + Store 119(f4) 242 + 243: 17(float) Load 107(f) 244: 10(int) ConvertFToS 243 - 245: 10(int) Load 59(i) + 245: 10(int) Load 59(i) 246: 67(ivec2) CompositeConstruct 244 245 - 247: 67(ivec2) Load 69(i2) + 247: 67(ivec2) Load 69(i2) 248: 67(ivec2) IAdd 247 246 - Store 69(i2) 248 - 249: 17(float) Load 107(f) + Store 69(i2) 248 + 249: 17(float) Load 107(f) 250: 10(int) ConvertFToS 249 - 251: 10(int) Load 59(i) - 252: 17(float) Load 107(f) + 251: 10(int) Load 59(i) + 252: 17(float) Load 107(f) 253: 10(int) ConvertFToS 252 254: 80(ivec3) CompositeConstruct 250 251 253 - 255: 80(ivec3) Load 82(i3) + 255: 80(ivec3) Load 82(i3) 256: 80(ivec3) IAdd 255 254 - Store 82(i3) 256 - 257: 7(bool) Load 9(b) + Store 82(i3) 256 + 257: 7(bool) Load 9(b) 258: 10(int) Select 257 64 63 - 259: 10(int) Load 59(i) - 260: 17(float) Load 107(f) + 259: 10(int) Load 59(i) + 260: 17(float) Load 107(f) 261: 10(int) ConvertFToS 260 - 262: 10(int) Load 59(i) + 262: 10(int) Load 59(i) 263: 93(ivec4) CompositeConstruct 258 259 261 262 - 264: 93(ivec4) Load 95(i4) + 264: 93(ivec4) Load 95(i4) 265: 93(ivec4) IAdd 264 263 - Store 95(i4) 265 - 266: 17(float) Load 107(f) - 267: 10(int) Load 59(i) + Store 95(i4) 265 + 266: 17(float) Load 107(f) + 267: 10(int) Load 59(i) 268: 17(float) ConvertSToF 267 269: 7(bool) FOrdLessThan 266 268 - 270: 10(int) Load 59(i) + 270: 10(int) Load 59(i) 271: 17(float) ConvertSToF 270 - 272: 17(float) Load 107(f) + 272: 17(float) Load 107(f) 273: 7(bool) FOrdLessThan 271 272 274: 7(bool) LogicalOr 269 273 - 275: 70(fvec2) Load 111(f2) - 276: 67(ivec2) Load 69(i2) + 275: 70(fvec2) Load 111(f2) + 276: 67(ivec2) Load 69(i2) 277: 70(fvec2) ConvertSToF 276 278: 24(bvec2) FOrdEqual 275 277 279: 7(bool) All 278 280: 7(bool) LogicalOr 274 279 - 281: 80(ivec3) Load 82(i3) + 281: 80(ivec3) Load 82(i3) 282: 83(fvec3) ConvertSToF 281 - 283: 83(fvec3) Load 115(f3) + 283: 83(fvec3) Load 115(f3) 284: 32(bvec3) FOrdNotEqual 282 283 285: 7(bool) Any 284 286: 7(bool) LogicalOr 280 285 SelectionMerge 288 None - BranchConditional 286 287 288 + BranchConditional 286 287 288 287: Label - 290: 7(bool) Load 9(b) + 290: 7(bool) Load 9(b) SelectionMerge 292 None - BranchConditional 290 291 295 + BranchConditional 290 291 295 291: Label - 293: 10(int) Load 59(i) + 293: 10(int) Load 59(i) 294: 17(float) ConvertSToF 293 - Store 289 294 + Store 289 294 Branch 292 295: Label - 296: 70(fvec2) Load 111(f2) + 296: 70(fvec2) Load 111(f2) 297: 17(float) CompositeExtract 296 0 - Store 289 297 + Store 289 297 Branch 292 292: Label - 298: 17(float) Load 289 - 300: 24(bvec2) Load 26(b2) + 298: 17(float) Load 289 + 300: 24(bvec2) Load 26(b2) 301: 7(bool) CompositeExtract 300 0 SelectionMerge 303 None - BranchConditional 301 302 306 + BranchConditional 301 302 306 302: Label - 304: 83(fvec3) Load 115(f3) + 304: 83(fvec3) Load 115(f3) 305: 17(float) CompositeExtract 304 0 - Store 299 305 + Store 299 305 Branch 303 306: Label - 307: 67(ivec2) Load 69(i2) + 307: 67(ivec2) Load 69(i2) 308: 10(int) CompositeExtract 307 1 309: 17(float) ConvertSToF 308 - Store 299 309 + Store 299 309 Branch 303 303: Label - 310: 17(float) Load 299 + 310: 17(float) Load 299 311: 17(float) FAdd 298 310 - Store 107(f) 311 + Store 107(f) 311 Branch 288 288: Label - 315: 7(bool) Load 9(b) - 316: 24(bvec2) Load 26(b2) + 315: 7(bool) Load 9(b) + 316: 24(bvec2) Load 26(b2) 317: 7(bool) CompositeExtract 316 0 318: 7(bool) LogicalOr 315 317 - 319: 24(bvec2) Load 26(b2) + 319: 24(bvec2) Load 26(b2) 320: 7(bool) CompositeExtract 319 1 321: 7(bool) LogicalOr 318 320 - 322: 32(bvec3) Load 34(b3) + 322: 32(bvec3) Load 34(b3) 323: 7(bool) CompositeExtract 322 0 324: 7(bool) LogicalOr 321 323 - 325: 32(bvec3) Load 34(b3) + 325: 32(bvec3) Load 34(b3) 326: 7(bool) CompositeExtract 325 1 327: 7(bool) LogicalOr 324 326 - 328: 32(bvec3) Load 34(b3) + 328: 32(bvec3) Load 34(b3) 329: 7(bool) CompositeExtract 328 2 330: 7(bool) LogicalOr 327 329 - 331: 44(bvec4) Load 46(b4) + 331: 44(bvec4) Load 46(b4) 332: 7(bool) CompositeExtract 331 0 333: 7(bool) LogicalOr 330 332 - 334: 44(bvec4) Load 46(b4) + 334: 44(bvec4) Load 46(b4) 335: 7(bool) CompositeExtract 334 1 336: 7(bool) LogicalOr 333 335 - 337: 44(bvec4) Load 46(b4) + 337: 44(bvec4) Load 46(b4) 338: 7(bool) CompositeExtract 337 2 339: 7(bool) LogicalOr 336 338 - 340: 44(bvec4) Load 46(b4) + 340: 44(bvec4) Load 46(b4) 341: 7(bool) CompositeExtract 340 3 342: 7(bool) LogicalOr 339 341 SelectionMerge 344 None - BranchConditional 342 343 404 + BranchConditional 342 343 404 343: Label - 345: 10(int) Load 59(i) - 346: 67(ivec2) Load 69(i2) + 345: 10(int) Load 59(i) + 346: 67(ivec2) Load 69(i2) 347: 10(int) CompositeExtract 346 0 348: 10(int) IAdd 345 347 - 349: 67(ivec2) Load 69(i2) + 349: 67(ivec2) Load 69(i2) 350: 10(int) CompositeExtract 349 1 351: 10(int) IAdd 348 350 - 352: 80(ivec3) Load 82(i3) + 352: 80(ivec3) Load 82(i3) 353: 10(int) CompositeExtract 352 0 354: 10(int) IAdd 351 353 - 355: 80(ivec3) Load 82(i3) + 355: 80(ivec3) Load 82(i3) 356: 10(int) CompositeExtract 355 1 357: 10(int) IAdd 354 356 - 358: 80(ivec3) Load 82(i3) + 358: 80(ivec3) Load 82(i3) 359: 10(int) CompositeExtract 358 2 360: 10(int) IAdd 357 359 - 361: 93(ivec4) Load 95(i4) + 361: 93(ivec4) Load 95(i4) 362: 10(int) CompositeExtract 361 0 363: 10(int) IAdd 360 362 - 364: 93(ivec4) Load 95(i4) + 364: 93(ivec4) Load 95(i4) 365: 10(int) CompositeExtract 364 1 366: 10(int) IAdd 363 365 - 367: 93(ivec4) Load 95(i4) + 367: 93(ivec4) Load 95(i4) 368: 10(int) CompositeExtract 367 2 369: 10(int) IAdd 366 368 - 370: 93(ivec4) Load 95(i4) + 370: 93(ivec4) Load 95(i4) 371: 10(int) CompositeExtract 370 3 372: 10(int) IAdd 369 371 373: 17(float) ConvertSToF 372 - 374: 17(float) Load 107(f) + 374: 17(float) Load 107(f) 375: 17(float) FAdd 373 374 - 376: 70(fvec2) Load 111(f2) + 376: 70(fvec2) Load 111(f2) 377: 17(float) CompositeExtract 376 0 378: 17(float) FAdd 375 377 - 379: 70(fvec2) Load 111(f2) + 379: 70(fvec2) Load 111(f2) 380: 17(float) CompositeExtract 379 1 381: 17(float) FAdd 378 380 - 382: 83(fvec3) Load 115(f3) + 382: 83(fvec3) Load 115(f3) 383: 17(float) CompositeExtract 382 0 384: 17(float) FAdd 381 383 - 385: 83(fvec3) Load 115(f3) + 385: 83(fvec3) Load 115(f3) 386: 17(float) CompositeExtract 385 1 387: 17(float) FAdd 384 386 - 388: 83(fvec3) Load 115(f3) + 388: 83(fvec3) Load 115(f3) 389: 17(float) CompositeExtract 388 2 390: 17(float) FAdd 387 389 - 391: 96(fvec4) Load 119(f4) + 391: 96(fvec4) Load 119(f4) 392: 17(float) CompositeExtract 391 0 393: 17(float) FAdd 390 392 - 394: 96(fvec4) Load 119(f4) + 394: 96(fvec4) Load 119(f4) 395: 17(float) CompositeExtract 394 1 396: 17(float) FAdd 393 395 - 397: 96(fvec4) Load 119(f4) + 397: 96(fvec4) Load 119(f4) 398: 17(float) CompositeExtract 397 2 399: 17(float) FAdd 396 398 - 400: 96(fvec4) Load 119(f4) + 400: 96(fvec4) Load 119(f4) 401: 17(float) CompositeExtract 400 3 402: 17(float) FAdd 399 401 403: 96(fvec4) CompositeConstruct 402 402 402 402 - Store 314 403 + Store 314 403 Branch 344 404: Label - Store 314 152 + Store 314 152 Branch 344 344: Label - 405: 96(fvec4) Load 314 - Store 313(gl_FragColor) 405 - Store 406(cv2) 103 - 408: 93(ivec4) Load 406(cv2) + 405: 96(fvec4) Load 314 + Store 313(gl_FragColor) 405 + Store 406(cv2) 103 + 408: 93(ivec4) Load 406(cv2) 409: 44(bvec4) INotEqual 408 161 - Store 407(cv5) 409 - 410: 44(bvec4) Load 407(cv5) + Store 407(cv5) 409 + 410: 44(bvec4) Load 407(cv5) 411: 96(fvec4) Select 410 152 151 412: 17(float) CompositeExtract 411 0 - 413: 96(fvec4) Load 313(gl_FragColor) + 413: 96(fvec4) Load 313(gl_FragColor) 414: 96(fvec4) CompositeConstruct 412 412 412 412 415: 96(fvec4) FAdd 413 414 - Store 313(gl_FragColor) 415 + Store 313(gl_FragColor) 415 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out old mode 100644 new mode 100755 index fee2eef2..af9854cb --- a/Test/baseResults/spv.dataOut.frag.out +++ b/Test/baseResults/spv.dataOut.frag.out @@ -10,33 +10,35 @@ Linked fragment stage: // Id's are bound by 21 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 13 "gl_FragData" Name 17 "Color" Decorate 13(gl_FragData) BuiltIn FragColor - Decorate 17(Color) Smooth + Decorate 17(Color) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypeInt 32 0 10: 9(int) Constant 32 11: TypeArray 8(fvec4) 10 12: TypePointer Output 11 - 13(gl_FragData): 12(ptr) Variable Output + 13(gl_FragData): 12(ptr) Variable Output 14: TypeInt 32 1 15: 14(int) Constant 1 16: TypePointer Input 8(fvec4) - 17(Color): 16(ptr) Variable Input + 17(Color): 16(ptr) Variable Input 19: TypePointer Output 8(fvec4) 4(main): 2 Function None 3 5: Label - 18: 8(fvec4) Load 17(Color) + 18: 8(fvec4) Load 17(Color) 20: 19(ptr) AccessChain 13(gl_FragData) 15 - Store 20 18 + Store 20 18 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out old mode 100644 new mode 100755 index 7a75b6d6..b103e2db --- a/Test/baseResults/spv.dataOutIndirect.frag.out +++ b/Test/baseResults/spv.dataOutIndirect.frag.out @@ -10,36 +10,38 @@ Linked fragment stage: // Id's are bound by 23 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 13 "gl_FragData" Name 16 "i" Name 19 "Color" Decorate 13(gl_FragData) BuiltIn FragColor - Decorate 19(Color) Smooth + Decorate 19(Color) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypeInt 32 0 10: 9(int) Constant 32 11: TypeArray 8(fvec4) 10 12: TypePointer Output 11 - 13(gl_FragData): 12(ptr) Variable Output + 13(gl_FragData): 12(ptr) Variable Output 14: TypeInt 32 1 15: TypePointer UniformConstant 14(int) - 16(i): 15(ptr) Variable UniformConstant + 16(i): 15(ptr) Variable UniformConstant 18: TypePointer Input 8(fvec4) - 19(Color): 18(ptr) Variable Input + 19(Color): 18(ptr) Variable Input 21: TypePointer Output 8(fvec4) 4(main): 2 Function None 3 5: Label - 17: 14(int) Load 16(i) - 20: 8(fvec4) Load 19(Color) + 17: 14(int) Load 16(i) + 20: 8(fvec4) Load 19(Color) 22: 21(ptr) AccessChain 13(gl_FragData) 17 - Store 22 20 + Store 22 20 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out old mode 100644 new mode 100755 index 8fc84576..bcf68be5 --- a/Test/baseResults/spv.dataOutIndirect.vert.out +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -11,21 +11,22 @@ Linked vertex stage: // Id's are bound by 39 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 24 "colorOut" Name 27 "color" Name 33 "gl_Position" Name 38 "gl_VertexID" - Decorate 24(colorOut) Smooth + Decorate 24(colorOut) Smooth Decorate 33(gl_Position) BuiltIn Position Decorate 38(gl_VertexID) BuiltIn VertexId - Decorate 38(gl_VertexID) NoStaticUse + Decorate 38(gl_VertexID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 1 @@ -37,37 +38,37 @@ Linked vertex stage: 21: 20(int) Constant 6 22: TypeArray 19(fvec4) 21 23: TypePointer Output 22 - 24(colorOut): 23(ptr) Variable Output + 24(colorOut): 23(ptr) Variable Output 26: TypePointer Input 19(fvec4) - 27(color): 26(ptr) Variable Input + 27(color): 26(ptr) Variable Input 29: TypePointer Output 19(fvec4) - 33(gl_Position): 29(ptr) Variable Output + 33(gl_Position): 29(ptr) Variable Output 34: 7(int) Constant 2 37: TypePointer Input 7(int) - 38(gl_VertexID): 37(ptr) Variable Input + 38(gl_VertexID): 37(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label - 14: 7(int) Load 9(i) + 14: 7(int) Load 9(i) 17: 16(bool) SLessThan 14 15 LoopMerge 12 None - BranchConditional 17 13 12 + BranchConditional 17 13 12 13: Label - 25: 7(int) Load 9(i) - 28: 19(fvec4) Load 27(color) + 25: 7(int) Load 9(i) + 28: 19(fvec4) Load 27(color) 30: 29(ptr) AccessChain 24(colorOut) 25 - Store 30 28 - 31: 7(int) Load 9(i) + Store 30 28 + 31: 7(int) Load 9(i) 32: 7(int) IAdd 31 10 - Store 9(i) 32 + Store 9(i) 32 Branch 11 12: Label 35: 29(ptr) AccessChain 24(colorOut) 34 - 36: 19(fvec4) Load 35 - Store 33(gl_Position) 36 + 36: 19(fvec4) Load 35 + Store 33(gl_Position) 36 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out old mode 100644 new mode 100755 index 211ab142..319d79b3 --- a/Test/baseResults/spv.depthOut.frag.out +++ b/Test/baseResults/spv.depthOut.frag.out @@ -11,36 +11,38 @@ Linked fragment stage: // Id's are bound by 19 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "gl_FragDepth" Name 11 "Depth" Name 15 "gl_FragColor" Name 17 "Color" Decorate 9(gl_FragDepth) BuiltIn FragDepth - Decorate 11(Depth) Smooth + Decorate 11(Depth) Smooth Decorate 15(gl_FragColor) BuiltIn FragColor - Decorate 17(Color) Smooth + Decorate 17(Color) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypePointer Output 7(float) - 9(gl_FragDepth): 8(ptr) Variable Output + 9(gl_FragDepth): 8(ptr) Variable Output 10: TypePointer Input 7(float) - 11(Depth): 10(ptr) Variable Input + 11(Depth): 10(ptr) Variable Input 13: TypeVector 7(float) 4 14: TypePointer Output 13(fvec4) -15(gl_FragColor): 14(ptr) Variable Output +15(gl_FragColor): 14(ptr) Variable Output 16: TypePointer Input 13(fvec4) - 17(Color): 16(ptr) Variable Input + 17(Color): 16(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 12: 7(float) Load 11(Depth) - Store 9(gl_FragDepth) 12 - 18: 13(fvec4) Load 17(Color) - Store 15(gl_FragColor) 18 + 12: 7(float) Load 11(Depth) + Store 9(gl_FragDepth) 12 + 18: 13(fvec4) Load 17(Color) + Store 15(gl_FragColor) 18 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out old mode 100644 new mode 100755 index 366b5bc0..ef1bf46a --- a/Test/baseResults/spv.discard-dce.frag.out +++ b/Test/baseResults/spv.discard-dce.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 81 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "white" Name 13 "black" @@ -20,10 +22,10 @@ Linked fragment stage: Name 28 "y" Name 33 "radius" Name 56 "gl_FragColor" - Decorate 22(tex_coord) Smooth + Decorate 22(tex_coord) Smooth Decorate 56(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) @@ -34,94 +36,94 @@ Linked fragment stage: 18: TypePointer Function 7(float) 20: TypeVector 7(float) 2 21: TypePointer Input 20(fvec2) - 22(tex_coord): 21(ptr) Variable Input + 22(tex_coord): 21(ptr) Variable Input 25: 7(float) Constant 1073741824 43: TypeBool 48: 7(float) Constant 1066192077 55: TypePointer Output 8(fvec4) -56(gl_FragColor): 55(ptr) Variable Output +56(gl_FragColor): 55(ptr) Variable Output 59: 7(float) Constant 1067030938 68: 7(float) Constant 1061158912 73: 7(float) Constant 1098907648 4(main): 2 Function None 3 5: Label - 10(white): 9(ptr) Variable Function - 13(black): 9(ptr) Variable Function - 16(color): 9(ptr) Variable Function - 19(x): 18(ptr) Variable Function - 28(y): 18(ptr) Variable Function - 33(radius): 18(ptr) Variable Function - Store 10(white) 12 - Store 13(black) 15 - 17: 8(fvec4) Load 10(white) - Store 16(color) 17 - 23: 20(fvec2) Load 22(tex_coord) + 10(white): 9(ptr) Variable Function + 13(black): 9(ptr) Variable Function + 16(color): 9(ptr) Variable Function + 19(x): 18(ptr) Variable Function + 28(y): 18(ptr) Variable Function + 33(radius): 18(ptr) Variable Function + Store 10(white) 12 + Store 13(black) 15 + 17: 8(fvec4) Load 10(white) + Store 16(color) 17 + 23: 20(fvec2) Load 22(tex_coord) 24: 7(float) CompositeExtract 23 0 26: 7(float) FMul 24 25 27: 7(float) FSub 26 11 - Store 19(x) 27 - 29: 20(fvec2) Load 22(tex_coord) + Store 19(x) 27 + 29: 20(fvec2) Load 22(tex_coord) 30: 7(float) CompositeExtract 29 1 31: 7(float) FMul 30 25 32: 7(float) FSub 31 11 - Store 28(y) 32 - 34: 7(float) Load 19(x) - 35: 7(float) Load 19(x) + Store 28(y) 32 + 34: 7(float) Load 19(x) + 35: 7(float) Load 19(x) 36: 7(float) FMul 34 35 - 37: 7(float) Load 28(y) - 38: 7(float) Load 28(y) + 37: 7(float) Load 28(y) + 38: 7(float) Load 28(y) 39: 7(float) FMul 37 38 40: 7(float) FAdd 36 39 - 41: 7(float) ExtInst 1(GLSL.std.450) 28(sqrt) 40 - Store 33(radius) 41 - 42: 7(float) Load 33(radius) + 41: 7(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 40 + Store 33(radius) 41 + 42: 7(float) Load 33(radius) 44: 43(bool) FOrdGreaterThan 42 11 SelectionMerge 46 None - BranchConditional 44 45 46 + BranchConditional 44 45 46 45: Label - 47: 7(float) Load 33(radius) + 47: 7(float) Load 33(radius) 49: 43(bool) FOrdGreaterThan 47 48 SelectionMerge 51 None - BranchConditional 49 50 51 + BranchConditional 49 50 51 50: Label - 52: 8(fvec4) Load 16(color) + 52: 8(fvec4) Load 16(color) 53: 8(fvec4) CompositeConstruct 11 11 11 11 54: 8(fvec4) FAdd 52 53 - Store 16(color) 54 + Store 16(color) 54 Branch 51 51: Label - 57: 8(fvec4) Load 16(color) - Store 56(gl_FragColor) 57 - 58: 7(float) Load 33(radius) + 57: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 57 + 58: 7(float) Load 33(radius) 60: 43(bool) FOrdGreaterThan 58 59 SelectionMerge 62 None - BranchConditional 60 61 62 + BranchConditional 60 61 62 61: Label - 63: 8(fvec4) Load 16(color) + 63: 8(fvec4) Load 16(color) 64: 8(fvec4) CompositeConstruct 11 11 11 11 65: 8(fvec4) FAdd 63 64 - Store 16(color) 65 + Store 16(color) 65 Branch 62 62: Label Kill 46: Label - 67: 7(float) Load 33(radius) + 67: 7(float) Load 33(radius) 69: 43(bool) FOrdGreaterThanEqual 67 68 SelectionMerge 71 None - BranchConditional 69 70 71 + BranchConditional 69 70 71 70: Label - 72: 7(float) Load 33(radius) - 74: 7(float) ExtInst 1(GLSL.std.450) 23(pow) 72 73 + 72: 7(float) Load 33(radius) + 74: 7(float) ExtInst 1(GLSL.std.450) 26(Pow) 72 73 75: 7(float) FDiv 74 25 - 76: 7(float) ExtInst 1(GLSL.std.450) 3(abs) 75 - 77: 8(fvec4) Load 16(color) + 76: 7(float) ExtInst 1(GLSL.std.450) 4(FAbs) 75 + 77: 8(fvec4) Load 16(color) 78: 8(fvec4) CompositeConstruct 76 76 76 76 79: 8(fvec4) FSub 77 78 - Store 16(color) 79 + Store 16(color) 79 Branch 71 71: Label - 80: 8(fvec4) Load 16(color) - Store 56(gl_FragColor) 80 + 80: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 80 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out old mode 100644 new mode 100755 index a006e3dd..4ba5330a --- a/Test/baseResults/spv.do-simple.vert.out +++ b/Test/baseResults/spv.do-simple.vert.out @@ -8,22 +8,20 @@ Linked vertex stage: // Id's are bound by 30 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 28 "gl_VertexID" Name 29 "gl_InstanceID" - Decorate 9(i) PrecisionHigh - Decorate 28(gl_VertexID) PrecisionHigh Decorate 28(gl_VertexID) BuiltIn VertexId - Decorate 28(gl_VertexID) NoStaticUse - Decorate 29(gl_InstanceID) PrecisionHigh + Decorate 28(gl_VertexID) NoStaticUse Decorate 29(gl_InstanceID) BuiltIn InstanceId - Decorate 29(gl_InstanceID) NoStaticUse + Decorate 29(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 0 @@ -33,12 +31,12 @@ Linked vertex stage: 24: 7(int) Constant 1 26: 15(bool) ConstantFalse 27: TypePointer Input 7(int) - 28(gl_VertexID): 27(ptr) Variable Input -29(gl_InstanceID): 27(ptr) Variable Input + 28(gl_VertexID): 27(ptr) Variable Input +29(gl_InstanceID): 27(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label 14: 15(bool) Phi 16 5 26 13 @@ -46,18 +44,18 @@ Linked vertex stage: Branch 17 17: Label SelectionMerge 13 None - BranchConditional 14 13 18 + BranchConditional 14 13 18 18: Label - 19: 7(int) Load 9(i) + 19: 7(int) Load 9(i) 21: 15(bool) SLessThan 19 20 SelectionMerge 22 None - BranchConditional 21 22 12 + BranchConditional 21 22 12 22: Label Branch 13 13: Label - 23: 7(int) Load 9(i) + 23: 7(int) Load 9(i) 25: 7(int) IAdd 23 24 - Store 9(i) 25 + Store 9(i) 25 Branch 11 12: Label Branch 6 diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out old mode 100644 new mode 100755 index 8613a6de..e2302332 --- a/Test/baseResults/spv.do-while-continue-break.vert.out +++ b/Test/baseResults/spv.do-while-continue-break.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 52 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 25 "A" @@ -22,22 +23,12 @@ Linked vertex stage: Name 47 "G" Name 50 "gl_VertexID" Name 51 "gl_InstanceID" - Decorate 9(i) PrecisionHigh - Decorate 25(A) PrecisionHigh - Decorate 31(B) PrecisionHigh - Decorate 34(C) PrecisionHigh - Decorate 40(D) PrecisionHigh - Decorate 43(E) PrecisionHigh - Decorate 45(F) PrecisionHigh - Decorate 47(G) PrecisionHigh - Decorate 50(gl_VertexID) PrecisionHigh Decorate 50(gl_VertexID) BuiltIn VertexId - Decorate 50(gl_VertexID) NoStaticUse - Decorate 51(gl_InstanceID) PrecisionHigh + Decorate 50(gl_VertexID) NoStaticUse Decorate 51(gl_InstanceID) BuiltIn InstanceId - Decorate 51(gl_InstanceID) NoStaticUse + Decorate 51(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 0 @@ -53,19 +44,19 @@ Linked vertex stage: 46: 7(int) Constant 99 48: 7(int) Constant 12 49: TypePointer Input 7(int) - 50(gl_VertexID): 49(ptr) Variable Input -51(gl_InstanceID): 49(ptr) Variable Input + 50(gl_VertexID): 49(ptr) Variable Input +51(gl_InstanceID): 49(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - 25(A): 8(ptr) Variable Function - 31(B): 8(ptr) Variable Function - 34(C): 8(ptr) Variable Function - 40(D): 8(ptr) Variable Function - 43(E): 8(ptr) Variable Function - 45(F): 8(ptr) Variable Function - 47(G): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + 25(A): 8(ptr) Variable Function + 31(B): 8(ptr) Variable Function + 34(C): 8(ptr) Variable Function + 40(D): 8(ptr) Variable Function + 43(E): 8(ptr) Variable Function + 45(F): 8(ptr) Variable Function + 47(G): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label 14: 15(bool) Phi 16 5 32 29 32 39 @@ -73,44 +64,44 @@ Linked vertex stage: Branch 17 17: Label SelectionMerge 13 None - BranchConditional 14 13 18 + BranchConditional 14 13 18 18: Label - 19: 7(int) Load 9(i) + 19: 7(int) Load 9(i) 21: 7(int) IAdd 19 20 - Store 9(i) 21 + Store 9(i) 21 23: 15(bool) SLessThan 21 22 SelectionMerge 24 None - BranchConditional 23 24 12 + BranchConditional 23 24 12 24: Label Branch 13 13: Label - Store 25(A) 10 - 26: 7(int) Load 9(i) + Store 25(A) 10 + 26: 7(int) Load 9(i) 28: 15(bool) IEqual 26 27 SelectionMerge 30 None - BranchConditional 28 29 30 + BranchConditional 28 29 30 29: Label - Store 31(B) 20 + Store 31(B) 20 Branch 11 33: Label - Store 34(C) 27 + Store 34(C) 27 Branch 30 30: Label - 35: 7(int) Load 9(i) + 35: 7(int) Load 9(i) 37: 15(bool) IEqual 35 36 SelectionMerge 39 None - BranchConditional 37 38 39 + BranchConditional 37 38 39 38: Label - Store 40(D) 41 + Store 40(D) 41 Branch 12 42: Label - Store 43(E) 44 + Store 43(E) 44 Branch 39 39: Label - Store 45(F) 46 + Store 45(F) 46 Branch 11 12: Label - Store 47(G) 48 + Store 47(G) 48 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out old mode 100644 new mode 100755 index bf9b1ff0..4034137d --- a/Test/baseResults/spv.doWhileLoop.frag.out +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -8,38 +8,40 @@ Linked fragment stage: // Id's are bound by 38 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" Name 25 "d" Name 30 "bigColor" Name 36 "gl_FragColor" - Decorate 12(BaseColor) Smooth + Decorate 12(BaseColor) Smooth Decorate 36(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 18: TypeBool 19: 18(bool) ConstantTrue 24: TypePointer UniformConstant 7(float) - 25(d): 24(ptr) Variable UniformConstant + 25(d): 24(ptr) Variable UniformConstant 29: TypePointer UniformConstant 8(fvec4) - 30(bigColor): 29(ptr) Variable UniformConstant + 30(bigColor): 29(ptr) Variable UniformConstant 34: 18(bool) ConstantFalse 35: TypePointer Output 8(fvec4) -36(gl_FragColor): 35(ptr) Variable Output +36(gl_FragColor): 35(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 + 10(color): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 Branch 14 14: Label 17: 18(bool) Phi 19 5 34 16 @@ -47,25 +49,25 @@ Linked fragment stage: Branch 20 20: Label SelectionMerge 16 None - BranchConditional 17 16 21 + BranchConditional 17 16 21 21: Label - 22: 8(fvec4) Load 10(color) + 22: 8(fvec4) Load 10(color) 23: 7(float) CompositeExtract 22 0 - 26: 7(float) Load 25(d) + 26: 7(float) Load 25(d) 27: 18(bool) FOrdLessThan 23 26 SelectionMerge 28 None - BranchConditional 27 28 15 + BranchConditional 27 28 15 28: Label Branch 16 16: Label - 31: 8(fvec4) Load 30(bigColor) - 32: 8(fvec4) Load 10(color) + 31: 8(fvec4) Load 30(bigColor) + 32: 8(fvec4) Load 10(color) 33: 8(fvec4) FAdd 32 31 - Store 10(color) 33 + Store 10(color) 33 Branch 14 15: Label - 37: 8(fvec4) Load 10(color) - Store 36(gl_FragColor) 37 + 37: 8(fvec4) Load 10(color) + Store 36(gl_FragColor) 37 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out old mode 100644 new mode 100755 index 6e118257..3f2ca156 --- a/Test/baseResults/spv.double.comp.out +++ b/Test/baseResults/spv.double.comp.out @@ -10,9 +10,10 @@ Linked compute stage: // Id's are bound by 63 Source GLSL 430 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 + EntryPoint GLCompute 4 "main" Name 4 "main" Name 9 "bufName" MemberName 9(bufName) 0 "f" @@ -26,23 +27,23 @@ Linked compute stage: Name 55 "globalCoef" Name 59 "roll" Name 62 "destTex" - Decorate 9(bufName) GLSLShared - Decorate 9(bufName) BufferBlock + Decorate 9(bufName) GLSLShared + Decorate 9(bufName) BufferBlock Decorate 27(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 34(gl_LocalInvocationID) BuiltIn LocalInvocationId - Decorate 14 NoStaticUse - Decorate 57 NoStaticUse - Decorate 14 NoStaticUse - Decorate 14 NoStaticUse - Decorate 59(roll) NoStaticUse - Decorate 62(destTex) NoStaticUse + Decorate 14 NoStaticUse + Decorate 57 NoStaticUse + Decorate 14 NoStaticUse + Decorate 14 NoStaticUse + Decorate 59(roll) NoStaticUse + Decorate 62(destTex) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeFloat 64 9(bufName): TypeStruct 7(float) 8(float) 10: TypePointer Uniform 9(bufName) - 11(bufInst): 10(ptr) Variable Uniform + 11(bufInst): 10(ptr) Variable Uniform 12: TypeInt 32 1 13: 12(int) Constant 1 14: 8(float) Constant 1413754136 1074340347 @@ -55,10 +56,10 @@ Linked compute stage: 24: TypeInt 32 0 25: TypeVector 24(int) 3 26: TypePointer Input 25(ivec3) -27(gl_GlobalInvocationID): 26(ptr) Variable Input +27(gl_GlobalInvocationID): 26(ptr) Variable Input 29: TypeVector 24(int) 2 32: TypePointer Function 8(float) -34(gl_LocalInvocationID): 26(ptr) Variable Input +34(gl_LocalInvocationID): 26(ptr) Variable Input 38: 12(int) Constant 8 41: TypeVector 7(float) 2 43: 7(float) Constant 1090519040 @@ -71,25 +72,25 @@ Linked compute stage: 56: 8(float) Constant 0 1072693248 57: 8(float) Constant 3229815407 1074340298 58: TypePointer UniformConstant 8(float) - 59(roll): 58(ptr) Variable UniformConstant - 60: TypeSampler7(float) 2D image + 59(roll): 58(ptr) Variable UniformConstant + 60: TypeImage 7(float) 2D nonsampled format:Unknown 61: TypePointer UniformConstant 60 - 62(destTex): 61(ptr) Variable UniformConstant + 62(destTex): 61(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 23(storePos): 22(ptr) Variable Function - 33(localCoef): 32(ptr) Variable Function - 50(aa): 49(ptr) Variable Function - 55(globalCoef): 32(ptr) Variable Function + 23(storePos): 22(ptr) Variable Function + 33(localCoef): 32(ptr) Variable Function + 50(aa): 49(ptr) Variable Function + 55(globalCoef): 32(ptr) Variable Function 16: 15(ptr) AccessChain 11(bufInst) 13 - Store 16 14 + Store 16 14 20: 19(ptr) AccessChain 11(bufInst) 17 - Store 20 18 - 28: 25(ivec3) Load 27(gl_GlobalInvocationID) + Store 20 18 + 28: 25(ivec3) Load 27(gl_GlobalInvocationID) 30: 29(ivec2) VectorShuffle 28 28 0 1 31: 21(ivec2) Bitcast 30 - Store 23(storePos) 31 - 35: 25(ivec3) Load 34(gl_LocalInvocationID) + Store 23(storePos) 31 + 35: 25(ivec3) Load 34(gl_LocalInvocationID) 36: 29(ivec2) VectorShuffle 35 35 0 1 37: 21(ivec2) Bitcast 36 39: 21(ivec2) CompositeConstruct 38 38 @@ -97,11 +98,11 @@ Linked compute stage: 42: 41(fvec2) ConvertSToF 40 44: 41(fvec2) CompositeConstruct 43 43 45: 41(fvec2) FDiv 42 44 - 46: 7(float) ExtInst 1(GLSL.std.450) 58(length) 45 + 46: 7(float) ExtInst 1(GLSL.std.450) 65(Length) 45 47: 8(float) FConvert 46 - Store 33(localCoef) 47 - Store 50(aa) 54 - Store 55(globalCoef) 56 + Store 33(localCoef) 47 + Store 50(aa) 54 + Store 55(globalCoef) 56 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out old mode 100644 new mode 100755 index bb61deb9..e2df2e75 --- a/Test/baseResults/spv.earlyReturnDiscard.frag.out +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 112 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" @@ -26,130 +28,130 @@ Linked fragment stage: Name 78 "b" Name 107 "gl_FragColor" Name 111 "threshhold3" - Decorate 12(BaseColor) Smooth - Decorate 19(c) Smooth + Decorate 12(BaseColor) Smooth + Decorate 19(c) Smooth Decorate 107(gl_FragColor) BuiltIn FragColor - Decorate 111(threshhold3) NoStaticUse + Decorate 111(threshhold3) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 15: TypePointer UniformConstant 8(fvec4) - 16(otherColor): 15(ptr) Variable UniformConstant + 16(otherColor): 15(ptr) Variable UniformConstant 18: TypePointer Input 7(float) - 19(c): 18(ptr) Variable Input + 19(c): 18(ptr) Variable Input 21: TypePointer UniformConstant 7(float) - 22(d): 21(ptr) Variable UniformConstant + 22(d): 21(ptr) Variable UniformConstant 24: TypeBool - 28(bigColor): 15(ptr) Variable UniformConstant - 33(smallColor): 15(ptr) Variable UniformConstant - 39(minimum): 21(ptr) Variable UniformConstant + 28(bigColor): 15(ptr) Variable UniformConstant + 33(smallColor): 15(ptr) Variable UniformConstant + 39(minimum): 21(ptr) Variable UniformConstant 47: 7(float) Constant 1065353216 - 53(threshhold): 21(ptr) Variable UniformConstant - 64(threshhold2): 21(ptr) Variable UniformConstant + 53(threshhold): 21(ptr) Variable UniformConstant + 64(threshhold2): 21(ptr) Variable UniformConstant 77: TypePointer UniformConstant 24(bool) - 78(b): 77(ptr) Variable UniformConstant + 78(b): 77(ptr) Variable UniformConstant 106: TypePointer Output 8(fvec4) -107(gl_FragColor): 106(ptr) Variable Output -111(threshhold3): 21(ptr) Variable UniformConstant +107(gl_FragColor): 106(ptr) Variable Output +111(threshhold3): 21(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 14(color2): 9(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 - 17: 8(fvec4) Load 16(otherColor) - Store 14(color2) 17 - 20: 7(float) Load 19(c) - 23: 7(float) Load 22(d) + 10(color): 9(ptr) Variable Function + 14(color2): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + 17: 8(fvec4) Load 16(otherColor) + Store 14(color2) 17 + 20: 7(float) Load 19(c) + 23: 7(float) Load 22(d) 25: 24(bool) FOrdGreaterThan 20 23 SelectionMerge 27 None - BranchConditional 25 26 32 + BranchConditional 25 26 32 26: Label - 29: 8(fvec4) Load 28(bigColor) - 30: 8(fvec4) Load 10(color) + 29: 8(fvec4) Load 28(bigColor) + 30: 8(fvec4) Load 10(color) 31: 8(fvec4) FAdd 30 29 - Store 10(color) 31 + Store 10(color) 31 Branch 27 32: Label - 34: 8(fvec4) Load 33(smallColor) - 35: 8(fvec4) Load 10(color) + 34: 8(fvec4) Load 33(smallColor) + 35: 8(fvec4) Load 10(color) 36: 8(fvec4) FAdd 35 34 - Store 10(color) 36 + Store 10(color) 36 Branch 27 27: Label - 37: 8(fvec4) Load 10(color) + 37: 8(fvec4) Load 10(color) 38: 7(float) CompositeExtract 37 2 - 40: 7(float) Load 39(minimum) + 40: 7(float) Load 39(minimum) 41: 24(bool) FOrdLessThan 38 40 SelectionMerge 43 None - BranchConditional 41 42 43 + BranchConditional 41 42 43 42: Label Branch 6 43: Label - 45: 8(fvec4) Load 10(color) + 45: 8(fvec4) Load 10(color) 46: 7(float) CompositeExtract 45 2 48: 7(float) FAdd 46 47 - 49: 8(fvec4) Load 10(color) + 49: 8(fvec4) Load 10(color) 50: 8(fvec4) CompositeInsert 48 49 2 - Store 10(color) 50 - 51: 8(fvec4) Load 10(color) + Store 10(color) 50 + 51: 8(fvec4) Load 10(color) 52: 7(float) CompositeExtract 51 2 - 54: 7(float) Load 53(threshhold) + 54: 7(float) Load 53(threshhold) 55: 24(bool) FOrdGreaterThan 52 54 SelectionMerge 57 None - BranchConditional 55 56 57 + BranchConditional 55 56 57 56: Label Kill 57: Label - 59: 8(fvec4) Load 10(color) + 59: 8(fvec4) Load 10(color) 60: 8(fvec4) CompositeConstruct 47 47 47 47 61: 8(fvec4) FAdd 59 60 - Store 10(color) 61 - 62: 8(fvec4) Load 10(color) + Store 10(color) 61 + 62: 8(fvec4) Load 10(color) 63: 7(float) CompositeExtract 62 3 - 65: 7(float) Load 64(threshhold2) + 65: 7(float) Load 64(threshhold2) 66: 24(bool) FOrdGreaterThan 63 65 SelectionMerge 68 None - BranchConditional 66 67 99 + BranchConditional 66 67 99 67: Label - 69: 8(fvec4) Load 10(color) + 69: 8(fvec4) Load 10(color) 70: 7(float) CompositeExtract 69 2 - 71: 7(float) Load 64(threshhold2) + 71: 7(float) Load 64(threshhold2) 72: 24(bool) FOrdGreaterThan 70 71 SelectionMerge 74 None - BranchConditional 72 73 76 + BranchConditional 72 73 76 73: Label Branch 6 76: Label - 79: 24(bool) Load 78(b) + 79: 24(bool) Load 78(b) SelectionMerge 81 None - BranchConditional 79 80 87 + BranchConditional 79 80 87 80: Label - 82: 8(fvec4) Load 10(color) + 82: 8(fvec4) Load 10(color) 83: 7(float) CompositeExtract 82 2 84: 7(float) FAdd 83 47 - 85: 8(fvec4) Load 10(color) + 85: 8(fvec4) Load 10(color) 86: 8(fvec4) CompositeInsert 84 85 2 - Store 10(color) 86 + Store 10(color) 86 Branch 81 87: Label - 88: 8(fvec4) Load 10(color) + 88: 8(fvec4) Load 10(color) 89: 7(float) CompositeExtract 88 0 - 90: 7(float) Load 39(minimum) + 90: 7(float) Load 39(minimum) 91: 24(bool) FOrdLessThan 89 90 SelectionMerge 93 None - BranchConditional 91 92 95 + BranchConditional 91 92 95 92: Label Kill 95: Label - 96: 8(fvec4) Load 10(color) + 96: 8(fvec4) Load 10(color) 97: 8(fvec4) CompositeConstruct 47 47 47 47 98: 8(fvec4) FAdd 96 97 - Store 10(color) 98 + Store 10(color) 98 Branch 93 93: Label Branch 81 @@ -158,9 +160,9 @@ Linked fragment stage: 74: Label Branch 68 99: Label - 100: 24(bool) Load 78(b) + 100: 24(bool) Load 78(b) SelectionMerge 102 None - BranchConditional 100 101 104 + BranchConditional 100 101 104 101: Label Kill 104: Label @@ -168,10 +170,10 @@ Linked fragment stage: 102: Label Branch 68 68: Label - 108: 8(fvec4) Load 10(color) - 109: 8(fvec4) Load 14(color2) + 108: 8(fvec4) Load 10(color) + 109: 8(fvec4) Load 14(color2) 110: 8(fvec4) FMul 108 109 - Store 107(gl_FragColor) 110 + Store 107(gl_FragColor) 110 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out old mode 100644 new mode 100755 index 982f2823..fc8cb3f3 --- a/Test/baseResults/spv.flowControl.frag.out +++ b/Test/baseResults/spv.flowControl.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 42 Source GLSL 120 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" @@ -21,57 +23,57 @@ Linked fragment stage: Name 28 "bigColor" Name 33 "smallColor" Name 38 "gl_FragColor" - Decorate 12(BaseColor) Smooth - Decorate 19(c) Smooth + Decorate 12(BaseColor) Smooth + Decorate 19(c) Smooth Decorate 38(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 15: TypePointer UniformConstant 8(fvec4) - 16(otherColor): 15(ptr) Variable UniformConstant + 16(otherColor): 15(ptr) Variable UniformConstant 18: TypePointer Input 7(float) - 19(c): 18(ptr) Variable Input + 19(c): 18(ptr) Variable Input 21: TypePointer UniformConstant 7(float) - 22(d): 21(ptr) Variable UniformConstant + 22(d): 21(ptr) Variable UniformConstant 24: TypeBool - 28(bigColor): 15(ptr) Variable UniformConstant - 33(smallColor): 15(ptr) Variable UniformConstant + 28(bigColor): 15(ptr) Variable UniformConstant + 33(smallColor): 15(ptr) Variable UniformConstant 37: TypePointer Output 8(fvec4) -38(gl_FragColor): 37(ptr) Variable Output +38(gl_FragColor): 37(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 14(color2): 9(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 - 17: 8(fvec4) Load 16(otherColor) - Store 14(color2) 17 - 20: 7(float) Load 19(c) - 23: 7(float) Load 22(d) + 10(color): 9(ptr) Variable Function + 14(color2): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + 17: 8(fvec4) Load 16(otherColor) + Store 14(color2) 17 + 20: 7(float) Load 19(c) + 23: 7(float) Load 22(d) 25: 24(bool) FOrdGreaterThan 20 23 SelectionMerge 27 None - BranchConditional 25 26 32 + BranchConditional 25 26 32 26: Label - 29: 8(fvec4) Load 28(bigColor) - 30: 8(fvec4) Load 10(color) + 29: 8(fvec4) Load 28(bigColor) + 30: 8(fvec4) Load 10(color) 31: 8(fvec4) FAdd 30 29 - Store 10(color) 31 + Store 10(color) 31 Branch 27 32: Label - 34: 8(fvec4) Load 33(smallColor) - 35: 8(fvec4) Load 10(color) + 34: 8(fvec4) Load 33(smallColor) + 35: 8(fvec4) Load 10(color) 36: 8(fvec4) FAdd 35 34 - Store 10(color) 36 + Store 10(color) 36 Branch 27 27: Label - 39: 8(fvec4) Load 10(color) - 40: 8(fvec4) Load 14(color2) + 39: 8(fvec4) Load 10(color) + 40: 8(fvec4) Load 14(color2) 41: 8(fvec4) FMul 39 40 - Store 38(gl_FragColor) 41 + Store 38(gl_FragColor) 41 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out old mode 100644 new mode 100755 index a1de5b41..cec5daea --- a/Test/baseResults/spv.for-continue-break.vert.out +++ b/Test/baseResults/spv.for-continue-break.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 49 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 18 "A" @@ -22,22 +23,12 @@ Linked vertex stage: Name 44 "G" Name 47 "gl_VertexID" Name 48 "gl_InstanceID" - Decorate 9(i) PrecisionHigh - Decorate 18(A) PrecisionHigh - Decorate 26(B) PrecisionHigh - Decorate 30(C) PrecisionHigh - Decorate 37(D) PrecisionHigh - Decorate 39(E) PrecisionHigh - Decorate 40(F) PrecisionHigh - Decorate 44(G) PrecisionHigh - Decorate 47(gl_VertexID) PrecisionHigh Decorate 47(gl_VertexID) BuiltIn VertexId - Decorate 47(gl_VertexID) NoStaticUse - Decorate 48(gl_InstanceID) PrecisionHigh + Decorate 47(gl_VertexID) NoStaticUse Decorate 48(gl_InstanceID) BuiltIn InstanceId - Decorate 48(gl_InstanceID) NoStaticUse + Decorate 48(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 0 @@ -49,61 +40,61 @@ Linked vertex stage: 41: 7(int) Constant 12 45: 7(int) Constant 99 46: TypePointer Input 7(int) - 47(gl_VertexID): 46(ptr) Variable Input -48(gl_InstanceID): 46(ptr) Variable Input + 47(gl_VertexID): 46(ptr) Variable Input +48(gl_InstanceID): 46(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - 18(A): 8(ptr) Variable Function - 26(B): 8(ptr) Variable Function - 30(C): 8(ptr) Variable Function - 37(D): 8(ptr) Variable Function - 39(E): 8(ptr) Variable Function - 40(F): 8(ptr) Variable Function - 44(G): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + 18(A): 8(ptr) Variable Function + 26(B): 8(ptr) Variable Function + 30(C): 8(ptr) Variable Function + 37(D): 8(ptr) Variable Function + 39(E): 8(ptr) Variable Function + 40(F): 8(ptr) Variable Function + 44(G): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label - 14: 7(int) Load 9(i) + 14: 7(int) Load 9(i) 17: 16(bool) SLessThan 14 15 LoopMerge 12 None - BranchConditional 17 13 12 + BranchConditional 17 13 12 13: Label - Store 18(A) 19 - 20: 7(int) Load 9(i) + Store 18(A) 19 + 20: 7(int) Load 9(i) 22: 7(int) SMod 20 21 23: 16(bool) IEqual 22 10 SelectionMerge 25 None - BranchConditional 23 24 25 + BranchConditional 23 24 25 24: Label - Store 26(B) 19 - 27: 7(int) Load 9(i) + Store 26(B) 19 + 27: 7(int) Load 9(i) 28: 7(int) IAdd 27 19 - Store 9(i) 28 + Store 9(i) 28 Branch 11 29: Label - Store 30(C) 19 + Store 30(C) 19 Branch 25 25: Label - 31: 7(int) Load 9(i) + 31: 7(int) Load 9(i) 33: 7(int) SMod 31 32 34: 16(bool) IEqual 33 10 SelectionMerge 36 None - BranchConditional 34 35 36 + BranchConditional 34 35 36 35: Label - Store 37(D) 19 + Store 37(D) 19 Branch 12 38: Label - Store 39(E) 19 + Store 39(E) 19 Branch 36 36: Label - Store 40(F) 41 - 42: 7(int) Load 9(i) + Store 40(F) 41 + 42: 7(int) Load 9(i) 43: 7(int) IAdd 42 19 - Store 9(i) 43 + Store 9(i) 43 Branch 11 12: Label - Store 44(G) 45 + Store 44(G) 45 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out old mode 100644 new mode 100755 index 8facddce..11050dfc --- a/Test/baseResults/spv.for-simple.vert.out +++ b/Test/baseResults/spv.for-simple.vert.out @@ -8,24 +8,21 @@ Linked vertex stage: // Id's are bound by 26 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 18 "j" Name 24 "gl_VertexID" Name 25 "gl_InstanceID" - Decorate 9(i) PrecisionHigh - Decorate 18(j) PrecisionHigh - Decorate 24(gl_VertexID) PrecisionHigh Decorate 24(gl_VertexID) BuiltIn VertexId - Decorate 24(gl_VertexID) NoStaticUse - Decorate 25(gl_InstanceID) PrecisionHigh + Decorate 24(gl_VertexID) NoStaticUse Decorate 25(gl_InstanceID) BuiltIn InstanceId - Decorate 25(gl_InstanceID) NoStaticUse + Decorate 25(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 0 @@ -34,24 +31,24 @@ Linked vertex stage: 19: 7(int) Constant 12 21: 7(int) Constant 1 23: TypePointer Input 7(int) - 24(gl_VertexID): 23(ptr) Variable Input -25(gl_InstanceID): 23(ptr) Variable Input + 24(gl_VertexID): 23(ptr) Variable Input +25(gl_InstanceID): 23(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - 18(j): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + 18(j): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label - 14: 7(int) Load 9(i) + 14: 7(int) Load 9(i) 17: 16(bool) SLessThan 14 15 LoopMerge 12 None - BranchConditional 17 13 12 + BranchConditional 17 13 12 13: Label - Store 18(j) 19 - 20: 7(int) Load 9(i) + Store 18(j) 19 + 20: 7(int) Load 9(i) 22: 7(int) IAdd 20 21 - Store 9(i) 22 + Store 9(i) 22 Branch 11 12: Label Branch 6 diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out old mode 100644 new mode 100755 index 6ad719d6..972ecead --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 123 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" @@ -27,168 +29,168 @@ Linked fragment stage: Name 90 "i" Name 98 "f" Name 111 "i" - Decorate 12(BaseColor) Smooth + Decorate 12(BaseColor) Smooth Decorate 36(gl_FragColor) BuiltIn FragColor - Decorate 98(f) Smooth + Decorate 98(f) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 14: TypeInt 32 1 15: TypePointer Function 14(int) 17: 14(int) Constant 0 22: TypePointer UniformConstant 14(int) - 23(Count): 22(ptr) Variable UniformConstant + 23(Count): 22(ptr) Variable UniformConstant 25: TypeBool 27: TypePointer UniformConstant 8(fvec4) - 28(bigColor): 27(ptr) Variable UniformConstant + 28(bigColor): 27(ptr) Variable UniformConstant 33: 14(int) Constant 1 35: TypePointer Output 8(fvec4) -36(gl_FragColor): 35(ptr) Variable Output +36(gl_FragColor): 35(ptr) Variable Output 38: TypePointer Function 7(float) 40: 7(float) Constant 0 46: 14(int) Constant 4 48: TypeInt 32 0 49: TypeVector 48(int) 4 50: TypePointer UniformConstant 49(ivec4) - 51(v4): 50(ptr) Variable UniformConstant + 51(v4): 50(ptr) Variable UniformConstant 71: 48(int) Constant 4 86: TypeVector 7(float) 3 97: TypePointer Input 7(float) - 98(f): 97(ptr) Variable Input + 98(f): 97(ptr) Variable Input 116: 14(int) Constant 16 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 16(i): 15(ptr) Variable Function - 39(sum): 38(ptr) Variable Function - 41(i): 15(ptr) Variable Function - 60(i): 15(ptr) Variable Function - 66(tv4): 9(ptr) Variable Function - 84(r): 9(ptr) Variable Function - 90(i): 15(ptr) Variable Function - 111(i): 15(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 - Store 16(i) 17 + 10(color): 9(ptr) Variable Function + 16(i): 15(ptr) Variable Function + 39(sum): 38(ptr) Variable Function + 41(i): 15(ptr) Variable Function + 60(i): 15(ptr) Variable Function + 66(tv4): 9(ptr) Variable Function + 84(r): 9(ptr) Variable Function + 90(i): 15(ptr) Variable Function + 111(i): 15(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + Store 16(i) 17 Branch 18 18: Label - 21: 14(int) Load 16(i) - 24: 14(int) Load 23(Count) + 21: 14(int) Load 16(i) + 24: 14(int) Load 23(Count) 26: 25(bool) SLessThan 21 24 LoopMerge 19 None - BranchConditional 26 20 19 + BranchConditional 26 20 19 20: Label - 29: 8(fvec4) Load 28(bigColor) - 30: 8(fvec4) Load 10(color) + 29: 8(fvec4) Load 28(bigColor) + 30: 8(fvec4) Load 10(color) 31: 8(fvec4) FAdd 30 29 - Store 10(color) 31 - 32: 14(int) Load 16(i) + Store 10(color) 31 + 32: 14(int) Load 16(i) 34: 14(int) IAdd 32 33 - Store 16(i) 34 + Store 16(i) 34 Branch 18 19: Label - 37: 8(fvec4) Load 10(color) - Store 36(gl_FragColor) 37 - Store 39(sum) 40 - Store 41(i) 17 + 37: 8(fvec4) Load 10(color) + Store 36(gl_FragColor) 37 + Store 39(sum) 40 + Store 41(i) 17 Branch 42 42: Label - 45: 14(int) Load 41(i) + 45: 14(int) Load 41(i) 47: 25(bool) SLessThan 45 46 LoopMerge 43 None - BranchConditional 47 44 43 + BranchConditional 47 44 43 44: Label - 52: 14(int) Load 41(i) - 53: 49(ivec4) Load 51(v4) + 52: 14(int) Load 41(i) + 53: 49(ivec4) Load 51(v4) 54: 48(int) VectorExtractDynamic 53 52 55: 7(float) ConvertUToF 54 - 56: 7(float) Load 39(sum) + 56: 7(float) Load 39(sum) 57: 7(float) FAdd 56 55 - Store 39(sum) 57 - 58: 14(int) Load 41(i) + Store 39(sum) 57 + 58: 14(int) Load 41(i) 59: 14(int) IAdd 58 33 - Store 41(i) 59 + Store 41(i) 59 Branch 42 43: Label - Store 60(i) 17 + Store 60(i) 17 Branch 61 61: Label - 64: 14(int) Load 60(i) + 64: 14(int) Load 60(i) 65: 25(bool) SLessThan 64 46 LoopMerge 62 None - BranchConditional 65 63 62 + BranchConditional 65 63 62 63: Label - 67: 14(int) Load 60(i) - 68: 14(int) Load 60(i) - 69: 49(ivec4) Load 51(v4) + 67: 14(int) Load 60(i) + 68: 14(int) Load 60(i) + 69: 49(ivec4) Load 51(v4) 70: 48(int) VectorExtractDynamic 69 68 72: 48(int) IMul 70 71 73: 7(float) ConvertUToF 72 - 74: 8(fvec4) Load 66(tv4) + 74: 8(fvec4) Load 66(tv4) 75: 8(fvec4) VectorInsertDynamic 74 73 67 - Store 66(tv4) 75 - 76: 14(int) Load 60(i) + Store 66(tv4) 75 + 76: 14(int) Load 60(i) 77: 14(int) IAdd 76 33 - Store 60(i) 77 + Store 60(i) 77 Branch 61 62: Label - 78: 7(float) Load 39(sum) + 78: 7(float) Load 39(sum) 79: 8(fvec4) CompositeConstruct 78 78 78 78 - 80: 8(fvec4) Load 66(tv4) + 80: 8(fvec4) Load 66(tv4) 81: 8(fvec4) FAdd 79 80 - 82: 8(fvec4) Load 36(gl_FragColor) + 82: 8(fvec4) Load 36(gl_FragColor) 83: 8(fvec4) FAdd 82 81 - Store 36(gl_FragColor) 83 - 85: 8(fvec4) Load 12(BaseColor) + Store 36(gl_FragColor) 83 + 85: 8(fvec4) Load 12(BaseColor) 87: 86(fvec3) VectorShuffle 85 85 0 1 2 - 88: 8(fvec4) Load 84(r) + 88: 8(fvec4) Load 84(r) 89: 8(fvec4) VectorShuffle 88 87 4 5 6 3 - Store 84(r) 89 - Store 90(i) 17 + Store 84(r) 89 + Store 90(i) 17 Branch 91 91: Label - 94: 14(int) Load 90(i) - 95: 14(int) Load 23(Count) + 94: 14(int) Load 90(i) + 95: 14(int) Load 23(Count) 96: 25(bool) SLessThan 94 95 LoopMerge 92 None - BranchConditional 96 93 92 + BranchConditional 96 93 92 93: Label - 99: 7(float) Load 98(f) - 100: 8(fvec4) Load 84(r) + 99: 7(float) Load 98(f) + 100: 8(fvec4) Load 84(r) 101: 8(fvec4) CompositeInsert 99 100 3 - Store 84(r) 101 - 102: 14(int) Load 90(i) + Store 84(r) 101 + 102: 14(int) Load 90(i) 103: 14(int) IAdd 102 33 - Store 90(i) 103 + Store 90(i) 103 Branch 91 92: Label - 104: 8(fvec4) Load 84(r) + 104: 8(fvec4) Load 84(r) 105: 86(fvec3) VectorShuffle 104 104 0 1 2 - 106: 8(fvec4) Load 36(gl_FragColor) + 106: 8(fvec4) Load 36(gl_FragColor) 107: 86(fvec3) VectorShuffle 106 106 0 1 2 108: 86(fvec3) FAdd 107 105 - 109: 8(fvec4) Load 36(gl_FragColor) + 109: 8(fvec4) Load 36(gl_FragColor) 110: 8(fvec4) VectorShuffle 109 108 4 5 6 3 - Store 36(gl_FragColor) 110 - Store 111(i) 17 + Store 36(gl_FragColor) 110 + Store 111(i) 17 Branch 112 112: Label - 115: 14(int) Load 111(i) + 115: 14(int) Load 111(i) 117: 25(bool) SLessThan 115 116 LoopMerge 113 None - BranchConditional 117 114 113 + BranchConditional 117 114 113 114: Label - 118: 7(float) Load 98(f) - 119: 8(fvec4) Load 36(gl_FragColor) + 118: 7(float) Load 98(f) + 119: 8(fvec4) Load 36(gl_FragColor) 120: 8(fvec4) VectorTimesScalar 119 118 - Store 36(gl_FragColor) 120 - 121: 14(int) Load 111(i) + Store 36(gl_FragColor) 120 + 121: 14(int) Load 111(i) 122: 14(int) IAdd 121 46 - Store 111(i) 122 + Store 111(i) 122 Branch 112 113: Label Branch 6 diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out old mode 100644 new mode 100755 index a4781e34..5934bd6f --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 59 Source ESSL 100 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 7 "bar(" Name 11 "unreachableReturn(" @@ -24,52 +26,52 @@ Linked fragment stage: Name 37 "d" Name 49 "dummyReturn" Name 58 "bigColor" - Decorate 19(color) PrecisionMedium - Decorate 21(BaseColor) PrecisionMedium - Decorate 21(BaseColor) Smooth - Decorate 28(f) PrecisionMedium - Decorate 31(gl_FragColor) PrecisionMedium + Decorate 19(color) RelaxedPrecision + Decorate 21(BaseColor) RelaxedPrecision + Decorate 21(BaseColor) Smooth + Decorate 28(f) RelaxedPrecision + Decorate 31(gl_FragColor) RelaxedPrecision Decorate 31(gl_FragColor) BuiltIn FragColor - Decorate 37(d) PrecisionMedium - Decorate 58(bigColor) PrecisionMedium - Decorate 58(bigColor) NoStaticUse + Decorate 37(d) RelaxedPrecision + Decorate 58(bigColor) RelaxedPrecision + Decorate 58(bigColor) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 9: TypeFloat 32 - 10: TypeFunction 9(float) + 10: TypeFunction 9(float) 13: TypeVector 9(float) 4 14: TypePointer Function 13(fvec4) 15: TypeFunction 9(float) 14(ptr) 20: TypePointer Input 13(fvec4) - 21(BaseColor): 20(ptr) Variable Input + 21(BaseColor): 20(ptr) Variable Input 27: TypePointer Function 9(float) 30: TypePointer Output 13(fvec4) -31(gl_FragColor): 30(ptr) Variable Output +31(gl_FragColor): 30(ptr) Variable Output 36: TypePointer UniformConstant 9(float) - 37(d): 36(ptr) Variable UniformConstant + 37(d): 36(ptr) Variable UniformConstant 39: 9(float) Constant 1082549862 40: TypeBool 44: 9(float) Constant 1067030938 47: 9(float) Constant 1083179008 57: TypePointer UniformConstant 13(fvec4) - 58(bigColor): 57(ptr) Variable UniformConstant + 58(bigColor): 57(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 19(color): 14(ptr) Variable Function - 22(param): 14(ptr) Variable Function - 28(f): 27(ptr) Variable Function - 23: 13(fvec4) Load 21(BaseColor) - Store 22(param) 23 + 19(color): 14(ptr) Variable Function + 22(param): 14(ptr) Variable Function + 28(f): 27(ptr) Variable Function + 23: 13(fvec4) Load 21(BaseColor) + Store 22(param) 23 24: 9(float) FunctionCall 17(foo(vf4;) 22(param) 25: 13(fvec4) CompositeConstruct 24 24 24 24 - Store 19(color) 25 - 26: 2 FunctionCall 7(bar() - 29: 9(float) FunctionCall 11(unreachableReturn() - Store 28(f) 29 - 32: 13(fvec4) Load 19(color) - 33: 9(float) Load 28(f) + Store 19(color) 25 + 26: 2 FunctionCall 7(bar() + 29: 9(float) FunctionCall 11(unreachableReturn() + Store 28(f) 29 + 32: 13(fvec4) Load 19(color) + 33: 9(float) Load 28(f) 34: 13(fvec4) VectorTimesScalar 32 33 - Store 31(gl_FragColor) 34 + Store 31(gl_FragColor) 34 Branch 6 6: Label Return @@ -80,26 +82,26 @@ Linked fragment stage: FunctionEnd 11(unreachableReturn(): 9(float) Function None 10 12: Label - 49(dummyReturn): 27(ptr) Variable Function - 35: 2 FunctionCall 7(bar() - 38: 9(float) Load 37(d) + 49(dummyReturn): 27(ptr) Variable Function + 35: 2 FunctionCall 7(bar() + 38: 9(float) Load 37(d) 41: 40(bool) FOrdLessThan 38 39 SelectionMerge 43 None - BranchConditional 41 42 46 + BranchConditional 41 42 46 42: Label ReturnValue 44 46: Label ReturnValue 47 43: Label - 50: 9(float) Load 49(dummyReturn) + 50: 9(float) Load 49(dummyReturn) ReturnValue 50 FunctionEnd 17(foo(vf4;): 9(float) Function None 15 16(bar): 14(ptr) FunctionParameter 18: Label - 51: 13(fvec4) Load 16(bar) + 51: 13(fvec4) Load 16(bar) 52: 9(float) CompositeExtract 51 0 - 53: 13(fvec4) Load 16(bar) + 53: 13(fvec4) Load 16(bar) 54: 9(float) CompositeExtract 53 1 55: 9(float) FAdd 52 54 ReturnValue 55 diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out old mode 100644 new mode 100755 index 1d7aa74c..19af2d39 --- a/Test/baseResults/spv.functionCall.frag.out +++ b/Test/baseResults/spv.functionCall.frag.out @@ -10,9 +10,11 @@ Linked fragment stage: // Id's are bound by 76 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 12 "foo(vf4;" Name 11 "bar" @@ -30,21 +32,21 @@ Linked fragment stage: Name 65 "g" Name 68 "gl_FragColor" Name 75 "bigColor" - Decorate 57(BaseColor) Smooth + Decorate 57(BaseColor) Smooth Decorate 68(gl_FragColor) BuiltIn FragColor - Decorate 75(bigColor) NoStaticUse + Decorate 75(bigColor) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 10: TypeFunction 7(float) 9(ptr) - 16: TypeFunction 7(float) + 16: TypeFunction 7(float) 21: TypePointer PrivateGlobal 7(float) - 22(h): 21(ptr) Variable PrivateGlobal + 22(h): 21(ptr) Variable PrivateGlobal 23: 7(float) Constant 0 30: TypePointer UniformConstant 7(float) - 31(d): 30(ptr) Variable UniformConstant + 31(d): 30(ptr) Variable UniformConstant 33: 7(float) Constant 1082549862 34: TypeBool 38: 7(float) Constant 1067030938 @@ -52,34 +54,34 @@ Linked fragment stage: 43: TypePointer Function 7(float) 51: 7(float) Constant 1081711002 56: TypePointer Input 8(fvec4) - 57(BaseColor): 56(ptr) Variable Input + 57(BaseColor): 56(ptr) Variable Input 67: TypePointer Output 8(fvec4) -68(gl_FragColor): 67(ptr) Variable Output +68(gl_FragColor): 67(ptr) Variable Output 74: TypePointer UniformConstant 8(fvec4) - 75(bigColor): 74(ptr) Variable UniformConstant + 75(bigColor): 74(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 55(color): 9(ptr) Variable Function - 58(param): 9(ptr) Variable Function - 63(f): 43(ptr) Variable Function - 65(g): 43(ptr) Variable Function - Store 22(h) 23 - 59: 8(fvec4) Load 57(BaseColor) - Store 58(param) 59 + 55(color): 9(ptr) Variable Function + 58(param): 9(ptr) Variable Function + 63(f): 43(ptr) Variable Function + 65(g): 43(ptr) Variable Function + Store 22(h) 23 + 59: 8(fvec4) Load 57(BaseColor) + Store 58(param) 59 60: 7(float) FunctionCall 12(foo(vf4;) 58(param) 61: 8(fvec4) CompositeConstruct 60 60 60 60 - Store 55(color) 61 - 62: 2 FunctionCall 14(bar() - 64: 7(float) FunctionCall 17(unreachableReturn() - Store 63(f) 64 - 66: 7(float) FunctionCall 19(missingReturn() - Store 65(g) 66 - 69: 8(fvec4) Load 55(color) - 70: 7(float) Load 63(f) + Store 55(color) 61 + 62: 2 FunctionCall 14(bar() + 64: 7(float) FunctionCall 17(unreachableReturn() + Store 63(f) 64 + 66: 7(float) FunctionCall 19(missingReturn() + Store 65(g) 66 + 69: 8(fvec4) Load 55(color) + 70: 7(float) Load 63(f) 71: 8(fvec4) VectorTimesScalar 69 70 - 72: 7(float) Load 22(h) + 72: 7(float) Load 22(h) 73: 8(fvec4) VectorTimesScalar 71 72 - Store 68(gl_FragColor) 73 + Store 68(gl_FragColor) 73 Branch 6 6: Label Return @@ -87,9 +89,9 @@ Linked fragment stage: 12(foo(vf4;): 7(float) Function None 10 11(bar): 9(ptr) FunctionParameter 13: Label - 24: 8(fvec4) Load 11(bar) + 24: 8(fvec4) Load 11(bar) 25: 7(float) CompositeExtract 24 0 - 26: 8(fvec4) Load 11(bar) + 26: 8(fvec4) Load 11(bar) 27: 7(float) CompositeExtract 26 1 28: 7(float) FAdd 25 27 ReturnValue 28 @@ -100,31 +102,31 @@ Linked fragment stage: FunctionEnd 17(unreachableReturn(): 7(float) Function None 16 18: Label - 44(dummyReturn): 43(ptr) Variable Function - 32: 7(float) Load 31(d) + 44(dummyReturn): 43(ptr) Variable Function + 32: 7(float) Load 31(d) 35: 34(bool) FOrdLessThan 32 33 SelectionMerge 37 None - BranchConditional 35 36 40 + BranchConditional 35 36 40 36: Label ReturnValue 38 40: Label ReturnValue 41 37: Label - 45: 7(float) Load 44(dummyReturn) + 45: 7(float) Load 44(dummyReturn) ReturnValue 45 FunctionEnd 19(missingReturn(): 7(float) Function None 16 20: Label - 53(dummyReturn): 43(ptr) Variable Function - 46: 7(float) Load 31(d) + 53(dummyReturn): 43(ptr) Variable Function + 46: 7(float) Load 31(d) 47: 34(bool) FOrdLessThan 46 41 SelectionMerge 49 None - BranchConditional 47 48 49 + BranchConditional 47 48 49 48: Label - 50: 7(float) Load 31(d) - Store 22(h) 50 + 50: 7(float) Load 31(d) + Store 22(h) 50 ReturnValue 51 49: Label - 54: 7(float) Load 53(dummyReturn) + 54: 7(float) Load 53(dummyReturn) ReturnValue 54 FunctionEnd diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out old mode 100644 new mode 100755 index 3eafe327..aba41c35 --- a/Test/baseResults/spv.functionSemantics.frag.out +++ b/Test/baseResults/spv.functionSemantics.frag.out @@ -10,9 +10,11 @@ Linked fragment stage: // Id's are bound by 159 Source GLSL 400 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 16 "foo(i1;i1;i1;i1;i1;i1;" Name 10 "a" @@ -48,7 +50,7 @@ Linked fragment stage: Name 155 "gl_FragColor" Decorate 155(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 9: TypeFunction 7(int) 8(ptr) 7(int) 8(ptr) 7(int) 8(ptr) 8(ptr) @@ -57,13 +59,13 @@ Linked fragment stage: 20: TypeVector 18(float) 3 21: TypePointer Function 20(fvec3) 22: TypeFunction 7(int) 19(ptr) 21(ptr) 8(ptr) - 28: TypeFunction 7(int) + 28: TypeFunction 7(int) 39: 7(int) Constant 64 44: 7(int) Constant 1024 62: 18(float) Constant 1077936128 66: 18(float) Constant 1084227584 72: TypePointer UniformConstant 18(float) - 73(u): 72(ptr) Variable UniformConstant + 73(u): 72(ptr) Variable UniformConstant 75: 18(float) Constant 1078774989 76: TypeBool 81: 7(int) Constant 1000000 @@ -79,89 +81,89 @@ Linked fragment stage: 102: 7(int) Constant 8 117: 7(int) Constant 128 127: TypePointer PrivateGlobal 7(int) - 128(tempReturn): 127(ptr) Variable PrivateGlobal + 128(tempReturn): 127(ptr) Variable PrivateGlobal 129: 18(float) Constant 1082130432 130: 18(float) Constant 1065353216 131: 18(float) Constant 1073741824 132: 20(fvec3) ConstantComposite 130 131 62 153: TypeVector 18(float) 4 154: TypePointer Output 153(fvec4) -155(gl_FragColor): 154(ptr) Variable Output +155(gl_FragColor): 154(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 85(t): 8(ptr) Variable Function - 90(f): 89(ptr) Variable Function - 97(color): 8(ptr) Variable Function - 103(e): 8(ptr) Variable Function - 104(param): 8(ptr) Variable Function - 105(param): 8(ptr) Variable Function - 106(param): 8(ptr) Variable Function - 107(param): 8(ptr) Variable Function - 126(ret): 19(ptr) Variable Function - 133(tempArg): 8(ptr) Variable Function - 134(param): 19(ptr) Variable Function - 135(param): 21(ptr) Variable Function - 136(param): 8(ptr) Variable Function - 139(arg): 19(ptr) Variable Function - Store 85(t) 86 + 85(t): 8(ptr) Variable Function + 90(f): 89(ptr) Variable Function + 97(color): 8(ptr) Variable Function + 103(e): 8(ptr) Variable Function + 104(param): 8(ptr) Variable Function + 105(param): 8(ptr) Variable Function + 106(param): 8(ptr) Variable Function + 107(param): 8(ptr) Variable Function + 126(ret): 19(ptr) Variable Function + 133(tempArg): 8(ptr) Variable Function + 134(param): 19(ptr) Variable Function + 135(param): 21(ptr) Variable Function + 136(param): 8(ptr) Variable Function + 139(arg): 19(ptr) Variable Function + Store 85(t) 86 94: 93(ptr) AccessChain 90(f) 91 - 95: 87(ivec4) Load 94 + 95: 87(ivec4) Load 94 96: 87(ivec4) CompositeInsert 92 95 1 - Store 94 96 - 99: 7(int) Load 85(t) - 100: 7(int) Load 85(t) + Store 94 96 + 99: 7(int) Load 85(t) + 100: 7(int) Load 85(t) 101: 7(int) IAdd 99 100 - Store 104(param) 98 - Store 105(param) 101 + Store 104(param) 98 + Store 105(param) 101 108: 93(ptr) AccessChain 90(f) 91 - 109: 87(ivec4) Load 108 + 109: 87(ivec4) Load 108 110: 7(int) CompositeExtract 109 1 - Store 107(param) 110 + Store 107(param) 110 111: 7(int) FunctionCall 16(foo(i1;i1;i1;i1;i1;i1;) 104(param) 86 105(param) 102 106(param) 107(param) - 112: 7(int) Load 106(param) - Store 103(e) 112 - 113: 7(int) Load 107(param) + 112: 7(int) Load 106(param) + Store 103(e) 112 + 113: 7(int) Load 107(param) 114: 93(ptr) AccessChain 90(f) 91 - 115: 87(ivec4) Load 114 + 115: 87(ivec4) Load 114 116: 87(ivec4) CompositeInsert 113 115 1 - Store 114 116 - Store 97(color) 111 - 118: 7(int) Load 103(e) + Store 114 116 + Store 97(color) 111 + 118: 7(int) Load 103(e) 119: 93(ptr) AccessChain 90(f) 91 - 120: 87(ivec4) Load 119 + 120: 87(ivec4) Load 119 121: 7(int) CompositeExtract 120 1 122: 7(int) IAdd 118 121 123: 7(int) IMul 117 122 - 124: 7(int) Load 97(color) + 124: 7(int) Load 97(color) 125: 7(int) IAdd 124 123 - Store 97(color) 125 - Store 134(param) 129 - Store 135(param) 132 + Store 97(color) 125 + Store 134(param) 129 + Store 135(param) 132 137: 7(int) FunctionCall 26(foo2(f1;vf3;i1;) 134(param) 135(param) 136(param) - 138: 7(int) Load 136(param) - Store 133(tempArg) 138 - Store 128(tempReturn) 137 - 140: 7(int) Load 133(tempArg) + 138: 7(int) Load 136(param) + Store 133(tempArg) 138 + Store 128(tempReturn) 137 + 140: 7(int) Load 133(tempArg) 141: 18(float) ConvertSToF 140 - Store 139(arg) 141 - 142: 7(int) Load 128(tempReturn) + Store 139(arg) 141 + 142: 7(int) Load 128(tempReturn) 143: 18(float) ConvertSToF 142 - Store 126(ret) 143 - 144: 18(float) Load 126(ret) - 145: 18(float) Load 139(arg) + Store 126(ret) 143 + 144: 18(float) Load 126(ret) + 145: 18(float) Load 139(arg) 146: 18(float) FAdd 144 145 147: 7(int) ConvertFToS 146 - 148: 7(int) Load 97(color) + 148: 7(int) Load 97(color) 149: 7(int) IAdd 148 147 - Store 97(color) 149 - 150: 7(int) FunctionCall 29(foo3() - 151: 7(int) Load 97(color) + Store 97(color) 149 + 150: 7(int) FunctionCall 29(foo3() + 151: 7(int) Load 97(color) 152: 7(int) IAdd 151 150 - Store 97(color) 152 - 156: 7(int) Load 97(color) + Store 97(color) 152 + 156: 7(int) Load 97(color) 157: 18(float) ConvertSToF 156 158: 153(fvec4) CompositeConstruct 157 157 157 157 - Store 155(gl_FragColor) 158 + Store 155(gl_FragColor) 158 Branch 6 6: Label Return @@ -174,40 +176,40 @@ Linked fragment stage: 14(e): 8(ptr) FunctionParameter 15(f): 8(ptr) FunctionParameter 17: Label - 31(sum): 8(ptr) Variable Function - 32: 7(int) Load 10(a) + 31(sum): 8(ptr) Variable Function + 32: 7(int) Load 10(a) 33: 7(int) IAdd 32 11(b) - 34: 7(int) Load 12(c) + 34: 7(int) Load 12(c) 35: 7(int) IAdd 33 34 36: 7(int) IAdd 35 13(d) - 37: 7(int) Load 15(f) + 37: 7(int) Load 15(f) 38: 7(int) IAdd 36 37 - Store 31(sum) 38 - 40: 7(int) Load 10(a) + Store 31(sum) 38 + 40: 7(int) Load 10(a) 41: 7(int) IMul 40 39 - Store 10(a) 41 - 42: 7(int) Load 12(c) + Store 10(a) 41 + 42: 7(int) Load 12(c) 43: 7(int) IMul 42 39 - Store 12(c) 43 - Store 14(e) 44 - 45: 7(int) Load 15(f) + Store 12(c) 43 + Store 14(e) 44 + 45: 7(int) Load 15(f) 46: 7(int) IMul 45 39 - Store 15(f) 46 - 47: 7(int) Load 10(a) + Store 15(f) 46 + 47: 7(int) Load 10(a) 48: 7(int) IMul 39 11(b) 49: 7(int) IAdd 47 48 - 50: 7(int) Load 12(c) + 50: 7(int) Load 12(c) 51: 7(int) IAdd 49 50 52: 7(int) IMul 39 13(d) 53: 7(int) IAdd 51 52 - 54: 7(int) Load 14(e) + 54: 7(int) Load 14(e) 55: 7(int) IAdd 53 54 - 56: 7(int) Load 15(f) + 56: 7(int) Load 15(f) 57: 7(int) IAdd 55 56 - 58: 7(int) Load 31(sum) + 58: 7(int) Load 31(sum) 59: 7(int) IAdd 58 57 - Store 31(sum) 59 - 60: 7(int) Load 31(sum) + Store 31(sum) 59 + 60: 7(int) Load 31(sum) ReturnValue 60 FunctionEnd 26(foo2(f1;vf3;i1;): 7(int) Function None 22 @@ -215,11 +217,11 @@ Linked fragment stage: 24(b): 21(ptr) FunctionParameter 25(r): 8(ptr) FunctionParameter 27: Label - 63: 18(float) Load 23(a) + 63: 18(float) Load 23(a) 64: 18(float) FMul 62 63 65: 7(int) ConvertFToS 64 - Store 25(r) 65 - 67: 20(fvec3) Load 24(b) + Store 25(r) 65 + 67: 20(fvec3) Load 24(b) 68: 18(float) CompositeExtract 67 1 69: 18(float) FMul 66 68 70: 7(int) ConvertFToS 69 @@ -227,10 +229,10 @@ Linked fragment stage: FunctionEnd 29(foo3(): 7(int) Function None 28 30: Label - 74: 18(float) Load 73(u) + 74: 18(float) Load 73(u) 77: 76(bool) FOrdGreaterThan 74 75 SelectionMerge 79 None - BranchConditional 77 78 79 + BranchConditional 77 78 79 78: Label Kill 79: Label diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out old mode 100644 new mode 100755 index 8de3e4bd..b56e804d --- a/Test/baseResults/spv.length.frag.out +++ b/Test/baseResults/spv.length.frag.out @@ -8,19 +8,21 @@ Linked fragment stage: // Id's are bound by 34 Source GLSL 120 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "t" Name 15 "v" Name 27 "gl_FragColor" Name 33 "u" - Decorate 15(v) Smooth + Decorate 15(v) Smooth Decorate 27(gl_FragColor) BuiltIn FragColor - Decorate 33(u) NoStaticUse + Decorate 33(u) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 2 9: TypePointer Function 8(fvec2) @@ -28,30 +30,30 @@ Linked fragment stage: 12: 11(int) Constant 2 13: TypeArray 8(fvec2) 12 14: TypePointer Input 13 - 15(v): 14(ptr) Variable Input + 15(v): 14(ptr) Variable Input 16: TypeInt 32 1 17: 16(int) Constant 0 18: TypePointer Input 8(fvec2) 21: 16(int) Constant 1 25: TypeVector 7(float) 4 26: TypePointer Output 25(fvec4) -27(gl_FragColor): 26(ptr) Variable Output +27(gl_FragColor): 26(ptr) Variable Output 28: 7(float) Constant 1106247680 29: 25(fvec4) ConstantComposite 28 28 28 28 30: 11(int) Constant 3 31: TypeArray 25(fvec4) 30 32: TypePointer UniformConstant 31 - 33(u): 32(ptr) Variable UniformConstant + 33(u): 32(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 10(t): 9(ptr) Variable Function + 10(t): 9(ptr) Variable Function 19: 18(ptr) AccessChain 15(v) 17 - 20: 8(fvec2) Load 19 + 20: 8(fvec2) Load 19 22: 18(ptr) AccessChain 15(v) 21 - 23: 8(fvec2) Load 22 + 23: 8(fvec2) Load 22 24: 8(fvec2) FAdd 20 23 - Store 10(t) 24 - Store 27(gl_FragColor) 29 + Store 10(t) 24 + Store 27(gl_FragColor) 29 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out old mode 100644 new mode 100755 index 1ebe299e..37f124ea --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -8,12 +8,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 134 +// Id's are bound by 135 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "s1" MemberName 9(s1) 0 "i" @@ -40,18 +42,18 @@ Linked fragment stage: Name 87 "condition" Name 95 "color" Name 105 "gl_FragColor" - Name 124 "sampler" - Name 130 "foo" - Name 131 "foo2" - Name 133 "uFloatArray" - Decorate 41(coord) Smooth - Decorate 95(color) Smooth + Name 125 "sampler" + Name 131 "foo" + Name 132 "foo2" + Name 134 "uFloatArray" + Decorate 41(coord) Smooth + Decorate 95(color) Smooth Decorate 105(gl_FragColor) BuiltIn FragColor - Decorate 130(foo) NoStaticUse - Decorate 131(foo2) NoStaticUse - Decorate 133(uFloatArray) NoStaticUse + Decorate 131(foo) NoStaticUse + Decorate 132(foo2) NoStaticUse + Decorate 134(uFloatArray) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypeFloat 32 9(s1): TypeStruct 7(int) 8(float) @@ -60,7 +62,7 @@ Linked fragment stage: 12: TypePointer Function 11(s2) 14(s3): TypeStruct 11(s2) 7(int) 8(float) 9(s1) 15: TypePointer UniformConstant 14(s3) - 16(foo3): 15(ptr) Variable UniformConstant + 16(foo3): 15(ptr) Variable UniformConstant 17: 7(int) Constant 0 18: TypePointer UniformConstant 11(s2) 21: TypePointer UniformConstant 7(int) @@ -76,7 +78,7 @@ Linked fragment stage: 38: 7(int) Constant 4 39: TypeVector 8(float) 2 40: TypePointer Input 39(fvec2) - 41(coord): 40(ptr) Variable Input + 41(coord): 40(ptr) Variable Input 45: 33(int) Constant 8 46: TypeArray 7(int) 45 47: TypePointer Function 46 @@ -84,134 +86,135 @@ Linked fragment stage: 68: 7(int) Constant 5 79: 7(int) Constant 16 83: 8(float) Constant 0 - 87(condition): 21(ptr) Variable UniformConstant + 87(condition): 21(ptr) Variable UniformConstant 93: 7(int) Constant 3 94: TypePointer Input 10(fvec4) - 95(color): 94(ptr) Variable Input + 95(color): 94(ptr) Variable Input 97: TypePointer Function 10(fvec4) 104: TypePointer Output 10(fvec4) -105(gl_FragColor): 104(ptr) Variable Output - 122: TypeSampler8(float) 2D filter+texture - 123: TypePointer UniformConstant 122 - 124(sampler): 123(ptr) Variable UniformConstant - 129: TypePointer UniformConstant 9(s1) - 130(foo): 129(ptr) Variable UniformConstant - 131(foo2): 18(ptr) Variable UniformConstant - 132: TypePointer UniformConstant 35 -133(uFloatArray): 132(ptr) Variable UniformConstant +105(gl_FragColor): 104(ptr) Variable Output + 122: TypeImage 8(float) 2D sampled format:Unknown + 123: TypeSampledImage 122 + 124: TypePointer UniformConstant 123 + 125(sampler): 124(ptr) Variable UniformConstant + 130: TypePointer UniformConstant 9(s1) + 131(foo): 130(ptr) Variable UniformConstant + 132(foo2): 18(ptr) Variable UniformConstant + 133: TypePointer UniformConstant 35 +134(uFloatArray): 133(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 13(locals2): 12(ptr) Variable Function - 37(localFArray): 36(ptr) Variable Function - 48(localIArray): 47(ptr) Variable Function - 67(x): 51(ptr) Variable Function - 69(localArray): 36(ptr) Variable Function - 74(i): 51(ptr) Variable Function - 81(a): 36(ptr) Variable Function + 13(locals2): 12(ptr) Variable Function + 37(localFArray): 36(ptr) Variable Function + 48(localIArray): 47(ptr) Variable Function + 67(x): 51(ptr) Variable Function + 69(localArray): 36(ptr) Variable Function + 74(i): 51(ptr) Variable Function + 81(a): 36(ptr) Variable Function 19: 18(ptr) AccessChain 16(foo3) 17 - 20: 11(s2) Load 19 - Store 13(locals2) 20 + 20: 11(s2) Load 19 + Store 13(locals2) 20 22: 21(ptr) AccessChain 16(foo3) 17 17 - 23: 7(int) Load 22 + 23: 7(int) Load 22 25: 24(bool) SGreaterThan 23 17 SelectionMerge 27 None - BranchConditional 25 26 53 + BranchConditional 25 26 53 26: Label 32: 31(ptr) AccessChain 13(locals2) 28 29 - Store 32 30 - 42: 39(fvec2) Load 41(coord) + Store 32 30 + 42: 39(fvec2) Load 41(coord) 43: 8(float) CompositeExtract 42 0 44: 31(ptr) AccessChain 37(localFArray) 38 - Store 44 43 + Store 44 43 49: 21(ptr) AccessChain 16(foo3) 17 17 - 50: 7(int) Load 49 + 50: 7(int) Load 49 52: 51(ptr) AccessChain 48(localIArray) 28 - Store 52 50 + Store 52 50 Branch 27 53: Label - 54: 39(fvec2) Load 41(coord) + 54: 39(fvec2) Load 41(coord) 55: 8(float) CompositeExtract 54 0 56: 31(ptr) AccessChain 13(locals2) 28 29 - Store 56 55 + Store 56 55 57: 31(ptr) AccessChain 37(localFArray) 38 - Store 57 30 + Store 57 30 58: 51(ptr) AccessChain 48(localIArray) 28 - Store 58 17 + Store 58 17 Branch 27 27: Label 59: 51(ptr) AccessChain 48(localIArray) 28 - 60: 7(int) Load 59 + 60: 7(int) Load 59 61: 24(bool) IEqual 60 17 SelectionMerge 63 None - BranchConditional 61 62 63 + BranchConditional 61 62 63 62: Label 64: 31(ptr) AccessChain 37(localFArray) 38 - 65: 8(float) Load 64 + 65: 8(float) Load 64 66: 8(float) FAdd 65 30 - Store 64 66 + Store 64 66 Branch 63 63: Label - Store 67(x) 68 - 70: 7(int) Load 67(x) - 71: 39(fvec2) Load 41(coord) + Store 67(x) 68 + 70: 7(int) Load 67(x) + 71: 39(fvec2) Load 41(coord) 72: 8(float) CompositeExtract 71 0 73: 31(ptr) AccessChain 69(localArray) 70 - Store 73 72 - Store 74(i) 17 + Store 73 72 + Store 74(i) 17 Branch 75 75: Label - 78: 7(int) Load 74(i) + 78: 7(int) Load 74(i) 80: 24(bool) SLessThan 78 79 LoopMerge 76 None - BranchConditional 80 77 76 + BranchConditional 80 77 76 77: Label - 82: 7(int) Load 74(i) + 82: 7(int) Load 74(i) 84: 31(ptr) AccessChain 81(a) 82 - Store 84 83 - 85: 7(int) Load 74(i) + Store 84 83 + 85: 7(int) Load 74(i) 86: 7(int) IAdd 85 29 - Store 74(i) 86 + Store 74(i) 86 Branch 75 76: Label - 88: 7(int) Load 87(condition) + 88: 7(int) Load 87(condition) 89: 24(bool) IEqual 88 29 SelectionMerge 91 None - BranchConditional 89 90 91 + BranchConditional 89 90 91 90: Label - 92: 35 Load 69(localArray) - Store 81(a) 92 + 92: 35 Load 69(localArray) + Store 81(a) 92 Branch 91 91: Label - 96: 10(fvec4) Load 95(color) + 96: 10(fvec4) Load 95(color) 98: 97(ptr) AccessChain 13(locals2) 93 - Store 98 96 - 99: 39(fvec2) Load 41(coord) + Store 98 96 + 99: 39(fvec2) Load 41(coord) 100: 8(float) CompositeExtract 99 1 101: 97(ptr) AccessChain 13(locals2) 93 - 102: 10(fvec4) Load 101 + 102: 10(fvec4) Load 101 103: 10(fvec4) CompositeInsert 100 102 2 - Store 101 103 + Store 101 103 106: 97(ptr) AccessChain 13(locals2) 93 - 107: 10(fvec4) Load 106 + 107: 10(fvec4) Load 106 108: 31(ptr) AccessChain 37(localFArray) 38 - 109: 8(float) Load 108 + 109: 8(float) Load 108 110: 31(ptr) AccessChain 13(locals2) 28 29 - 111: 8(float) Load 110 + 111: 8(float) Load 110 112: 8(float) FAdd 109 111 - 113: 7(int) Load 67(x) + 113: 7(int) Load 67(x) 114: 31(ptr) AccessChain 69(localArray) 113 - 115: 8(float) Load 114 + 115: 8(float) Load 114 116: 8(float) FAdd 112 115 - 117: 7(int) Load 67(x) + 117: 7(int) Load 67(x) 118: 31(ptr) AccessChain 81(a) 117 - 119: 8(float) Load 118 + 119: 8(float) Load 118 120: 8(float) FAdd 116 119 121: 10(fvec4) VectorTimesScalar 107 120 - 125: 122 Load 124(sampler) - 126: 39(fvec2) Load 41(coord) - 127: 10(fvec4) TextureSample 125 126 - 128: 10(fvec4) FMul 121 127 - Store 105(gl_FragColor) 128 + 126: 123 Load 125(sampler) + 127: 39(fvec2) Load 41(coord) + 128: 10(fvec4) ImageSampleImplicitLod 126 127 + 129: 10(fvec4) FMul 121 128 + Store 105(gl_FragColor) 129 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out old mode 100644 new mode 100755 index 6b8e3fbe..8cc3a1c9 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -10,9 +10,11 @@ Linked fragment stage: // Id's are bound by 750 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" @@ -69,32 +71,32 @@ Linked fragment stage: Name 747 "d32" Name 748 "d33" Name 749 "d34" - Decorate 12(BaseColor) Smooth + Decorate 12(BaseColor) Smooth Decorate 628(gl_FragColor) BuiltIn FragColor - Decorate 733(d13) NoStaticUse - Decorate 734(d19) NoStaticUse - Decorate 735(d20) NoStaticUse - Decorate 736(d21) NoStaticUse - Decorate 737(d22) NoStaticUse - Decorate 738(d23) NoStaticUse - Decorate 739(d24) NoStaticUse - Decorate 740(d25) NoStaticUse - Decorate 741(d26) NoStaticUse - Decorate 742(d27) NoStaticUse - Decorate 743(d28) NoStaticUse - Decorate 744(d29) NoStaticUse - Decorate 745(d30) NoStaticUse - Decorate 746(d31) NoStaticUse - Decorate 747(d32) NoStaticUse - Decorate 748(d33) NoStaticUse - Decorate 749(d34) NoStaticUse + Decorate 733(d13) NoStaticUse + Decorate 734(d19) NoStaticUse + Decorate 735(d20) NoStaticUse + Decorate 736(d21) NoStaticUse + Decorate 737(d22) NoStaticUse + Decorate 738(d23) NoStaticUse + Decorate 739(d24) NoStaticUse + Decorate 740(d25) NoStaticUse + Decorate 741(d26) NoStaticUse + Decorate 742(d27) NoStaticUse + Decorate 743(d28) NoStaticUse + Decorate 744(d29) NoStaticUse + Decorate 745(d30) NoStaticUse + Decorate 746(d31) NoStaticUse + Decorate 747(d32) NoStaticUse + Decorate 748(d33) NoStaticUse + Decorate 749(d34) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 17: TypeBool 18: 17(bool) ConstantTrue 21: 7(float) Constant 1051260355 @@ -102,235 +104,235 @@ Linked fragment stage: 31: 7(float) Constant 1059648963 35: 8(fvec4) ConstantComposite 31 31 31 31 47: TypePointer UniformConstant 7(float) - 48(d): 47(ptr) Variable UniformConstant + 48(d): 47(ptr) Variable UniformConstant 51: TypePointer UniformConstant 8(fvec4) - 52(bigColor): 51(ptr) Variable UniformConstant - 63(bigColor1_1): 51(ptr) Variable UniformConstant + 52(bigColor): 51(ptr) Variable UniformConstant + 63(bigColor1_1): 51(ptr) Variable UniformConstant 82: 7(float) Constant 1109917696 85: 7(float) Constant 1065353216 - 93(d2): 47(ptr) Variable UniformConstant - 98(d3): 47(ptr) Variable UniformConstant -102(bigColor1_2): 51(ptr) Variable UniformConstant -113(bigColor1_3): 51(ptr) Variable UniformConstant - 119(d4): 47(ptr) Variable UniformConstant + 93(d2): 47(ptr) Variable UniformConstant + 98(d3): 47(ptr) Variable UniformConstant +102(bigColor1_2): 51(ptr) Variable UniformConstant +113(bigColor1_3): 51(ptr) Variable UniformConstant + 119(d4): 47(ptr) Variable UniformConstant 128: TypeInt 32 1 129: TypePointer Function 128(int) 131: 128(int) Constant 0 136: TypePointer UniformConstant 128(int) - 137(Count): 136(ptr) Variable UniformConstant - 140(bigColor2): 51(ptr) Variable UniformConstant + 137(Count): 136(ptr) Variable UniformConstant + 140(bigColor2): 51(ptr) Variable UniformConstant 145: 128(int) Constant 1 - 158(bigColor3): 51(ptr) Variable UniformConstant + 158(bigColor3): 51(ptr) Variable UniformConstant 162: 17(bool) ConstantFalse 168: 128(int) Constant 42 183: 128(int) Constant 100 187: 7(float) Constant 1101004800 221: 128(int) Constant 120 - 306(bigColor4): 51(ptr) Variable UniformConstant - 344(d5): 47(ptr) Variable UniformConstant - 348(bigColor5): 51(ptr) Variable UniformConstant - 366(d6): 47(ptr) Variable UniformConstant - 378(bigColor6): 51(ptr) Variable UniformConstant - 413(d7): 47(ptr) Variable UniformConstant + 306(bigColor4): 51(ptr) Variable UniformConstant + 344(d5): 47(ptr) Variable UniformConstant + 348(bigColor5): 51(ptr) Variable UniformConstant + 366(d6): 47(ptr) Variable UniformConstant + 378(bigColor6): 51(ptr) Variable UniformConstant + 413(d7): 47(ptr) Variable UniformConstant 442: 7(float) Constant 0 - 447(bigColor7): 51(ptr) Variable UniformConstant - 472(d8): 47(ptr) Variable UniformConstant + 447(bigColor7): 51(ptr) Variable UniformConstant + 472(d8): 47(ptr) Variable UniformConstant 494: 7(float) Constant 1073741824 - 518(d9): 47(ptr) Variable UniformConstant + 518(d9): 47(ptr) Variable UniformConstant 534: 7(float) Constant 1084227584 - 550(d10): 47(ptr) Variable UniformConstant - 560(d11): 47(ptr) Variable UniformConstant - 572(d12): 47(ptr) Variable UniformConstant + 550(d10): 47(ptr) Variable UniformConstant + 560(d11): 47(ptr) Variable UniformConstant + 572(d12): 47(ptr) Variable UniformConstant 598: 7(float) Constant 1092616192 - 600(bigColor8): 51(ptr) Variable UniformConstant + 600(bigColor8): 51(ptr) Variable UniformConstant 627: TypePointer Output 8(fvec4) -628(gl_FragColor): 627(ptr) Variable Output - 635(d14): 47(ptr) Variable UniformConstant - 640(d15): 47(ptr) Variable UniformConstant - 658(d16): 47(ptr) Variable UniformConstant - 696(d17): 47(ptr) Variable UniformConstant - 702(d18): 47(ptr) Variable UniformConstant - 733(d13): 47(ptr) Variable UniformConstant - 734(d19): 47(ptr) Variable UniformConstant - 735(d20): 47(ptr) Variable UniformConstant - 736(d21): 47(ptr) Variable UniformConstant - 737(d22): 47(ptr) Variable UniformConstant - 738(d23): 47(ptr) Variable UniformConstant - 739(d24): 47(ptr) Variable UniformConstant - 740(d25): 47(ptr) Variable UniformConstant - 741(d26): 47(ptr) Variable UniformConstant - 742(d27): 47(ptr) Variable UniformConstant - 743(d28): 47(ptr) Variable UniformConstant - 744(d29): 47(ptr) Variable UniformConstant - 745(d30): 47(ptr) Variable UniformConstant - 746(d31): 47(ptr) Variable UniformConstant - 747(d32): 47(ptr) Variable UniformConstant - 748(d33): 47(ptr) Variable UniformConstant - 749(d34): 47(ptr) Variable UniformConstant +628(gl_FragColor): 627(ptr) Variable Output + 635(d14): 47(ptr) Variable UniformConstant + 640(d15): 47(ptr) Variable UniformConstant + 658(d16): 47(ptr) Variable UniformConstant + 696(d17): 47(ptr) Variable UniformConstant + 702(d18): 47(ptr) Variable UniformConstant + 733(d13): 47(ptr) Variable UniformConstant + 734(d19): 47(ptr) Variable UniformConstant + 735(d20): 47(ptr) Variable UniformConstant + 736(d21): 47(ptr) Variable UniformConstant + 737(d22): 47(ptr) Variable UniformConstant + 738(d23): 47(ptr) Variable UniformConstant + 739(d24): 47(ptr) Variable UniformConstant + 740(d25): 47(ptr) Variable UniformConstant + 741(d26): 47(ptr) Variable UniformConstant + 742(d27): 47(ptr) Variable UniformConstant + 743(d28): 47(ptr) Variable UniformConstant + 744(d29): 47(ptr) Variable UniformConstant + 745(d30): 47(ptr) Variable UniformConstant + 746(d31): 47(ptr) Variable UniformConstant + 747(d32): 47(ptr) Variable UniformConstant + 748(d33): 47(ptr) Variable UniformConstant + 749(d34): 47(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 130(i): 129(ptr) Variable Function - 163(i): 129(ptr) Variable Function - 178(i): 129(ptr) Variable Function - 216(i): 129(ptr) Variable Function - 241(i): 129(ptr) Variable Function - 269(i): 129(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 + 10(color): 9(ptr) Variable Function + 130(i): 129(ptr) Variable Function + 163(i): 129(ptr) Variable Function + 178(i): 129(ptr) Variable Function + 216(i): 129(ptr) Variable Function + 241(i): 129(ptr) Variable Function + 269(i): 129(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 Branch 14 14: Label LoopMerge 15 None - BranchConditional 18 16 15 + BranchConditional 18 16 15 16: Label - 19: 8(fvec4) Load 10(color) + 19: 8(fvec4) Load 10(color) 20: 7(float) CompositeExtract 19 0 22: 17(bool) FOrdLessThan 20 21 SelectionMerge 24 None - BranchConditional 22 23 24 + BranchConditional 22 23 24 23: Label - 26: 8(fvec4) Load 10(color) + 26: 8(fvec4) Load 10(color) 27: 8(fvec4) FAdd 26 25 - Store 10(color) 27 + Store 10(color) 27 Branch 15 24: Label - 29: 8(fvec4) Load 10(color) + 29: 8(fvec4) Load 10(color) 30: 7(float) CompositeExtract 29 0 32: 17(bool) FOrdLessThan 30 31 SelectionMerge 34 None - BranchConditional 32 33 34 + BranchConditional 32 33 34 33: Label - 36: 8(fvec4) Load 10(color) + 36: 8(fvec4) Load 10(color) 37: 8(fvec4) FAdd 36 35 - Store 10(color) 37 + Store 10(color) 37 Branch 15 34: Label - 39: 8(fvec4) Load 10(color) + 39: 8(fvec4) Load 10(color) 40: 8(fvec4) FAdd 39 25 - Store 10(color) 40 + Store 10(color) 40 Branch 15 15: Label Branch 42 42: Label - 45: 8(fvec4) Load 10(color) + 45: 8(fvec4) Load 10(color) 46: 7(float) CompositeExtract 45 0 - 49: 7(float) Load 48(d) + 49: 7(float) Load 48(d) 50: 17(bool) FOrdLessThan 46 49 LoopMerge 43 None - BranchConditional 50 44 43 + BranchConditional 50 44 43 44: Label - 53: 8(fvec4) Load 52(bigColor) - 54: 8(fvec4) Load 10(color) + 53: 8(fvec4) Load 52(bigColor) + 54: 8(fvec4) Load 10(color) 55: 8(fvec4) FAdd 54 53 - Store 10(color) 55 + Store 10(color) 55 Branch 42 43: Label Branch 56 56: Label - 59: 8(fvec4) Load 10(color) + 59: 8(fvec4) Load 10(color) 60: 7(float) CompositeExtract 59 2 - 61: 7(float) Load 48(d) + 61: 7(float) Load 48(d) 62: 17(bool) FOrdLessThan 60 61 LoopMerge 57 None - BranchConditional 62 58 57 + BranchConditional 62 58 57 58: Label - 64: 8(fvec4) Load 63(bigColor1_1) - 65: 8(fvec4) Load 10(color) + 64: 8(fvec4) Load 63(bigColor1_1) + 65: 8(fvec4) Load 10(color) 66: 8(fvec4) FAdd 65 64 - Store 10(color) 66 - 67: 8(fvec4) Load 10(color) + Store 10(color) 66 + 67: 8(fvec4) Load 10(color) 68: 7(float) CompositeExtract 67 3 - 69: 7(float) Load 48(d) + 69: 7(float) Load 48(d) 70: 17(bool) FOrdLessThan 68 69 SelectionMerge 72 None - BranchConditional 70 71 72 + BranchConditional 70 71 72 71: Label Branch 56 72: Label - 74: 8(fvec4) Load 63(bigColor1_1) - 75: 8(fvec4) Load 10(color) + 74: 8(fvec4) Load 63(bigColor1_1) + 75: 8(fvec4) Load 10(color) 76: 8(fvec4) FAdd 75 74 - Store 10(color) 76 + Store 10(color) 76 Branch 56 57: Label Branch 77 77: Label - 80: 8(fvec4) Load 10(color) + 80: 8(fvec4) Load 10(color) 81: 7(float) CompositeExtract 80 0 83: 17(bool) FOrdLessThan 81 82 LoopMerge 78 None - BranchConditional 83 79 78 + BranchConditional 83 79 78 79: Label - 84: 8(fvec4) Load 10(color) + 84: 8(fvec4) Load 10(color) 86: 8(fvec4) CompositeConstruct 85 85 85 85 87: 8(fvec4) FAdd 84 86 - Store 10(color) 87 + Store 10(color) 87 Branch 77 78: Label Branch 88 88: Label - 91: 8(fvec4) Load 10(color) + 91: 8(fvec4) Load 10(color) 92: 7(float) CompositeExtract 91 3 - 94: 7(float) Load 93(d2) + 94: 7(float) Load 93(d2) 95: 17(bool) FOrdLessThan 92 94 - 96: 8(fvec4) Load 10(color) + 96: 8(fvec4) Load 10(color) 97: 7(float) CompositeExtract 96 1 - 99: 7(float) Load 98(d3) + 99: 7(float) Load 98(d3) 100: 17(bool) FOrdLessThan 97 99 101: 17(bool) LogicalAnd 95 100 LoopMerge 89 None - BranchConditional 101 90 89 + BranchConditional 101 90 89 90: Label - 103: 8(fvec4) Load 102(bigColor1_2) - 104: 8(fvec4) Load 10(color) + 103: 8(fvec4) Load 102(bigColor1_2) + 104: 8(fvec4) Load 10(color) 105: 8(fvec4) FAdd 104 103 - Store 10(color) 105 + Store 10(color) 105 Branch 88 89: Label Branch 106 106: Label - 109: 8(fvec4) Load 10(color) + 109: 8(fvec4) Load 10(color) 110: 7(float) CompositeExtract 109 2 - 111: 7(float) Load 98(d3) + 111: 7(float) Load 98(d3) 112: 17(bool) FOrdLessThan 110 111 LoopMerge 107 None - BranchConditional 112 108 107 + BranchConditional 112 108 107 108: Label - 114: 8(fvec4) Load 113(bigColor1_3) - 115: 8(fvec4) Load 10(color) + 114: 8(fvec4) Load 113(bigColor1_3) + 115: 8(fvec4) Load 10(color) 116: 8(fvec4) FAdd 115 114 - Store 10(color) 116 - 117: 8(fvec4) Load 10(color) + Store 10(color) 116 + 117: 8(fvec4) Load 10(color) 118: 7(float) CompositeExtract 117 1 - 120: 7(float) Load 119(d4) + 120: 7(float) Load 119(d4) 121: 17(bool) FOrdLessThan 118 120 SelectionMerge 123 None - BranchConditional 121 122 123 + BranchConditional 121 122 123 122: Label Branch 107 123: Label - 125: 8(fvec4) Load 113(bigColor1_3) - 126: 8(fvec4) Load 10(color) + 125: 8(fvec4) Load 113(bigColor1_3) + 126: 8(fvec4) Load 10(color) 127: 8(fvec4) FAdd 126 125 - Store 10(color) 127 + Store 10(color) 127 Branch 106 107: Label - Store 130(i) 131 + Store 130(i) 131 Branch 132 132: Label - 135: 128(int) Load 130(i) - 138: 128(int) Load 137(Count) + 135: 128(int) Load 130(i) + 138: 128(int) Load 137(Count) 139: 17(bool) SLessThan 135 138 LoopMerge 133 None - BranchConditional 139 134 133 + BranchConditional 139 134 133 134: Label - 141: 8(fvec4) Load 140(bigColor2) - 142: 8(fvec4) Load 10(color) + 141: 8(fvec4) Load 140(bigColor2) + 142: 8(fvec4) Load 10(color) 143: 8(fvec4) FAdd 142 141 - Store 10(color) 143 - 144: 128(int) Load 130(i) + Store 10(color) 143 + 144: 128(int) Load 130(i) 146: 128(int) IAdd 144 145 - Store 130(i) 146 + Store 130(i) 146 Branch 132 133: Label Branch 147 @@ -340,202 +342,202 @@ Linked fragment stage: Branch 151 151: Label SelectionMerge 149 None - BranchConditional 150 149 152 + BranchConditional 150 149 152 152: Label - 153: 8(fvec4) Load 10(color) + 153: 8(fvec4) Load 10(color) 154: 7(float) CompositeExtract 153 0 - 155: 7(float) Load 93(d2) + 155: 7(float) Load 93(d2) 156: 17(bool) FOrdLessThan 154 155 SelectionMerge 157 None - BranchConditional 156 157 148 + BranchConditional 156 157 148 157: Label Branch 149 149: Label - 159: 8(fvec4) Load 158(bigColor3) - 160: 8(fvec4) Load 10(color) + 159: 8(fvec4) Load 158(bigColor3) + 160: 8(fvec4) Load 10(color) 161: 8(fvec4) FAdd 160 159 - Store 10(color) 161 + Store 10(color) 161 Branch 147 148: Label - Store 163(i) 131 + Store 163(i) 131 Branch 164 164: Label - 167: 128(int) Load 163(i) + 167: 128(int) Load 163(i) 169: 17(bool) SLessThan 167 168 LoopMerge 165 None - BranchConditional 169 166 165 + BranchConditional 169 166 165 166: Label - 170: 7(float) Load 98(d3) - 171: 8(fvec4) Load 10(color) + 170: 7(float) Load 98(d3) + 171: 8(fvec4) Load 10(color) 172: 7(float) CompositeExtract 171 2 173: 7(float) FAdd 172 170 - 174: 8(fvec4) Load 10(color) + 174: 8(fvec4) Load 10(color) 175: 8(fvec4) CompositeInsert 173 174 2 - Store 10(color) 175 - 176: 128(int) Load 163(i) + Store 10(color) 175 + 176: 128(int) Load 163(i) 177: 128(int) IAdd 176 145 - Store 163(i) 177 + Store 163(i) 177 Branch 164 165: Label - Store 178(i) 131 + Store 178(i) 131 Branch 179 179: Label - 182: 128(int) Load 178(i) + 182: 128(int) Load 178(i) 184: 17(bool) SLessThan 182 183 LoopMerge 180 None - BranchConditional 184 181 180 + BranchConditional 184 181 180 181: Label - 185: 8(fvec4) Load 10(color) + 185: 8(fvec4) Load 10(color) 186: 7(float) CompositeExtract 185 2 188: 17(bool) FOrdLessThan 186 187 SelectionMerge 190 None - BranchConditional 188 189 196 + BranchConditional 188 189 196 189: Label - 191: 8(fvec4) Load 10(color) + 191: 8(fvec4) Load 10(color) 192: 7(float) CompositeExtract 191 0 193: 7(float) FAdd 192 85 - 194: 8(fvec4) Load 10(color) + 194: 8(fvec4) Load 10(color) 195: 8(fvec4) CompositeInsert 193 194 0 - Store 10(color) 195 + Store 10(color) 195 Branch 190 196: Label - 197: 8(fvec4) Load 10(color) + 197: 8(fvec4) Load 10(color) 198: 7(float) CompositeExtract 197 1 199: 7(float) FAdd 198 85 - 200: 8(fvec4) Load 10(color) + 200: 8(fvec4) Load 10(color) 201: 8(fvec4) CompositeInsert 199 200 1 - Store 10(color) 201 + Store 10(color) 201 Branch 190 190: Label - 202: 8(fvec4) Load 10(color) + 202: 8(fvec4) Load 10(color) 203: 7(float) CompositeExtract 202 3 204: 17(bool) FOrdLessThan 203 187 SelectionMerge 206 None - BranchConditional 204 205 206 + BranchConditional 204 205 206 205: Label - 207: 8(fvec4) Load 10(color) + 207: 8(fvec4) Load 10(color) 208: 7(float) CompositeExtract 207 2 - 209: 8(fvec4) Load 10(color) + 209: 8(fvec4) Load 10(color) 210: 7(float) CompositeExtract 209 1 211: 17(bool) FOrdGreaterThan 208 210 SelectionMerge 213 None - BranchConditional 211 212 213 + BranchConditional 211 212 213 212: Label Branch 213 213: Label Branch 206 206: Label - 214: 128(int) Load 178(i) + 214: 128(int) Load 178(i) 215: 128(int) IAdd 214 145 - Store 178(i) 215 + Store 178(i) 215 Branch 179 180: Label - Store 216(i) 131 + Store 216(i) 131 Branch 217 217: Label - 220: 128(int) Load 216(i) + 220: 128(int) Load 216(i) 222: 17(bool) SLessThan 220 221 LoopMerge 218 None - BranchConditional 222 219 218 + BranchConditional 222 219 218 219: Label - 223: 8(fvec4) Load 10(color) + 223: 8(fvec4) Load 10(color) 224: 7(float) CompositeExtract 223 2 225: 17(bool) FOrdLessThan 224 187 SelectionMerge 227 None - BranchConditional 225 226 233 + BranchConditional 225 226 233 226: Label - 228: 8(fvec4) Load 10(color) + 228: 8(fvec4) Load 10(color) 229: 7(float) CompositeExtract 228 0 230: 7(float) FAdd 229 85 - 231: 8(fvec4) Load 10(color) + 231: 8(fvec4) Load 10(color) 232: 8(fvec4) CompositeInsert 230 231 0 - Store 10(color) 232 + Store 10(color) 232 Branch 227 233: Label - 234: 8(fvec4) Load 10(color) + 234: 8(fvec4) Load 10(color) 235: 7(float) CompositeExtract 234 1 236: 7(float) FAdd 235 85 - 237: 8(fvec4) Load 10(color) + 237: 8(fvec4) Load 10(color) 238: 8(fvec4) CompositeInsert 236 237 1 - Store 10(color) 238 + Store 10(color) 238 Branch 227 227: Label - 239: 128(int) Load 216(i) + 239: 128(int) Load 216(i) 240: 128(int) IAdd 239 145 - Store 216(i) 240 + Store 216(i) 240 Branch 217 218: Label - Store 241(i) 131 + Store 241(i) 131 Branch 242 242: Label - 245: 128(int) Load 241(i) + 245: 128(int) Load 241(i) 246: 17(bool) SLessThan 245 168 LoopMerge 243 None - BranchConditional 246 244 243 + BranchConditional 246 244 243 244: Label - 247: 7(float) Load 98(d3) - 248: 8(fvec4) Load 10(color) + 247: 7(float) Load 98(d3) + 248: 8(fvec4) Load 10(color) 249: 7(float) CompositeExtract 248 2 250: 7(float) FAdd 249 247 - 251: 8(fvec4) Load 10(color) + 251: 8(fvec4) Load 10(color) 252: 8(fvec4) CompositeInsert 250 251 2 - Store 10(color) 252 - 253: 8(fvec4) Load 10(color) + Store 10(color) 252 + 253: 8(fvec4) Load 10(color) 254: 7(float) CompositeExtract 253 0 - 255: 7(float) Load 119(d4) + 255: 7(float) Load 119(d4) 256: 17(bool) FOrdLessThan 254 255 SelectionMerge 258 None - BranchConditional 256 257 258 + BranchConditional 256 257 258 257: Label - 259: 128(int) Load 241(i) + 259: 128(int) Load 241(i) 260: 128(int) IAdd 259 145 - Store 241(i) 260 + Store 241(i) 260 Branch 242 258: Label - 262: 8(fvec4) Load 10(color) + 262: 8(fvec4) Load 10(color) 263: 7(float) CompositeExtract 262 3 264: 7(float) FAdd 263 85 - 265: 8(fvec4) Load 10(color) + 265: 8(fvec4) Load 10(color) 266: 8(fvec4) CompositeInsert 264 265 3 - Store 10(color) 266 - 267: 128(int) Load 241(i) + Store 10(color) 266 + 267: 128(int) Load 241(i) 268: 128(int) IAdd 267 145 - Store 241(i) 268 + Store 241(i) 268 Branch 242 243: Label - Store 269(i) 131 + Store 269(i) 131 Branch 270 270: Label - 273: 128(int) Load 269(i) + 273: 128(int) Load 269(i) 274: 17(bool) SLessThan 273 168 LoopMerge 271 None - BranchConditional 274 272 271 + BranchConditional 274 272 271 272: Label - 275: 7(float) Load 98(d3) - 276: 8(fvec4) Load 10(color) + 275: 7(float) Load 98(d3) + 276: 8(fvec4) Load 10(color) 277: 7(float) CompositeExtract 276 2 278: 7(float) FAdd 277 275 - 279: 8(fvec4) Load 10(color) + 279: 8(fvec4) Load 10(color) 280: 8(fvec4) CompositeInsert 278 279 2 - Store 10(color) 280 - 281: 8(fvec4) Load 10(color) + Store 10(color) 280 + 281: 8(fvec4) Load 10(color) 282: 7(float) CompositeExtract 281 0 - 283: 7(float) Load 119(d4) + 283: 7(float) Load 119(d4) 284: 17(bool) FOrdLessThan 282 283 SelectionMerge 286 None - BranchConditional 284 285 286 + BranchConditional 284 285 286 285: Label Branch 271 286: Label - 288: 8(fvec4) Load 10(color) + 288: 8(fvec4) Load 10(color) 289: 7(float) CompositeExtract 288 3 290: 7(float) FAdd 289 85 - 291: 8(fvec4) Load 10(color) + 291: 8(fvec4) Load 10(color) 292: 8(fvec4) CompositeInsert 290 291 3 - Store 10(color) 292 - 293: 128(int) Load 269(i) + Store 10(color) 292 + 293: 128(int) Load 269(i) 294: 128(int) IAdd 293 145 - Store 269(i) 294 + Store 269(i) 294 Branch 270 271: Label Branch 295 @@ -545,53 +547,53 @@ Linked fragment stage: Branch 299 299: Label SelectionMerge 297 None - BranchConditional 298 297 300 + BranchConditional 298 297 300 300: Label - 301: 8(fvec4) Load 10(color) + 301: 8(fvec4) Load 10(color) 302: 7(float) CompositeExtract 301 2 - 303: 7(float) Load 119(d4) + 303: 7(float) Load 119(d4) 304: 17(bool) FOrdLessThan 302 303 SelectionMerge 305 None - BranchConditional 304 305 296 + BranchConditional 304 305 296 305: Label Branch 297 297: Label - 307: 8(fvec4) Load 306(bigColor4) - 308: 8(fvec4) Load 10(color) + 307: 8(fvec4) Load 306(bigColor4) + 308: 8(fvec4) Load 10(color) 309: 8(fvec4) FAdd 308 307 - Store 10(color) 309 - 310: 8(fvec4) Load 10(color) + Store 10(color) 309 + 310: 8(fvec4) Load 10(color) 311: 7(float) CompositeExtract 310 0 - 312: 7(float) Load 119(d4) + 312: 7(float) Load 119(d4) 313: 17(bool) FOrdLessThan 311 312 SelectionMerge 315 None - BranchConditional 313 314 315 + BranchConditional 313 314 315 314: Label Branch 295 315: Label - 317: 8(fvec4) Load 10(color) + 317: 8(fvec4) Load 10(color) 318: 7(float) CompositeExtract 317 1 - 319: 7(float) Load 119(d4) + 319: 7(float) Load 119(d4) 320: 17(bool) FOrdLessThan 318 319 SelectionMerge 322 None - BranchConditional 320 321 329 + BranchConditional 320 321 329 321: Label - 323: 7(float) Load 119(d4) - 324: 8(fvec4) Load 10(color) + 323: 7(float) Load 119(d4) + 324: 8(fvec4) Load 10(color) 325: 7(float) CompositeExtract 324 1 326: 7(float) FAdd 325 323 - 327: 8(fvec4) Load 10(color) + 327: 8(fvec4) Load 10(color) 328: 8(fvec4) CompositeInsert 326 327 1 - Store 10(color) 328 + Store 10(color) 328 Branch 322 329: Label - 330: 7(float) Load 119(d4) - 331: 8(fvec4) Load 10(color) + 330: 7(float) Load 119(d4) + 331: 8(fvec4) Load 10(color) 332: 7(float) CompositeExtract 331 0 333: 7(float) FAdd 332 330 - 334: 8(fvec4) Load 10(color) + 334: 8(fvec4) Load 10(color) 335: 8(fvec4) CompositeInsert 333 334 0 - Store 10(color) 335 + Store 10(color) 335 Branch 322 322: Label Branch 295 @@ -603,108 +605,108 @@ Linked fragment stage: Branch 340 340: Label SelectionMerge 338 None - BranchConditional 339 338 341 + BranchConditional 339 338 341 341: Label - 342: 8(fvec4) Load 10(color) + 342: 8(fvec4) Load 10(color) 343: 7(float) CompositeExtract 342 0 - 345: 7(float) Load 344(d5) + 345: 7(float) Load 344(d5) 346: 17(bool) FOrdLessThan 343 345 SelectionMerge 347 None - BranchConditional 346 347 337 + BranchConditional 346 347 337 347: Label Branch 338 338: Label - 349: 8(fvec4) Load 348(bigColor5) - 350: 8(fvec4) Load 10(color) + 349: 8(fvec4) Load 348(bigColor5) + 350: 8(fvec4) Load 10(color) 351: 8(fvec4) FAdd 350 349 - Store 10(color) 351 - 352: 8(fvec4) Load 10(color) + Store 10(color) 351 + 352: 8(fvec4) Load 10(color) 353: 7(float) CompositeExtract 352 1 - 354: 7(float) Load 344(d5) + 354: 7(float) Load 344(d5) 355: 17(bool) FOrdLessThan 353 354 SelectionMerge 357 None - BranchConditional 355 356 357 + BranchConditional 355 356 357 356: Label - 358: 7(float) Load 344(d5) - 359: 8(fvec4) Load 10(color) + 358: 7(float) Load 344(d5) + 359: 8(fvec4) Load 10(color) 360: 7(float) CompositeExtract 359 1 361: 7(float) FAdd 360 358 - 362: 8(fvec4) Load 10(color) + 362: 8(fvec4) Load 10(color) 363: 8(fvec4) CompositeInsert 361 362 1 - Store 10(color) 363 + Store 10(color) 363 Branch 357 357: Label Branch 336 337: Label - 364: 8(fvec4) Load 10(color) + 364: 8(fvec4) Load 10(color) 365: 7(float) CompositeExtract 364 0 - 367: 7(float) Load 366(d6) + 367: 7(float) Load 366(d6) 368: 17(bool) FOrdLessThan 365 367 SelectionMerge 370 None - BranchConditional 368 369 382 + BranchConditional 368 369 382 369: Label Branch 371 371: Label - 374: 8(fvec4) Load 10(color) + 374: 8(fvec4) Load 10(color) 375: 7(float) CompositeExtract 374 1 - 376: 7(float) Load 366(d6) + 376: 7(float) Load 366(d6) 377: 17(bool) FOrdLessThan 375 376 LoopMerge 372 None - BranchConditional 377 373 372 + BranchConditional 377 373 372 373: Label - 379: 8(fvec4) Load 378(bigColor6) - 380: 8(fvec4) Load 10(color) + 379: 8(fvec4) Load 378(bigColor6) + 380: 8(fvec4) Load 10(color) 381: 8(fvec4) FAdd 380 379 - Store 10(color) 381 + Store 10(color) 381 Branch 371 372: Label Branch 370 382: Label Branch 383 383: Label - 386: 8(fvec4) Load 10(color) + 386: 8(fvec4) Load 10(color) 387: 7(float) CompositeExtract 386 2 - 388: 7(float) Load 366(d6) + 388: 7(float) Load 366(d6) 389: 17(bool) FOrdLessThan 387 388 LoopMerge 384 None - BranchConditional 389 385 384 + BranchConditional 389 385 384 385: Label - 390: 8(fvec4) Load 378(bigColor6) + 390: 8(fvec4) Load 378(bigColor6) 391: 7(float) CompositeExtract 390 2 - 392: 8(fvec4) Load 10(color) + 392: 8(fvec4) Load 10(color) 393: 7(float) CompositeExtract 392 2 394: 7(float) FAdd 393 391 - 395: 8(fvec4) Load 10(color) + 395: 8(fvec4) Load 10(color) 396: 8(fvec4) CompositeInsert 394 395 2 - Store 10(color) 396 + Store 10(color) 396 Branch 383 384: Label Branch 370 370: Label - 397: 8(fvec4) Load 10(color) + 397: 8(fvec4) Load 10(color) 398: 7(float) CompositeExtract 397 0 - 399: 7(float) Load 366(d6) + 399: 7(float) Load 366(d6) 400: 17(bool) FOrdLessThan 398 399 SelectionMerge 402 None - BranchConditional 400 401 419 + BranchConditional 400 401 419 401: Label Branch 403 403: Label - 406: 8(fvec4) Load 10(color) + 406: 8(fvec4) Load 10(color) 407: 7(float) CompositeExtract 406 1 - 408: 7(float) Load 366(d6) + 408: 7(float) Load 366(d6) 409: 17(bool) FOrdLessThan 407 408 LoopMerge 404 None - BranchConditional 409 405 404 + BranchConditional 409 405 404 405: Label - 410: 8(fvec4) Load 378(bigColor6) - 411: 8(fvec4) Load 10(color) + 410: 8(fvec4) Load 378(bigColor6) + 411: 8(fvec4) Load 10(color) 412: 8(fvec4) FAdd 411 410 - Store 10(color) 412 - 414: 7(float) Load 413(d7) + Store 10(color) 412 + 414: 7(float) Load 413(d7) 415: 17(bool) FOrdLessThan 414 85 SelectionMerge 417 None - BranchConditional 415 416 417 + BranchConditional 415 416 417 416: Label Branch 404 417: Label @@ -714,21 +716,21 @@ Linked fragment stage: 419: Label Branch 420 420: Label - 423: 8(fvec4) Load 10(color) + 423: 8(fvec4) Load 10(color) 424: 7(float) CompositeExtract 423 2 - 425: 7(float) Load 366(d6) + 425: 7(float) Load 366(d6) 426: 17(bool) FOrdLessThan 424 425 LoopMerge 421 None - BranchConditional 426 422 421 + BranchConditional 426 422 421 422: Label - 427: 8(fvec4) Load 378(bigColor6) + 427: 8(fvec4) Load 378(bigColor6) 428: 7(float) CompositeExtract 427 2 - 429: 8(fvec4) Load 10(color) + 429: 8(fvec4) Load 10(color) 430: 7(float) CompositeExtract 429 2 431: 7(float) FAdd 430 428 - 432: 8(fvec4) Load 10(color) + 432: 8(fvec4) Load 10(color) 433: 8(fvec4) CompositeInsert 431 432 2 - Store 10(color) 433 + Store 10(color) 433 Branch 420 421: Label Branch 402 @@ -740,41 +742,41 @@ Linked fragment stage: Branch 438 438: Label SelectionMerge 436 None - BranchConditional 437 436 439 + BranchConditional 437 436 439 439: Label SelectionMerge 440 None - BranchConditional 18 440 435 + BranchConditional 18 440 435 440: Label Branch 436 436: Label - 441: 7(float) Load 413(d7) + 441: 7(float) Load 413(d7) 443: 17(bool) FOrdLessThan 441 442 SelectionMerge 445 None - BranchConditional 443 444 445 + BranchConditional 443 444 445 444: Label Branch 435 445: Label - 448: 8(fvec4) Load 447(bigColor7) - 449: 8(fvec4) Load 10(color) + 448: 8(fvec4) Load 447(bigColor7) + 449: 8(fvec4) Load 10(color) 450: 8(fvec4) FAdd 449 448 - Store 10(color) 450 - 451: 7(float) Load 413(d7) + Store 10(color) 450 + 451: 7(float) Load 413(d7) 452: 17(bool) FOrdLessThan 451 85 SelectionMerge 454 None - BranchConditional 452 453 454 + BranchConditional 452 453 454 453: Label - 455: 8(fvec4) Load 10(color) + 455: 8(fvec4) Load 10(color) 456: 7(float) CompositeExtract 455 2 457: 7(float) FAdd 456 85 - 458: 8(fvec4) Load 10(color) + 458: 8(fvec4) Load 10(color) 459: 8(fvec4) CompositeInsert 457 458 2 - Store 10(color) 459 + Store 10(color) 459 Branch 435 454: Label - 461: 8(fvec4) Load 12(BaseColor) - 462: 8(fvec4) Load 10(color) + 461: 8(fvec4) Load 12(BaseColor) + 462: 8(fvec4) Load 10(color) 463: 8(fvec4) FAdd 462 461 - Store 10(color) 463 + Store 10(color) 463 Branch 434 435: Label Branch 464 @@ -784,102 +786,102 @@ Linked fragment stage: Branch 468 468: Label SelectionMerge 466 None - BranchConditional 467 466 469 + BranchConditional 467 466 469 469: Label - 470: 8(fvec4) Load 10(color) + 470: 8(fvec4) Load 10(color) 471: 7(float) CompositeExtract 470 2 - 473: 7(float) Load 472(d8) + 473: 7(float) Load 472(d8) 474: 17(bool) FOrdLessThan 471 473 SelectionMerge 475 None - BranchConditional 474 475 465 + BranchConditional 474 475 465 475: Label Branch 466 466: Label - 476: 7(float) Load 472(d8) + 476: 7(float) Load 472(d8) 477: 17(bool) FOrdLessThan 476 442 SelectionMerge 479 None - BranchConditional 477 478 479 + BranchConditional 477 478 479 478: Label Branch 465 479: Label - 481: 8(fvec4) Load 447(bigColor7) - 482: 8(fvec4) Load 10(color) + 481: 8(fvec4) Load 447(bigColor7) + 482: 8(fvec4) Load 10(color) 483: 8(fvec4) FAdd 482 481 - Store 10(color) 483 - 484: 7(float) Load 472(d8) + Store 10(color) 483 + 484: 7(float) Load 472(d8) 485: 17(bool) FOrdLessThan 484 85 SelectionMerge 487 None - BranchConditional 485 486 487 + BranchConditional 485 486 487 486: Label - 488: 8(fvec4) Load 10(color) + 488: 8(fvec4) Load 10(color) 489: 7(float) CompositeExtract 488 2 490: 7(float) FAdd 489 85 - 491: 8(fvec4) Load 10(color) + 491: 8(fvec4) Load 10(color) 492: 8(fvec4) CompositeInsert 490 491 2 - Store 10(color) 492 - 493: 7(float) Load 472(d8) + Store 10(color) 492 + 493: 7(float) Load 472(d8) 495: 17(bool) FOrdLessThan 493 494 SelectionMerge 497 None - BranchConditional 495 496 503 + BranchConditional 495 496 503 496: Label - 498: 8(fvec4) Load 10(color) + 498: 8(fvec4) Load 10(color) 499: 7(float) CompositeExtract 498 1 500: 7(float) FAdd 499 85 - 501: 8(fvec4) Load 10(color) + 501: 8(fvec4) Load 10(color) 502: 8(fvec4) CompositeInsert 500 501 1 - Store 10(color) 502 + Store 10(color) 502 Branch 497 503: Label - 504: 8(fvec4) Load 10(color) + 504: 8(fvec4) Load 10(color) 505: 7(float) CompositeExtract 504 0 506: 7(float) FAdd 505 85 - 507: 8(fvec4) Load 10(color) + 507: 8(fvec4) Load 10(color) 508: 8(fvec4) CompositeInsert 506 507 0 - Store 10(color) 508 + Store 10(color) 508 Branch 497 497: Label Branch 465 487: Label - 510: 8(fvec4) Load 12(BaseColor) - 511: 8(fvec4) Load 10(color) + 510: 8(fvec4) Load 12(BaseColor) + 511: 8(fvec4) Load 10(color) 512: 8(fvec4) FAdd 511 510 - Store 10(color) 512 + Store 10(color) 512 Branch 464 465: Label Branch 513 513: Label - 516: 8(fvec4) Load 10(color) + 516: 8(fvec4) Load 10(color) 517: 7(float) CompositeExtract 516 3 - 519: 7(float) Load 518(d9) + 519: 7(float) Load 518(d9) 520: 17(bool) FOrdLessThan 517 519 LoopMerge 514 None - BranchConditional 520 515 514 + BranchConditional 520 515 514 515: Label - 521: 7(float) Load 518(d9) - 522: 7(float) Load 472(d8) + 521: 7(float) Load 518(d9) + 522: 7(float) Load 472(d8) 523: 17(bool) FOrdGreaterThan 521 522 SelectionMerge 525 None - BranchConditional 523 524 525 + BranchConditional 523 524 525 524: Label - 526: 8(fvec4) Load 10(color) + 526: 8(fvec4) Load 10(color) 527: 7(float) CompositeExtract 526 0 - 528: 7(float) Load 413(d7) + 528: 7(float) Load 413(d7) 529: 17(bool) FOrdLessThanEqual 527 528 SelectionMerge 531 None - BranchConditional 529 530 531 + BranchConditional 529 530 531 530: Label - 532: 8(fvec4) Load 10(color) + 532: 8(fvec4) Load 10(color) 533: 7(float) CompositeExtract 532 2 535: 17(bool) FOrdEqual 533 534 SelectionMerge 537 None - BranchConditional 535 536 543 + BranchConditional 535 536 543 536: Label - 538: 8(fvec4) Load 10(color) + 538: 8(fvec4) Load 10(color) 539: 7(float) CompositeExtract 538 3 540: 7(float) FAdd 539 85 - 541: 8(fvec4) Load 10(color) + 541: 8(fvec4) Load 10(color) 542: 8(fvec4) CompositeInsert 540 541 3 - Store 10(color) 542 + Store 10(color) 542 Branch 537 543: Label Branch 514 @@ -892,180 +894,180 @@ Linked fragment stage: 514: Label Branch 545 545: Label - 548: 8(fvec4) Load 10(color) + 548: 8(fvec4) Load 10(color) 549: 7(float) CompositeExtract 548 2 - 551: 7(float) Load 550(d10) + 551: 7(float) Load 550(d10) 552: 17(bool) FOrdLessThan 549 551 LoopMerge 546 None - BranchConditional 552 547 546 + BranchConditional 552 547 546 547: Label - 553: 8(fvec4) Load 10(color) + 553: 8(fvec4) Load 10(color) 554: 7(float) CompositeExtract 553 1 555: 7(float) FAdd 554 85 - 556: 8(fvec4) Load 10(color) + 556: 8(fvec4) Load 10(color) 557: 8(fvec4) CompositeInsert 555 556 1 - Store 10(color) 557 - 558: 8(fvec4) Load 10(color) + Store 10(color) 557 + 558: 8(fvec4) Load 10(color) 559: 7(float) CompositeExtract 558 1 - 561: 7(float) Load 560(d11) + 561: 7(float) Load 560(d11) 562: 17(bool) FOrdLessThan 559 561 SelectionMerge 564 None - BranchConditional 562 563 564 + BranchConditional 562 563 564 563: Label - 565: 8(fvec4) Load 10(color) + 565: 8(fvec4) Load 10(color) 566: 7(float) CompositeExtract 565 2 567: 7(float) FAdd 566 85 - 568: 8(fvec4) Load 10(color) + 568: 8(fvec4) Load 10(color) 569: 8(fvec4) CompositeInsert 567 568 2 - Store 10(color) 569 - 570: 8(fvec4) Load 10(color) + Store 10(color) 569 + 570: 8(fvec4) Load 10(color) 571: 7(float) CompositeExtract 570 3 - 573: 7(float) Load 572(d12) + 573: 7(float) Load 572(d12) 574: 17(bool) FOrdLessThan 571 573 SelectionMerge 576 None - BranchConditional 574 575 582 + BranchConditional 574 575 582 575: Label - 577: 8(fvec4) Load 10(color) + 577: 8(fvec4) Load 10(color) 578: 7(float) CompositeExtract 577 3 579: 7(float) FAdd 578 85 - 580: 8(fvec4) Load 10(color) + 580: 8(fvec4) Load 10(color) 581: 8(fvec4) CompositeInsert 579 580 3 - Store 10(color) 581 + Store 10(color) 581 Branch 576 582: Label - 583: 8(fvec4) Load 10(color) + 583: 8(fvec4) Load 10(color) 584: 7(float) CompositeExtract 583 0 585: 7(float) FAdd 584 85 - 586: 8(fvec4) Load 10(color) + 586: 8(fvec4) Load 10(color) 587: 8(fvec4) CompositeInsert 585 586 0 - Store 10(color) 587 + Store 10(color) 587 Branch 576 576: Label Branch 545 564: Label - 589: 8(fvec4) Load 10(color) + 589: 8(fvec4) Load 10(color) 590: 8(fvec4) CompositeConstruct 85 85 85 85 591: 8(fvec4) FAdd 589 590 - Store 10(color) 591 + Store 10(color) 591 Branch 546 546: Label Branch 593 593: Label - 596: 8(fvec4) Load 10(color) + 596: 8(fvec4) Load 10(color) 597: 7(float) CompositeExtract 596 0 599: 17(bool) FOrdLessThan 597 598 LoopMerge 594 None - BranchConditional 599 595 594 + BranchConditional 599 595 594 595: Label - 601: 8(fvec4) Load 600(bigColor8) - 602: 8(fvec4) Load 10(color) + 601: 8(fvec4) Load 600(bigColor8) + 602: 8(fvec4) Load 10(color) 603: 8(fvec4) FAdd 602 601 - Store 10(color) 603 - 604: 8(fvec4) Load 10(color) + Store 10(color) 603 + 604: 8(fvec4) Load 10(color) 605: 7(float) CompositeExtract 604 2 - 606: 7(float) Load 472(d8) + 606: 7(float) Load 472(d8) 607: 17(bool) FOrdLessThan 605 606 SelectionMerge 609 None - BranchConditional 607 608 609 + BranchConditional 607 608 609 608: Label - 610: 8(fvec4) Load 10(color) + 610: 8(fvec4) Load 10(color) 611: 7(float) CompositeExtract 610 3 - 612: 7(float) Load 366(d6) + 612: 7(float) Load 366(d6) 613: 17(bool) FOrdLessThan 611 612 SelectionMerge 615 None - BranchConditional 613 614 615 + BranchConditional 613 614 615 614: Label Branch 593 615: Label Branch 609 609: Label - 617: 8(fvec4) Load 600(bigColor8) + 617: 8(fvec4) Load 600(bigColor8) 618: 7(float) CompositeExtract 617 0 - 619: 8(fvec4) Load 10(color) + 619: 8(fvec4) Load 10(color) 620: 7(float) CompositeExtract 619 1 621: 7(float) FAdd 620 618 - 622: 8(fvec4) Load 10(color) + 622: 8(fvec4) Load 10(color) 623: 8(fvec4) CompositeInsert 621 622 1 - Store 10(color) 623 + Store 10(color) 623 Branch 593 594: Label - 624: 8(fvec4) Load 10(color) + 624: 8(fvec4) Load 10(color) 625: 8(fvec4) CompositeConstruct 85 85 85 85 626: 8(fvec4) FAdd 624 625 - Store 10(color) 626 - 629: 8(fvec4) Load 10(color) - Store 628(gl_FragColor) 629 + Store 10(color) 626 + 629: 8(fvec4) Load 10(color) + Store 628(gl_FragColor) 629 Branch 630 630: Label - 633: 8(fvec4) Load 10(color) + 633: 8(fvec4) Load 10(color) 634: 7(float) CompositeExtract 633 0 - 636: 7(float) Load 635(d14) + 636: 7(float) Load 635(d14) 637: 17(bool) FOrdLessThan 634 636 LoopMerge 631 None - BranchConditional 637 632 631 + BranchConditional 637 632 631 632: Label - 638: 8(fvec4) Load 10(color) + 638: 8(fvec4) Load 10(color) 639: 7(float) CompositeExtract 638 1 - 641: 7(float) Load 640(d15) + 641: 7(float) Load 640(d15) 642: 17(bool) FOrdLessThan 639 641 SelectionMerge 644 None - BranchConditional 642 643 646 + BranchConditional 642 643 646 643: Label Branch 6 646: Label - 647: 8(fvec4) Load 10(color) + 647: 8(fvec4) Load 10(color) 648: 8(fvec4) CompositeConstruct 85 85 85 85 649: 8(fvec4) FAdd 647 648 - Store 10(color) 649 + Store 10(color) 649 Branch 644 644: Label Branch 630 631: Label - 650: 8(fvec4) Load 10(color) + 650: 8(fvec4) Load 10(color) 651: 8(fvec4) CompositeConstruct 85 85 85 85 652: 8(fvec4) FAdd 650 651 - Store 10(color) 652 + Store 10(color) 652 Branch 653 653: Label - 656: 8(fvec4) Load 10(color) + 656: 8(fvec4) Load 10(color) 657: 7(float) CompositeExtract 656 3 - 659: 7(float) Load 658(d16) + 659: 7(float) Load 658(d16) 660: 17(bool) FOrdLessThan 657 659 LoopMerge 654 None - BranchConditional 660 655 654 + BranchConditional 660 655 654 655: Label - 661: 8(fvec4) Load 10(color) + 661: 8(fvec4) Load 10(color) 662: 7(float) CompositeExtract 661 3 663: 7(float) FAdd 662 85 - 664: 8(fvec4) Load 10(color) + 664: 8(fvec4) Load 10(color) 665: 8(fvec4) CompositeInsert 663 664 3 - Store 10(color) 665 + Store 10(color) 665 Branch 653 654: Label Branch 666 666: Label - 669: 8(fvec4) Load 10(color) + 669: 8(fvec4) Load 10(color) 670: 7(float) CompositeExtract 669 3 - 671: 7(float) Load 93(d2) + 671: 7(float) Load 93(d2) 672: 17(bool) FOrdLessThan 670 671 - 673: 8(fvec4) Load 10(color) + 673: 8(fvec4) Load 10(color) 674: 7(float) CompositeExtract 673 1 - 675: 7(float) Load 98(d3) + 675: 7(float) Load 98(d3) 676: 17(bool) FOrdLessThan 674 675 677: 17(bool) LogicalAnd 672 676 LoopMerge 667 None - BranchConditional 677 668 667 + BranchConditional 677 668 667 668: Label - 678: 8(fvec4) Load 102(bigColor1_2) - 679: 8(fvec4) Load 10(color) + 678: 8(fvec4) Load 102(bigColor1_2) + 679: 8(fvec4) Load 10(color) 680: 8(fvec4) FAdd 679 678 - Store 10(color) 680 - 681: 8(fvec4) Load 10(color) + Store 10(color) 680 + 681: 8(fvec4) Load 10(color) 682: 7(float) CompositeExtract 681 2 - 683: 7(float) Load 98(d3) + 683: 7(float) Load 98(d3) 684: 17(bool) FOrdLessThan 682 683 SelectionMerge 686 None - BranchConditional 684 685 686 + BranchConditional 684 685 686 685: Label Branch 6 686: Label @@ -1078,64 +1080,64 @@ Linked fragment stage: Branch 692 692: Label SelectionMerge 690 None - BranchConditional 691 690 693 + BranchConditional 691 690 693 693: Label - 694: 8(fvec4) Load 10(color) + 694: 8(fvec4) Load 10(color) 695: 7(float) CompositeExtract 694 0 - 697: 7(float) Load 696(d17) + 697: 7(float) Load 696(d17) 698: 17(bool) FOrdLessThan 695 697 SelectionMerge 699 None - BranchConditional 698 699 689 + BranchConditional 698 699 689 699: Label Branch 690 690: Label - 700: 8(fvec4) Load 10(color) + 700: 8(fvec4) Load 10(color) 701: 7(float) CompositeExtract 700 1 - 703: 7(float) Load 702(d18) + 703: 7(float) Load 702(d18) 704: 17(bool) FOrdLessThan 701 703 SelectionMerge 706 None - BranchConditional 704 705 706 + BranchConditional 704 705 706 705: Label Branch 6 706: Label - 708: 8(fvec4) Load 10(color) + 708: 8(fvec4) Load 10(color) 709: 8(fvec4) CompositeConstruct 85 85 85 85 710: 8(fvec4) FAdd 708 709 - Store 10(color) 710 + Store 10(color) 710 Branch 688 689: Label Branch 711 711: Label - 714: 8(fvec4) Load 10(color) + 714: 8(fvec4) Load 10(color) 715: 7(float) CompositeExtract 714 1 - 716: 7(float) Load 658(d16) + 716: 7(float) Load 658(d16) 717: 17(bool) FOrdLessThan 715 716 LoopMerge 712 None - BranchConditional 717 713 712 + BranchConditional 717 713 712 713: Label - 718: 8(fvec4) Load 10(color) + 718: 8(fvec4) Load 10(color) 719: 7(float) CompositeExtract 718 3 - 720: 7(float) Load 658(d16) + 720: 7(float) Load 658(d16) 721: 17(bool) FOrdLessThan 719 720 SelectionMerge 723 None - BranchConditional 721 722 725 + BranchConditional 721 722 725 722: Label Kill 725: Label - 726: 8(fvec4) Load 10(color) + 726: 8(fvec4) Load 10(color) 727: 8(fvec4) CompositeConstruct 85 85 85 85 728: 8(fvec4) FAdd 726 727 - Store 10(color) 728 + Store 10(color) 728 Branch 723 723: Label Branch 711 712: Label - 729: 8(fvec4) Load 10(color) + 729: 8(fvec4) Load 10(color) 730: 8(fvec4) CompositeConstruct 85 85 85 85 731: 8(fvec4) FAdd 729 730 - Store 10(color) 731 - 732: 8(fvec4) Load 10(color) - Store 628(gl_FragColor) 732 + Store 10(color) 731 + 732: 8(fvec4) Load 10(color) + Store 628(gl_FragColor) 732 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out old mode 100644 new mode 100755 index caa7ae79..d9af6e93 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -10,9 +10,11 @@ Linked fragment stage: // Id's are bound by 196 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" @@ -63,120 +65,120 @@ Linked fragment stage: Name 191 "d33" Name 192 "d34" Name 195 "Count" - Decorate 12(BaseColor) Smooth + Decorate 12(BaseColor) Smooth Decorate 149(gl_FragColor) BuiltIn FragColor - Decorate 151(bigColor) NoStaticUse - Decorate 152(bigColor1_1) NoStaticUse - Decorate 153(bigColor1_2) NoStaticUse - Decorate 154(bigColor1_3) NoStaticUse - Decorate 155(bigColor2) NoStaticUse - Decorate 156(bigColor3) NoStaticUse - Decorate 157(bigColor5) NoStaticUse - Decorate 158(bigColor6) NoStaticUse - Decorate 159(bigColor7) NoStaticUse - Decorate 160(bigColor8) NoStaticUse - Decorate 161(d) NoStaticUse - Decorate 162(d2) NoStaticUse - Decorate 163(d3) NoStaticUse - Decorate 164(d5) NoStaticUse - Decorate 165(d6) NoStaticUse - Decorate 166(d7) NoStaticUse - Decorate 167(d8) NoStaticUse - Decorate 168(d9) NoStaticUse - Decorate 169(d10) NoStaticUse - Decorate 170(d11) NoStaticUse - Decorate 171(d12) NoStaticUse - Decorate 172(d14) NoStaticUse - Decorate 173(d15) NoStaticUse - Decorate 174(d16) NoStaticUse - Decorate 175(d17) NoStaticUse - Decorate 176(d18) NoStaticUse - Decorate 177(d19) NoStaticUse - Decorate 178(d20) NoStaticUse - Decorate 179(d21) NoStaticUse - Decorate 180(d22) NoStaticUse - Decorate 181(d23) NoStaticUse - Decorate 182(d24) NoStaticUse - Decorate 183(d25) NoStaticUse - Decorate 184(d26) NoStaticUse - Decorate 185(d27) NoStaticUse - Decorate 186(d28) NoStaticUse - Decorate 187(d29) NoStaticUse - Decorate 188(d30) NoStaticUse - Decorate 189(d31) NoStaticUse - Decorate 190(d32) NoStaticUse - Decorate 191(d33) NoStaticUse - Decorate 192(d34) NoStaticUse - Decorate 195(Count) NoStaticUse + Decorate 151(bigColor) NoStaticUse + Decorate 152(bigColor1_1) NoStaticUse + Decorate 153(bigColor1_2) NoStaticUse + Decorate 154(bigColor1_3) NoStaticUse + Decorate 155(bigColor2) NoStaticUse + Decorate 156(bigColor3) NoStaticUse + Decorate 157(bigColor5) NoStaticUse + Decorate 158(bigColor6) NoStaticUse + Decorate 159(bigColor7) NoStaticUse + Decorate 160(bigColor8) NoStaticUse + Decorate 161(d) NoStaticUse + Decorate 162(d2) NoStaticUse + Decorate 163(d3) NoStaticUse + Decorate 164(d5) NoStaticUse + Decorate 165(d6) NoStaticUse + Decorate 166(d7) NoStaticUse + Decorate 167(d8) NoStaticUse + Decorate 168(d9) NoStaticUse + Decorate 169(d10) NoStaticUse + Decorate 170(d11) NoStaticUse + Decorate 171(d12) NoStaticUse + Decorate 172(d14) NoStaticUse + Decorate 173(d15) NoStaticUse + Decorate 174(d16) NoStaticUse + Decorate 175(d17) NoStaticUse + Decorate 176(d18) NoStaticUse + Decorate 177(d19) NoStaticUse + Decorate 178(d20) NoStaticUse + Decorate 179(d21) NoStaticUse + Decorate 180(d22) NoStaticUse + Decorate 181(d23) NoStaticUse + Decorate 182(d24) NoStaticUse + Decorate 183(d25) NoStaticUse + Decorate 184(d26) NoStaticUse + Decorate 185(d27) NoStaticUse + Decorate 186(d28) NoStaticUse + Decorate 187(d29) NoStaticUse + Decorate 188(d30) NoStaticUse + Decorate 189(d31) NoStaticUse + Decorate 190(d32) NoStaticUse + Decorate 191(d33) NoStaticUse + Decorate 192(d34) NoStaticUse + Decorate 195(Count) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 18: TypeBool 19: 18(bool) ConstantTrue 24: TypePointer UniformConstant 7(float) - 25(d4): 24(ptr) Variable UniformConstant + 25(d4): 24(ptr) Variable UniformConstant 29: TypePointer UniformConstant 8(fvec4) - 30(bigColor4): 29(ptr) Variable UniformConstant + 30(bigColor4): 29(ptr) Variable UniformConstant 40: 7(float) Constant 1073741824 54: 7(float) Constant 1065353216 58: 18(bool) ConstantFalse - 84(d13): 24(ptr) Variable UniformConstant + 84(d13): 24(ptr) Variable UniformConstant 148: TypePointer Output 8(fvec4) -149(gl_FragColor): 148(ptr) Variable Output - 151(bigColor): 29(ptr) Variable UniformConstant -152(bigColor1_1): 29(ptr) Variable UniformConstant -153(bigColor1_2): 29(ptr) Variable UniformConstant -154(bigColor1_3): 29(ptr) Variable UniformConstant - 155(bigColor2): 29(ptr) Variable UniformConstant - 156(bigColor3): 29(ptr) Variable UniformConstant - 157(bigColor5): 29(ptr) Variable UniformConstant - 158(bigColor6): 29(ptr) Variable UniformConstant - 159(bigColor7): 29(ptr) Variable UniformConstant - 160(bigColor8): 29(ptr) Variable UniformConstant - 161(d): 24(ptr) Variable UniformConstant - 162(d2): 24(ptr) Variable UniformConstant - 163(d3): 24(ptr) Variable UniformConstant - 164(d5): 24(ptr) Variable UniformConstant - 165(d6): 24(ptr) Variable UniformConstant - 166(d7): 24(ptr) Variable UniformConstant - 167(d8): 24(ptr) Variable UniformConstant - 168(d9): 24(ptr) Variable UniformConstant - 169(d10): 24(ptr) Variable UniformConstant - 170(d11): 24(ptr) Variable UniformConstant - 171(d12): 24(ptr) Variable UniformConstant - 172(d14): 24(ptr) Variable UniformConstant - 173(d15): 24(ptr) Variable UniformConstant - 174(d16): 24(ptr) Variable UniformConstant - 175(d17): 24(ptr) Variable UniformConstant - 176(d18): 24(ptr) Variable UniformConstant - 177(d19): 24(ptr) Variable UniformConstant - 178(d20): 24(ptr) Variable UniformConstant - 179(d21): 24(ptr) Variable UniformConstant - 180(d22): 24(ptr) Variable UniformConstant - 181(d23): 24(ptr) Variable UniformConstant - 182(d24): 24(ptr) Variable UniformConstant - 183(d25): 24(ptr) Variable UniformConstant - 184(d26): 24(ptr) Variable UniformConstant - 185(d27): 24(ptr) Variable UniformConstant - 186(d28): 24(ptr) Variable UniformConstant - 187(d29): 24(ptr) Variable UniformConstant - 188(d30): 24(ptr) Variable UniformConstant - 189(d31): 24(ptr) Variable UniformConstant - 190(d32): 24(ptr) Variable UniformConstant - 191(d33): 24(ptr) Variable UniformConstant - 192(d34): 24(ptr) Variable UniformConstant +149(gl_FragColor): 148(ptr) Variable Output + 151(bigColor): 29(ptr) Variable UniformConstant +152(bigColor1_1): 29(ptr) Variable UniformConstant +153(bigColor1_2): 29(ptr) Variable UniformConstant +154(bigColor1_3): 29(ptr) Variable UniformConstant + 155(bigColor2): 29(ptr) Variable UniformConstant + 156(bigColor3): 29(ptr) Variable UniformConstant + 157(bigColor5): 29(ptr) Variable UniformConstant + 158(bigColor6): 29(ptr) Variable UniformConstant + 159(bigColor7): 29(ptr) Variable UniformConstant + 160(bigColor8): 29(ptr) Variable UniformConstant + 161(d): 24(ptr) Variable UniformConstant + 162(d2): 24(ptr) Variable UniformConstant + 163(d3): 24(ptr) Variable UniformConstant + 164(d5): 24(ptr) Variable UniformConstant + 165(d6): 24(ptr) Variable UniformConstant + 166(d7): 24(ptr) Variable UniformConstant + 167(d8): 24(ptr) Variable UniformConstant + 168(d9): 24(ptr) Variable UniformConstant + 169(d10): 24(ptr) Variable UniformConstant + 170(d11): 24(ptr) Variable UniformConstant + 171(d12): 24(ptr) Variable UniformConstant + 172(d14): 24(ptr) Variable UniformConstant + 173(d15): 24(ptr) Variable UniformConstant + 174(d16): 24(ptr) Variable UniformConstant + 175(d17): 24(ptr) Variable UniformConstant + 176(d18): 24(ptr) Variable UniformConstant + 177(d19): 24(ptr) Variable UniformConstant + 178(d20): 24(ptr) Variable UniformConstant + 179(d21): 24(ptr) Variable UniformConstant + 180(d22): 24(ptr) Variable UniformConstant + 181(d23): 24(ptr) Variable UniformConstant + 182(d24): 24(ptr) Variable UniformConstant + 183(d25): 24(ptr) Variable UniformConstant + 184(d26): 24(ptr) Variable UniformConstant + 185(d27): 24(ptr) Variable UniformConstant + 186(d28): 24(ptr) Variable UniformConstant + 187(d29): 24(ptr) Variable UniformConstant + 188(d30): 24(ptr) Variable UniformConstant + 189(d31): 24(ptr) Variable UniformConstant + 190(d32): 24(ptr) Variable UniformConstant + 191(d33): 24(ptr) Variable UniformConstant + 192(d34): 24(ptr) Variable UniformConstant 193: TypeInt 32 1 194: TypePointer UniformConstant 193(int) - 195(Count): 194(ptr) Variable UniformConstant + 195(Count): 194(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 + 10(color): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 Branch 14 14: Label 17: 18(bool) Phi 19 5 58 50 58 65 @@ -184,173 +186,173 @@ Linked fragment stage: Branch 20 20: Label SelectionMerge 16 None - BranchConditional 17 16 21 + BranchConditional 17 16 21 21: Label - 22: 8(fvec4) Load 10(color) + 22: 8(fvec4) Load 10(color) 23: 7(float) CompositeExtract 22 2 - 26: 7(float) Load 25(d4) + 26: 7(float) Load 25(d4) 27: 18(bool) FOrdLessThan 23 26 SelectionMerge 28 None - BranchConditional 27 28 15 + BranchConditional 27 28 15 28: Label Branch 16 16: Label - 31: 8(fvec4) Load 30(bigColor4) - 32: 8(fvec4) Load 10(color) + 31: 8(fvec4) Load 30(bigColor4) + 32: 8(fvec4) Load 10(color) 33: 8(fvec4) FAdd 32 31 - Store 10(color) 33 - 34: 8(fvec4) Load 10(color) + Store 10(color) 33 + 34: 8(fvec4) Load 10(color) 35: 7(float) CompositeExtract 34 0 - 36: 7(float) Load 25(d4) + 36: 7(float) Load 25(d4) 37: 18(bool) FOrdLessThan 35 36 SelectionMerge 39 None - BranchConditional 37 38 39 + BranchConditional 37 38 39 38: Label - 41: 8(fvec4) Load 10(color) + 41: 8(fvec4) Load 10(color) 42: 7(float) CompositeExtract 41 2 43: 7(float) FAdd 42 40 - 44: 8(fvec4) Load 10(color) + 44: 8(fvec4) Load 10(color) 45: 8(fvec4) CompositeInsert 43 44 2 - Store 10(color) 45 - 46: 8(fvec4) Load 10(color) + Store 10(color) 45 + 46: 8(fvec4) Load 10(color) 47: 7(float) CompositeExtract 46 2 - 48: 7(float) Load 25(d4) + 48: 7(float) Load 25(d4) 49: 18(bool) FOrdLessThan 47 48 SelectionMerge 51 None - BranchConditional 49 50 51 + BranchConditional 49 50 51 50: Label - 52: 8(fvec4) Load 10(color) + 52: 8(fvec4) Load 10(color) 53: 7(float) CompositeExtract 52 0 55: 7(float) FAdd 53 54 - 56: 8(fvec4) Load 10(color) + 56: 8(fvec4) Load 10(color) 57: 8(fvec4) CompositeInsert 55 56 0 - Store 10(color) 57 + Store 10(color) 57 Branch 14 51: Label Branch 39 39: Label - 60: 8(fvec4) Load 10(color) + 60: 8(fvec4) Load 10(color) 61: 7(float) CompositeExtract 60 1 - 62: 7(float) Load 25(d4) + 62: 7(float) Load 25(d4) 63: 18(bool) FOrdLessThan 61 62 SelectionMerge 65 None - BranchConditional 63 64 72 + BranchConditional 63 64 72 64: Label - 66: 7(float) Load 25(d4) - 67: 8(fvec4) Load 10(color) + 66: 7(float) Load 25(d4) + 67: 8(fvec4) Load 10(color) 68: 7(float) CompositeExtract 67 1 69: 7(float) FAdd 68 66 - 70: 8(fvec4) Load 10(color) + 70: 8(fvec4) Load 10(color) 71: 8(fvec4) CompositeInsert 69 70 1 - Store 10(color) 71 + Store 10(color) 71 Branch 65 72: Label - 73: 7(float) Load 25(d4) - 74: 8(fvec4) Load 10(color) + 73: 7(float) Load 25(d4) + 74: 8(fvec4) Load 10(color) 75: 7(float) CompositeExtract 74 0 76: 7(float) FAdd 75 73 - 77: 8(fvec4) Load 10(color) + 77: 8(fvec4) Load 10(color) 78: 8(fvec4) CompositeInsert 76 77 0 - Store 10(color) 78 + Store 10(color) 78 Branch 65 65: Label Branch 14 15: Label Branch 79 79: Label - 82: 8(fvec4) Load 10(color) + 82: 8(fvec4) Load 10(color) 83: 7(float) CompositeExtract 82 3 - 85: 7(float) Load 84(d13) + 85: 7(float) Load 84(d13) 86: 18(bool) FOrdLessThan 83 85 LoopMerge 80 None - BranchConditional 86 81 80 + BranchConditional 86 81 80 81: Label - 87: 8(fvec4) Load 10(color) + 87: 8(fvec4) Load 10(color) 88: 7(float) CompositeExtract 87 2 - 89: 7(float) Load 84(d13) + 89: 7(float) Load 84(d13) 90: 18(bool) FOrdLessThan 88 89 SelectionMerge 92 None - BranchConditional 90 91 96 + BranchConditional 90 91 96 91: Label - 93: 8(fvec4) Load 10(color) + 93: 8(fvec4) Load 10(color) 94: 8(fvec4) CompositeConstruct 54 54 54 54 95: 8(fvec4) FAdd 93 94 - Store 10(color) 95 + Store 10(color) 95 Branch 92 96: Label - 97: 8(fvec4) Load 10(color) + 97: 8(fvec4) Load 10(color) 98: 8(fvec4) CompositeConstruct 54 54 54 54 99: 8(fvec4) FSub 97 98 - Store 10(color) 99 + Store 10(color) 99 Branch 92 92: Label - 100: 8(fvec4) Load 30(bigColor4) - 101: 8(fvec4) Load 10(color) + 100: 8(fvec4) Load 30(bigColor4) + 101: 8(fvec4) Load 10(color) 102: 8(fvec4) FAdd 101 100 - Store 10(color) 102 - 103: 8(fvec4) Load 10(color) + Store 10(color) 102 + 103: 8(fvec4) Load 10(color) 104: 7(float) CompositeExtract 103 0 - 105: 7(float) Load 25(d4) + 105: 7(float) Load 25(d4) 106: 18(bool) FOrdLessThan 104 105 SelectionMerge 108 None - BranchConditional 106 107 108 + BranchConditional 106 107 108 107: Label - 109: 8(fvec4) Load 10(color) + 109: 8(fvec4) Load 10(color) 110: 7(float) CompositeExtract 109 2 111: 7(float) FAdd 110 40 - 112: 8(fvec4) Load 10(color) + 112: 8(fvec4) Load 10(color) 113: 8(fvec4) CompositeInsert 111 112 2 - Store 10(color) 113 - 114: 8(fvec4) Load 10(color) + Store 10(color) 113 + 114: 8(fvec4) Load 10(color) 115: 7(float) CompositeExtract 114 2 - 116: 7(float) Load 25(d4) + 116: 7(float) Load 25(d4) 117: 18(bool) FOrdLessThan 115 116 SelectionMerge 119 None - BranchConditional 117 118 119 + BranchConditional 117 118 119 118: Label - 120: 8(fvec4) Load 10(color) + 120: 8(fvec4) Load 10(color) 121: 7(float) CompositeExtract 120 0 122: 7(float) FAdd 121 54 - 123: 8(fvec4) Load 10(color) + 123: 8(fvec4) Load 10(color) 124: 8(fvec4) CompositeInsert 122 123 0 - Store 10(color) 124 + Store 10(color) 124 Branch 79 119: Label Branch 108 108: Label - 126: 8(fvec4) Load 10(color) + 126: 8(fvec4) Load 10(color) 127: 7(float) CompositeExtract 126 1 - 128: 7(float) Load 25(d4) + 128: 7(float) Load 25(d4) 129: 18(bool) FOrdLessThan 127 128 SelectionMerge 131 None - BranchConditional 129 130 138 + BranchConditional 129 130 138 130: Label - 132: 7(float) Load 25(d4) - 133: 8(fvec4) Load 10(color) + 132: 7(float) Load 25(d4) + 133: 8(fvec4) Load 10(color) 134: 7(float) CompositeExtract 133 1 135: 7(float) FAdd 134 132 - 136: 8(fvec4) Load 10(color) + 136: 8(fvec4) Load 10(color) 137: 8(fvec4) CompositeInsert 135 136 1 - Store 10(color) 137 + Store 10(color) 137 Branch 131 138: Label - 139: 7(float) Load 25(d4) - 140: 8(fvec4) Load 10(color) + 139: 7(float) Load 25(d4) + 140: 8(fvec4) Load 10(color) 141: 7(float) CompositeExtract 140 0 142: 7(float) FAdd 141 139 - 143: 8(fvec4) Load 10(color) + 143: 8(fvec4) Load 10(color) 144: 8(fvec4) CompositeInsert 142 143 0 - Store 10(color) 144 + Store 10(color) 144 Branch 131 131: Label Branch 79 80: Label - 145: 8(fvec4) Load 10(color) + 145: 8(fvec4) Load 10(color) 146: 8(fvec4) CompositeConstruct 54 54 54 54 147: 8(fvec4) FAdd 145 146 - Store 10(color) 147 - 150: 8(fvec4) Load 10(color) - Store 149(gl_FragColor) 150 + Store 10(color) 147 + 150: 8(fvec4) Load 10(color) + Store 149(gl_FragColor) 150 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out old mode 100644 new mode 100755 index cebf02aa..4ba2e089 --- a/Test/baseResults/spv.matFun.vert.out +++ b/Test/baseResults/spv.matFun.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 94 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 15 "xf(mf33;vf3;" Name 13 "m" @@ -32,9 +33,9 @@ Linked vertex stage: Name 93 "gl_VertexID" Decorate 70(gl_Position) BuiltIn Position Decorate 93(gl_VertexID) BuiltIn VertexId - Decorate 93(gl_VertexID) NoStaticUse + Decorate 93(gl_VertexID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 3 9: TypeMatrix 8(fvec3) 3 @@ -54,37 +55,37 @@ Linked vertex stage: 47: 7(float) Constant 1065353216 48: 7(float) Constant 0 69: TypePointer Output 17(fvec4) - 70(gl_Position): 69(ptr) Variable Output + 70(gl_Position): 69(ptr) Variable Output 71: TypePointer UniformConstant 18 - 72(m4): 71(ptr) Variable UniformConstant + 72(m4): 71(ptr) Variable UniformConstant 73: TypePointer Input 8(fvec3) - 74(v3): 73(ptr) Variable Input + 74(v3): 73(ptr) Variable Input 80: TypePointer UniformConstant 9 - 81(m3): 80(ptr) Variable UniformConstant + 81(m3): 80(ptr) Variable UniformConstant 92: TypePointer Input 33(int) - 93(gl_VertexID): 92(ptr) Variable Input + 93(gl_VertexID): 92(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 75(param): 19(ptr) Variable Function - 77(param): 11(ptr) Variable Function - 82(param): 10(ptr) Variable Function - 84(param): 11(ptr) Variable Function - 76: 18 Load 72(m4) - Store 75(param) 76 - 78: 8(fvec3) Load 74(v3) - Store 77(param) 78 + 75(param): 19(ptr) Variable Function + 77(param): 11(ptr) Variable Function + 82(param): 10(ptr) Variable Function + 84(param): 11(ptr) Variable Function + 76: 18 Load 72(m4) + Store 75(param) 76 + 78: 8(fvec3) Load 74(v3) + Store 77(param) 78 79: 8(fvec3) FunctionCall 27(mxv(mf44;vf3;) 75(param) 77(param) - 83: 9 Load 81(m3) - Store 82(param) 83 - 85: 8(fvec3) Load 74(v3) - Store 84(param) 85 + 83: 9 Load 81(m3) + Store 82(param) 83 + 85: 8(fvec3) Load 74(v3) + Store 84(param) 85 86: 8(fvec3) FunctionCall 15(xf(mf33;vf3;) 82(param) 84(param) 87: 8(fvec3) FAdd 79 86 88: 7(float) CompositeExtract 87 0 89: 7(float) CompositeExtract 87 1 90: 7(float) CompositeExtract 87 2 91: 17(fvec4) CompositeConstruct 88 89 90 47 - Store 70(gl_Position) 91 + Store 70(gl_Position) 91 Branch 6 6: Label Return @@ -93,8 +94,8 @@ Linked vertex stage: 13(m): 10(ptr) FunctionParameter 14(v): 11(ptr) FunctionParameter 16: Label - 29: 8(fvec3) Load 14(v) - 30: 9 Load 13(m) + 29: 8(fvec3) Load 14(v) + 30: 9 Load 13(m) 31: 8(fvec3) VectorTimesMatrix 29 30 ReturnValue 31 FunctionEnd @@ -102,13 +103,13 @@ Linked vertex stage: 21(m): 19(ptr) FunctionParameter 23: Label 36: 35(ptr) AccessChain 21(m) 34 - 37: 17(fvec4) Load 36 + 37: 17(fvec4) Load 36 38: 8(fvec3) VectorShuffle 37 37 0 1 2 40: 35(ptr) AccessChain 21(m) 39 - 41: 17(fvec4) Load 40 + 41: 17(fvec4) Load 40 42: 8(fvec3) VectorShuffle 41 41 0 1 2 44: 35(ptr) AccessChain 21(m) 43 - 45: 17(fvec4) Load 44 + 45: 17(fvec4) Load 44 46: 8(fvec3) VectorShuffle 45 45 0 1 2 49: 7(float) CompositeExtract 38 0 50: 7(float) CompositeExtract 38 1 @@ -129,10 +130,10 @@ Linked vertex stage: 25(m4): 19(ptr) FunctionParameter 26(v): 11(ptr) FunctionParameter 28: Label - 64(param): 19(ptr) Variable Function - 63: 8(fvec3) Load 26(v) - 65: 18 Load 25(m4) - Store 64(param) 65 + 64(param): 19(ptr) Variable Function + 63: 8(fvec3) Load 26(v) + 65: 18 Load 25(m4) + Store 64(param) 65 66: 9 FunctionCall 22(Mat3(mf44;) 64(param) 67: 8(fvec3) VectorTimesMatrix 63 66 ReturnValue 67 diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out old mode 100644 new mode 100755 index 94fe8cbb..fe27f56b --- a/Test/baseResults/spv.nonSquare.vert.out +++ b/Test/baseResults/spv.nonSquare.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 91 Source GLSL 120 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 10 "a" Name 13 "v3" @@ -20,25 +21,25 @@ Linked vertex stage: Name 29 "gl_Position" Name 56 "v4" Decorate 29(gl_Position) BuiltIn Position - Decorate 75 NoStaticUse - Decorate 79 NoStaticUse - Decorate 90 NoStaticUse + Decorate 75 NoStaticUse + Decorate 79 NoStaticUse + Decorate 90 NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 2 9: TypePointer Function 8(fvec2) 11: TypeVector 7(float) 3 12: TypePointer Input 11(fvec3) - 13(v3): 12(ptr) Variable Input + 13(v3): 12(ptr) Variable Input 15: TypeMatrix 11(fvec3) 2 16: TypePointer Function 15 21: TypeMatrix 8(fvec2) 3 22: TypePointer UniformConstant 21 - 23(m32): 22(ptr) Variable UniformConstant + 23(m32): 22(ptr) Variable UniformConstant 27: TypeVector 7(float) 4 28: TypePointer Output 27(fvec4) - 29(gl_Position): 28(ptr) Variable Output + 29(gl_Position): 28(ptr) Variable Output 32: TypeMatrix 11(fvec3) 3 36: 7(float) Constant 0 41: TypeMatrix 27(fvec4) 4 @@ -56,7 +57,7 @@ Linked vertex stage: 53: 27(fvec4) ConstantComposite 51 52 36 36 54: 41 ConstantComposite 44 47 50 53 55: TypePointer Input 27(fvec4) - 56(v4): 55(ptr) Variable Input + 56(v4): 55(ptr) Variable Input 60: 7(float) Constant 1112014848 61: 7(float) Constant 1121714176 62: 7(float) Constant 1126825984 @@ -87,33 +88,33 @@ Linked vertex stage: 90: 80 ConstantComposite 83 85 86 89 4(main): 2 Function None 3 5: Label - 10(a): 9(ptr) Variable Function - 17(m23): 16(ptr) Variable Function - 20(b): 9(ptr) Variable Function - 14: 11(fvec3) Load 13(v3) - 18: 15 Load 17(m23) + 10(a): 9(ptr) Variable Function + 17(m23): 16(ptr) Variable Function + 20(b): 9(ptr) Variable Function + 14: 11(fvec3) Load 13(v3) + 18: 15 Load 17(m23) 19: 8(fvec2) VectorTimesMatrix 14 18 - Store 10(a) 19 - 24: 21 Load 23(m32) - 25: 11(fvec3) Load 13(v3) + Store 10(a) 19 + 24: 21 Load 23(m32) + 25: 11(fvec3) Load 13(v3) 26: 8(fvec2) MatrixTimesVector 24 25 - Store 20(b) 26 - 30: 15 Load 17(m23) - 31: 21 Load 23(m32) + Store 20(b) 26 + 30: 15 Load 17(m23) + 31: 21 Load 23(m32) 33: 32 MatrixTimesMatrix 30 31 - 34: 11(fvec3) Load 13(v3) + 34: 11(fvec3) Load 13(v3) 35: 11(fvec3) MatrixTimesVector 33 34 37: 7(float) CompositeExtract 35 0 38: 7(float) CompositeExtract 35 1 39: 7(float) CompositeExtract 35 2 40: 27(fvec4) CompositeConstruct 37 38 39 36 - 57: 27(fvec4) Load 56(v4) + 57: 27(fvec4) Load 56(v4) 58: 27(fvec4) MatrixTimesVector 54 57 59: 27(fvec4) FAdd 40 58 65: 27(fvec4) FAdd 59 64 69: 27(fvec4) FAdd 65 68 74: 27(fvec4) FAdd 69 73 - Store 29(gl_Position) 74 + Store 29(gl_Position) 74 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out old mode 100644 new mode 100755 index fdbe7e45..71f6e773 --- a/Test/baseResults/spv.precision.frag.out +++ b/Test/baseResults/spv.precision.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 111 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 13 "foo(vf3;" Name 12 "mv3" @@ -31,24 +33,20 @@ Linked fragment stage: Name 72 "mediumfout" Name 101 "ub2" Name 102 "param" - Decorate 24(highfin) PrecisionHigh - Decorate 24(highfin) Smooth - Decorate 37(sum) PrecisionLow - Decorate 39(uniform_medium) PrecisionMedium - Decorate 41(uniform_high) PrecisionHigh - Decorate 47(uniform_low) PrecisionLow - Decorate 52(arg1) PrecisionLow - Decorate 54(arg2) PrecisionMedium - Decorate 56(d) PrecisionLow - Decorate 58(lowfin) PrecisionLow - Decorate 58(lowfin) Smooth - Decorate 60(mediumfin) PrecisionMedium - Decorate 60(mediumfin) Smooth - Decorate 64(global_highp) PrecisionHigh - Decorate 68(local_highp) PrecisionHigh - Decorate 72(mediumfout) PrecisionMedium + Decorate 24(highfin) Smooth + Decorate 37(sum) RelaxedPrecision + Decorate 39(uniform_medium) RelaxedPrecision + Decorate 47(uniform_low) RelaxedPrecision + Decorate 52(arg1) RelaxedPrecision + Decorate 54(arg2) RelaxedPrecision + Decorate 56(d) RelaxedPrecision + Decorate 58(lowfin) RelaxedPrecision + Decorate 58(lowfin) Smooth + Decorate 60(mediumfin) RelaxedPrecision + Decorate 60(mediumfin) Smooth + Decorate 72(mediumfout) RelaxedPrecision 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 3 9: TypePointer Function 8(fvec3) @@ -60,102 +58,102 @@ Linked fragment stage: 18: TypeFunction 15(bool) 17(ptr) 22: TypeVector 7(float) 4 23: TypePointer Input 22(fvec4) - 24(highfin): 23(ptr) Variable Input + 24(highfin): 23(ptr) Variable Input 29: 15(bool) ConstantFalse 30: 15(bool) ConstantTrue 31: 16(bvec2) ConstantComposite 29 30 35: TypeInt 32 1 36: TypePointer Function 35(int) 38: TypePointer UniformConstant 35(int) -39(uniform_medium): 38(ptr) Variable UniformConstant -41(uniform_high): 38(ptr) Variable UniformConstant - 47(uniform_low): 38(ptr) Variable UniformConstant +39(uniform_medium): 38(ptr) Variable UniformConstant +41(uniform_high): 38(ptr) Variable UniformConstant + 47(uniform_low): 38(ptr) Variable UniformConstant 51: TypePointer Function 7(float) 53: 7(float) Constant 1078774989 55: 7(float) Constant 1232730691 57: TypePointer Input 7(float) - 58(lowfin): 57(ptr) Variable Input - 60(mediumfin): 57(ptr) Variable Input + 58(lowfin): 57(ptr) Variable Input + 60(mediumfin): 57(ptr) Variable Input 63: TypePointer PrivateGlobal 7(float) -64(global_highp): 63(ptr) Variable PrivateGlobal +64(global_highp): 63(ptr) Variable PrivateGlobal 67: TypePointer Function 22(fvec4) 71: TypePointer Output 22(fvec4) - 72(mediumfout): 71(ptr) Variable Output + 72(mediumfout): 71(ptr) Variable Output 81: 35(int) Constant 4 83: TypeVector 35(int) 2 100: TypePointer UniformConstant 16(bvec2) - 101(ub2): 100(ptr) Variable UniformConstant + 101(ub2): 100(ptr) Variable UniformConstant 108: 7(float) Constant 1065353216 4(main): 2 Function None 3 5: Label - 37(sum): 36(ptr) Variable Function - 52(arg1): 51(ptr) Variable Function - 54(arg2): 51(ptr) Variable Function - 56(d): 51(ptr) Variable Function - 68(local_highp): 67(ptr) Variable Function - 102(param): 17(ptr) Variable Function - 40: 35(int) Load 39(uniform_medium) - 42: 35(int) Load 41(uniform_high) + 37(sum): 36(ptr) Variable Function + 52(arg1): 51(ptr) Variable Function + 54(arg2): 51(ptr) Variable Function + 56(d): 51(ptr) Variable Function + 68(local_highp): 67(ptr) Variable Function + 102(param): 17(ptr) Variable Function + 40: 35(int) Load 39(uniform_medium) + 42: 35(int) Load 41(uniform_high) 43: 35(int) IAdd 40 42 - Store 37(sum) 43 - 44: 35(int) Load 41(uniform_high) - 45: 35(int) Load 37(sum) + Store 37(sum) 43 + 44: 35(int) Load 41(uniform_high) + 45: 35(int) Load 37(sum) 46: 35(int) IAdd 45 44 - Store 37(sum) 46 - 48: 35(int) Load 47(uniform_low) - 49: 35(int) Load 37(sum) + Store 37(sum) 46 + 48: 35(int) Load 47(uniform_low) + 49: 35(int) Load 37(sum) 50: 35(int) IAdd 49 48 - Store 37(sum) 50 - Store 52(arg1) 53 - Store 54(arg2) 55 - 59: 7(float) Load 58(lowfin) - 61: 7(float) Load 60(mediumfin) - 62: 7(float) ExtInst 1(GLSL.std.450) 59(distance) 59 61 - Store 56(d) 62 - 65: 22(fvec4) Load 24(highfin) - 66: 7(float) ExtInst 1(GLSL.std.450) 58(length) 65 - Store 64(global_highp) 66 - 69: 7(float) Load 64(global_highp) + Store 37(sum) 50 + Store 52(arg1) 53 + Store 54(arg2) 55 + 59: 7(float) Load 58(lowfin) + 61: 7(float) Load 60(mediumfin) + 62: 7(float) ExtInst 1(GLSL.std.450) 66(Distance) 59 61 + Store 56(d) 62 + 65: 22(fvec4) Load 24(highfin) + 66: 7(float) ExtInst 1(GLSL.std.450) 65(Length) 65 + Store 64(global_highp) 66 + 69: 7(float) Load 64(global_highp) 70: 22(fvec4) CompositeConstruct 69 69 69 69 - Store 68(local_highp) 70 - 73: 7(float) Load 56(d) - 74: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 73 + Store 68(local_highp) 70 + 73: 7(float) Load 56(d) + 74: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 73 75: 22(fvec4) CompositeConstruct 74 74 74 74 - 76: 7(float) Load 54(arg2) + 76: 7(float) Load 54(arg2) 77: 22(fvec4) CompositeConstruct 76 76 76 76 78: 22(fvec4) FAdd 75 77 - 79: 22(fvec4) Load 68(local_highp) + 79: 22(fvec4) Load 68(local_highp) 80: 22(fvec4) FAdd 78 79 - Store 72(mediumfout) 80 - 82: 35(int) Load 47(uniform_low) + Store 72(mediumfout) 80 + 82: 35(int) Load 47(uniform_low) 84: 83(ivec2) CompositeConstruct 82 82 - 85: 35(int) Load 41(uniform_high) + 85: 35(int) Load 41(uniform_high) 86: 83(ivec2) CompositeConstruct 85 85 87: 83(ivec2) IMul 84 86 - 88: 35(int) Load 41(uniform_high) + 88: 35(int) Load 41(uniform_high) 89: 83(ivec2) CompositeConstruct 88 88 90: 83(ivec2) IAdd 87 89 91: 35(int) CompositeExtract 90 0 92: 35(int) IAdd 81 91 - 93: 35(int) Load 37(sum) + 93: 35(int) Load 37(sum) 94: 35(int) IAdd 93 92 - Store 37(sum) 94 - 95: 35(int) Load 37(sum) + Store 37(sum) 94 + 95: 35(int) Load 37(sum) 96: 7(float) ConvertSToF 95 97: 22(fvec4) CompositeConstruct 96 96 96 96 - 98: 22(fvec4) Load 72(mediumfout) + 98: 22(fvec4) Load 72(mediumfout) 99: 22(fvec4) FAdd 98 97 - Store 72(mediumfout) 99 - 103: 16(bvec2) Load 101(ub2) - Store 102(param) 103 + Store 72(mediumfout) 99 + 103: 16(bvec2) Load 101(ub2) + Store 102(param) 103 104: 15(bool) FunctionCall 20(boolfun(vb2;) 102(param) SelectionMerge 106 None - BranchConditional 104 105 106 + BranchConditional 104 105 106 105: Label - 107: 22(fvec4) Load 72(mediumfout) + 107: 22(fvec4) Load 72(mediumfout) 109: 22(fvec4) CompositeConstruct 108 108 108 108 110: 22(fvec4) FAdd 107 109 - Store 72(mediumfout) 110 + Store 72(mediumfout) 110 Branch 106 106: Label Branch 6 @@ -165,14 +163,14 @@ Linked fragment stage: 13(foo(vf3;): 10(fvec2) Function None 11 12(mv3): 9(ptr) FunctionParameter 14: Label - 25: 22(fvec4) Load 24(highfin) + 25: 22(fvec4) Load 24(highfin) 26: 10(fvec2) VectorShuffle 25 25 0 1 ReturnValue 26 FunctionEnd 20(boolfun(vb2;): 15(bool) Function None 18 19(bv2): 17(ptr) FunctionParameter 21: Label - 28: 16(bvec2) Load 19(bv2) + 28: 16(bvec2) Load 19(bv2) 32: 16(bvec2) IEqual 28 31 33: 15(bool) All 32 ReturnValue 33 diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out old mode 100644 new mode 100755 index e9ac5ca4..5c85d5e5 --- a/Test/baseResults/spv.prepost.frag.out +++ b/Test/baseResults/spv.prepost.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 97 Source GLSL 140 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "index" Name 15 "s" @@ -24,7 +26,7 @@ Linked fragment stage: Name 93 "gl_FragColor" Decorate 93(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 5 @@ -46,104 +48,104 @@ Linked fragment stage: 76: 11(float) Constant 1082130432 77: 72(fvec4) ConstantComposite 29 20 75 76 92: TypePointer Output 72(fvec4) -93(gl_FragColor): 92(ptr) Variable Output +93(gl_FragColor): 92(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 9(index): 8(ptr) Variable Function - 17(str): 16(ptr) Variable Function - 23(t): 21(ptr) Variable Function - 51(x): 21(ptr) Variable Function - 62(y): 21(ptr) Variable Function - 67(z): 21(ptr) Variable Function - 74(v): 73(ptr) Variable Function - Store 9(index) 10 + 9(index): 8(ptr) Variable Function + 17(str): 16(ptr) Variable Function + 23(t): 21(ptr) Variable Function + 51(x): 21(ptr) Variable Function + 62(y): 21(ptr) Variable Function + 67(z): 21(ptr) Variable Function + 74(v): 73(ptr) Variable Function + Store 9(index) 10 22: 21(ptr) AccessChain 17(str) 18 19 - Store 22 20 - 24: 7(int) Load 9(index) + Store 22 20 + 24: 7(int) Load 9(index) 26: 7(int) ISub 24 25 - Store 9(index) 26 + Store 9(index) 26 27: 21(ptr) AccessChain 17(str) 18 26 - 28: 11(float) Load 27 + 28: 11(float) Load 27 30: 11(float) FAdd 28 29 - Store 27 30 - Store 23(t) 30 - 31: 11(float) Load 23(t) + Store 27 30 + Store 23(t) 30 + 31: 11(float) Load 23(t) 32: 21(ptr) AccessChain 17(str) 18 19 - 33: 11(float) Load 32 + 33: 11(float) Load 32 34: 11(float) FAdd 33 31 35: 21(ptr) AccessChain 17(str) 18 19 - Store 35 34 + Store 35 34 36: 21(ptr) AccessChain 17(str) 18 19 - 37: 11(float) Load 36 + 37: 11(float) Load 36 38: 11(float) FSub 37 29 - Store 36 38 - Store 23(t) 37 - 39: 7(int) Load 9(index) + Store 36 38 + Store 23(t) 37 + 39: 7(int) Load 9(index) 40: 7(int) IAdd 39 25 - Store 9(index) 40 - 41: 11(float) Load 23(t) + Store 9(index) 40 + 41: 11(float) Load 23(t) 42: 21(ptr) AccessChain 17(str) 18 39 - 43: 11(float) Load 42 + 43: 11(float) Load 42 44: 11(float) FAdd 43 41 45: 21(ptr) AccessChain 17(str) 18 39 - Store 45 44 - 46: 7(int) Load 9(index) + Store 45 44 + 46: 7(int) Load 9(index) 47: 7(int) ISub 46 25 - Store 9(index) 47 + Store 9(index) 47 48: 21(ptr) AccessChain 17(str) 18 47 - 49: 11(float) Load 48 + 49: 11(float) Load 48 50: 11(float) FSub 49 29 - Store 48 50 + Store 48 50 52: 21(ptr) AccessChain 17(str) 18 19 - 53: 11(float) Load 52 - Store 51(x) 53 - 54: 11(float) Load 51(x) + 53: 11(float) Load 52 + Store 51(x) 53 + 54: 11(float) Load 51(x) 55: 11(float) FAdd 54 29 - Store 51(x) 55 - 56: 11(float) Load 51(x) + Store 51(x) 55 + 56: 11(float) Load 51(x) 57: 11(float) FSub 56 29 - Store 51(x) 57 - 58: 11(float) Load 51(x) + Store 51(x) 57 + 58: 11(float) Load 51(x) 59: 11(float) FAdd 58 29 - Store 51(x) 59 - 60: 11(float) Load 51(x) + Store 51(x) 59 + 60: 11(float) Load 51(x) 61: 11(float) FSub 60 29 - Store 51(x) 61 - 63: 11(float) Load 51(x) - 64: 11(float) Load 51(x) + Store 51(x) 61 + 63: 11(float) Load 51(x) + 64: 11(float) Load 51(x) 65: 11(float) FAdd 64 29 - Store 51(x) 65 + Store 51(x) 65 66: 11(float) FMul 63 65 - Store 62(y) 66 - 68: 11(float) Load 62(y) - 69: 11(float) Load 51(x) + Store 62(y) 66 + 68: 11(float) Load 62(y) + 69: 11(float) Load 51(x) 70: 11(float) FSub 69 29 - Store 51(x) 70 + Store 51(x) 70 71: 11(float) FMul 68 69 - Store 67(z) 71 - Store 74(v) 77 - 78: 72(fvec4) Load 74(v) + Store 67(z) 71 + Store 74(v) 77 + 78: 72(fvec4) Load 74(v) 79: 11(float) CompositeExtract 78 2 80: 11(float) FSub 79 29 - 81: 72(fvec4) Load 74(v) + 81: 72(fvec4) Load 74(v) 82: 72(fvec4) CompositeInsert 80 81 2 - Store 74(v) 82 - 83: 72(fvec4) Load 74(v) + Store 74(v) 82 + 83: 72(fvec4) Load 74(v) 84: 72(fvec4) CompositeInsert 79 83 1 - Store 74(v) 84 - 85: 72(fvec4) Load 74(v) + Store 74(v) 84 + 85: 72(fvec4) Load 74(v) 86: 11(float) CompositeExtract 85 3 87: 11(float) FSub 86 29 - 88: 72(fvec4) Load 74(v) + 88: 72(fvec4) Load 74(v) 89: 72(fvec4) CompositeInsert 87 88 3 - Store 74(v) 89 - 90: 72(fvec4) Load 74(v) + Store 74(v) 89 + 90: 72(fvec4) Load 74(v) 91: 72(fvec4) CompositeInsert 87 90 0 - Store 74(v) 91 - 94: 11(float) Load 67(z) - 95: 72(fvec4) Load 74(v) + Store 74(v) 91 + 94: 11(float) Load 67(z) + 95: 72(fvec4) Load 74(v) 96: 72(fvec4) VectorTimesScalar 95 94 - Store 93(gl_FragColor) 96 + Store 93(gl_FragColor) 96 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out old mode 100644 new mode 100755 index df8063a4..46d3b0ef --- a/Test/baseResults/spv.qualifiers.vert.out +++ b/Test/baseResults/spv.qualifiers.vert.out @@ -10,9 +10,10 @@ Linked vertex stage: // Id's are bound by 26 Source GLSL 430 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 10 "outVc" Name 12 "inV" @@ -22,43 +23,43 @@ Linked vertex stage: Name 20 "outVcn" Name 24 "gl_VertexID" Name 25 "gl_InstanceID" - Decorate 10(outVc) Smooth - Decorate 14(outVs) Smooth - Decorate 16(outVf) Flat - Decorate 18(outVn) Noperspective - Decorate 20(outVcn) Noperspective + Decorate 10(outVc) Smooth + Decorate 14(outVs) Smooth + Decorate 16(outVf) Flat + Decorate 18(outVn) Noperspective + Decorate 20(outVcn) Noperspective Decorate 24(gl_VertexID) BuiltIn VertexId - Decorate 24(gl_VertexID) NoStaticUse + Decorate 24(gl_VertexID) NoStaticUse Decorate 25(gl_InstanceID) BuiltIn InstanceId - Decorate 25(gl_InstanceID) NoStaticUse + Decorate 25(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Output 8(fvec4) - 10(outVc): 9(ptr) Variable Output + 10(outVc): 9(ptr) Variable Output 11: TypePointer Input 8(fvec4) - 12(inV): 11(ptr) Variable Input - 14(outVs): 9(ptr) Variable Output - 16(outVf): 9(ptr) Variable Output - 18(outVn): 9(ptr) Variable Output - 20(outVcn): 9(ptr) Variable Output + 12(inV): 11(ptr) Variable Input + 14(outVs): 9(ptr) Variable Output + 16(outVf): 9(ptr) Variable Output + 18(outVn): 9(ptr) Variable Output + 20(outVcn): 9(ptr) Variable Output 22: TypeInt 32 1 23: TypePointer Input 22(int) - 24(gl_VertexID): 23(ptr) Variable Input -25(gl_InstanceID): 23(ptr) Variable Input + 24(gl_VertexID): 23(ptr) Variable Input +25(gl_InstanceID): 23(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 13: 8(fvec4) Load 12(inV) - Store 10(outVc) 13 - 15: 8(fvec4) Load 12(inV) - Store 14(outVs) 15 - 17: 8(fvec4) Load 12(inV) - Store 16(outVf) 17 - 19: 8(fvec4) Load 12(inV) - Store 18(outVn) 19 - 21: 8(fvec4) Load 12(inV) - Store 20(outVcn) 21 + 13: 8(fvec4) Load 12(inV) + Store 10(outVc) 13 + 15: 8(fvec4) Load 12(inV) + Store 14(outVs) 15 + 17: 8(fvec4) Load 12(inV) + Store 16(outVf) 17 + 19: 8(fvec4) Load 12(inV) + Store 18(outVn) 19 + 21: 8(fvec4) Load 12(inV) + Store 20(outVcn) 21 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out old mode 100644 new mode 100755 index b968d676..396cfb30 --- a/Test/baseResults/spv.set.vert.out +++ b/Test/baseResults/spv.set.vert.out @@ -7,55 +7,57 @@ Linked vertex stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 25 +// Id's are bound by 26 Source GLSL 450 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 10 "color" Name 11 "setBuf" MemberName 11(setBuf) 0 "color" Name 13 "setBufInst" - Name 21 "sampler" - Name 23 "gl_VertexID" - Name 24 "gl_InstanceID" - Decorate 10(color) Smooth - Decorate 11(setBuf) GLSLShared - Decorate 11(setBuf) BufferBlock + Name 22 "sampler" + Name 24 "gl_VertexID" + Name 25 "gl_InstanceID" + Decorate 10(color) Smooth + Decorate 11(setBuf) GLSLShared + Decorate 11(setBuf) BufferBlock Decorate 13(setBufInst) DescriptorSet 0 Decorate 13(setBufInst) Binding 8 - Decorate 21(sampler) DescriptorSet 4 - Decorate 21(sampler) Binding 7 - Decorate 21(sampler) NoStaticUse - Decorate 23(gl_VertexID) BuiltIn VertexId - Decorate 23(gl_VertexID) NoStaticUse - Decorate 24(gl_InstanceID) BuiltIn InstanceId - Decorate 24(gl_InstanceID) NoStaticUse + Decorate 22(sampler) DescriptorSet 4 + Decorate 22(sampler) Binding 7 + Decorate 22(sampler) NoStaticUse + Decorate 24(gl_VertexID) BuiltIn VertexId + Decorate 24(gl_VertexID) NoStaticUse + Decorate 25(gl_InstanceID) BuiltIn InstanceId + Decorate 25(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Output 8(fvec4) - 10(color): 9(ptr) Variable Output + 10(color): 9(ptr) Variable Output 11(setBuf): TypeStruct 8(fvec4) 12: TypePointer Uniform 11(setBuf) - 13(setBufInst): 12(ptr) Variable Uniform + 13(setBufInst): 12(ptr) Variable Uniform 14: TypeInt 32 1 15: 14(int) Constant 0 16: TypePointer Uniform 8(fvec4) - 19: TypeSampler7(float) 2D filter+texture - 20: TypePointer UniformConstant 19 - 21(sampler): 20(ptr) Variable UniformConstant - 22: TypePointer Input 14(int) - 23(gl_VertexID): 22(ptr) Variable Input -24(gl_InstanceID): 22(ptr) Variable Input + 19: TypeImage 7(float) 2D sampled format:Unknown + 20: TypeSampledImage 19 + 21: TypePointer UniformConstant 20 + 22(sampler): 21(ptr) Variable UniformConstant + 23: TypePointer Input 14(int) + 24(gl_VertexID): 23(ptr) Variable Input +25(gl_InstanceID): 23(ptr) Variable Input 4(main): 2 Function None 3 5: Label 17: 16(ptr) AccessChain 13(setBufInst) 15 - 18: 8(fvec4) Load 17 - Store 10(color) 18 + 18: 8(fvec4) Load 17 + Store 10(color) 18 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out old mode 100644 new mode 100755 index 35c6dfb2..5b4ecd06 --- a/Test/baseResults/spv.simpleFunctionCall.frag.out +++ b/Test/baseResults/spv.simpleFunctionCall.frag.out @@ -10,42 +10,44 @@ Linked fragment stage: // Id's are bound by 23 Source GLSL 150 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "foo(" Name 13 "BaseColor" Name 17 "gl_FragColor" Name 20 "bigColor" Name 22 "d" - Decorate 13(BaseColor) Smooth + Decorate 13(BaseColor) Smooth Decorate 17(gl_FragColor) BuiltIn FragColor - Decorate 20(bigColor) NoStaticUse - Decorate 22(d) NoStaticUse + Decorate 20(bigColor) NoStaticUse + Decorate 22(d) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 - 9: TypeFunction 8(fvec4) + 9: TypeFunction 8(fvec4) 12: TypePointer Input 8(fvec4) - 13(BaseColor): 12(ptr) Variable Input + 13(BaseColor): 12(ptr) Variable Input 16: TypePointer Output 8(fvec4) -17(gl_FragColor): 16(ptr) Variable Output +17(gl_FragColor): 16(ptr) Variable Output 19: TypePointer UniformConstant 8(fvec4) - 20(bigColor): 19(ptr) Variable UniformConstant + 20(bigColor): 19(ptr) Variable UniformConstant 21: TypePointer UniformConstant 7(float) - 22(d): 21(ptr) Variable UniformConstant + 22(d): 21(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 18: 8(fvec4) FunctionCall 10(foo() - Store 17(gl_FragColor) 18 + 18: 8(fvec4) FunctionCall 10(foo() + Store 17(gl_FragColor) 18 Branch 6 6: Label Return FunctionEnd 10(foo(): 8(fvec4) Function None 9 11: Label - 14: 8(fvec4) Load 13(BaseColor) + 14: 8(fvec4) Load 13(BaseColor) ReturnValue 14 FunctionEnd diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out old mode 100644 new mode 100755 index 8b16d764..4cae5456 --- a/Test/baseResults/spv.simpleMat.vert.out +++ b/Test/baseResults/spv.simpleMat.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 44 Source GLSL 330 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 10 "glPos" Name 13 "mvp" @@ -20,29 +21,29 @@ Linked vertex stage: Name 35 "arraym" Name 42 "gl_VertexID" Name 43 "gl_InstanceID" - Decorate 10(glPos) Smooth - Decorate 20(f) Smooth + Decorate 10(glPos) Smooth + Decorate 20(f) Smooth Decorate 42(gl_VertexID) BuiltIn VertexId - Decorate 42(gl_VertexID) NoStaticUse + Decorate 42(gl_VertexID) NoStaticUse Decorate 43(gl_InstanceID) BuiltIn InstanceId - Decorate 43(gl_InstanceID) NoStaticUse + Decorate 43(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Output 8(fvec4) - 10(glPos): 9(ptr) Variable Output + 10(glPos): 9(ptr) Variable Output 11: TypeMatrix 8(fvec4) 4 12: TypePointer UniformConstant 11 - 13(mvp): 12(ptr) Variable UniformConstant + 13(mvp): 12(ptr) Variable UniformConstant 15: TypePointer Input 8(fvec4) - 16(v): 15(ptr) Variable Input + 16(v): 15(ptr) Variable Input 19: TypePointer Output 7(float) - 20(f): 19(ptr) Variable Output + 20(f): 19(ptr) Variable Output 21: TypeVector 7(float) 3 22: TypeMatrix 21(fvec3) 3 23: TypePointer Input 22 - 24(am3): 23(ptr) Variable Input + 24(am3): 23(ptr) Variable Input 25: TypeInt 32 1 26: 25(int) Constant 2 27: TypePointer Input 21(fvec3) @@ -50,25 +51,25 @@ Linked vertex stage: 32: 31(int) Constant 3 33: TypeArray 11 32 34: TypePointer Input 33 - 35(arraym): 34(ptr) Variable Input + 35(arraym): 34(ptr) Variable Input 36: 25(int) Constant 1 41: TypePointer Input 25(int) - 42(gl_VertexID): 41(ptr) Variable Input -43(gl_InstanceID): 41(ptr) Variable Input + 42(gl_VertexID): 41(ptr) Variable Input +43(gl_InstanceID): 41(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 14: 11 Load 13(mvp) - 17: 8(fvec4) Load 16(v) + 14: 11 Load 13(mvp) + 17: 8(fvec4) Load 16(v) 18: 8(fvec4) MatrixTimesVector 14 17 - Store 10(glPos) 18 + Store 10(glPos) 18 28: 27(ptr) AccessChain 24(am3) 26 - 29: 21(fvec3) Load 28 + 29: 21(fvec3) Load 28 30: 7(float) CompositeExtract 29 1 37: 15(ptr) AccessChain 35(arraym) 36 26 - 38: 8(fvec4) Load 37 + 38: 8(fvec4) Load 37 39: 7(float) CompositeExtract 38 3 40: 7(float) FAdd 30 39 - Store 20(f) 40 + Store 20(f) 40 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out old mode 100644 new mode 100755 index d41f57ba..4ae7be93 --- a/Test/baseResults/spv.structAssignment.frag.out +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -7,12 +7,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 50 +// Id's are bound by 51 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "lunarStruct1" MemberName 9(lunarStruct1) 0 "i" @@ -30,66 +32,67 @@ Linked fragment stage: Name 23 "locals2" Name 28 "foo2" Name 32 "gl_FragColor" - Name 40 "sampler" - Name 44 "coord" - Name 49 "foo" + Name 41 "sampler" + Name 45 "coord" + Name 50 "foo" Decorate 32(gl_FragColor) BuiltIn FragColor - Decorate 44(coord) Smooth - Decorate 49(foo) NoStaticUse + Decorate 45(coord) Smooth + Decorate 50(foo) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypeFloat 32 9(lunarStruct1): TypeStruct 7(int) 8(float) 10(lunarStruct2): TypeStruct 7(int) 8(float) 9(lunarStruct1) 11(lunarStruct3): TypeStruct 10(lunarStruct2) 7(int) 8(float) 9(lunarStruct1) 12: TypePointer UniformConstant 11(lunarStruct3) - 13(foo3): 12(ptr) Variable UniformConstant + 13(foo3): 12(ptr) Variable UniformConstant 14: 7(int) Constant 0 15: TypePointer UniformConstant 7(int) 18: TypeBool 22: TypePointer Function 10(lunarStruct2) 24: TypePointer UniformConstant 10(lunarStruct2) - 28(foo2): 24(ptr) Variable UniformConstant + 28(foo2): 24(ptr) Variable UniformConstant 30: TypeVector 8(float) 4 31: TypePointer Output 30(fvec4) -32(gl_FragColor): 31(ptr) Variable Output +32(gl_FragColor): 31(ptr) Variable Output 33: 7(int) Constant 2 34: 7(int) Constant 1 35: TypePointer Function 8(float) - 38: TypeSampler8(float) 2D filter+texture - 39: TypePointer UniformConstant 38 - 40(sampler): 39(ptr) Variable UniformConstant - 42: TypeVector 8(float) 2 - 43: TypePointer Input 42(fvec2) - 44(coord): 43(ptr) Variable Input - 48: TypePointer UniformConstant 9(lunarStruct1) - 49(foo): 48(ptr) Variable UniformConstant + 38: TypeImage 8(float) 2D sampled format:Unknown + 39: TypeSampledImage 38 + 40: TypePointer UniformConstant 39 + 41(sampler): 40(ptr) Variable UniformConstant + 43: TypeVector 8(float) 2 + 44: TypePointer Input 43(fvec2) + 45(coord): 44(ptr) Variable Input + 49: TypePointer UniformConstant 9(lunarStruct1) + 50(foo): 49(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 23(locals2): 22(ptr) Variable Function + 23(locals2): 22(ptr) Variable Function 16: 15(ptr) AccessChain 13(foo3) 14 14 - 17: 7(int) Load 16 + 17: 7(int) Load 16 19: 18(bool) SGreaterThan 17 14 SelectionMerge 21 None - BranchConditional 19 20 27 + BranchConditional 19 20 27 20: Label 25: 24(ptr) AccessChain 13(foo3) 14 - 26:10(lunarStruct2) Load 25 - Store 23(locals2) 26 + 26:10(lunarStruct2) Load 25 + Store 23(locals2) 26 Branch 21 27: Label - 29:10(lunarStruct2) Load 28(foo2) - Store 23(locals2) 29 + 29:10(lunarStruct2) Load 28(foo2) + Store 23(locals2) 29 Branch 21 21: Label 36: 35(ptr) AccessChain 23(locals2) 33 34 - 37: 8(float) Load 36 - 41: 38 Load 40(sampler) - 45: 42(fvec2) Load 44(coord) - 46: 30(fvec4) TextureSample 41 45 - 47: 30(fvec4) VectorTimesScalar 46 37 - Store 32(gl_FragColor) 47 + 37: 8(float) Load 36 + 42: 39 Load 41(sampler) + 46: 43(fvec2) Load 45(coord) + 47: 30(fvec4) ImageSampleImplicitLod 42 46 + 48: 30(fvec4) VectorTimesScalar 47 37 + Store 32(gl_FragColor) 48 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out old mode 100644 new mode 100755 index 840f08ca..570a2975 --- a/Test/baseResults/spv.structDeref.frag.out +++ b/Test/baseResults/spv.structDeref.frag.out @@ -7,12 +7,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 120 +// Id's are bound by 121 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "s0" MemberName 9(s0) 0 "i" @@ -42,13 +44,13 @@ Linked fragment stage: Name 69 "foo0" Name 84 "foo00" Name 97 "gl_FragColor" - Name 113 "sampler" - Name 119 "foo2" - Decorate 62(coord) Smooth + Name 114 "sampler" + Name 120 "foo2" + Decorate 62(coord) Smooth Decorate 97(gl_FragColor) BuiltIn FragColor - Decorate 119(foo2) NoStaticUse + Decorate 120(foo2) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypeFloat 32 9(s0): TypeStruct 7(int) @@ -59,7 +61,7 @@ Linked fragment stage: 14: TypeArray 11(s2) 13 15(s3): TypeStruct 14 7(int) 8(float) 10(s1) 16: TypePointer UniformConstant 15(s3) - 17(foo3): 16(ptr) Variable UniformConstant + 17(foo3): 16(ptr) Variable UniformConstant 18: 7(int) Constant 0 19: 7(int) Constant 9 20: TypePointer UniformConstant 7(int) @@ -82,109 +84,110 @@ Linked fragment stage: 46: TypePointer Function 45 48: 7(int) Constant 6 49: TypePointer UniformConstant 10(s1) - 50(foo1): 49(ptr) Variable UniformConstant + 50(foo1): 49(ptr) Variable UniformConstant 53: TypePointer Function 9(s0) 55(s00): TypeStruct 9(s0) 56: TypePointer Function 55(s00) 58: 55(s00) ConstantComposite 34 60: TypeVector 8(float) 2 61: TypePointer Input 60(fvec2) - 62(coord): 61(ptr) Variable Input + 62(coord): 61(ptr) Variable Input 68: TypePointer UniformConstant 9(s0) - 69(foo0): 68(ptr) Variable UniformConstant + 69(foo0): 68(ptr) Variable UniformConstant 73: 8(float) Constant 1073741824 74: 8(float) Constant 1077936128 75: 8(float) Constant 1082130432 76: 8(float) Constant 1084227584 77: 39 ConstantComposite 42 30 73 74 75 76 83: TypePointer UniformConstant 55(s00) - 84(foo00): 83(ptr) Variable UniformConstant + 84(foo00): 83(ptr) Variable UniformConstant 86: TypePointer Function 7(int) 89: 7(int) Constant 5 95: TypeVector 8(float) 4 96: TypePointer Output 95(fvec4) -97(gl_FragColor): 96(ptr) Variable Output +97(gl_FragColor): 96(ptr) Variable Output 104: 7(int) Constant 3 - 111: TypeSampler8(float) 2D filter+texture - 112: TypePointer UniformConstant 111 - 113(sampler): 112(ptr) Variable UniformConstant - 118: TypePointer UniformConstant 11(s2) - 119(foo2): 118(ptr) Variable UniformConstant + 111: TypeImage 8(float) 2D sampled format:Unknown + 112: TypeSampledImage 111 + 113: TypePointer UniformConstant 112 + 114(sampler): 113(ptr) Variable UniformConstant + 119: TypePointer UniformConstant 11(s2) + 120(foo2): 119(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 28(locals2): 27(ptr) Variable Function - 41(fArray): 40(ptr) Variable Function -47(locals1Array): 46(ptr) Variable Function - 54(locals0): 53(ptr) Variable Function - 57(locals00): 56(ptr) Variable Function + 28(locals2): 27(ptr) Variable Function + 41(fArray): 40(ptr) Variable Function +47(locals1Array): 46(ptr) Variable Function + 54(locals0): 53(ptr) Variable Function + 57(locals00): 56(ptr) Variable Function 21: 20(ptr) AccessChain 17(foo3) 18 19 18 - 22: 7(int) Load 21 + 22: 7(int) Load 21 24: 23(bool) SGreaterThan 22 18 SelectionMerge 26 None - BranchConditional 24 25 59 + BranchConditional 24 25 59 25: Label 32: 31(ptr) AccessChain 28(locals2) 29 - Store 32 30 + Store 32 30 37: 36(ptr) AccessChain 28(locals2) 33 - Store 37 35 - Store 41(fArray) 43 - 51: 10(s1) Load 50(foo1) + Store 37 35 + Store 41(fArray) 43 + 51: 10(s1) Load 50(foo1) 52: 36(ptr) AccessChain 47(locals1Array) 48 - Store 52 51 - Store 54(locals0) 34 - Store 57(locals00) 58 + Store 52 51 + Store 54(locals0) 34 + Store 57(locals00) 58 Branch 26 59: Label - 63: 60(fvec2) Load 62(coord) + 63: 60(fvec2) Load 62(coord) 64: 8(float) CompositeExtract 63 0 65: 31(ptr) AccessChain 28(locals2) 29 - Store 65 64 - 66: 60(fvec2) Load 62(coord) + Store 65 64 + 66: 60(fvec2) Load 62(coord) 67: 8(float) CompositeExtract 66 1 - 70: 9(s0) Load 69(foo0) + 70: 9(s0) Load 69(foo0) 71: 10(s1) CompositeConstruct 29 67 70 72: 36(ptr) AccessChain 28(locals2) 33 - Store 72 71 - Store 41(fArray) 77 + Store 72 71 + Store 41(fArray) 77 78: 36(ptr) AccessChain 28(locals2) 33 - 79: 10(s1) Load 78 + 79: 10(s1) Load 78 80: 36(ptr) AccessChain 47(locals1Array) 48 - Store 80 79 + Store 80 79 81: 68(ptr) AccessChain 50(foo1) 33 - 82: 9(s0) Load 81 - Store 54(locals0) 82 - 85: 55(s00) Load 84(foo00) - Store 57(locals00) 85 + 82: 9(s0) Load 81 + Store 54(locals0) 82 + 85: 55(s00) Load 84(foo00) + Store 57(locals00) 85 Branch 26 26: Label 87: 86(ptr) AccessChain 54(locals0) 18 - 88: 7(int) Load 87 + 88: 7(int) Load 87 90: 23(bool) SGreaterThan 88 89 SelectionMerge 92 None - BranchConditional 90 91 92 + BranchConditional 90 91 92 91: Label 93: 53(ptr) AccessChain 57(locals00) 18 - 94: 9(s0) Load 93 - Store 54(locals0) 94 + 94: 9(s0) Load 93 + Store 54(locals0) 94 Branch 92 92: Label 98: 86(ptr) AccessChain 54(locals0) 18 - 99: 7(int) Load 98 + 99: 7(int) Load 98 100: 8(float) ConvertSToF 99 101: 31(ptr) AccessChain 47(locals1Array) 48 29 - 102: 8(float) Load 101 + 102: 8(float) Load 101 103: 8(float) FAdd 100 102 105: 31(ptr) AccessChain 41(fArray) 104 - 106: 8(float) Load 105 + 106: 8(float) Load 105 107: 8(float) FAdd 103 106 108: 31(ptr) AccessChain 28(locals2) 33 29 - 109: 8(float) Load 108 + 109: 8(float) Load 108 110: 8(float) FAdd 107 109 - 114: 111 Load 113(sampler) - 115: 60(fvec2) Load 62(coord) - 116: 95(fvec4) TextureSample 114 115 - 117: 95(fvec4) VectorTimesScalar 116 110 - Store 97(gl_FragColor) 117 + 115: 112 Load 114(sampler) + 116: 60(fvec2) Load 62(coord) + 117: 95(fvec4) ImageSampleImplicitLod 115 116 + 118: 95(fvec4) VectorTimesScalar 117 110 + Store 97(gl_FragColor) 118 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out old mode 100644 new mode 100755 index 3c1053e1..8edff737 --- a/Test/baseResults/spv.structure.frag.out +++ b/Test/baseResults/spv.structure.frag.out @@ -7,12 +7,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 61 +// Id's are bound by 62 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "scale" Name 19 "lunarStruct1" @@ -25,14 +27,14 @@ Linked fragment stage: MemberName 22(lunarStruct2) 2 "s1_1" Name 25 "foo2" Name 47 "gl_FragColor" - Name 51 "sampler" - Name 55 "coord" - Name 60 "foo" + Name 52 "sampler" + Name 56 "coord" + Name 61 "foo" Decorate 47(gl_FragColor) BuiltIn FragColor - Decorate 55(coord) Smooth - Decorate 60(foo) NoStaticUse + Decorate 56(coord) Smooth + Decorate 61(foo) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypePointer Function 7(float) 10: 7(float) Constant 0 @@ -50,7 +52,7 @@ Linked fragment stage: 22(lunarStruct2): TypeStruct 14 7(float) 21 23: TypeArray 22(lunarStruct2) 13 24: TypePointer UniformConstant 23 - 25(foo2): 24(ptr) Variable UniformConstant + 25(foo2): 24(ptr) Variable UniformConstant 26: 11(int) Constant 3 27: 11(int) Constant 0 28: 11(int) Constant 4 @@ -61,42 +63,43 @@ Linked fragment stage: 42: 11(int) Constant 1 43: TypePointer UniformConstant 7(float) 46: TypePointer Output 17(fvec4) -47(gl_FragColor): 46(ptr) Variable Output - 49: TypeSampler7(float) 2D filter+texture - 50: TypePointer UniformConstant 49 - 51(sampler): 50(ptr) Variable UniformConstant - 53: TypeVector 7(float) 2 - 54: TypePointer Input 53(fvec2) - 55(coord): 54(ptr) Variable Input - 59: TypePointer UniformConstant 19(lunarStruct1) - 60(foo): 59(ptr) Variable UniformConstant +47(gl_FragColor): 46(ptr) Variable Output + 49: TypeImage 7(float) 2D sampled format:Unknown + 50: TypeSampledImage 49 + 51: TypePointer UniformConstant 50 + 52(sampler): 51(ptr) Variable UniformConstant + 54: TypeVector 7(float) 2 + 55: TypePointer Input 54(fvec2) + 56(coord): 55(ptr) Variable Input + 60: TypePointer UniformConstant 19(lunarStruct1) + 61(foo): 60(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 9(scale): 8(ptr) Variable Function - Store 9(scale) 10 + 9(scale): 8(ptr) Variable Function + Store 9(scale) 10 30: 29(ptr) AccessChain 25(foo2) 26 27 28 - 31: 11(int) Load 30 + 31: 11(int) Load 30 33: 32(bool) SGreaterThan 31 27 SelectionMerge 35 None - BranchConditional 33 34 41 + BranchConditional 33 34 41 34: Label 38: 37(ptr) AccessChain 25(foo2) 26 36 36 36 26 - 39: 17(fvec4) Load 38 + 39: 17(fvec4) Load 38 40: 7(float) CompositeExtract 39 0 - Store 9(scale) 40 + Store 9(scale) 40 Branch 35 41: Label 44: 43(ptr) AccessChain 25(foo2) 26 36 36 42 26 - 45: 7(float) Load 44 - Store 9(scale) 45 + 45: 7(float) Load 44 + Store 9(scale) 45 Branch 35 35: Label - 48: 7(float) Load 9(scale) - 52: 49 Load 51(sampler) - 56: 53(fvec2) Load 55(coord) - 57: 17(fvec4) TextureSample 52 56 - 58: 17(fvec4) VectorTimesScalar 57 48 - Store 47(gl_FragColor) 58 + 48: 7(float) Load 9(scale) + 53: 50 Load 52(sampler) + 57: 54(fvec2) Load 56(coord) + 58: 17(fvec4) ImageSampleImplicitLod 53 57 + 59: 17(fvec4) VectorTimesScalar 58 48 + Store 47(gl_FragColor) 59 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out old mode 100644 new mode 100755 index 8280626a..cd039362 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -13,9 +13,11 @@ Linked fragment stage: // Id's are bound by 261 Source ESSL 310 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 16 "foo1(vf4;vf4;i1;" Name 13 "v1" @@ -40,18 +42,18 @@ Linked fragment stage: Name 239 "param" Name 241 "param" Name 243 "param" - Decorate 59(local) PrecisionMedium - Decorate 61(c) PrecisionMedium - Decorate 72(f) PrecisionMedium - Decorate 74(x) PrecisionMedium - Decorate 74(x) Smooth - Decorate 128(d) PrecisionMedium - Decorate 154(i) PrecisionMedium - Decorate 172(j) PrecisionMedium - Decorate 222(color) PrecisionMedium - Decorate 228(v) PrecisionMedium + Decorate 59(local) RelaxedPrecision + Decorate 61(c) RelaxedPrecision + Decorate 72(f) RelaxedPrecision + Decorate 74(x) RelaxedPrecision + Decorate 74(x) Smooth + Decorate 128(d) RelaxedPrecision + Decorate 154(i) RelaxedPrecision + Decorate 172(j) RelaxedPrecision + Decorate 222(color) RelaxedPrecision + Decorate 228(v) RelaxedPrecision 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) @@ -63,12 +65,12 @@ Linked fragment stage: 48: 7(float) Constant 1065353216 49: 8(fvec4) ConstantComposite 48 48 48 48 60: TypePointer UniformConstant 10(int) - 61(c): 60(ptr) Variable UniformConstant + 61(c): 60(ptr) Variable UniformConstant 64: 10(int) Constant 1 71: TypePointer Function 7(float) 73: TypePointer Input 7(float) - 74(x): 73(ptr) Variable Input - 128(d): 60(ptr) Variable UniformConstant + 74(x): 73(ptr) Variable Input + 128(d): 60(ptr) Variable UniformConstant 155: 10(int) Constant 0 160: 10(int) Constant 10 161: TypeBool @@ -77,253 +79,253 @@ Linked fragment stage: 183: 7(float) Constant 1120429670 203: 7(float) Constant 1079739679 221: TypePointer Output 7(float) - 222(color): 221(ptr) Variable Output + 222(color): 221(ptr) Variable Output 227: TypePointer UniformConstant 8(fvec4) - 228(v): 227(ptr) Variable UniformConstant + 228(v): 227(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 59(local): 11(ptr) Variable Function - 72(f): 71(ptr) Variable Function - 154(i): 11(ptr) Variable Function - 172(j): 11(ptr) Variable Function - 229(param): 9(ptr) Variable Function - 231(param): 9(ptr) Variable Function - 233(param): 11(ptr) Variable Function - 239(param): 9(ptr) Variable Function - 241(param): 9(ptr) Variable Function - 243(param): 11(ptr) Variable Function - 62: 10(int) Load 61(c) - Store 59(local) 62 - 63: 10(int) Load 59(local) + 59(local): 11(ptr) Variable Function + 72(f): 71(ptr) Variable Function + 154(i): 11(ptr) Variable Function + 172(j): 11(ptr) Variable Function + 229(param): 9(ptr) Variable Function + 231(param): 9(ptr) Variable Function + 233(param): 11(ptr) Variable Function + 239(param): 9(ptr) Variable Function + 241(param): 9(ptr) Variable Function + 243(param): 11(ptr) Variable Function + 62: 10(int) Load 61(c) + Store 59(local) 62 + 63: 10(int) Load 59(local) 65: 10(int) IAdd 63 64 - Store 59(local) 65 - 66: 10(int) Load 61(c) + Store 59(local) 65 + 66: 10(int) Load 61(c) SelectionMerge 70 None Switch 66 69 case 1: 67 case 2: 68 67: Label - 75: 7(float) Load 74(x) - 76: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 75 - Store 72(f) 76 + 75: 7(float) Load 74(x) + 76: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 75 + Store 72(f) 76 Branch 70 68: Label - 78: 7(float) Load 74(x) - 79: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 78 - Store 72(f) 79 + 78: 7(float) Load 74(x) + 79: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 78 + Store 72(f) 79 Branch 70 69: Label - 81: 7(float) Load 74(x) - 82: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 81 - Store 72(f) 82 + 81: 7(float) Load 74(x) + 82: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 81 + Store 72(f) 82 Branch 70 70: Label - 84: 10(int) Load 61(c) + 84: 10(int) Load 61(c) SelectionMerge 88 None Switch 84 87 case 1: 85 case 2: 86 85: Label - 89: 7(float) Load 74(x) - 90: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 89 - 91: 7(float) Load 72(f) + 89: 7(float) Load 74(x) + 90: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 89 + 91: 7(float) Load 72(f) 92: 7(float) FAdd 91 90 - Store 72(f) 92 + Store 72(f) 92 Branch 86 86: Label - 93: 7(float) Load 74(x) - 94: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 93 - 95: 7(float) Load 72(f) + 93: 7(float) Load 74(x) + 94: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 93 + 95: 7(float) Load 72(f) 96: 7(float) FAdd 95 94 - Store 72(f) 96 + Store 72(f) 96 Branch 88 87: Label - 98: 7(float) Load 74(x) - 99: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 98 - 100: 7(float) Load 72(f) + 98: 7(float) Load 74(x) + 99: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 98 + 100: 7(float) Load 72(f) 101: 7(float) FAdd 100 99 - Store 72(f) 101 + Store 72(f) 101 Branch 88 88: Label - 103: 10(int) Load 61(c) + 103: 10(int) Load 61(c) SelectionMerge 106 None Switch 103 106 case 1: 104 case 2: 105 104: Label - 107: 7(float) Load 74(x) - 108: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 107 - 109: 7(float) Load 72(f) + 107: 7(float) Load 74(x) + 108: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 107 + 109: 7(float) Load 72(f) 110: 7(float) FAdd 109 108 - Store 72(f) 110 + Store 72(f) 110 Branch 106 105: Label - 112: 7(float) Load 74(x) - 113: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 112 - 114: 7(float) Load 72(f) + 112: 7(float) Load 74(x) + 113: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 112 + 114: 7(float) Load 72(f) 115: 7(float) FAdd 114 113 - Store 72(f) 115 + Store 72(f) 115 Branch 106 106: Label - 118: 10(int) Load 61(c) + 118: 10(int) Load 61(c) SelectionMerge 122 None Switch 118 121 case 1: 119 case 2: 120 119: Label - 123: 7(float) Load 74(x) - 124: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 123 - 125: 7(float) Load 72(f) + 123: 7(float) Load 74(x) + 124: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 123 + 125: 7(float) Load 72(f) 126: 7(float) FAdd 125 124 - Store 72(f) 126 + Store 72(f) 126 Branch 122 120: Label - 129: 10(int) Load 128(d) + 129: 10(int) Load 128(d) SelectionMerge 132 None Switch 129 132 case 1: 130 case 2: 131 130: Label - 133: 7(float) Load 74(x) - 134: 7(float) Load 74(x) + 133: 7(float) Load 74(x) + 134: 7(float) Load 74(x) 135: 7(float) FMul 133 134 - 136: 7(float) Load 74(x) + 136: 7(float) Load 74(x) 137: 7(float) FMul 135 136 - 138: 7(float) Load 72(f) + 138: 7(float) Load 72(f) 139: 7(float) FAdd 138 137 - Store 72(f) 139 + Store 72(f) 139 Branch 132 131: Label - 141: 7(float) Load 74(x) - 142: 7(float) Load 74(x) + 141: 7(float) Load 74(x) + 142: 7(float) Load 74(x) 143: 7(float) FMul 141 142 - 144: 7(float) Load 72(f) + 144: 7(float) Load 72(f) 145: 7(float) FAdd 144 143 - Store 72(f) 145 + Store 72(f) 145 Branch 132 132: Label Branch 122 121: Label - 149: 7(float) Load 74(x) - 150: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 149 - 151: 7(float) Load 72(f) + 149: 7(float) Load 74(x) + 150: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 149 + 151: 7(float) Load 72(f) 152: 7(float) FAdd 151 150 - Store 72(f) 152 + Store 72(f) 152 Branch 122 122: Label - Store 154(i) 155 + Store 154(i) 155 Branch 156 156: Label - 159: 10(int) Load 154(i) + 159: 10(int) Load 154(i) 162: 161(bool) SLessThan 159 160 LoopMerge 157 None - BranchConditional 162 158 157 + BranchConditional 162 158 157 158: Label - 163: 10(int) Load 61(c) + 163: 10(int) Load 61(c) SelectionMerge 167 None Switch 163 166 case 1: 164 case 2: 165 164: Label - 168: 7(float) Load 74(x) - 169: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 168 - 170: 7(float) Load 72(f) + 168: 7(float) Load 74(x) + 169: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 168 + 170: 7(float) Load 72(f) 171: 7(float) FAdd 170 169 - Store 72(f) 171 - Store 172(j) 173 + Store 72(f) 171 + Store 172(j) 173 Branch 174 174: Label - 177: 10(int) Load 172(j) + 177: 10(int) Load 172(j) 179: 161(bool) SLessThan 177 178 LoopMerge 175 None - BranchConditional 179 176 175 + BranchConditional 179 176 175 176: Label - 180: 7(float) Load 72(f) + 180: 7(float) Load 72(f) 181: 7(float) FAdd 180 48 - Store 72(f) 181 - 182: 7(float) Load 72(f) + Store 72(f) 181 + 182: 7(float) Load 72(f) 184: 161(bool) FOrdLessThan 182 183 SelectionMerge 186 None - BranchConditional 184 185 186 + BranchConditional 184 185 186 185: Label Branch 175 186: Label - 188: 10(int) Load 172(j) + 188: 10(int) Load 172(j) 189: 10(int) IAdd 188 64 - Store 172(j) 189 + Store 172(j) 189 Branch 174 175: Label Branch 167 165: Label - 191: 7(float) Load 74(x) - 192: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 191 - 193: 7(float) Load 72(f) + 191: 7(float) Load 74(x) + 192: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 191 + 193: 7(float) Load 72(f) 194: 7(float) FAdd 193 192 - Store 72(f) 194 + Store 72(f) 194 Branch 167 166: Label - 197: 7(float) Load 74(x) - 198: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 197 - 199: 7(float) Load 72(f) + 197: 7(float) Load 74(x) + 198: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 197 + 199: 7(float) Load 72(f) 200: 7(float) FAdd 199 198 - Store 72(f) 200 + Store 72(f) 200 Branch 167 167: Label - 202: 7(float) Load 72(f) + 202: 7(float) Load 72(f) 204: 161(bool) FOrdLessThan 202 203 SelectionMerge 206 None - BranchConditional 204 205 206 + BranchConditional 204 205 206 205: Label Branch 157 206: Label - 208: 10(int) Load 154(i) + 208: 10(int) Load 154(i) 209: 10(int) IAdd 208 64 - Store 154(i) 209 + Store 154(i) 209 Branch 156 157: Label - 210: 10(int) Load 61(c) + 210: 10(int) Load 61(c) SelectionMerge 213 None Switch 210 213 case 1: 211 case 2: 212 211: Label - 214: 7(float) Load 74(x) - 215: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 214 - 216: 7(float) Load 72(f) + 214: 7(float) Load 74(x) + 215: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 214 + 216: 7(float) Load 72(f) 217: 7(float) FAdd 216 215 - Store 72(f) 217 + Store 72(f) 217 Branch 213 212: Label Branch 213 213: Label - 223: 7(float) Load 72(f) - 224: 10(int) Load 59(local) + 223: 7(float) Load 72(f) + 224: 10(int) Load 59(local) 225: 7(float) ConvertSToF 224 226: 7(float) FAdd 223 225 - Store 222(color) 226 - 230: 8(fvec4) Load 228(v) - Store 229(param) 230 - 232: 8(fvec4) Load 228(v) - Store 231(param) 232 - 234: 10(int) Load 61(c) - Store 233(param) 234 + Store 222(color) 226 + 230: 8(fvec4) Load 228(v) + Store 229(param) 230 + 232: 8(fvec4) Load 228(v) + Store 231(param) 232 + 234: 10(int) Load 61(c) + Store 233(param) 234 235: 8(fvec4) FunctionCall 16(foo1(vf4;vf4;i1;) 229(param) 231(param) 233(param) 236: 7(float) CompositeExtract 235 1 - 237: 7(float) Load 222(color) + 237: 7(float) Load 222(color) 238: 7(float) FAdd 237 236 - Store 222(color) 238 - 240: 8(fvec4) Load 228(v) - Store 239(param) 240 - 242: 8(fvec4) Load 228(v) - Store 241(param) 242 - 244: 10(int) Load 61(c) - Store 243(param) 244 + Store 222(color) 238 + 240: 8(fvec4) Load 228(v) + Store 239(param) 240 + 242: 8(fvec4) Load 228(v) + Store 241(param) 242 + 244: 10(int) Load 61(c) + Store 243(param) 244 245: 8(fvec4) FunctionCall 21(foo2(vf4;vf4;i1;) 239(param) 241(param) 243(param) 246: 7(float) CompositeExtract 245 2 - 247: 7(float) Load 222(color) + 247: 7(float) Load 222(color) 248: 7(float) FAdd 247 246 - Store 222(color) 248 - 249: 10(int) Load 61(c) + Store 222(color) 248 + 249: 10(int) Load 61(c) SelectionMerge 252 None Switch 249 251 case 0: 250 @@ -332,9 +334,9 @@ Linked fragment stage: 251: Label Branch 252 252: Label - 256: 10(int) Load 61(c) + 256: 10(int) Load 61(c) SelectionMerge 258 None - Switch 256 257 + Switch 256 257 257: Label Branch 258 258: Label @@ -347,7 +349,7 @@ Linked fragment stage: 14(v2): 9(ptr) FunctionParameter 15(i1): 11(ptr) FunctionParameter 17: Label - 23: 10(int) Load 15(i1) + 23: 10(int) Load 15(i1) SelectionMerge 27 None Switch 23 27 case 0: 24 @@ -355,14 +357,14 @@ Linked fragment stage: case 1: 25 case 3: 26 24: Label - 28: 8(fvec4) Load 13(v1) + 28: 8(fvec4) Load 13(v1) ReturnValue 28 25: Label - 30: 8(fvec4) Load 14(v2) + 30: 8(fvec4) Load 14(v2) ReturnValue 30 26: Label - 32: 8(fvec4) Load 13(v1) - 33: 8(fvec4) Load 14(v2) + 32: 8(fvec4) Load 13(v1) + 33: 8(fvec4) Load 14(v2) 34: 8(fvec4) FMul 32 33 ReturnValue 34 27: Label @@ -373,7 +375,7 @@ Linked fragment stage: 19(v2): 9(ptr) FunctionParameter 20(i1): 11(ptr) FunctionParameter 22: Label - 40: 10(int) Load 20(i1) + 40: 10(int) Load 20(i1) SelectionMerge 45 None Switch 40 45 case 0: 41 @@ -381,16 +383,16 @@ Linked fragment stage: case 1: 43 case 3: 44 41: Label - 46: 8(fvec4) Load 18(v1) + 46: 8(fvec4) Load 18(v1) ReturnValue 46 42: Label ReturnValue 49 43: Label - 51: 8(fvec4) Load 19(v2) + 51: 8(fvec4) Load 19(v2) ReturnValue 51 44: Label - 53: 8(fvec4) Load 18(v1) - 54: 8(fvec4) Load 19(v2) + 53: 8(fvec4) Load 18(v1) + 54: 8(fvec4) Load 19(v2) 55: 8(fvec4) FMul 53 54 ReturnValue 55 45: Label diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out old mode 100644 new mode 100755 index e39c88c0..5d5c3b05 --- a/Test/baseResults/spv.swizzle.frag.out +++ b/Test/baseResults/spv.swizzle.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 112 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "blendscale" Name 13 "w" @@ -26,26 +28,26 @@ Linked fragment stage: Name 82 "c" Name 84 "rep" Name 111 "blend" - Decorate 30(t) Smooth + Decorate 30(t) Smooth Decorate 70(gl_FragColor) BuiltIn FragColor - Decorate 111(blend) NoStaticUse + Decorate 111(blend) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypePointer Function 7(float) 10: 7(float) Constant 1071971828 11: TypeVector 7(float) 4 12: TypePointer Function 11(fvec4) 14: TypePointer UniformConstant 11(fvec4) - 15(u): 14(ptr) Variable UniformConstant + 15(u): 14(ptr) Variable UniformConstant 28: TypeVector 7(float) 2 29: TypePointer Input 28(fvec2) - 30(t): 29(ptr) Variable Input + 30(t): 29(ptr) Variable Input 54: TypeBool 55: TypePointer UniformConstant 54(bool) - 56(p): 55(ptr) Variable UniformConstant + 56(p): 55(ptr) Variable UniformConstant 69: TypePointer Output 11(fvec4) -70(gl_FragColor): 69(ptr) Variable Output +70(gl_FragColor): 69(ptr) Variable Output 81: TypePointer Function 28(fvec2) 85: 7(float) Constant 0 86: 7(float) Constant 1065353216 @@ -53,123 +55,123 @@ Linked fragment stage: 93: 7(float) Constant 3212836864 104: 7(float) Constant 1079613850 110: TypePointer UniformConstant 7(float) - 111(blend): 110(ptr) Variable UniformConstant + 111(blend): 110(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 9(blendscale): 8(ptr) Variable Function - 13(w): 12(ptr) Variable Function - 17(w_dep): 12(ptr) Variable Function - 19(w_reorder): 12(ptr) Variable Function - 21(w2): 12(ptr) Variable Function - 23(w_flow): 12(ptr) Variable Function - 49(w_undef): 12(ptr) Variable Function - 82(c): 81(ptr) Variable Function - 84(rep): 12(ptr) Variable Function - Store 9(blendscale) 10 - 16: 11(fvec4) Load 15(u) - Store 13(w) 16 - 18: 11(fvec4) Load 15(u) - Store 17(w_dep) 18 - 20: 11(fvec4) Load 15(u) - Store 19(w_reorder) 20 - 22: 11(fvec4) Load 15(u) - Store 21(w2) 22 - 24: 11(fvec4) Load 15(u) - Store 23(w_flow) 24 - 25: 7(float) Load 9(blendscale) - 26: 11(fvec4) Load 19(w_reorder) + 9(blendscale): 8(ptr) Variable Function + 13(w): 12(ptr) Variable Function + 17(w_dep): 12(ptr) Variable Function + 19(w_reorder): 12(ptr) Variable Function + 21(w2): 12(ptr) Variable Function + 23(w_flow): 12(ptr) Variable Function + 49(w_undef): 12(ptr) Variable Function + 82(c): 81(ptr) Variable Function + 84(rep): 12(ptr) Variable Function + Store 9(blendscale) 10 + 16: 11(fvec4) Load 15(u) + Store 13(w) 16 + 18: 11(fvec4) Load 15(u) + Store 17(w_dep) 18 + 20: 11(fvec4) Load 15(u) + Store 19(w_reorder) 20 + 22: 11(fvec4) Load 15(u) + Store 21(w2) 22 + 24: 11(fvec4) Load 15(u) + Store 23(w_flow) 24 + 25: 7(float) Load 9(blendscale) + 26: 11(fvec4) Load 19(w_reorder) 27: 11(fvec4) CompositeInsert 25 26 2 - Store 19(w_reorder) 27 - 31: 28(fvec2) Load 30(t) - 32: 11(fvec4) Load 13(w) + Store 19(w_reorder) 27 + 31: 28(fvec2) Load 30(t) + 32: 11(fvec4) Load 13(w) 33: 11(fvec4) VectorShuffle 32 31 0 5 2 4 - Store 13(w) 33 - 34: 7(float) Load 9(blendscale) - 35: 11(fvec4) Load 19(w_reorder) + Store 13(w) 33 + 34: 7(float) Load 9(blendscale) + 35: 11(fvec4) Load 19(w_reorder) 36: 11(fvec4) CompositeInsert 34 35 0 - Store 19(w_reorder) 36 - 37: 11(fvec4) Load 15(u) + Store 19(w_reorder) 36 + 37: 11(fvec4) Load 15(u) 38: 11(fvec4) VectorShuffle 37 37 2 3 0 1 - Store 21(w2) 38 - 39: 7(float) Load 9(blendscale) - 40: 11(fvec4) Load 19(w_reorder) + Store 21(w2) 38 + 39: 7(float) Load 9(blendscale) + 40: 11(fvec4) Load 19(w_reorder) 41: 11(fvec4) CompositeInsert 39 40 1 - Store 19(w_reorder) 41 - 42: 11(fvec4) Load 21(w2) + Store 19(w_reorder) 41 + 42: 11(fvec4) Load 21(w2) 43: 28(fvec2) VectorShuffle 42 42 0 2 - 44: 11(fvec4) Load 17(w_dep) + 44: 11(fvec4) Load 17(w_dep) 45: 11(fvec4) VectorShuffle 44 43 4 5 2 3 - Store 17(w_dep) 45 - 46: 28(fvec2) Load 30(t) - 47: 11(fvec4) Load 17(w_dep) + Store 17(w_dep) 45 + 46: 28(fvec2) Load 30(t) + 47: 11(fvec4) Load 17(w_dep) 48: 11(fvec4) VectorShuffle 47 46 0 1 4 5 - Store 17(w_dep) 48 - 50: 11(fvec4) Load 15(u) + Store 17(w_dep) 48 + 50: 11(fvec4) Load 15(u) 51: 28(fvec2) VectorShuffle 50 50 2 3 - 52: 11(fvec4) Load 49(w_undef) + 52: 11(fvec4) Load 49(w_undef) 53: 11(fvec4) VectorShuffle 52 51 4 5 2 3 - Store 49(w_undef) 53 - 57: 54(bool) Load 56(p) + Store 49(w_undef) 53 + 57: 54(bool) Load 56(p) SelectionMerge 59 None - BranchConditional 57 58 64 + BranchConditional 57 58 64 58: Label - 60: 28(fvec2) Load 30(t) + 60: 28(fvec2) Load 30(t) 61: 7(float) CompositeExtract 60 0 - 62: 11(fvec4) Load 23(w_flow) + 62: 11(fvec4) Load 23(w_flow) 63: 11(fvec4) CompositeInsert 61 62 0 - Store 23(w_flow) 63 + Store 23(w_flow) 63 Branch 59 64: Label - 65: 28(fvec2) Load 30(t) + 65: 28(fvec2) Load 30(t) 66: 7(float) CompositeExtract 65 1 - 67: 11(fvec4) Load 23(w_flow) + 67: 11(fvec4) Load 23(w_flow) 68: 11(fvec4) CompositeInsert 66 67 0 - Store 23(w_flow) 68 + Store 23(w_flow) 68 Branch 59 59: Label - 71: 11(fvec4) Load 19(w_reorder) - 72: 11(fvec4) Load 49(w_undef) - 73: 11(fvec4) Load 13(w) - 74: 11(fvec4) Load 21(w2) + 71: 11(fvec4) Load 19(w_reorder) + 72: 11(fvec4) Load 49(w_undef) + 73: 11(fvec4) Load 13(w) + 74: 11(fvec4) Load 21(w2) 75: 11(fvec4) FMul 73 74 - 76: 11(fvec4) Load 17(w_dep) + 76: 11(fvec4) Load 17(w_dep) 77: 11(fvec4) FMul 75 76 - 78: 11(fvec4) Load 23(w_flow) + 78: 11(fvec4) Load 23(w_flow) 79: 11(fvec4) FMul 77 78 - 80: 11(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 71 72 79 - Store 70(gl_FragColor) 80 - 83: 28(fvec2) Load 30(t) - Store 82(c) 83 - Store 84(rep) 87 - 88: 28(fvec2) Load 82(c) + 80: 11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 71 72 79 + Store 70(gl_FragColor) 80 + 83: 28(fvec2) Load 30(t) + Store 82(c) 83 + Store 84(rep) 87 + 88: 28(fvec2) Load 82(c) 89: 7(float) CompositeExtract 88 0 90: 54(bool) FOrdLessThan 89 85 SelectionMerge 92 None - BranchConditional 90 91 92 + BranchConditional 90 91 92 91: Label - 94: 28(fvec2) Load 82(c) + 94: 28(fvec2) Load 82(c) 95: 7(float) CompositeExtract 94 0 96: 7(float) FMul 95 93 - 97: 28(fvec2) Load 82(c) + 97: 28(fvec2) Load 82(c) 98: 28(fvec2) CompositeInsert 96 97 0 - Store 82(c) 98 + Store 82(c) 98 Branch 92 92: Label - 99: 28(fvec2) Load 82(c) + 99: 28(fvec2) Load 82(c) 100: 7(float) CompositeExtract 99 0 101: 54(bool) FOrdLessThanEqual 100 86 SelectionMerge 103 None - BranchConditional 101 102 103 + BranchConditional 101 102 103 102: Label - 105: 11(fvec4) Load 84(rep) + 105: 11(fvec4) Load 84(rep) 106: 11(fvec4) CompositeInsert 104 105 0 - Store 84(rep) 106 + Store 84(rep) 106 Branch 103 103: Label - 107: 11(fvec4) Load 84(rep) - 108: 11(fvec4) Load 70(gl_FragColor) + 107: 11(fvec4) Load 84(rep) + 108: 11(fvec4) Load 70(gl_FragColor) 109: 11(fvec4) FAdd 108 107 - Store 70(gl_FragColor) 109 + Store 70(gl_FragColor) 109 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out old mode 100644 new mode 100755 index 6176f3cb..58bed1d3 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -5,82 +5,86 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 54 +// Id's are bound by 56 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "blendscale" Name 13 "v" - Name 16 "texSampler2D" - Name 20 "t" - Name 23 "scale" - Name 30 "w" - Name 33 "texSampler3D" - Name 37 "coords" - Name 43 "gl_FragColor" - Name 46 "u" - Name 49 "blend" - Decorate 20(t) Smooth - Decorate 37(coords) Smooth - Decorate 43(gl_FragColor) BuiltIn FragColor + Name 17 "texSampler2D" + Name 21 "t" + Name 24 "scale" + Name 31 "w" + Name 35 "texSampler3D" + Name 39 "coords" + Name 45 "gl_FragColor" + Name 48 "u" + Name 51 "blend" + Decorate 21(t) Smooth + Decorate 39(coords) Smooth + Decorate 45(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypePointer Function 7(float) 10: 7(float) Constant 1071971828 11: TypeVector 7(float) 4 12: TypePointer Function 11(fvec4) - 14: TypeSampler7(float) 2D filter+texture - 15: TypePointer UniformConstant 14 -16(texSampler2D): 15(ptr) Variable UniformConstant - 18: TypeVector 7(float) 2 - 19: TypePointer Input 18(fvec2) - 20(t): 19(ptr) Variable Input - 22: TypePointer UniformConstant 18(fvec2) - 23(scale): 22(ptr) Variable UniformConstant - 31: TypeSampler7(float) 3D filter+texture - 32: TypePointer UniformConstant 31 -33(texSampler3D): 32(ptr) Variable UniformConstant - 35: TypeVector 7(float) 3 - 36: TypePointer Input 35(fvec3) - 37(coords): 36(ptr) Variable Input - 42: TypePointer Output 11(fvec4) -43(gl_FragColor): 42(ptr) Variable Output - 45: TypePointer UniformConstant 11(fvec4) - 46(u): 45(ptr) Variable UniformConstant - 48: TypePointer UniformConstant 7(float) - 49(blend): 48(ptr) Variable UniformConstant + 14: TypeImage 7(float) 2D sampled format:Unknown + 15: TypeSampledImage 14 + 16: TypePointer UniformConstant 15 +17(texSampler2D): 16(ptr) Variable UniformConstant + 19: TypeVector 7(float) 2 + 20: TypePointer Input 19(fvec2) + 21(t): 20(ptr) Variable Input + 23: TypePointer UniformConstant 19(fvec2) + 24(scale): 23(ptr) Variable UniformConstant + 32: TypeImage 7(float) 3D sampled format:Unknown + 33: TypeSampledImage 32 + 34: TypePointer UniformConstant 33 +35(texSampler3D): 34(ptr) Variable UniformConstant + 37: TypeVector 7(float) 3 + 38: TypePointer Input 37(fvec3) + 39(coords): 38(ptr) Variable Input + 44: TypePointer Output 11(fvec4) +45(gl_FragColor): 44(ptr) Variable Output + 47: TypePointer UniformConstant 11(fvec4) + 48(u): 47(ptr) Variable UniformConstant + 50: TypePointer UniformConstant 7(float) + 51(blend): 50(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 9(blendscale): 8(ptr) Variable Function - 13(v): 12(ptr) Variable Function - 30(w): 12(ptr) Variable Function - Store 9(blendscale) 10 - 17: 14 Load 16(texSampler2D) - 21: 18(fvec2) Load 20(t) - 24: 18(fvec2) Load 23(scale) - 25: 18(fvec2) FAdd 21 24 - 26: 18(fvec2) Load 23(scale) - 27: 18(fvec2) FDiv 25 26 - 28: 11(fvec4) TextureSample 17 27 - 29: 11(fvec4) VectorShuffle 28 28 3 2 1 0 - Store 13(v) 29 - 34: 31 Load 33(texSampler3D) - 38: 35(fvec3) Load 37(coords) - 39: 11(fvec4) TextureSample 34 38 - 40: 11(fvec4) Load 13(v) - 41: 11(fvec4) FAdd 39 40 - Store 30(w) 41 - 44: 11(fvec4) Load 30(w) - 47: 11(fvec4) Load 46(u) - 50: 7(float) Load 49(blend) - 51: 7(float) Load 9(blendscale) - 52: 7(float) FMul 50 51 - 53: 11(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 44 47 52 - Store 43(gl_FragColor) 53 + 9(blendscale): 8(ptr) Variable Function + 13(v): 12(ptr) Variable Function + 31(w): 12(ptr) Variable Function + Store 9(blendscale) 10 + 18: 15 Load 17(texSampler2D) + 22: 19(fvec2) Load 21(t) + 25: 19(fvec2) Load 24(scale) + 26: 19(fvec2) FAdd 22 25 + 27: 19(fvec2) Load 24(scale) + 28: 19(fvec2) FDiv 26 27 + 29: 11(fvec4) ImageSampleImplicitLod 18 28 + 30: 11(fvec4) VectorShuffle 29 29 3 2 1 0 + Store 13(v) 30 + 36: 33 Load 35(texSampler3D) + 40: 37(fvec3) Load 39(coords) + 41: 11(fvec4) ImageSampleImplicitLod 36 40 + 42: 11(fvec4) Load 13(v) + 43: 11(fvec4) FAdd 41 42 + Store 31(w) 43 + 46: 11(fvec4) Load 31(w) + 49: 11(fvec4) Load 48(u) + 52: 7(float) Load 51(blend) + 53: 7(float) Load 9(blendscale) + 54: 7(float) FMul 52 53 + 55: 11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 46 49 54 + Store 45(gl_FragColor) 55 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out old mode 100644 new mode 100755 index cf62bc12..0cc4d529 --- a/Test/baseResults/spv.texture.vert.out +++ b/Test/baseResults/spv.texture.vert.out @@ -5,32 +5,33 @@ Linked vertex stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 132 +// Id's are bound by 142 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "lod" Name 11 "coords1D" Name 15 "coords3D" Name 21 "coords4D" Name 24 "color" - Name 29 "texSampler1D" - Name 39 "coords2D" - Name 53 "texSampler2D" - Name 74 "texSampler3D" - Name 89 "texSamplerCube" - Name 98 "shadowSampler1D" - Name 107 "shadowSampler2D" - Name 127 "gl_Position" - Name 131 "gl_VertexID" - Decorate 127(gl_Position) BuiltIn Position - Decorate 131(gl_VertexID) BuiltIn VertexId - Decorate 131(gl_VertexID) NoStaticUse + Name 30 "texSampler1D" + Name 40 "coords2D" + Name 55 "texSampler2D" + Name 77 "texSampler3D" + Name 93 "texSamplerCube" + Name 103 "shadowSampler1D" + Name 114 "shadowSampler2D" + Name 137 "gl_Position" + Name 141 "gl_VertexID" + Decorate 137(gl_Position) BuiltIn Position + Decorate 141(gl_VertexID) BuiltIn VertexId + Decorate 141(gl_VertexID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypePointer Function 7(float) 10: 7(float) Constant 1077936128 @@ -46,137 +47,147 @@ Linked vertex stage: 23: 19(fvec4) ConstantComposite 12 16 17 22 25: 7(float) Constant 0 26: 19(fvec4) ConstantComposite 25 25 25 25 - 27: TypeSampler7(float) 1D filter+texture - 28: TypePointer UniformConstant 27 -29(texSampler1D): 28(ptr) Variable UniformConstant - 37: TypeVector 7(float) 2 - 38: TypePointer Input 37(fvec2) - 39(coords2D): 38(ptr) Variable Input - 51: TypeSampler7(float) 2D filter+texture - 52: TypePointer UniformConstant 51 -53(texSampler2D): 52(ptr) Variable UniformConstant - 72: TypeSampler7(float) 3D filter+texture - 73: TypePointer UniformConstant 72 -74(texSampler3D): 73(ptr) Variable UniformConstant - 87: TypeSampler7(float) Cube filter+texture - 88: TypePointer UniformConstant 87 -89(texSamplerCube): 88(ptr) Variable UniformConstant - 96: TypeSampler7(float) 1D filter+texture depth - 97: TypePointer UniformConstant 96 -98(shadowSampler1D): 97(ptr) Variable UniformConstant - 105: TypeSampler7(float) 2D filter+texture depth - 106: TypePointer UniformConstant 105 -107(shadowSampler2D): 106(ptr) Variable UniformConstant - 126: TypePointer Output 19(fvec4) -127(gl_Position): 126(ptr) Variable Output - 129: TypeInt 32 1 - 130: TypePointer Input 129(int) -131(gl_VertexID): 130(ptr) Variable Input + 27: TypeImage 7(float) 1D sampled format:Unknown + 28: TypeSampledImage 27 + 29: TypePointer UniformConstant 28 +30(texSampler1D): 29(ptr) Variable UniformConstant + 38: TypeVector 7(float) 2 + 39: TypePointer Input 38(fvec2) + 40(coords2D): 39(ptr) Variable Input + 52: TypeImage 7(float) 2D sampled format:Unknown + 53: TypeSampledImage 52 + 54: TypePointer UniformConstant 53 +55(texSampler2D): 54(ptr) Variable UniformConstant + 74: TypeImage 7(float) 3D sampled format:Unknown + 75: TypeSampledImage 74 + 76: TypePointer UniformConstant 75 +77(texSampler3D): 76(ptr) Variable UniformConstant + 90: TypeImage 7(float) Cube sampled format:Unknown + 91: TypeSampledImage 90 + 92: TypePointer UniformConstant 91 +93(texSamplerCube): 92(ptr) Variable UniformConstant + 100: TypeImage 7(float) 1D depth sampled format:Unknown + 101: TypeSampledImage 100 + 102: TypePointer UniformConstant 101 +103(shadowSampler1D): 102(ptr) Variable UniformConstant + 111: TypeImage 7(float) 2D depth sampled format:Unknown + 112: TypeSampledImage 111 + 113: TypePointer UniformConstant 112 +114(shadowSampler2D): 113(ptr) Variable UniformConstant + 136: TypePointer Output 19(fvec4) +137(gl_Position): 136(ptr) Variable Output + 139: TypeInt 32 1 + 140: TypePointer Input 139(int) +141(gl_VertexID): 140(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(lod): 8(ptr) Variable Function - 11(coords1D): 8(ptr) Variable Function - 15(coords3D): 14(ptr) Variable Function - 21(coords4D): 20(ptr) Variable Function - 24(color): 20(ptr) Variable Function - Store 9(lod) 10 - Store 11(coords1D) 12 - Store 15(coords3D) 18 - Store 21(coords4D) 23 - Store 24(color) 26 - 30: 27 Load 29(texSampler1D) - 31: 7(float) Load 11(coords1D) - 32: 7(float) Load 9(lod) - 33: 19(fvec4) TextureSampleLod 30 31 32 - 34: 19(fvec4) Load 24(color) - 35: 19(fvec4) FAdd 34 33 - Store 24(color) 35 - 36: 27 Load 29(texSampler1D) - 40: 37(fvec2) Load 39(coords2D) - 41: 7(float) Load 9(lod) - 42: 19(fvec4) TextureSampleProjLod 36 40 41 - 43: 19(fvec4) Load 24(color) - 44: 19(fvec4) FAdd 43 42 - Store 24(color) 44 - 45: 27 Load 29(texSampler1D) - 46: 19(fvec4) Load 21(coords4D) - 47: 7(float) Load 9(lod) - 48: 19(fvec4) TextureSampleProjLod 45 46 47 - 49: 19(fvec4) Load 24(color) - 50: 19(fvec4) FAdd 49 48 - Store 24(color) 50 - 54: 51 Load 53(texSampler2D) - 55: 37(fvec2) Load 39(coords2D) - 56: 7(float) Load 9(lod) - 57: 19(fvec4) TextureSampleLod 54 55 56 - 58: 19(fvec4) Load 24(color) - 59: 19(fvec4) FAdd 58 57 - Store 24(color) 59 - 60: 51 Load 53(texSampler2D) - 61: 13(fvec3) Load 15(coords3D) - 62: 7(float) Load 9(lod) - 63: 19(fvec4) TextureSampleProjLod 60 61 62 - 64: 19(fvec4) Load 24(color) - 65: 19(fvec4) FAdd 64 63 - Store 24(color) 65 - 66: 51 Load 53(texSampler2D) - 67: 19(fvec4) Load 21(coords4D) - 68: 7(float) Load 9(lod) - 69: 19(fvec4) TextureSampleProjLod 66 67 68 - 70: 19(fvec4) Load 24(color) - 71: 19(fvec4) FAdd 70 69 - Store 24(color) 71 - 75: 72 Load 74(texSampler3D) - 76: 13(fvec3) Load 15(coords3D) - 77: 7(float) Load 9(lod) - 78: 19(fvec4) TextureSampleLod 75 76 77 - 79: 19(fvec4) Load 24(color) - 80: 19(fvec4) FAdd 79 78 - Store 24(color) 80 - 81: 72 Load 74(texSampler3D) - 82: 19(fvec4) Load 21(coords4D) - 83: 7(float) Load 9(lod) - 84: 19(fvec4) TextureSampleProjLod 81 82 83 - 85: 19(fvec4) Load 24(color) - 86: 19(fvec4) FAdd 85 84 - Store 24(color) 86 - 90: 87 Load 89(texSamplerCube) - 91: 13(fvec3) Load 15(coords3D) - 92: 7(float) Load 9(lod) - 93: 19(fvec4) TextureSampleLod 90 91 92 - 94: 19(fvec4) Load 24(color) - 95: 19(fvec4) FAdd 94 93 - Store 24(color) 95 - 99: 96 Load 98(shadowSampler1D) - 100: 13(fvec3) Load 15(coords3D) - 101: 7(float) Load 9(lod) - 102: 19(fvec4) TextureSampleLod 99 100 101 - 103: 19(fvec4) Load 24(color) - 104: 19(fvec4) FAdd 103 102 - Store 24(color) 104 - 108: 105 Load 107(shadowSampler2D) - 109: 13(fvec3) Load 15(coords3D) - 110: 7(float) Load 9(lod) - 111: 19(fvec4) TextureSampleLod 108 109 110 - 112: 19(fvec4) Load 24(color) - 113: 19(fvec4) FAdd 112 111 - Store 24(color) 113 - 114: 96 Load 98(shadowSampler1D) - 115: 19(fvec4) Load 21(coords4D) - 116: 7(float) Load 9(lod) - 117: 19(fvec4) TextureSampleProjLod 114 115 116 - 118: 19(fvec4) Load 24(color) - 119: 19(fvec4) FAdd 118 117 - Store 24(color) 119 - 120: 105 Load 107(shadowSampler2D) - 121: 19(fvec4) Load 21(coords4D) - 122: 7(float) Load 9(lod) - 123: 19(fvec4) TextureSampleProjLod 120 121 122 - 124: 19(fvec4) Load 24(color) - 125: 19(fvec4) FAdd 124 123 - Store 24(color) 125 - 128: 19(fvec4) Load 24(color) - Store 127(gl_Position) 128 + 9(lod): 8(ptr) Variable Function + 11(coords1D): 8(ptr) Variable Function + 15(coords3D): 14(ptr) Variable Function + 21(coords4D): 20(ptr) Variable Function + 24(color): 20(ptr) Variable Function + Store 9(lod) 10 + Store 11(coords1D) 12 + Store 15(coords3D) 18 + Store 21(coords4D) 23 + Store 24(color) 26 + 31: 28 Load 30(texSampler1D) + 32: 7(float) Load 11(coords1D) + 33: 7(float) Load 9(lod) + 34: 19(fvec4) ImageSampleExplicitLod 31 32 33 + 35: 19(fvec4) Load 24(color) + 36: 19(fvec4) FAdd 35 34 + Store 24(color) 36 + 37: 28 Load 30(texSampler1D) + 41: 38(fvec2) Load 40(coords2D) + 42: 7(float) Load 9(lod) + 43: 19(fvec4) ImageSampleProjExplicitLod 37 41 42 + 44: 19(fvec4) Load 24(color) + 45: 19(fvec4) FAdd 44 43 + Store 24(color) 45 + 46: 28 Load 30(texSampler1D) + 47: 19(fvec4) Load 21(coords4D) + 48: 7(float) Load 9(lod) + 49: 19(fvec4) ImageSampleProjExplicitLod 46 47 48 + 50: 19(fvec4) Load 24(color) + 51: 19(fvec4) FAdd 50 49 + Store 24(color) 51 + 56: 53 Load 55(texSampler2D) + 57: 38(fvec2) Load 40(coords2D) + 58: 7(float) Load 9(lod) + 59: 19(fvec4) ImageSampleExplicitLod 56 57 58 + 60: 19(fvec4) Load 24(color) + 61: 19(fvec4) FAdd 60 59 + Store 24(color) 61 + 62: 53 Load 55(texSampler2D) + 63: 13(fvec3) Load 15(coords3D) + 64: 7(float) Load 9(lod) + 65: 19(fvec4) ImageSampleProjExplicitLod 62 63 64 + 66: 19(fvec4) Load 24(color) + 67: 19(fvec4) FAdd 66 65 + Store 24(color) 67 + 68: 53 Load 55(texSampler2D) + 69: 19(fvec4) Load 21(coords4D) + 70: 7(float) Load 9(lod) + 71: 19(fvec4) ImageSampleProjExplicitLod 68 69 70 + 72: 19(fvec4) Load 24(color) + 73: 19(fvec4) FAdd 72 71 + Store 24(color) 73 + 78: 75 Load 77(texSampler3D) + 79: 13(fvec3) Load 15(coords3D) + 80: 7(float) Load 9(lod) + 81: 19(fvec4) ImageSampleExplicitLod 78 79 80 + 82: 19(fvec4) Load 24(color) + 83: 19(fvec4) FAdd 82 81 + Store 24(color) 83 + 84: 75 Load 77(texSampler3D) + 85: 19(fvec4) Load 21(coords4D) + 86: 7(float) Load 9(lod) + 87: 19(fvec4) ImageSampleProjExplicitLod 84 85 86 + 88: 19(fvec4) Load 24(color) + 89: 19(fvec4) FAdd 88 87 + Store 24(color) 89 + 94: 91 Load 93(texSamplerCube) + 95: 13(fvec3) Load 15(coords3D) + 96: 7(float) Load 9(lod) + 97: 19(fvec4) ImageSampleExplicitLod 94 95 96 + 98: 19(fvec4) Load 24(color) + 99: 19(fvec4) FAdd 98 97 + Store 24(color) 99 + 104: 101 Load 103(shadowSampler1D) + 105: 13(fvec3) Load 15(coords3D) + 106: 7(float) Load 9(lod) + 107: 7(float) CompositeExtract 105 2 + 108: 19(fvec4) ImageSampleDrefExplicitLod 104 105 107 106 + 109: 19(fvec4) Load 24(color) + 110: 19(fvec4) FAdd 109 108 + Store 24(color) 110 + 115: 112 Load 114(shadowSampler2D) + 116: 13(fvec3) Load 15(coords3D) + 117: 7(float) Load 9(lod) + 118: 7(float) CompositeExtract 116 2 + 119: 19(fvec4) ImageSampleDrefExplicitLod 115 116 118 117 + 120: 19(fvec4) Load 24(color) + 121: 19(fvec4) FAdd 120 119 + Store 24(color) 121 + 122: 101 Load 103(shadowSampler1D) + 123: 19(fvec4) Load 21(coords4D) + 124: 7(float) Load 9(lod) + 125: 7(float) CompositeExtract 123 3 + 126: 19(fvec4) ImageSampleProjDrefExplicitLod 122 123 125 124 + 127: 19(fvec4) Load 24(color) + 128: 19(fvec4) FAdd 127 126 + Store 24(color) 128 + 129: 112 Load 114(shadowSampler2D) + 130: 19(fvec4) Load 21(coords4D) + 131: 7(float) Load 9(lod) + 132: 7(float) CompositeExtract 130 3 + 133: 19(fvec4) ImageSampleProjDrefExplicitLod 129 130 132 131 + 134: 19(fvec4) Load 24(color) + 135: 19(fvec4) FAdd 134 133 + Store 24(color) 135 + 138: 19(fvec4) Load 24(color) + Store 137(gl_Position) 138 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out old mode 100644 new mode 100755 index f2718e71..8b97d739 --- a/Test/baseResults/spv.types.frag.out +++ b/Test/baseResults/spv.types.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 264 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "b" Name 11 "u_b" @@ -49,295 +51,295 @@ Linked fragment stage: Name 162 "u_f4" Name 165 "i_f4" Name 169 "gl_FragColor" - Decorate 95(i_i) Flat - Decorate 105(i_i2) Flat - Decorate 115(i_i3) Flat - Decorate 125(i_i4) Flat - Decorate 135(i_f) Smooth - Decorate 145(i_f2) Smooth - Decorate 155(i_f3) Smooth - Decorate 165(i_f4) Smooth + Decorate 95(i_i) Flat + Decorate 105(i_i2) Flat + Decorate 115(i_i3) Flat + Decorate 125(i_i4) Flat + Decorate 135(i_f) Smooth + Decorate 145(i_f2) Smooth + Decorate 155(i_f3) Smooth + Decorate 165(i_f4) Smooth Decorate 169(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeBool 8: TypePointer Function 7(bool) 10: TypePointer UniformConstant 7(bool) - 11(u_b): 10(ptr) Variable UniformConstant - 13(i_b): 10(ptr) Variable UniformConstant + 11(u_b): 10(ptr) Variable UniformConstant + 13(i_b): 10(ptr) Variable UniformConstant 16: TypeVector 7(bool) 2 17: TypePointer Function 16(bvec2) 19: TypePointer UniformConstant 16(bvec2) - 20(u_b2): 19(ptr) Variable UniformConstant - 23(i_b2): 19(ptr) Variable UniformConstant + 20(u_b2): 19(ptr) Variable UniformConstant + 23(i_b2): 19(ptr) Variable UniformConstant 34: TypeVector 7(bool) 3 35: TypePointer Function 34(bvec3) 37: TypePointer UniformConstant 34(bvec3) - 38(u_b3): 37(ptr) Variable UniformConstant - 41(i_b3): 37(ptr) Variable UniformConstant + 38(u_b3): 37(ptr) Variable UniformConstant + 41(i_b3): 37(ptr) Variable UniformConstant 58: TypeVector 7(bool) 4 59: TypePointer Function 58(bvec4) 61: TypePointer UniformConstant 58(bvec4) - 62(u_b4): 61(ptr) Variable UniformConstant - 65(i_b4): 61(ptr) Variable UniformConstant + 62(u_b4): 61(ptr) Variable UniformConstant + 65(i_b4): 61(ptr) Variable UniformConstant 88: TypeInt 32 1 89: TypePointer Function 88(int) 91: TypePointer UniformConstant 88(int) - 92(u_i): 91(ptr) Variable UniformConstant + 92(u_i): 91(ptr) Variable UniformConstant 94: TypePointer Input 88(int) - 95(i_i): 94(ptr) Variable Input + 95(i_i): 94(ptr) Variable Input 98: TypeVector 88(int) 2 99: TypePointer Function 98(ivec2) 101: TypePointer UniformConstant 98(ivec2) - 102(u_i2): 101(ptr) Variable UniformConstant + 102(u_i2): 101(ptr) Variable UniformConstant 104: TypePointer Input 98(ivec2) - 105(i_i2): 104(ptr) Variable Input + 105(i_i2): 104(ptr) Variable Input 108: TypeVector 88(int) 3 109: TypePointer Function 108(ivec3) 111: TypePointer UniformConstant 108(ivec3) - 112(u_i3): 111(ptr) Variable UniformConstant + 112(u_i3): 111(ptr) Variable UniformConstant 114: TypePointer Input 108(ivec3) - 115(i_i3): 114(ptr) Variable Input + 115(i_i3): 114(ptr) Variable Input 118: TypeVector 88(int) 4 119: TypePointer Function 118(ivec4) 121: TypePointer UniformConstant 118(ivec4) - 122(u_i4): 121(ptr) Variable UniformConstant + 122(u_i4): 121(ptr) Variable UniformConstant 124: TypePointer Input 118(ivec4) - 125(i_i4): 124(ptr) Variable Input + 125(i_i4): 124(ptr) Variable Input 128: TypeFloat 32 129: TypePointer Function 128(float) 131: TypePointer UniformConstant 128(float) - 132(u_f): 131(ptr) Variable UniformConstant + 132(u_f): 131(ptr) Variable UniformConstant 134: TypePointer Input 128(float) - 135(i_f): 134(ptr) Variable Input + 135(i_f): 134(ptr) Variable Input 138: TypeVector 128(float) 2 139: TypePointer Function 138(fvec2) 141: TypePointer UniformConstant 138(fvec2) - 142(u_f2): 141(ptr) Variable UniformConstant + 142(u_f2): 141(ptr) Variable UniformConstant 144: TypePointer Input 138(fvec2) - 145(i_f2): 144(ptr) Variable Input + 145(i_f2): 144(ptr) Variable Input 148: TypeVector 128(float) 3 149: TypePointer Function 148(fvec3) 151: TypePointer UniformConstant 148(fvec3) - 152(u_f3): 151(ptr) Variable UniformConstant + 152(u_f3): 151(ptr) Variable UniformConstant 154: TypePointer Input 148(fvec3) - 155(i_f3): 154(ptr) Variable Input + 155(i_f3): 154(ptr) Variable Input 158: TypeVector 128(float) 4 159: TypePointer Function 158(fvec4) 161: TypePointer UniformConstant 158(fvec4) - 162(u_f4): 161(ptr) Variable UniformConstant + 162(u_f4): 161(ptr) Variable UniformConstant 164: TypePointer Input 158(fvec4) - 165(i_f4): 164(ptr) Variable Input + 165(i_f4): 164(ptr) Variable Input 168: TypePointer Output 158(fvec4) -169(gl_FragColor): 168(ptr) Variable Output +169(gl_FragColor): 168(ptr) Variable Output 261: 128(float) Constant 1065353216 262: 158(fvec4) ConstantComposite 261 261 261 261 4(main): 2 Function None 3 5: Label - 9(b): 8(ptr) Variable Function - 18(b2): 17(ptr) Variable Function - 36(b3): 35(ptr) Variable Function - 60(b4): 59(ptr) Variable Function - 90(i): 89(ptr) Variable Function - 100(i2): 99(ptr) Variable Function - 110(i3): 109(ptr) Variable Function - 120(i4): 119(ptr) Variable Function - 130(f): 129(ptr) Variable Function - 140(f2): 139(ptr) Variable Function - 150(f3): 149(ptr) Variable Function - 160(f4): 159(ptr) Variable Function - 170: 159(ptr) Variable Function - 12: 7(bool) Load 11(u_b) - 14: 7(bool) Load 13(i_b) + 9(b): 8(ptr) Variable Function + 18(b2): 17(ptr) Variable Function + 36(b3): 35(ptr) Variable Function + 60(b4): 59(ptr) Variable Function + 90(i): 89(ptr) Variable Function + 100(i2): 99(ptr) Variable Function + 110(i3): 109(ptr) Variable Function + 120(i4): 119(ptr) Variable Function + 130(f): 129(ptr) Variable Function + 140(f2): 139(ptr) Variable Function + 150(f3): 149(ptr) Variable Function + 160(f4): 159(ptr) Variable Function + 170: 159(ptr) Variable Function + 12: 7(bool) Load 11(u_b) + 14: 7(bool) Load 13(i_b) 15: 7(bool) LogicalAnd 12 14 - Store 9(b) 15 - 21: 16(bvec2) Load 20(u_b2) + Store 9(b) 15 + 21: 16(bvec2) Load 20(u_b2) 22: 7(bool) CompositeExtract 21 0 - 24: 16(bvec2) Load 23(i_b2) + 24: 16(bvec2) Load 23(i_b2) 25: 7(bool) CompositeExtract 24 0 26: 7(bool) LogicalAnd 22 25 - 27: 16(bvec2) Load 20(u_b2) + 27: 16(bvec2) Load 20(u_b2) 28: 7(bool) CompositeExtract 27 1 29: 7(bool) LogicalAnd 26 28 - 30: 16(bvec2) Load 23(i_b2) + 30: 16(bvec2) Load 23(i_b2) 31: 7(bool) CompositeExtract 30 1 32: 7(bool) LogicalAnd 29 31 33: 16(bvec2) CompositeConstruct 32 32 - Store 18(b2) 33 - 39: 34(bvec3) Load 38(u_b3) + Store 18(b2) 33 + 39: 34(bvec3) Load 38(u_b3) 40: 7(bool) CompositeExtract 39 0 - 42: 34(bvec3) Load 41(i_b3) + 42: 34(bvec3) Load 41(i_b3) 43: 7(bool) CompositeExtract 42 0 44: 7(bool) LogicalAnd 40 43 - 45: 34(bvec3) Load 38(u_b3) + 45: 34(bvec3) Load 38(u_b3) 46: 7(bool) CompositeExtract 45 1 47: 7(bool) LogicalAnd 44 46 - 48: 34(bvec3) Load 41(i_b3) + 48: 34(bvec3) Load 41(i_b3) 49: 7(bool) CompositeExtract 48 1 50: 7(bool) LogicalAnd 47 49 - 51: 34(bvec3) Load 38(u_b3) + 51: 34(bvec3) Load 38(u_b3) 52: 7(bool) CompositeExtract 51 2 53: 7(bool) LogicalAnd 50 52 - 54: 34(bvec3) Load 41(i_b3) + 54: 34(bvec3) Load 41(i_b3) 55: 7(bool) CompositeExtract 54 2 56: 7(bool) LogicalAnd 53 55 57: 34(bvec3) CompositeConstruct 56 56 56 - Store 36(b3) 57 - 63: 58(bvec4) Load 62(u_b4) + Store 36(b3) 57 + 63: 58(bvec4) Load 62(u_b4) 64: 7(bool) CompositeExtract 63 0 - 66: 58(bvec4) Load 65(i_b4) + 66: 58(bvec4) Load 65(i_b4) 67: 7(bool) CompositeExtract 66 0 68: 7(bool) LogicalAnd 64 67 - 69: 58(bvec4) Load 62(u_b4) + 69: 58(bvec4) Load 62(u_b4) 70: 7(bool) CompositeExtract 69 1 71: 7(bool) LogicalAnd 68 70 - 72: 58(bvec4) Load 65(i_b4) + 72: 58(bvec4) Load 65(i_b4) 73: 7(bool) CompositeExtract 72 1 74: 7(bool) LogicalAnd 71 73 - 75: 58(bvec4) Load 62(u_b4) + 75: 58(bvec4) Load 62(u_b4) 76: 7(bool) CompositeExtract 75 2 77: 7(bool) LogicalAnd 74 76 - 78: 58(bvec4) Load 65(i_b4) + 78: 58(bvec4) Load 65(i_b4) 79: 7(bool) CompositeExtract 78 2 80: 7(bool) LogicalAnd 77 79 - 81: 58(bvec4) Load 62(u_b4) + 81: 58(bvec4) Load 62(u_b4) 82: 7(bool) CompositeExtract 81 3 83: 7(bool) LogicalAnd 80 82 - 84: 58(bvec4) Load 65(i_b4) + 84: 58(bvec4) Load 65(i_b4) 85: 7(bool) CompositeExtract 84 3 86: 7(bool) LogicalAnd 83 85 87: 58(bvec4) CompositeConstruct 86 86 86 86 - Store 60(b4) 87 - 93: 88(int) Load 92(u_i) - 96: 88(int) Load 95(i_i) + Store 60(b4) 87 + 93: 88(int) Load 92(u_i) + 96: 88(int) Load 95(i_i) 97: 88(int) IAdd 93 96 - Store 90(i) 97 - 103: 98(ivec2) Load 102(u_i2) - 106: 98(ivec2) Load 105(i_i2) + Store 90(i) 97 + 103: 98(ivec2) Load 102(u_i2) + 106: 98(ivec2) Load 105(i_i2) 107: 98(ivec2) IAdd 103 106 - Store 100(i2) 107 - 113: 108(ivec3) Load 112(u_i3) - 116: 108(ivec3) Load 115(i_i3) + Store 100(i2) 107 + 113: 108(ivec3) Load 112(u_i3) + 116: 108(ivec3) Load 115(i_i3) 117: 108(ivec3) IAdd 113 116 - Store 110(i3) 117 - 123: 118(ivec4) Load 122(u_i4) - 126: 118(ivec4) Load 125(i_i4) + Store 110(i3) 117 + 123: 118(ivec4) Load 122(u_i4) + 126: 118(ivec4) Load 125(i_i4) 127: 118(ivec4) IAdd 123 126 - Store 120(i4) 127 - 133: 128(float) Load 132(u_f) - 136: 128(float) Load 135(i_f) + Store 120(i4) 127 + 133: 128(float) Load 132(u_f) + 136: 128(float) Load 135(i_f) 137: 128(float) FAdd 133 136 - Store 130(f) 137 - 143: 138(fvec2) Load 142(u_f2) - 146: 138(fvec2) Load 145(i_f2) + Store 130(f) 137 + 143: 138(fvec2) Load 142(u_f2) + 146: 138(fvec2) Load 145(i_f2) 147: 138(fvec2) FAdd 143 146 - Store 140(f2) 147 - 153: 148(fvec3) Load 152(u_f3) - 156: 148(fvec3) Load 155(i_f3) + Store 140(f2) 147 + 153: 148(fvec3) Load 152(u_f3) + 156: 148(fvec3) Load 155(i_f3) 157: 148(fvec3) FAdd 153 156 - Store 150(f3) 157 - 163: 158(fvec4) Load 162(u_f4) - 166: 158(fvec4) Load 165(i_f4) + Store 150(f3) 157 + 163: 158(fvec4) Load 162(u_f4) + 166: 158(fvec4) Load 165(i_f4) 167: 158(fvec4) FAdd 163 166 - Store 160(f4) 167 - 171: 7(bool) Load 9(b) - 172: 16(bvec2) Load 18(b2) + Store 160(f4) 167 + 171: 7(bool) Load 9(b) + 172: 16(bvec2) Load 18(b2) 173: 7(bool) CompositeExtract 172 0 174: 7(bool) LogicalOr 171 173 - 175: 16(bvec2) Load 18(b2) + 175: 16(bvec2) Load 18(b2) 176: 7(bool) CompositeExtract 175 1 177: 7(bool) LogicalOr 174 176 - 178: 34(bvec3) Load 36(b3) + 178: 34(bvec3) Load 36(b3) 179: 7(bool) CompositeExtract 178 0 180: 7(bool) LogicalOr 177 179 - 181: 34(bvec3) Load 36(b3) + 181: 34(bvec3) Load 36(b3) 182: 7(bool) CompositeExtract 181 1 183: 7(bool) LogicalOr 180 182 - 184: 34(bvec3) Load 36(b3) + 184: 34(bvec3) Load 36(b3) 185: 7(bool) CompositeExtract 184 2 186: 7(bool) LogicalOr 183 185 - 187: 58(bvec4) Load 60(b4) + 187: 58(bvec4) Load 60(b4) 188: 7(bool) CompositeExtract 187 0 189: 7(bool) LogicalOr 186 188 - 190: 58(bvec4) Load 60(b4) + 190: 58(bvec4) Load 60(b4) 191: 7(bool) CompositeExtract 190 1 192: 7(bool) LogicalOr 189 191 - 193: 58(bvec4) Load 60(b4) + 193: 58(bvec4) Load 60(b4) 194: 7(bool) CompositeExtract 193 2 195: 7(bool) LogicalOr 192 194 - 196: 58(bvec4) Load 60(b4) + 196: 58(bvec4) Load 60(b4) 197: 7(bool) CompositeExtract 196 3 198: 7(bool) LogicalOr 195 197 SelectionMerge 200 None - BranchConditional 198 199 260 + BranchConditional 198 199 260 199: Label - 201: 88(int) Load 90(i) - 202: 98(ivec2) Load 100(i2) + 201: 88(int) Load 90(i) + 202: 98(ivec2) Load 100(i2) 203: 88(int) CompositeExtract 202 0 204: 88(int) IAdd 201 203 - 205: 98(ivec2) Load 100(i2) + 205: 98(ivec2) Load 100(i2) 206: 88(int) CompositeExtract 205 1 207: 88(int) IAdd 204 206 - 208: 108(ivec3) Load 110(i3) + 208: 108(ivec3) Load 110(i3) 209: 88(int) CompositeExtract 208 0 210: 88(int) IAdd 207 209 - 211: 108(ivec3) Load 110(i3) + 211: 108(ivec3) Load 110(i3) 212: 88(int) CompositeExtract 211 1 213: 88(int) IAdd 210 212 - 214: 108(ivec3) Load 110(i3) + 214: 108(ivec3) Load 110(i3) 215: 88(int) CompositeExtract 214 2 216: 88(int) IAdd 213 215 - 217: 118(ivec4) Load 120(i4) + 217: 118(ivec4) Load 120(i4) 218: 88(int) CompositeExtract 217 0 219: 88(int) IAdd 216 218 - 220: 118(ivec4) Load 120(i4) + 220: 118(ivec4) Load 120(i4) 221: 88(int) CompositeExtract 220 1 222: 88(int) IAdd 219 221 - 223: 118(ivec4) Load 120(i4) + 223: 118(ivec4) Load 120(i4) 224: 88(int) CompositeExtract 223 2 225: 88(int) IAdd 222 224 - 226: 118(ivec4) Load 120(i4) + 226: 118(ivec4) Load 120(i4) 227: 88(int) CompositeExtract 226 3 228: 88(int) IAdd 225 227 229: 128(float) ConvertSToF 228 - 230: 128(float) Load 130(f) + 230: 128(float) Load 130(f) 231: 128(float) FAdd 229 230 - 232: 138(fvec2) Load 140(f2) + 232: 138(fvec2) Load 140(f2) 233: 128(float) CompositeExtract 232 0 234: 128(float) FAdd 231 233 - 235: 138(fvec2) Load 140(f2) + 235: 138(fvec2) Load 140(f2) 236: 128(float) CompositeExtract 235 1 237: 128(float) FAdd 234 236 - 238: 148(fvec3) Load 150(f3) + 238: 148(fvec3) Load 150(f3) 239: 128(float) CompositeExtract 238 0 240: 128(float) FAdd 237 239 - 241: 148(fvec3) Load 150(f3) + 241: 148(fvec3) Load 150(f3) 242: 128(float) CompositeExtract 241 1 243: 128(float) FAdd 240 242 - 244: 148(fvec3) Load 150(f3) + 244: 148(fvec3) Load 150(f3) 245: 128(float) CompositeExtract 244 2 246: 128(float) FAdd 243 245 - 247: 158(fvec4) Load 160(f4) + 247: 158(fvec4) Load 160(f4) 248: 128(float) CompositeExtract 247 0 249: 128(float) FAdd 246 248 - 250: 158(fvec4) Load 160(f4) + 250: 158(fvec4) Load 160(f4) 251: 128(float) CompositeExtract 250 1 252: 128(float) FAdd 249 251 - 253: 158(fvec4) Load 160(f4) + 253: 158(fvec4) Load 160(f4) 254: 128(float) CompositeExtract 253 2 255: 128(float) FAdd 252 254 - 256: 158(fvec4) Load 160(f4) + 256: 158(fvec4) Load 160(f4) 257: 128(float) CompositeExtract 256 3 258: 128(float) FAdd 255 257 259: 158(fvec4) CompositeConstruct 258 258 258 258 - Store 170 259 + Store 170 259 Branch 200 260: Label - Store 170 262 + Store 170 262 Branch 200 200: Label - 263: 158(fvec4) Load 170 - Store 169(gl_FragColor) 263 + 263: 158(fvec4) Load 170 + Store 169(gl_FragColor) 263 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out old mode 100644 new mode 100755 index e7294a03..4a839ca1 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -5,12 +5,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 206 +// Id's are bound by 207 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "count" Name 13 "u" @@ -20,47 +22,47 @@ Linked fragment stage: Name 58 "shiftediu" Name 59 "shifteduu" Name 67 "c" - Name 70 "usampler" - Name 75 "tc" - Name 108 "af" - Name 112 "ab" - Name 116 "ai" - Name 151 "mask1" - Name 153 "mask2" - Name 155 "mask3" - Name 159 "mask4" - Name 199 "f" - Name 201 "v" - Name 203 "i" - Name 205 "b" - Decorate 9(count) PrecisionMedium - Decorate 13(u) PrecisionMedium - Decorate 16(t) PrecisionMedium - Decorate 16(t) Flat - Decorate 54(shiftedii) PrecisionMedium - Decorate 56(shiftedui) PrecisionMedium - Decorate 58(shiftediu) PrecisionMedium - Decorate 59(shifteduu) PrecisionMedium - Decorate 67(c) PrecisionMedium - Decorate 70(usampler) PrecisionMedium - Decorate 75(tc) PrecisionMedium - Decorate 75(tc) Smooth - Decorate 108(af) PrecisionMedium - Decorate 116(ai) PrecisionMedium - Decorate 151(mask1) PrecisionMedium - Decorate 153(mask2) PrecisionMedium - Decorate 155(mask3) PrecisionMedium - Decorate 159(mask4) PrecisionMedium - Decorate 199(f) PrecisionMedium - Decorate 199(f) Smooth - Decorate 199(f) NoStaticUse - Decorate 201(v) PrecisionMedium - Decorate 201(v) NoStaticUse - Decorate 203(i) PrecisionMedium - Decorate 203(i) NoStaticUse - Decorate 205(b) NoStaticUse + Name 71 "usampler" + Name 76 "tc" + Name 109 "af" + Name 113 "ab" + Name 117 "ai" + Name 152 "mask1" + Name 154 "mask2" + Name 156 "mask3" + Name 160 "mask4" + Name 200 "f" + Name 202 "v" + Name 204 "i" + Name 206 "b" + Decorate 9(count) RelaxedPrecision + Decorate 13(u) RelaxedPrecision + Decorate 16(t) RelaxedPrecision + Decorate 16(t) Flat + Decorate 54(shiftedii) RelaxedPrecision + Decorate 56(shiftedui) RelaxedPrecision + Decorate 58(shiftediu) RelaxedPrecision + Decorate 59(shifteduu) RelaxedPrecision + Decorate 67(c) RelaxedPrecision + Decorate 71(usampler) RelaxedPrecision + Decorate 76(tc) RelaxedPrecision + Decorate 76(tc) Smooth + Decorate 109(af) RelaxedPrecision + Decorate 117(ai) RelaxedPrecision + Decorate 152(mask1) RelaxedPrecision + Decorate 154(mask2) RelaxedPrecision + Decorate 156(mask3) RelaxedPrecision + Decorate 160(mask4) RelaxedPrecision + Decorate 200(f) RelaxedPrecision + Decorate 200(f) Smooth + Decorate 200(f) NoStaticUse + Decorate 202(v) RelaxedPrecision + Decorate 202(v) NoStaticUse + Decorate 204(i) RelaxedPrecision + Decorate 204(i) NoStaticUse + Decorate 206(b) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 1 @@ -68,7 +70,7 @@ Linked fragment stage: 12: TypePointer Function 11(int) 14: TypeVector 11(int) 2 15: TypePointer Input 14(ivec2) - 16(t): 15(ptr) Variable Input + 16(t): 15(ptr) Variable Input 19: 11(int) Constant 3 21: TypeBool 22: 21(bool) ConstantTrue @@ -83,271 +85,272 @@ Linked fragment stage: 57: 11(int) Constant 4194303 65: TypeVector 11(int) 4 66: TypePointer Output 65(ivec4) - 67(c): 66(ptr) Variable Output - 68: TypeSampler11(int) 2D filter+texture - 69: TypePointer UniformConstant 68 - 70(usampler): 69(ptr) Variable UniformConstant - 72: TypeFloat 32 - 73: TypeVector 72(float) 2 - 74: TypePointer Input 73(fvec2) - 75(tc): 74(ptr) Variable Input - 85: 72(float) Constant 1065353216 - 97: 72(float) Constant 1073741824 - 98: 73(fvec2) ConstantComposite 97 97 - 103: 11(int) Constant 4 - 107: TypePointer Function 72(float) - 111: TypePointer Function 21(bool) - 114: 11(int) Constant 0 - 122: 11(int) Constant 1 - 133: 7(int) Constant 17 - 138: 7(int) Constant 19 - 143: 7(int) Constant 23 - 148: 7(int) Constant 27 - 152: 11(int) Constant 161 - 154: 11(int) Constant 2576 - 157: 7(int) Constant 4 - 160: 11(int) Constant 2737 - 198: TypePointer Input 72(float) - 199(f): 198(ptr) Variable Input - 200: TypePointer UniformConstant 65(ivec4) - 201(v): 200(ptr) Variable UniformConstant - 202: TypePointer UniformConstant 7(int) - 203(i): 202(ptr) Variable UniformConstant - 204: TypePointer UniformConstant 21(bool) - 205(b): 204(ptr) Variable UniformConstant + 67(c): 66(ptr) Variable Output + 68: TypeImage 11(int) 2D sampled format:Unknown + 69: TypeSampledImage 68 + 70: TypePointer UniformConstant 69 + 71(usampler): 70(ptr) Variable UniformConstant + 73: TypeFloat 32 + 74: TypeVector 73(float) 2 + 75: TypePointer Input 74(fvec2) + 76(tc): 75(ptr) Variable Input + 86: 73(float) Constant 1065353216 + 98: 73(float) Constant 1073741824 + 99: 74(fvec2) ConstantComposite 98 98 + 104: 11(int) Constant 4 + 108: TypePointer Function 73(float) + 112: TypePointer Function 21(bool) + 115: 11(int) Constant 0 + 123: 11(int) Constant 1 + 134: 7(int) Constant 17 + 139: 7(int) Constant 19 + 144: 7(int) Constant 23 + 149: 7(int) Constant 27 + 153: 11(int) Constant 161 + 155: 11(int) Constant 2576 + 158: 7(int) Constant 4 + 161: 11(int) Constant 2737 + 199: TypePointer Input 73(float) + 200(f): 199(ptr) Variable Input + 201: TypePointer UniformConstant 65(ivec4) + 202(v): 201(ptr) Variable UniformConstant + 203: TypePointer UniformConstant 7(int) + 204(i): 203(ptr) Variable UniformConstant + 205: TypePointer UniformConstant 21(bool) + 206(b): 205(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 9(count): 8(ptr) Variable Function - 13(u): 12(ptr) Variable Function - 54(shiftedii): 8(ptr) Variable Function - 56(shiftedui): 12(ptr) Variable Function - 58(shiftediu): 8(ptr) Variable Function - 59(shifteduu): 12(ptr) Variable Function - 108(af): 107(ptr) Variable Function - 112(ab): 111(ptr) Variable Function - 116(ai): 8(ptr) Variable Function - 151(mask1): 12(ptr) Variable Function - 153(mask2): 12(ptr) Variable Function - 155(mask3): 12(ptr) Variable Function - 159(mask4): 12(ptr) Variable Function - Store 9(count) 10 - 17: 14(ivec2) Load 16(t) + 9(count): 8(ptr) Variable Function + 13(u): 12(ptr) Variable Function + 54(shiftedii): 8(ptr) Variable Function + 56(shiftedui): 12(ptr) Variable Function + 58(shiftediu): 8(ptr) Variable Function + 59(shifteduu): 12(ptr) Variable Function + 109(af): 108(ptr) Variable Function + 113(ab): 112(ptr) Variable Function + 117(ai): 8(ptr) Variable Function + 152(mask1): 12(ptr) Variable Function + 154(mask2): 12(ptr) Variable Function + 156(mask3): 12(ptr) Variable Function + 160(mask4): 12(ptr) Variable Function + Store 9(count) 10 + 17: 14(ivec2) Load 16(t) 18: 11(int) CompositeExtract 17 1 20: 11(int) IAdd 18 19 - Store 13(u) 20 + Store 13(u) 20 SelectionMerge 24 None - BranchConditional 22 23 24 + BranchConditional 22 23 24 23: Label - 26: 7(int) Load 9(count) + 26: 7(int) Load 9(count) 27: 7(int) IMul 26 25 - Store 9(count) 27 + Store 9(count) 27 Branch 24 24: Label SelectionMerge 29 None - BranchConditional 22 28 29 + BranchConditional 22 28 29 28: Label - 31: 7(int) Load 9(count) + 31: 7(int) Load 9(count) 32: 7(int) IMul 31 30 - Store 9(count) 32 + Store 9(count) 32 Branch 29 29: Label SelectionMerge 35 None - BranchConditional 33 34 35 + BranchConditional 33 34 35 34: Label - 37: 7(int) Load 9(count) + 37: 7(int) Load 9(count) 38: 7(int) IMul 37 36 - Store 9(count) 38 + Store 9(count) 38 Branch 35 35: Label SelectionMerge 40 None - BranchConditional 22 39 40 + BranchConditional 22 39 40 39: Label - 42: 7(int) Load 9(count) + 42: 7(int) Load 9(count) 43: 7(int) IMul 42 41 - Store 9(count) 43 + Store 9(count) 43 Branch 40 40: Label SelectionMerge 45 None - BranchConditional 22 44 45 + BranchConditional 22 44 45 44: Label - 47: 7(int) Load 9(count) + 47: 7(int) Load 9(count) 48: 7(int) IMul 47 46 - Store 9(count) 48 + Store 9(count) 48 Branch 45 45: Label SelectionMerge 50 None - BranchConditional 33 49 50 + BranchConditional 33 49 50 49: Label - 52: 7(int) Load 9(count) + 52: 7(int) Load 9(count) 53: 7(int) IMul 52 51 - Store 9(count) 53 + Store 9(count) 53 Branch 50 50: Label - Store 54(shiftedii) 55 - Store 56(shiftedui) 57 - Store 58(shiftediu) 55 - Store 59(shifteduu) 57 - 60: 7(int) Load 54(shiftedii) - 61: 7(int) Load 58(shiftediu) + Store 54(shiftedii) 55 + Store 56(shiftedui) 57 + Store 58(shiftediu) 55 + Store 59(shifteduu) 57 + 60: 7(int) Load 54(shiftedii) + 61: 7(int) Load 58(shiftediu) 62: 21(bool) IEqual 60 61 SelectionMerge 64 None - BranchConditional 62 63 64 + BranchConditional 62 63 64 63: Label - 71: 68 Load 70(usampler) - 76: 73(fvec2) Load 75(tc) - 77: 65(ivec4) TextureSample 71 76 - Store 67(c) 77 + 72: 69 Load 71(usampler) + 77: 74(fvec2) Load 76(tc) + 78: 65(ivec4) ImageSampleImplicitLod 72 77 + Store 67(c) 78 Branch 64 64: Label - 78: 11(int) Load 56(shiftedui) - 79: 11(int) Load 59(shifteduu) - 80: 21(bool) IEqual 78 79 - SelectionMerge 82 None - BranchConditional 80 81 82 - 81: Label - 83: 68 Load 70(usampler) - 84: 73(fvec2) Load 75(tc) - 86: 73(fvec2) CompositeConstruct 85 85 - 87: 73(fvec2) FAdd 84 86 - 88: 65(ivec4) TextureSample 83 87 - Store 67(c) 88 - Branch 82 - 82: Label - 89: 7(int) Load 54(shiftedii) - 90: 11(int) Load 56(shiftedui) - 91: 7(int) Bitcast 90 - 92: 21(bool) IEqual 89 91 - SelectionMerge 94 None - BranchConditional 92 93 94 - 93: Label - 95: 68 Load 70(usampler) - 96: 73(fvec2) Load 75(tc) - 99: 73(fvec2) FSub 96 98 - 100: 65(ivec4) TextureSample 95 99 - Store 67(c) 100 - Branch 94 - 94: Label - 101: 14(ivec2) Load 16(t) - 102: 11(int) CompositeExtract 101 0 - 104: 21(bool) UGreaterThan 102 103 - SelectionMerge 106 None - BranchConditional 104 105 106 - 105: Label - 109: 11(int) Load 13(u) - 110: 72(float) ConvertUToF 109 - Store 108(af) 110 - 113: 11(int) Load 13(u) - 115: 21(bool) INotEqual 113 114 - Store 112(ab) 115 - 117: 11(int) Load 13(u) - 118: 7(int) Bitcast 117 - Store 116(ai) 118 - 119: 72(float) Load 108(af) - 120: 11(int) ConvertFToU 119 - 121: 21(bool) Load 112(ab) - 123: 11(int) Select 121 122 114 - 124: 7(int) Load 116(ai) - 125: 11(int) Bitcast 124 - 126: 7(int) Load 9(count) - 127: 11(int) Bitcast 126 - 128: 65(ivec4) CompositeConstruct 120 123 125 127 - 129: 65(ivec4) Load 67(c) - 130: 65(ivec4) IAdd 129 128 - Store 67(c) 130 - Branch 106 - 106: Label - SelectionMerge 132 None - BranchConditional 22 131 132 - 131: Label - 134: 7(int) Load 9(count) - 135: 7(int) IMul 134 133 - Store 9(count) 135 - Branch 132 - 132: Label - SelectionMerge 137 None - BranchConditional 33 136 137 - 136: Label - 139: 7(int) Load 9(count) - 140: 7(int) IMul 139 138 - Store 9(count) 140 - Branch 137 - 137: Label - SelectionMerge 142 None - BranchConditional 22 141 142 - 141: Label - 144: 7(int) Load 9(count) - 145: 7(int) IMul 144 143 - Store 9(count) 145 - Branch 142 - 142: Label - SelectionMerge 147 None - BranchConditional 22 146 147 - 146: Label - 149: 7(int) Load 9(count) - 150: 7(int) IMul 149 148 - Store 9(count) 150 - Branch 147 - 147: Label - Store 151(mask1) 152 - Store 153(mask2) 154 - 156: 11(int) Load 151(mask1) - 158: 11(int) ShiftLeftLogical 156 157 - Store 155(mask3) 158 - Store 159(mask4) 160 - 161: 11(int) Load 155(mask3) - 162: 11(int) Load 153(mask2) - 163: 21(bool) IEqual 161 162 - SelectionMerge 165 None - BranchConditional 163 164 165 - 164: Label - 166: 7(int) Load 9(count) - 167: 7(int) IMul 166 25 - Store 9(count) 167 - Branch 165 - 165: Label - 168: 11(int) Load 155(mask3) - 169: 11(int) Load 151(mask1) - 170: 11(int) BitwiseAnd 168 169 - 171: 21(bool) INotEqual 170 114 - SelectionMerge 173 None - BranchConditional 171 172 173 - 172: Label - 174: 7(int) Load 9(count) - 175: 7(int) IMul 174 30 - Store 9(count) 175 - Branch 173 - 173: Label - 176: 11(int) Load 151(mask1) - 177: 11(int) Load 155(mask3) - 178: 11(int) BitwiseOr 176 177 - 179: 11(int) Load 159(mask4) - 180: 21(bool) IEqual 178 179 - SelectionMerge 182 None - BranchConditional 180 181 182 - 181: Label - 183: 7(int) Load 9(count) - 184: 7(int) IMul 183 36 - Store 9(count) 184 - Branch 182 - 182: Label - 185: 11(int) Load 151(mask1) - 186: 11(int) Load 159(mask4) - 187: 11(int) BitwiseXor 185 186 - 188: 21(bool) IEqual 187 154 - SelectionMerge 190 None - BranchConditional 188 189 190 - 189: Label - 191: 7(int) Load 9(count) - 192: 7(int) IMul 191 41 - Store 9(count) 192 - Branch 190 - 190: Label - 193: 7(int) Load 9(count) - 194: 11(int) Bitcast 193 - 195: 65(ivec4) CompositeConstruct 194 194 194 194 - 196: 65(ivec4) Load 67(c) - 197: 65(ivec4) IAdd 196 195 - Store 67(c) 197 + 79: 11(int) Load 56(shiftedui) + 80: 11(int) Load 59(shifteduu) + 81: 21(bool) IEqual 79 80 + SelectionMerge 83 None + BranchConditional 81 82 83 + 82: Label + 84: 69 Load 71(usampler) + 85: 74(fvec2) Load 76(tc) + 87: 74(fvec2) CompositeConstruct 86 86 + 88: 74(fvec2) FAdd 85 87 + 89: 65(ivec4) ImageSampleImplicitLod 84 88 + Store 67(c) 89 + Branch 83 + 83: Label + 90: 7(int) Load 54(shiftedii) + 91: 11(int) Load 56(shiftedui) + 92: 7(int) Bitcast 91 + 93: 21(bool) IEqual 90 92 + SelectionMerge 95 None + BranchConditional 93 94 95 + 94: Label + 96: 69 Load 71(usampler) + 97: 74(fvec2) Load 76(tc) + 100: 74(fvec2) FSub 97 99 + 101: 65(ivec4) ImageSampleImplicitLod 96 100 + Store 67(c) 101 + Branch 95 + 95: Label + 102: 14(ivec2) Load 16(t) + 103: 11(int) CompositeExtract 102 0 + 105: 21(bool) UGreaterThan 103 104 + SelectionMerge 107 None + BranchConditional 105 106 107 + 106: Label + 110: 11(int) Load 13(u) + 111: 73(float) ConvertUToF 110 + Store 109(af) 111 + 114: 11(int) Load 13(u) + 116: 21(bool) INotEqual 114 115 + Store 113(ab) 116 + 118: 11(int) Load 13(u) + 119: 7(int) Bitcast 118 + Store 117(ai) 119 + 120: 73(float) Load 109(af) + 121: 11(int) ConvertFToU 120 + 122: 21(bool) Load 113(ab) + 124: 11(int) Select 122 123 115 + 125: 7(int) Load 117(ai) + 126: 11(int) Bitcast 125 + 127: 7(int) Load 9(count) + 128: 11(int) Bitcast 127 + 129: 65(ivec4) CompositeConstruct 121 124 126 128 + 130: 65(ivec4) Load 67(c) + 131: 65(ivec4) IAdd 130 129 + Store 67(c) 131 + Branch 107 + 107: Label + SelectionMerge 133 None + BranchConditional 22 132 133 + 132: Label + 135: 7(int) Load 9(count) + 136: 7(int) IMul 135 134 + Store 9(count) 136 + Branch 133 + 133: Label + SelectionMerge 138 None + BranchConditional 33 137 138 + 137: Label + 140: 7(int) Load 9(count) + 141: 7(int) IMul 140 139 + Store 9(count) 141 + Branch 138 + 138: Label + SelectionMerge 143 None + BranchConditional 22 142 143 + 142: Label + 145: 7(int) Load 9(count) + 146: 7(int) IMul 145 144 + Store 9(count) 146 + Branch 143 + 143: Label + SelectionMerge 148 None + BranchConditional 22 147 148 + 147: Label + 150: 7(int) Load 9(count) + 151: 7(int) IMul 150 149 + Store 9(count) 151 + Branch 148 + 148: Label + Store 152(mask1) 153 + Store 154(mask2) 155 + 157: 11(int) Load 152(mask1) + 159: 11(int) ShiftLeftLogical 157 158 + Store 156(mask3) 159 + Store 160(mask4) 161 + 162: 11(int) Load 156(mask3) + 163: 11(int) Load 154(mask2) + 164: 21(bool) IEqual 162 163 + SelectionMerge 166 None + BranchConditional 164 165 166 + 165: Label + 167: 7(int) Load 9(count) + 168: 7(int) IMul 167 25 + Store 9(count) 168 + Branch 166 + 166: Label + 169: 11(int) Load 156(mask3) + 170: 11(int) Load 152(mask1) + 171: 11(int) BitwiseAnd 169 170 + 172: 21(bool) INotEqual 171 115 + SelectionMerge 174 None + BranchConditional 172 173 174 + 173: Label + 175: 7(int) Load 9(count) + 176: 7(int) IMul 175 30 + Store 9(count) 176 + Branch 174 + 174: Label + 177: 11(int) Load 152(mask1) + 178: 11(int) Load 156(mask3) + 179: 11(int) BitwiseOr 177 178 + 180: 11(int) Load 160(mask4) + 181: 21(bool) IEqual 179 180 + SelectionMerge 183 None + BranchConditional 181 182 183 + 182: Label + 184: 7(int) Load 9(count) + 185: 7(int) IMul 184 36 + Store 9(count) 185 + Branch 183 + 183: Label + 186: 11(int) Load 152(mask1) + 187: 11(int) Load 160(mask4) + 188: 11(int) BitwiseXor 186 187 + 189: 21(bool) IEqual 188 155 + SelectionMerge 191 None + BranchConditional 189 190 191 + 190: Label + 192: 7(int) Load 9(count) + 193: 7(int) IMul 192 41 + Store 9(count) 193 + Branch 191 + 191: Label + 194: 7(int) Load 9(count) + 195: 11(int) Bitcast 194 + 196: 65(ivec4) CompositeConstruct 195 195 195 195 + 197: 65(ivec4) Load 67(c) + 198: 65(ivec4) IAdd 197 196 + Store 67(c) 198 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out old mode 100644 new mode 100755 index dc3ae722..d2f7910a --- a/Test/baseResults/spv.uniformArray.frag.out +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -5,23 +5,25 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 52 +// Id's are bound by 53 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "texColor" Name 15 "color" Name 26 "inColor" Name 36 "alpha" Name 47 "gl_FragColor" - Name 51 "texSampler2D" + Name 52 "texSampler2D" Decorate 47(gl_FragColor) BuiltIn FragColor - Decorate 51(texSampler2D) NoStaticUse + Decorate 52(texSampler2D) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) @@ -29,50 +31,51 @@ Linked fragment stage: 12: 11(int) Constant 6 13: TypeArray 8(fvec4) 12 14: TypePointer UniformConstant 13 - 15(color): 14(ptr) Variable UniformConstant + 15(color): 14(ptr) Variable UniformConstant 16: TypeInt 32 1 17: 16(int) Constant 1 18: TypePointer UniformConstant 8(fvec4) 24: TypeVector 7(float) 3 25: TypePointer UniformConstant 24(fvec3) - 26(inColor): 25(ptr) Variable UniformConstant + 26(inColor): 25(ptr) Variable UniformConstant 33: 11(int) Constant 16 34: TypeArray 7(float) 33 35: TypePointer UniformConstant 34 - 36(alpha): 35(ptr) Variable UniformConstant + 36(alpha): 35(ptr) Variable UniformConstant 37: 16(int) Constant 12 38: TypePointer UniformConstant 7(float) 46: TypePointer Output 8(fvec4) -47(gl_FragColor): 46(ptr) Variable Output - 49: TypeSampler7(float) 2D filter+texture - 50: TypePointer UniformConstant 49 -51(texSampler2D): 50(ptr) Variable UniformConstant +47(gl_FragColor): 46(ptr) Variable Output + 49: TypeImage 7(float) 2D sampled format:Unknown + 50: TypeSampledImage 49 + 51: TypePointer UniformConstant 50 +52(texSampler2D): 51(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 10(texColor): 9(ptr) Variable Function + 10(texColor): 9(ptr) Variable Function 19: 18(ptr) AccessChain 15(color) 17 - 20: 8(fvec4) Load 19 + 20: 8(fvec4) Load 19 21: 18(ptr) AccessChain 15(color) 17 - 22: 8(fvec4) Load 21 + 22: 8(fvec4) Load 21 23: 8(fvec4) FAdd 20 22 - Store 10(texColor) 23 - 27: 24(fvec3) Load 26(inColor) - 28: 8(fvec4) Load 10(texColor) + Store 10(texColor) 23 + 27: 24(fvec3) Load 26(inColor) + 28: 8(fvec4) Load 10(texColor) 29: 24(fvec3) VectorShuffle 28 28 0 1 2 30: 24(fvec3) FAdd 29 27 - 31: 8(fvec4) Load 10(texColor) + 31: 8(fvec4) Load 10(texColor) 32: 8(fvec4) VectorShuffle 31 30 4 5 6 3 - Store 10(texColor) 32 + Store 10(texColor) 32 39: 38(ptr) AccessChain 36(alpha) 37 - 40: 7(float) Load 39 - 41: 8(fvec4) Load 10(texColor) + 40: 7(float) Load 39 + 41: 8(fvec4) Load 10(texColor) 42: 7(float) CompositeExtract 41 3 43: 7(float) FAdd 42 40 - 44: 8(fvec4) Load 10(texColor) + 44: 8(fvec4) Load 10(texColor) 45: 8(fvec4) CompositeInsert 43 44 3 - Store 10(texColor) 45 - 48: 8(fvec4) Load 10(texColor) - Store 47(gl_FragColor) 48 + Store 10(texColor) 45 + 48: 8(fvec4) Load 10(texColor) + Store 47(gl_FragColor) 48 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out old mode 100644 new mode 100755 index 7dc740a9..5931d595 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -7,12 +7,14 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 93 +// Id's are bound by 94 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 9 "iLocal" Name 11 "Count" @@ -33,17 +35,17 @@ Linked fragment stage: Name 35 "foo2" Name 37 "foo" Name 55 "gl_FragColor" - Name 59 "sampler" - Name 63 "coord" - Name 69 "constructed" + Name 60 "sampler" + Name 64 "coord" + Name 70 "constructed" Decorate 55(gl_FragColor) BuiltIn FragColor - Decorate 63(coord) Smooth + Decorate 64(coord) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: TypePointer UniformConstant 7(int) - 11(Count): 10(ptr) Variable UniformConstant + 11(Count): 10(ptr) Variable UniformConstant 13: TypeFloat 32 14(lunarStruct1): TypeStruct 7(int) 13(float) 15(lunarStruct2): TypeStruct 7(int) 13(float) 14(lunarStruct1) @@ -52,7 +54,7 @@ Linked fragment stage: 18: TypeArray 15(lunarStruct2) 17 19(lunarStruct3): TypeStruct 18 7(int) 13(float) 14(lunarStruct1) 20: TypePointer UniformConstant 19(lunarStruct3) - 21(foo3): 20(ptr) Variable UniformConstant + 21(foo3): 20(ptr) Variable UniformConstant 22: 7(int) Constant 0 23: 7(int) Constant 1 26: TypeBool @@ -60,85 +62,86 @@ Linked fragment stage: 32: 16(int) Constant 5 33: TypeArray 15(lunarStruct2) 32 34: TypePointer UniformConstant 33 - 35(foo2): 34(ptr) Variable UniformConstant + 35(foo2): 34(ptr) Variable UniformConstant 36: TypePointer UniformConstant 14(lunarStruct1) - 37(foo): 36(ptr) Variable UniformConstant + 37(foo): 36(ptr) Variable UniformConstant 42: 7(int) Constant 2 47: TypePointer UniformConstant 13(float) 53: TypeVector 13(float) 4 54: TypePointer Output 53(fvec4) -55(gl_FragColor): 54(ptr) Variable Output - 57: TypeSampler13(float) 2D filter+texture - 58: TypePointer UniformConstant 57 - 59(sampler): 58(ptr) Variable UniformConstant - 61: TypeVector 13(float) 2 - 62: TypePointer Input 61(fvec2) - 63(coord): 62(ptr) Variable Input - 67: TypeArray 61(fvec2) 17 - 68: TypePointer Function 67 - 73: 13(float) Constant 1065353216 - 74: 13(float) Constant 1073741824 - 75: 61(fvec2) ConstantComposite 73 74 - 79: TypePointer Function 61(fvec2) +55(gl_FragColor): 54(ptr) Variable Output + 57: TypeImage 13(float) 2D sampled format:Unknown + 58: TypeSampledImage 57 + 59: TypePointer UniformConstant 58 + 60(sampler): 59(ptr) Variable UniformConstant + 62: TypeVector 13(float) 2 + 63: TypePointer Input 62(fvec2) + 64(coord): 63(ptr) Variable Input + 68: TypeArray 62(fvec2) 17 + 69: TypePointer Function 68 + 74: 13(float) Constant 1065353216 + 75: 13(float) Constant 1073741824 + 76: 62(fvec2) ConstantComposite 74 75 + 80: TypePointer Function 62(fvec2) 4(main): 2 Function None 3 5: Label - 9(iLocal): 8(ptr) Variable Function - 31(scale): 30(ptr) Variable Function - 69(constructed): 68(ptr) Variable Function - 12: 7(int) Load 11(Count) - Store 9(iLocal) 12 + 9(iLocal): 8(ptr) Variable Function + 31(scale): 30(ptr) Variable Function + 70(constructed): 69(ptr) Variable Function + 12: 7(int) Load 11(Count) + Store 9(iLocal) 12 24: 10(ptr) AccessChain 21(foo3) 22 23 22 - 25: 7(int) Load 24 + 25: 7(int) Load 24 27: 26(bool) SGreaterThan 25 22 SelectionMerge 29 None - BranchConditional 27 28 50 + BranchConditional 27 28 50 28: Label 38: 10(ptr) AccessChain 37(foo) 22 - 39: 7(int) Load 38 + 39: 7(int) Load 38 40: 10(ptr) AccessChain 21(foo3) 22 39 22 - 41: 7(int) Load 40 + 41: 7(int) Load 40 43: 7(int) IAdd 41 42 - 44: 7(int) Load 9(iLocal) + 44: 7(int) Load 9(iLocal) 45: 7(int) IAdd 44 23 - Store 9(iLocal) 45 + Store 9(iLocal) 45 46: 7(int) IAdd 43 45 48: 47(ptr) AccessChain 35(foo2) 46 42 23 - 49: 13(float) Load 48 - Store 31(scale) 49 + 49: 13(float) Load 48 + Store 31(scale) 49 Branch 29 50: Label 51: 47(ptr) AccessChain 21(foo3) 22 22 42 23 - 52: 13(float) Load 51 - Store 31(scale) 52 + 52: 13(float) Load 51 + Store 31(scale) 52 Branch 29 29: Label - 56: 13(float) Load 31(scale) - 60: 57 Load 59(sampler) - 64: 61(fvec2) Load 63(coord) - 65: 53(fvec4) TextureSample 60 64 - 66: 53(fvec4) VectorTimesScalar 65 56 - Store 55(gl_FragColor) 66 - 70: 61(fvec2) Load 63(coord) - 71: 13(float) Load 31(scale) - 72: 61(fvec2) CompositeConstruct 71 71 - 76: 67 CompositeConstruct 70 72 75 - Store 69(constructed) 76 - 77: 10(ptr) AccessChain 37(foo) 22 - 78: 7(int) Load 77 - 80: 79(ptr) AccessChain 69(constructed) 78 - 81: 61(fvec2) Load 80 - 82: 10(ptr) AccessChain 37(foo) 22 - 83: 7(int) Load 82 - 84: 79(ptr) AccessChain 69(constructed) 83 - 85: 61(fvec2) Load 84 - 86: 13(float) CompositeExtract 81 0 - 87: 13(float) CompositeExtract 81 1 - 88: 13(float) CompositeExtract 85 0 - 89: 13(float) CompositeExtract 85 1 - 90: 53(fvec4) CompositeConstruct 86 87 88 89 - 91: 53(fvec4) Load 55(gl_FragColor) - 92: 53(fvec4) FAdd 91 90 - Store 55(gl_FragColor) 92 + 56: 13(float) Load 31(scale) + 61: 58 Load 60(sampler) + 65: 62(fvec2) Load 64(coord) + 66: 53(fvec4) ImageSampleImplicitLod 61 65 + 67: 53(fvec4) VectorTimesScalar 66 56 + Store 55(gl_FragColor) 67 + 71: 62(fvec2) Load 64(coord) + 72: 13(float) Load 31(scale) + 73: 62(fvec2) CompositeConstruct 72 72 + 77: 68 CompositeConstruct 71 73 76 + Store 70(constructed) 77 + 78: 10(ptr) AccessChain 37(foo) 22 + 79: 7(int) Load 78 + 81: 80(ptr) AccessChain 70(constructed) 79 + 82: 62(fvec2) Load 81 + 83: 10(ptr) AccessChain 37(foo) 22 + 84: 7(int) Load 83 + 85: 80(ptr) AccessChain 70(constructed) 84 + 86: 62(fvec2) Load 85 + 87: 13(float) CompositeExtract 82 0 + 88: 13(float) CompositeExtract 82 1 + 89: 13(float) CompositeExtract 86 0 + 90: 13(float) CompositeExtract 86 1 + 91: 53(fvec4) CompositeConstruct 87 88 89 90 + 92: 53(fvec4) Load 55(gl_FragColor) + 93: 53(fvec4) FAdd 92 91 + Store 55(gl_FragColor) 93 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out old mode 100644 new mode 100755 index 0f20e668..848470fc --- a/Test/baseResults/spv.varyingArray.frag.out +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -10,87 +10,90 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 61 +// Id's are bound by 62 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "texColor" - Name 13 "texSampler2D" - Name 19 "gl_TexCoord" - Name 34 "color" - Name 39 "alpha" - Name 44 "gl_FragColor" - Name 48 "foo" - Decorate 19(gl_TexCoord) Smooth - Decorate 34(color) Smooth - Decorate 39(alpha) Smooth - Decorate 44(gl_FragColor) BuiltIn FragColor - Decorate 48(foo) Smooth + Name 14 "texSampler2D" + Name 20 "gl_TexCoord" + Name 35 "color" + Name 40 "alpha" + Name 45 "gl_FragColor" + Name 49 "foo" + Decorate 20(gl_TexCoord) Smooth + Decorate 35(color) Smooth + Decorate 40(alpha) Smooth + Decorate 45(gl_FragColor) BuiltIn FragColor + Decorate 49(foo) Smooth 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) - 11: TypeSampler7(float) 2D filter+texture - 12: TypePointer UniformConstant 11 -13(texSampler2D): 12(ptr) Variable UniformConstant - 15: TypeInt 32 0 - 16: 15(int) Constant 6 - 17: TypeArray 8(fvec4) 16 - 18: TypePointer Input 17 - 19(gl_TexCoord): 18(ptr) Variable Input - 20: TypeInt 32 1 - 21: 20(int) Constant 4 - 22: TypePointer Input 8(fvec4) - 25: 20(int) Constant 5 - 29: TypeVector 7(float) 2 - 34(color): 22(ptr) Variable Input - 38: TypePointer Input 7(float) - 39(alpha): 38(ptr) Variable Input - 43: TypePointer Output 8(fvec4) -44(gl_FragColor): 43(ptr) Variable Output - 45: 15(int) Constant 3 - 46: TypeArray 8(fvec4) 45 - 47: TypePointer Input 46 - 48(foo): 47(ptr) Variable Input - 49: 20(int) Constant 1 - 52: 20(int) Constant 0 + 11: TypeImage 7(float) 2D sampled format:Unknown + 12: TypeSampledImage 11 + 13: TypePointer UniformConstant 12 +14(texSampler2D): 13(ptr) Variable UniformConstant + 16: TypeInt 32 0 + 17: 16(int) Constant 6 + 18: TypeArray 8(fvec4) 17 + 19: TypePointer Input 18 + 20(gl_TexCoord): 19(ptr) Variable Input + 21: TypeInt 32 1 + 22: 21(int) Constant 4 + 23: TypePointer Input 8(fvec4) + 26: 21(int) Constant 5 + 30: TypeVector 7(float) 2 + 35(color): 23(ptr) Variable Input + 39: TypePointer Input 7(float) + 40(alpha): 39(ptr) Variable Input + 44: TypePointer Output 8(fvec4) +45(gl_FragColor): 44(ptr) Variable Output + 46: 16(int) Constant 3 + 47: TypeArray 8(fvec4) 46 + 48: TypePointer Input 47 + 49(foo): 48(ptr) Variable Input + 50: 21(int) Constant 1 + 53: 21(int) Constant 0 4(main): 2 Function None 3 5: Label - 10(texColor): 9(ptr) Variable Function - 14: 11 Load 13(texSampler2D) - 23: 22(ptr) AccessChain 19(gl_TexCoord) 21 - 24: 8(fvec4) Load 23 - 26: 22(ptr) AccessChain 19(gl_TexCoord) 25 - 27: 8(fvec4) Load 26 - 28: 8(fvec4) FAdd 24 27 - 30: 7(float) CompositeExtract 28 0 - 31: 7(float) CompositeExtract 28 1 - 32: 29(fvec2) CompositeConstruct 30 31 - 33: 8(fvec4) TextureSample 14 32 - Store 10(texColor) 33 - 35: 8(fvec4) Load 34(color) - 36: 8(fvec4) Load 10(texColor) - 37: 8(fvec4) FAdd 36 35 - Store 10(texColor) 37 - 40: 7(float) Load 39(alpha) - 41: 8(fvec4) Load 10(texColor) - 42: 8(fvec4) CompositeInsert 40 41 3 - Store 10(texColor) 42 - 50: 22(ptr) AccessChain 48(foo) 49 - 51: 8(fvec4) Load 50 - 53: 22(ptr) AccessChain 19(gl_TexCoord) 52 - 54: 8(fvec4) Load 53 - 55: 8(fvec4) FAdd 51 54 - 56: 22(ptr) AccessChain 19(gl_TexCoord) 21 - 57: 8(fvec4) Load 56 - 58: 8(fvec4) FAdd 55 57 - 59: 8(fvec4) Load 10(texColor) - 60: 8(fvec4) FAdd 58 59 - Store 44(gl_FragColor) 60 + 10(texColor): 9(ptr) Variable Function + 15: 12 Load 14(texSampler2D) + 24: 23(ptr) AccessChain 20(gl_TexCoord) 22 + 25: 8(fvec4) Load 24 + 27: 23(ptr) AccessChain 20(gl_TexCoord) 26 + 28: 8(fvec4) Load 27 + 29: 8(fvec4) FAdd 25 28 + 31: 7(float) CompositeExtract 29 0 + 32: 7(float) CompositeExtract 29 1 + 33: 30(fvec2) CompositeConstruct 31 32 + 34: 8(fvec4) ImageSampleImplicitLod 15 33 + Store 10(texColor) 34 + 36: 8(fvec4) Load 35(color) + 37: 8(fvec4) Load 10(texColor) + 38: 8(fvec4) FAdd 37 36 + Store 10(texColor) 38 + 41: 7(float) Load 40(alpha) + 42: 8(fvec4) Load 10(texColor) + 43: 8(fvec4) CompositeInsert 41 42 3 + Store 10(texColor) 43 + 51: 23(ptr) AccessChain 49(foo) 50 + 52: 8(fvec4) Load 51 + 54: 23(ptr) AccessChain 20(gl_TexCoord) 53 + 55: 8(fvec4) Load 54 + 56: 8(fvec4) FAdd 52 55 + 57: 23(ptr) AccessChain 20(gl_TexCoord) 22 + 58: 8(fvec4) Load 57 + 59: 8(fvec4) FAdd 56 58 + 60: 8(fvec4) Load 10(texColor) + 61: 8(fvec4) FAdd 59 60 + Store 45(gl_FragColor) 61 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out old mode 100644 new mode 100755 index 54c37639..9dfe588f --- a/Test/baseResults/spv.varyingArrayIndirect.frag.out +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -10,97 +10,100 @@ Linked fragment stage: // Module Version 99 // Generated by (magic number): 51a00bb -// Id's are bound by 69 +// Id's are bound by 70 Source GLSL 130 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "texColor" - Name 13 "texSampler2D" - Name 19 "userIn" - Name 22 "b" - Name 30 "gl_TexCoord" - Name 31 "a" - Name 45 "color" - Name 50 "alpha" - Name 55 "gl_FragColor" - Decorate 19(userIn) Smooth - Decorate 30(gl_TexCoord) Smooth - Decorate 45(color) Smooth - Decorate 50(alpha) Smooth - Decorate 55(gl_FragColor) BuiltIn FragColor + Name 14 "texSampler2D" + Name 20 "userIn" + Name 23 "b" + Name 31 "gl_TexCoord" + Name 32 "a" + Name 46 "color" + Name 51 "alpha" + Name 56 "gl_FragColor" + Decorate 20(userIn) Smooth + Decorate 31(gl_TexCoord) Smooth + Decorate 46(color) Smooth + Decorate 51(alpha) Smooth + Decorate 56(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) - 11: TypeSampler7(float) 2D filter+texture - 12: TypePointer UniformConstant 11 -13(texSampler2D): 12(ptr) Variable UniformConstant - 15: TypeInt 32 0 - 16: 15(int) Constant 2 - 17: TypeArray 8(fvec4) 16 - 18: TypePointer Input 17 - 19(userIn): 18(ptr) Variable Input - 20: TypeInt 32 1 - 21: TypePointer UniformConstant 20(int) - 22(b): 21(ptr) Variable UniformConstant - 24: TypePointer Input 8(fvec4) - 27: 15(int) Constant 6 - 28: TypeArray 8(fvec4) 27 - 29: TypePointer Input 28 - 30(gl_TexCoord): 29(ptr) Variable Input - 31(a): 21(ptr) Variable UniformConstant - 36: 20(int) Constant 5 - 40: TypeVector 7(float) 2 - 45(color): 24(ptr) Variable Input - 49: TypePointer Input 7(float) - 50(alpha): 49(ptr) Variable Input - 54: TypePointer Output 8(fvec4) -55(gl_FragColor): 54(ptr) Variable Output - 56: 20(int) Constant 0 + 11: TypeImage 7(float) 2D sampled format:Unknown + 12: TypeSampledImage 11 + 13: TypePointer UniformConstant 12 +14(texSampler2D): 13(ptr) Variable UniformConstant + 16: TypeInt 32 0 + 17: 16(int) Constant 2 + 18: TypeArray 8(fvec4) 17 + 19: TypePointer Input 18 + 20(userIn): 19(ptr) Variable Input + 21: TypeInt 32 1 + 22: TypePointer UniformConstant 21(int) + 23(b): 22(ptr) Variable UniformConstant + 25: TypePointer Input 8(fvec4) + 28: 16(int) Constant 6 + 29: TypeArray 8(fvec4) 28 + 30: TypePointer Input 29 + 31(gl_TexCoord): 30(ptr) Variable Input + 32(a): 22(ptr) Variable UniformConstant + 37: 21(int) Constant 5 + 41: TypeVector 7(float) 2 + 46(color): 25(ptr) Variable Input + 50: TypePointer Input 7(float) + 51(alpha): 50(ptr) Variable Input + 55: TypePointer Output 8(fvec4) +56(gl_FragColor): 55(ptr) Variable Output + 57: 21(int) Constant 0 4(main): 2 Function None 3 5: Label - 10(texColor): 9(ptr) Variable Function - 14: 11 Load 13(texSampler2D) - 23: 20(int) Load 22(b) - 25: 24(ptr) AccessChain 19(userIn) 23 - 26: 8(fvec4) Load 25 - 32: 20(int) Load 31(a) - 33: 24(ptr) AccessChain 30(gl_TexCoord) 32 - 34: 8(fvec4) Load 33 - 35: 8(fvec4) FAdd 26 34 - 37: 24(ptr) AccessChain 30(gl_TexCoord) 36 - 38: 8(fvec4) Load 37 - 39: 8(fvec4) FAdd 35 38 - 41: 7(float) CompositeExtract 39 0 - 42: 7(float) CompositeExtract 39 1 - 43: 40(fvec2) CompositeConstruct 41 42 - 44: 8(fvec4) TextureSample 14 43 - Store 10(texColor) 44 - 46: 8(fvec4) Load 45(color) - 47: 8(fvec4) Load 10(texColor) - 48: 8(fvec4) FAdd 47 46 - Store 10(texColor) 48 - 51: 7(float) Load 50(alpha) - 52: 8(fvec4) Load 10(texColor) - 53: 8(fvec4) CompositeInsert 51 52 3 - Store 10(texColor) 53 - 57: 24(ptr) AccessChain 30(gl_TexCoord) 56 - 58: 8(fvec4) Load 57 - 59: 20(int) Load 22(b) - 60: 24(ptr) AccessChain 30(gl_TexCoord) 59 - 61: 8(fvec4) Load 60 - 62: 8(fvec4) FAdd 58 61 - 63: 8(fvec4) Load 10(texColor) - 64: 8(fvec4) FAdd 62 63 - 65: 20(int) Load 31(a) - 66: 24(ptr) AccessChain 19(userIn) 65 - 67: 8(fvec4) Load 66 - 68: 8(fvec4) FAdd 64 67 - Store 55(gl_FragColor) 68 + 10(texColor): 9(ptr) Variable Function + 15: 12 Load 14(texSampler2D) + 24: 21(int) Load 23(b) + 26: 25(ptr) AccessChain 20(userIn) 24 + 27: 8(fvec4) Load 26 + 33: 21(int) Load 32(a) + 34: 25(ptr) AccessChain 31(gl_TexCoord) 33 + 35: 8(fvec4) Load 34 + 36: 8(fvec4) FAdd 27 35 + 38: 25(ptr) AccessChain 31(gl_TexCoord) 37 + 39: 8(fvec4) Load 38 + 40: 8(fvec4) FAdd 36 39 + 42: 7(float) CompositeExtract 40 0 + 43: 7(float) CompositeExtract 40 1 + 44: 41(fvec2) CompositeConstruct 42 43 + 45: 8(fvec4) ImageSampleImplicitLod 15 44 + Store 10(texColor) 45 + 47: 8(fvec4) Load 46(color) + 48: 8(fvec4) Load 10(texColor) + 49: 8(fvec4) FAdd 48 47 + Store 10(texColor) 49 + 52: 7(float) Load 51(alpha) + 53: 8(fvec4) Load 10(texColor) + 54: 8(fvec4) CompositeInsert 52 53 3 + Store 10(texColor) 54 + 58: 25(ptr) AccessChain 31(gl_TexCoord) 57 + 59: 8(fvec4) Load 58 + 60: 21(int) Load 23(b) + 61: 25(ptr) AccessChain 31(gl_TexCoord) 60 + 62: 8(fvec4) Load 61 + 63: 8(fvec4) FAdd 59 62 + 64: 8(fvec4) Load 10(texColor) + 65: 8(fvec4) FAdd 63 64 + 66: 21(int) Load 32(a) + 67: 25(ptr) AccessChain 20(userIn) 66 + 68: 8(fvec4) Load 67 + 69: 8(fvec4) FAdd 65 68 + Store 56(gl_FragColor) 69 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out old mode 100644 new mode 100755 index cad7fe7c..6e288deb --- a/Test/baseResults/spv.voidFunction.frag.out +++ b/Test/baseResults/spv.voidFunction.frag.out @@ -8,9 +8,11 @@ Linked fragment stage: // Id's are bound by 43 Source GLSL 120 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 7 "foo(" Name 9 "foo2(" @@ -21,58 +23,58 @@ Linked fragment stage: Name 40 "BaseColor" Name 42 "d" Decorate 36(gl_FragColor) BuiltIn FragColor - Decorate 40(BaseColor) Smooth - Decorate 40(BaseColor) NoStaticUse - Decorate 42(d) NoStaticUse + Decorate 40(BaseColor) Smooth + Decorate 40(BaseColor) NoStaticUse + Decorate 42(d) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 11: TypeFloat 32 12: TypePointer PrivateGlobal 11(float) - 13(bar): 12(ptr) Variable PrivateGlobal + 13(bar): 12(ptr) Variable PrivateGlobal 14: 11(float) Constant 1073741824 16: 11(float) Constant 1065353216 21: TypeVector 11(float) 4 22: TypePointer Function 21(fvec4) 24: TypePointer UniformConstant 21(fvec4) - 25(bigColor): 24(ptr) Variable UniformConstant + 25(bigColor): 24(ptr) Variable UniformConstant 35: TypePointer Output 21(fvec4) -36(gl_FragColor): 35(ptr) Variable Output +36(gl_FragColor): 35(ptr) Variable Output 39: TypePointer Input 21(fvec4) - 40(BaseColor): 39(ptr) Variable Input + 40(BaseColor): 39(ptr) Variable Input 41: TypePointer UniformConstant 11(float) - 42(d): 41(ptr) Variable UniformConstant + 42(d): 41(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label - 23(outColor): 22(ptr) Variable Function - Store 13(bar) 14 - 26: 21(fvec4) Load 25(bigColor) - Store 23(outColor) 26 - 27: 2 FunctionCall 7(foo() - 28: 2 FunctionCall 9(foo2() - 29: 11(float) Load 13(bar) - 30: 21(fvec4) Load 23(outColor) + 23(outColor): 22(ptr) Variable Function + Store 13(bar) 14 + 26: 21(fvec4) Load 25(bigColor) + Store 23(outColor) 26 + 27: 2 FunctionCall 7(foo() + 28: 2 FunctionCall 9(foo2() + 29: 11(float) Load 13(bar) + 30: 21(fvec4) Load 23(outColor) 31: 11(float) CompositeExtract 30 0 32: 11(float) FAdd 31 29 - 33: 21(fvec4) Load 23(outColor) + 33: 21(fvec4) Load 23(outColor) 34: 21(fvec4) CompositeInsert 32 33 0 - Store 23(outColor) 34 - 37: 21(fvec4) Load 23(outColor) - Store 36(gl_FragColor) 37 + Store 23(outColor) 34 + 37: 21(fvec4) Load 23(outColor) + Store 36(gl_FragColor) 37 Branch 6 6: Label Return FunctionEnd 7(foo(): 2 Function None 3 8: Label - 15: 11(float) Load 13(bar) + 15: 11(float) Load 13(bar) 17: 11(float) FAdd 15 16 - Store 13(bar) 17 + Store 13(bar) 17 Return FunctionEnd 9(foo2(): 2 Function None 3 10: Label - 19: 11(float) Load 13(bar) + 19: 11(float) Load 13(bar) 20: 11(float) FAdd 19 16 - Store 13(bar) 20 + Store 13(bar) 20 Return FunctionEnd diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out old mode 100644 new mode 100755 index 6d8aaf2b..1dba3c8e --- a/Test/baseResults/spv.while-continue-break.vert.out +++ b/Test/baseResults/spv.while-continue-break.vert.out @@ -8,9 +8,10 @@ Linked vertex stage: // Id's are bound by 43 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 18 "A" @@ -19,19 +20,12 @@ Linked vertex stage: Name 38 "D" Name 41 "gl_VertexID" Name 42 "gl_InstanceID" - Decorate 9(i) PrecisionHigh - Decorate 18(A) PrecisionHigh - Decorate 26(B) PrecisionHigh - Decorate 28(C) PrecisionHigh - Decorate 38(D) PrecisionHigh - Decorate 41(gl_VertexID) PrecisionHigh Decorate 41(gl_VertexID) BuiltIn VertexId - Decorate 41(gl_VertexID) NoStaticUse - Decorate 42(gl_InstanceID) PrecisionHigh + Decorate 41(gl_VertexID) NoStaticUse Decorate 42(gl_InstanceID) BuiltIn InstanceId - Decorate 42(gl_InstanceID) NoStaticUse + Decorate 42(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 0 @@ -42,54 +36,54 @@ Linked vertex stage: 30: 7(int) Constant 5 39: 7(int) Constant 3 40: TypePointer Input 7(int) - 41(gl_VertexID): 40(ptr) Variable Input -42(gl_InstanceID): 40(ptr) Variable Input + 41(gl_VertexID): 40(ptr) Variable Input +42(gl_InstanceID): 40(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - 18(A): 8(ptr) Variable Function - 26(B): 8(ptr) Variable Function - 28(C): 8(ptr) Variable Function - 38(D): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + 18(A): 8(ptr) Variable Function + 26(B): 8(ptr) Variable Function + 28(C): 8(ptr) Variable Function + 38(D): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label - 14: 7(int) Load 9(i) + 14: 7(int) Load 9(i) 17: 16(bool) SLessThan 14 15 LoopMerge 12 None - BranchConditional 17 13 12 + BranchConditional 17 13 12 13: Label - Store 18(A) 19 - 20: 7(int) Load 9(i) + Store 18(A) 19 + 20: 7(int) Load 9(i) 22: 7(int) SMod 20 21 23: 16(bool) IEqual 22 10 SelectionMerge 25 None - BranchConditional 23 24 25 + BranchConditional 23 24 25 24: Label - Store 26(B) 21 + Store 26(B) 21 Branch 11 27: Label - Store 28(C) 21 + Store 28(C) 21 Branch 25 25: Label - 29: 7(int) Load 9(i) + 29: 7(int) Load 9(i) 31: 7(int) SMod 29 30 32: 16(bool) IEqual 31 10 SelectionMerge 34 None - BranchConditional 32 33 34 + BranchConditional 32 33 34 33: Label - Store 26(B) 21 + Store 26(B) 21 Branch 12 35: Label - Store 28(C) 21 + Store 28(C) 21 Branch 34 34: Label - 36: 7(int) Load 9(i) + 36: 7(int) Load 9(i) 37: 7(int) IAdd 36 19 - Store 9(i) 37 + Store 9(i) 37 Branch 11 12: Label - Store 38(D) 39 + Store 38(D) 39 Branch 6 6: Label Return diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out old mode 100644 new mode 100755 index 3641f82a..b896e9f6 --- a/Test/baseResults/spv.while-simple.vert.out +++ b/Test/baseResults/spv.while-simple.vert.out @@ -8,22 +8,20 @@ Linked vertex stage: // Id's are bound by 24 Source ESSL 300 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 + EntryPoint Vertex 4 "main" Name 4 "main" Name 9 "i" Name 22 "gl_VertexID" Name 23 "gl_InstanceID" - Decorate 9(i) PrecisionHigh - Decorate 22(gl_VertexID) PrecisionHigh Decorate 22(gl_VertexID) BuiltIn VertexId - Decorate 22(gl_VertexID) NoStaticUse - Decorate 23(gl_InstanceID) PrecisionHigh + Decorate 22(gl_VertexID) NoStaticUse Decorate 23(gl_InstanceID) BuiltIn InstanceId - Decorate 23(gl_InstanceID) NoStaticUse + Decorate 23(gl_InstanceID) NoStaticUse 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeInt 32 1 8: TypePointer Function 7(int) 10: 7(int) Constant 0 @@ -31,22 +29,22 @@ Linked vertex stage: 16: TypeBool 19: 7(int) Constant 1 21: TypePointer Input 7(int) - 22(gl_VertexID): 21(ptr) Variable Input -23(gl_InstanceID): 21(ptr) Variable Input + 22(gl_VertexID): 21(ptr) Variable Input +23(gl_InstanceID): 21(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 9(i): 8(ptr) Variable Function - Store 9(i) 10 + 9(i): 8(ptr) Variable Function + Store 9(i) 10 Branch 11 11: Label - 14: 7(int) Load 9(i) + 14: 7(int) Load 9(i) 17: 16(bool) SLessThan 14 15 LoopMerge 12 None - BranchConditional 17 13 12 + BranchConditional 17 13 12 13: Label - 18: 7(int) Load 9(i) + 18: 7(int) Load 9(i) 20: 7(int) IAdd 18 19 - Store 9(i) 20 + Store 9(i) 20 Branch 11 12: Label Branch 6 diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out old mode 100644 new mode 100755 index 5d82ee8e..bb7d9137 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -8,53 +8,55 @@ Linked fragment stage: // Id's are bound by 32 Source GLSL 110 + Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginLowerLeft Name 4 "main" Name 10 "color" Name 12 "BaseColor" Name 20 "d" Name 25 "bigColor" Name 30 "gl_FragColor" - Decorate 12(BaseColor) Smooth + Decorate 12(BaseColor) Smooth Decorate 30(gl_FragColor) BuiltIn FragColor 2: TypeVoid - 3: TypeFunction 2 + 3: TypeFunction 2 7: TypeFloat 32 8: TypeVector 7(float) 4 9: TypePointer Function 8(fvec4) 11: TypePointer Input 8(fvec4) - 12(BaseColor): 11(ptr) Variable Input + 12(BaseColor): 11(ptr) Variable Input 19: TypePointer UniformConstant 7(float) - 20(d): 19(ptr) Variable UniformConstant + 20(d): 19(ptr) Variable UniformConstant 22: TypeBool 24: TypePointer UniformConstant 8(fvec4) - 25(bigColor): 24(ptr) Variable UniformConstant + 25(bigColor): 24(ptr) Variable UniformConstant 29: TypePointer Output 8(fvec4) -30(gl_FragColor): 29(ptr) Variable Output +30(gl_FragColor): 29(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 10(color): 9(ptr) Variable Function - 13: 8(fvec4) Load 12(BaseColor) - Store 10(color) 13 + 10(color): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 Branch 14 14: Label - 17: 8(fvec4) Load 10(color) + 17: 8(fvec4) Load 10(color) 18: 7(float) CompositeExtract 17 0 - 21: 7(float) Load 20(d) + 21: 7(float) Load 20(d) 23: 22(bool) FOrdLessThan 18 21 LoopMerge 15 None - BranchConditional 23 16 15 + BranchConditional 23 16 15 16: Label - 26: 8(fvec4) Load 25(bigColor) - 27: 8(fvec4) Load 10(color) + 26: 8(fvec4) Load 25(bigColor) + 27: 8(fvec4) Load 10(color) 28: 8(fvec4) FAdd 27 26 - Store 10(color) 28 + Store 10(color) 28 Branch 14 15: Label - 31: 8(fvec4) Load 10(color) - Store 30(gl_FragColor) 31 + 31: 8(fvec4) Load 10(color) + Store 30(gl_FragColor) 31 Branch 6 6: Label Return diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index e28220d5..7ee1297c 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "2.3.703" +#define GLSLANG_REVISION "2.3.704" #define GLSLANG_DATE "06-Aug-2015"