Move to revision 31 of SPIR-V.

This commit is contained in:
John Kessenich 2015-08-06 22:53:06 -06:00
parent e24a74c320
commit 5e4b1242bf
77 changed files with 6050 additions and 5450 deletions

3
SPIRV/CMakeLists.txt Normal file → Executable file
View File

@ -10,7 +10,8 @@ set(SOURCES
disassemble.cpp) disassemble.cpp)
set(HEADERS set(HEADERS
spirv.h spirv.hpp
GLSL.std.450.h
GlslangToSpv.h GlslangToSpv.h
SpvBuilder.h SpvBuilder.h
SPVRemapper.h SPVRemapper.h

300
SPIRV/GlslangToSpv.cpp Normal file → Executable file
View File

@ -39,14 +39,17 @@
// translate them to SPIR-V. // translate them to SPIR-V.
// //
#include "spirv.h" #include "spirv.hpp"
#include "GlslangToSpv.h" #include "GlslangToSpv.h"
#include "SpvBuilder.h" #include "SpvBuilder.h"
#include "GLSL450Lib.h" namespace spv {
#include "GLSL.std.450.h"
}
// Glslang includes // Glslang includes
#include "../glslang/MachineIndependent/localintermediate.h" #include "../glslang/MachineIndependent/localintermediate.h"
#include "../glslang/MachineIndependent/SymbolTable.h" #include "../glslang/MachineIndependent/SymbolTable.h"
#include "../glslang/Include/Common.h"
#include <string> #include <string>
#include <map> #include <map>
@ -85,6 +88,7 @@ protected:
spv::Id createSpvVariable(const glslang::TIntermSymbol*); spv::Id createSpvVariable(const glslang::TIntermSymbol*);
spv::Id getSampledType(const glslang::TSampler&); spv::Id getSampledType(const glslang::TSampler&);
spv::Id convertGlslangToSpvType(const glslang::TType& type); 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); bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
void makeFunctions(const glslang::TIntermSequence&); void makeFunctions(const glslang::TIntermSequence&);
@ -93,6 +97,7 @@ protected:
void handleFunctionEntry(const glslang::TIntermAggregate* node); void handleFunctionEntry(const glslang::TIntermAggregate* node);
void translateArguments(const glslang::TIntermSequence& glslangArguments, std::vector<spv::Id>& arguments); void translateArguments(const glslang::TIntermSequence& glslangArguments, std::vector<spv::Id>& arguments);
spv::Id handleBuiltInFunctionCall(const glslang::TIntermAggregate*); spv::Id handleBuiltInFunctionCall(const glslang::TIntermAggregate*);
spv::Id handleTextureCall(spv::Decoration precision, glslang::TOperator, spv::Id typeId, glslang::TSampler, std::vector<spv::Id>& idArguments);
spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*); 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); 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 createConversion(glslang::TOperator op, spv::Decoration precision, spv::Id destTypeId, spv::Id operand);
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands); spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands);
spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands); spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id createNoArgOperation(glslang::TOperator op); spv::Id createNoArgOperation(glslang::TOperator op);
spv::Id getSymbolId(const glslang::TIntermSymbol* node); spv::Id getSymbolId(const glslang::TIntermSymbol* node);
void addDecoration(spv::Id id, spv::Decoration dec); 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) spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type)
{ {
switch (type.getQualifier().precision) { switch (type.getQualifier().precision) {
case glslang::EpqLow: return spv::DecorationPrecisionLow; case glslang::EpqLow: return spv::DecorationRelaxedPrecision; // TODO: Map instead to 16-bit types?
case glslang::EpqMedium: return spv::DecorationPrecisionMedium; case glslang::EpqMedium: return spv::DecorationRelaxedPrecision;
case glslang::EpqHigh: return spv::DecorationPrecisionHigh; case glslang::EpqHigh: return spv::NoPrecision;
default: default:
return spv::NoPrecision; return spv::NoPrecision;
} }
@ -255,12 +260,9 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type)
case glslang::EvqBuffer: case glslang::EvqBuffer:
switch (type.getQualifier().layoutPacking) { switch (type.getQualifier().layoutPacking) {
case glslang::ElpShared: return spv::DecorationGLSLShared; case glslang::ElpShared: return spv::DecorationGLSLShared;
case glslang::ElpStd140: return spv::DecorationGLSLStd140;
case glslang::ElpStd430: return spv::DecorationGLSLStd430;
case glslang::ElpPacked: return spv::DecorationGLSLPacked; case glslang::ElpPacked: return spv::DecorationGLSLPacked;
default: default:
spv::MissingFunctionality("uniform block layout"); return (spv::Decoration)spv::BadValue;
return spv::DecorationGLSLShared;
} }
case glslang::EvqVaryingIn: case glslang::EvqVaryingIn:
case glslang::EvqVaryingOut: case glslang::EvqVaryingOut:
@ -309,7 +311,6 @@ spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn)
switch (builtIn) { switch (builtIn) {
case glslang::EbvPosition: return spv::BuiltInPosition; case glslang::EbvPosition: return spv::BuiltInPosition;
case glslang::EbvPointSize: return spv::BuiltInPointSize; case glslang::EbvPointSize: return spv::BuiltInPointSize;
case glslang::EbvClipVertex: return spv::BuiltInClipVertex;
case glslang::EbvClipDistance: return spv::BuiltInClipDistance; case glslang::EbvClipDistance: return spv::BuiltInClipDistance;
case glslang::EbvCullDistance: return spv::BuiltInCullDistance; case glslang::EbvCullDistance: return spv::BuiltInCullDistance;
case glslang::EbvVertexId: return spv::BuiltInVertexId; case glslang::EbvVertexId: return spv::BuiltInVertexId;
@ -359,7 +360,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
stdBuiltins = builder.import("GLSL.std.450"); stdBuiltins = builder.import("GLSL.std.450");
builder.setMemoryModel(spv::AddressingModelLogical, spv::MemoryModelGLSL450); builder.setMemoryModel(spv::AddressingModelLogical, spv::MemoryModelGLSL450);
shaderEntry = builder.makeMain(); shaderEntry = builder.makeMain();
builder.addEntryPoint(executionModel, shaderEntry); builder.addEntryPoint(executionModel, shaderEntry, "main");
// Add the source extensions // Add the source extensions
const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
@ -374,13 +375,16 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
unsigned int mode; unsigned int mode;
switch (glslangIntermediate->getStage()) { switch (glslangIntermediate->getStage()) {
case EShLangVertex: case EShLangVertex:
builder.addCapability(spv::CapabilityShader);
break; break;
case EShLangTessControl: case EShLangTessControl:
builder.addCapability(spv::CapabilityTessellation);
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
break; break;
case EShLangTessEvaluation: case EShLangTessEvaluation:
builder.addCapability(spv::CapabilityTessellation);
switch (glslangIntermediate->getInputPrimitive()) { switch (glslangIntermediate->getInputPrimitive()) {
case glslang::ElgTriangles: mode = spv::ExecutionModeInputTriangles; break; case glslang::ElgTriangles: mode = spv::ExecutionModeInputTriangles; break;
case glslang::ElgQuads: mode = spv::ExecutionModeInputQuads; break; case glslang::ElgQuads: mode = spv::ExecutionModeInputQuads; break;
@ -397,6 +401,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
break; break;
case EShLangGeometry: case EShLangGeometry:
builder.addCapability(spv::CapabilityGeometry);
switch (glslangIntermediate->getInputPrimitive()) { switch (glslangIntermediate->getInputPrimitive()) {
case glslang::ElgPoints: mode = spv::ExecutionModeInputPoints; break; case glslang::ElgPoints: mode = spv::ExecutionModeInputPoints; break;
case glslang::ElgLines: mode = spv::ExecutionModeInputLines; break; case glslang::ElgLines: mode = spv::ExecutionModeInputLines; break;
@ -421,13 +426,17 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
break; break;
case EShLangFragment: case EShLangFragment:
builder.addCapability(spv::CapabilityShader);
if (glslangIntermediate->getPixelCenterInteger()) if (glslangIntermediate->getPixelCenterInteger())
builder.addExecutionMode(shaderEntry, spv::ExecutionModePixelCenterInteger); builder.addExecutionMode(shaderEntry, spv::ExecutionModePixelCenterInteger);
if (glslangIntermediate->getOriginUpperLeft()) if (glslangIntermediate->getOriginUpperLeft())
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginUpperLeft); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginUpperLeft);
else
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginLowerLeft);
break; break;
case EShLangCompute: case EShLangCompute:
builder.addCapability(spv::CapabilityShader);
break; break;
default: 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); result = createUnaryOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands.front(), node->getType().getBasicType() == glslang::EbtFloat || node->getType().getBasicType() == glslang::EbtDouble);
break; break;
default: default:
result = createMiscOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands); result = createMiscOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands, node->getBasicType());
break; break;
} }
} }
@ -1311,9 +1320,11 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
case glslang::EbtSampler: case glslang::EbtSampler:
{ {
const glslang::TSampler& sampler = type.getSampler(); const glslang::TSampler& sampler = type.getSampler();
spvType = builder.makeSampler(getSampledType(sampler), TranslateDimensionality(sampler), spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms,
sampler.image ? spv::Builder::samplerContentImage : spv::Builder::samplerContentTextureFilter, sampler.image ? 2 : 1, spv::ImageFormatUnknown); // TODO: translate format, needed for GLSL image ops
sampler.arrayed, sampler.shadow, sampler.ms); // OpenGL "textures" need to be combined with a sampler
if (! sampler.image)
spvType = builder.makeSampledImageType(spvType);
} }
break; break;
case glslang::EbtStruct: case glslang::EbtStruct:
@ -1350,6 +1361,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
structMap[glslangStruct] = spvType; structMap[glslangStruct] = spvType;
// Name and decorate the non-hidden members // Name and decorate the non-hidden members
int offset = -1;
for (int i = 0; i < (int)glslangStruct->size(); i++) { for (int i = 0; i < (int)glslangStruct->size(); i++) {
glslang::TType& glslangType = *(*glslangStruct)[i].type; glslang::TType& glslangType = *(*glslangStruct)[i].type;
int member = i; int member = i;
@ -1368,6 +1380,14 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent); builder.addMemberDecoration(spvType, member, spv::DecorationComponent, glslangType.getQualifier().layoutComponent);
if (glslangType.getQualifier().hasXfbOffset()) if (glslangType.getQualifier().hasXfbOffset())
builder.addMemberDecoration(spvType, member, spv::DecorationOffset, glslangType.getQualifier().layoutXfbOffset); 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 // built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangType.getQualifier().builtIn); 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); builder.addDecoration(spvType, spv::DecorationStream, type.getQualifier().layoutStream);
if (glslangIntermediate->getXfbMode()) { if (glslangIntermediate->getXfbMode()) {
if (type.getQualifier().hasXfbStride()) if (type.getQualifier().hasXfbStride())
builder.addDecoration(spvType, spv::DecorationStride, type.getQualifier().layoutXfbStride); builder.addDecoration(spvType, spv::DecorationXfbStride, type.getQualifier().layoutXfbStride);
if (type.getQualifier().hasXfbBuffer()) if (type.getQualifier().hasXfbBuffer())
builder.addDecoration(spvType, spv::DecorationXfbBuffer, type.getQualifier().layoutXfbBuffer); builder.addDecoration(spvType, spv::DecorationXfbBuffer, type.getQualifier().layoutXfbBuffer);
} }
@ -1415,6 +1435,49 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
return spvType; 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) bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate* node)
{ {
return node->getName() == "main("; return node->getName() == "main(";
@ -1519,11 +1582,6 @@ spv::Id TGlslangToSpvTraverser::handleBuiltInFunctionCall(const glslang::TInterm
{ {
std::vector<spv::Id> arguments; std::vector<spv::Id> arguments;
translateArguments(node->getSequence(), arguments); translateArguments(node->getSequence(), arguments);
std::vector<spv::Id> argTypes;
for (int a = 0; a < (int)arguments.size(); ++a)
argTypes.push_back(builder.getTypeId(arguments[a]));
spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); spv::Decoration precision = TranslatePrecisionDecoration(node->getType());
if (node->getName() == "ftransform(") { 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 (node->getName().find("textureSize", 0) != std::string::npos) {
if (arguments.size() > 1) { if (arguments.size() > 1) {
params.lod = arguments[1]; params.lod = arguments[1];
return builder.createTextureQueryCall(spv::OpTextureQuerySizeLod, params); return builder.createTextureQueryCall(spv::OpImageQuerySizeLod, params);
} else } else
return builder.createTextureQueryCall(spv::OpTextureQuerySize, params); return builder.createTextureQueryCall(spv::OpImageQuerySize, params);
} }
// special case the number of samples query // special case the number of samples query
if (node->getName().find("textureSamples", 0) != std::string::npos) 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 // special case the other queries
if (node->getName().find("Query", 0) != std::string::npos) { if (node->getName().find("Query", 0) != std::string::npos) {
if (node->getName().find("Levels", 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) { else if (node->getName().find("Lod", 0) != std::string::npos) {
params.coords = arguments[1]; params.coords = arguments[1];
return builder.createTextureQueryCall(spv::OpTextureQueryLod, params); return builder.createTextureQueryCall(spv::OpImageQueryLod, params);
} else } else
spv::MissingFunctionality("glslang texture query"); spv::MissingFunctionality("glslang texture query");
} }
@ -1599,6 +1657,16 @@ spv::Id TGlslangToSpvTraverser::handleBuiltInFunctionCall(const glslang::TInterm
int extraArgs = 0; int extraArgs = 0;
if (cubeCompare) if (cubeCompare)
params.Dref = arguments[2]; params.Dref = arguments[2];
else if (sampler.shadow) {
std::vector<spv::Id> 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) { if (lod) {
params.lod = arguments[2]; params.lod = arguments[2];
++extraArgs; ++extraArgs;
@ -1835,7 +1903,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv
break; break;
case glslang::EOpLogicalXor: case glslang::EOpLogicalXor:
needMatchingVectors = false; needMatchingVectors = false;
binOp = spv::OpLogicalXor; binOp = spv::OpLogicalNotEqual;
break; break;
case glslang::EOpLessThan: case glslang::EOpLessThan:
@ -1974,107 +2042,109 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
case glslang::EOpLogicalNot: case glslang::EOpLogicalNot:
case glslang::EOpVectorLogicalNot: case glslang::EOpVectorLogicalNot:
unaryOp = spv::OpLogicalNot;
break;
case glslang::EOpBitwiseNot: case glslang::EOpBitwiseNot:
unaryOp = spv::OpNot; unaryOp = spv::OpNot;
break; break;
case glslang::EOpDeterminant: case glslang::EOpDeterminant:
libCall = GLSL_STD_450::Determinant; libCall = spv::GLSLstd450Determinant;
break; break;
case glslang::EOpMatrixInverse: case glslang::EOpMatrixInverse:
libCall = GLSL_STD_450::MatrixInverse; libCall = spv::GLSLstd450MatrixInverse;
break; break;
case glslang::EOpTranspose: case glslang::EOpTranspose:
unaryOp = spv::OpTranspose; unaryOp = spv::OpTranspose;
break; break;
case glslang::EOpRadians: case glslang::EOpRadians:
libCall = GLSL_STD_450::Radians; libCall = spv::GLSLstd450Radians;
break; break;
case glslang::EOpDegrees: case glslang::EOpDegrees:
libCall = GLSL_STD_450::Degrees; libCall = spv::GLSLstd450Degrees;
break; break;
case glslang::EOpSin: case glslang::EOpSin:
libCall = GLSL_STD_450::Sin; libCall = spv::GLSLstd450Sin;
break; break;
case glslang::EOpCos: case glslang::EOpCos:
libCall = GLSL_STD_450::Cos; libCall = spv::GLSLstd450Cos;
break; break;
case glslang::EOpTan: case glslang::EOpTan:
libCall = GLSL_STD_450::Tan; libCall = spv::GLSLstd450Tan;
break; break;
case glslang::EOpAcos: case glslang::EOpAcos:
libCall = GLSL_STD_450::Acos; libCall = spv::GLSLstd450Acos;
break; break;
case glslang::EOpAsin: case glslang::EOpAsin:
libCall = GLSL_STD_450::Asin; libCall = spv::GLSLstd450Asin;
break; break;
case glslang::EOpAtan: case glslang::EOpAtan:
libCall = GLSL_STD_450::Atan; libCall = spv::GLSLstd450Atan;
break; break;
case glslang::EOpAcosh: case glslang::EOpAcosh:
libCall = GLSL_STD_450::Acosh; libCall = spv::GLSLstd450Acosh;
break; break;
case glslang::EOpAsinh: case glslang::EOpAsinh:
libCall = GLSL_STD_450::Asinh; libCall = spv::GLSLstd450Asinh;
break; break;
case glslang::EOpAtanh: case glslang::EOpAtanh:
libCall = GLSL_STD_450::Atanh; libCall = spv::GLSLstd450Atanh;
break; break;
case glslang::EOpTanh: case glslang::EOpTanh:
libCall = GLSL_STD_450::Tanh; libCall = spv::GLSLstd450Tanh;
break; break;
case glslang::EOpCosh: case glslang::EOpCosh:
libCall = GLSL_STD_450::Cosh; libCall = spv::GLSLstd450Cosh;
break; break;
case glslang::EOpSinh: case glslang::EOpSinh:
libCall = GLSL_STD_450::Sinh; libCall = spv::GLSLstd450Sinh;
break; break;
case glslang::EOpLength: case glslang::EOpLength:
libCall = GLSL_STD_450::Length; libCall = spv::GLSLstd450Length;
break; break;
case glslang::EOpNormalize: case glslang::EOpNormalize:
libCall = GLSL_STD_450::Normalize; libCall = spv::GLSLstd450Normalize;
break; break;
case glslang::EOpExp: case glslang::EOpExp:
libCall = GLSL_STD_450::Exp; libCall = spv::GLSLstd450Exp;
break; break;
case glslang::EOpLog: case glslang::EOpLog:
libCall = GLSL_STD_450::Log; libCall = spv::GLSLstd450Log;
break; break;
case glslang::EOpExp2: case glslang::EOpExp2:
libCall = GLSL_STD_450::Exp2; libCall = spv::GLSLstd450Exp2;
break; break;
case glslang::EOpLog2: case glslang::EOpLog2:
libCall = GLSL_STD_450::Log2; libCall = spv::GLSLstd450Log2;
break; break;
case glslang::EOpSqrt: case glslang::EOpSqrt:
libCall = GLSL_STD_450::Sqrt; libCall = spv::GLSLstd450Sqrt;
break; break;
case glslang::EOpInverseSqrt: case glslang::EOpInverseSqrt:
libCall = GLSL_STD_450::InverseSqrt; libCall = spv::GLSLstd450InverseSqrt;
break; break;
case glslang::EOpFloor: case glslang::EOpFloor:
libCall = GLSL_STD_450::Floor; libCall = spv::GLSLstd450Floor;
break; break;
case glslang::EOpTrunc: case glslang::EOpTrunc:
libCall = GLSL_STD_450::Trunc; libCall = spv::GLSLstd450Trunc;
break; break;
case glslang::EOpRound: case glslang::EOpRound:
libCall = GLSL_STD_450::Round; libCall = spv::GLSLstd450Round;
break; break;
case glslang::EOpRoundEven: case glslang::EOpRoundEven:
libCall = GLSL_STD_450::RoundEven; libCall = spv::GLSLstd450RoundEven;
break; break;
case glslang::EOpCeil: case glslang::EOpCeil:
libCall = GLSL_STD_450::Ceil; libCall = spv::GLSLstd450Ceil;
break; break;
case glslang::EOpFract: case glslang::EOpFract:
libCall = GLSL_STD_450::Fract; libCall = spv::GLSLstd450Fract;
break; break;
case glslang::EOpIsNan: case glslang::EOpIsNan:
@ -2084,35 +2154,23 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
unaryOp = spv::OpIsInf; unaryOp = spv::OpIsInf;
break; 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: case glslang::EOpPackSnorm2x16:
libCall = GLSL_STD_450::PackSnorm2x16; libCall = spv::GLSLstd450PackSnorm2x16;
break; break;
case glslang::EOpUnpackSnorm2x16: case glslang::EOpUnpackSnorm2x16:
libCall = GLSL_STD_450::UnpackSnorm2x16; libCall = spv::GLSLstd450UnpackSnorm2x16;
break; break;
case glslang::EOpPackUnorm2x16: case glslang::EOpPackUnorm2x16:
libCall = GLSL_STD_450::PackUnorm2x16; libCall = spv::GLSLstd450PackUnorm2x16;
break; break;
case glslang::EOpUnpackUnorm2x16: case glslang::EOpUnpackUnorm2x16:
libCall = GLSL_STD_450::UnpackUnorm2x16; libCall = spv::GLSLstd450UnpackUnorm2x16;
break; break;
case glslang::EOpPackHalf2x16: case glslang::EOpPackHalf2x16:
libCall = GLSL_STD_450::PackHalf2x16; libCall = spv::GLSLstd450PackHalf2x16;
break; break;
case glslang::EOpUnpackHalf2x16: case glslang::EOpUnpackHalf2x16:
libCall = GLSL_STD_450::UnpackHalf2x16; libCall = spv::GLSLstd450UnpackHalf2x16;
break; break;
case glslang::EOpDPdx: case glslang::EOpDPdx:
@ -2151,10 +2209,16 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
break; break;
case glslang::EOpAbs: case glslang::EOpAbs:
libCall = GLSL_STD_450::Abs; if (isFloat)
libCall = spv::GLSLstd450FAbs;
else
libCall = spv::GLSLstd450SAbs;
break; break;
case glslang::EOpSign: case glslang::EOpSign:
libCall = GLSL_STD_450::Sign; if (isFloat)
libCall = spv::GLSLstd450FSign;
else
libCall = spv::GLSLstd450SSign;
break; break;
default: default:
@ -2291,10 +2355,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
opCode = spv::OpAtomicIAdd; opCode = spv::OpAtomicIAdd;
break; break;
case glslang::EOpAtomicMin: case glslang::EOpAtomicMin:
opCode = spv::OpAtomicIMin; opCode = spv::OpAtomicSMin;
break; break;
case glslang::EOpAtomicMax: case glslang::EOpAtomicMax:
opCode = spv::OpAtomicIMax; opCode = spv::OpAtomicSMax;
break; break;
case glslang::EOpAtomicAnd: case glslang::EOpAtomicAnd:
opCode = spv::OpAtomicAnd; opCode = spv::OpAtomicAnd;
@ -2331,8 +2395,8 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv
std::vector<spv::Id> spvAtomicOperands; // hold the spv operands std::vector<spv::Id> spvAtomicOperands; // hold the spv operands
auto opIt = operands.begin(); // walk the glslang operands auto opIt = operands.begin(); // walk the glslang operands
spvAtomicOperands.push_back(*(opIt++)); spvAtomicOperands.push_back(*(opIt++));
spvAtomicOperands.push_back(spv::ExecutionScopeDevice); // TBD: what is the correct scope? spvAtomicOperands.push_back(builder.makeUintConstant(spv::ScopeDevice)); // TBD: what is the correct scope?
spvAtomicOperands.push_back( spv::MemorySemanticsMaskNone); // TBD: what are the correct memory semantics? 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. // 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. // 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); return builder.createOp(opCode, typeId, spvAtomicOperands);
} }
spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands) spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
{ {
bool isUnsigned = typeProxy == glslang::EbtUint;
bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
spv::Op opCode = spv::OpNop; spv::Op opCode = spv::OpNop;
int libCall = -1; int libCall = -1;
switch (op) { switch (op) {
case glslang::EOpMin: case glslang::EOpMin:
libCall = GLSL_STD_450::Min; if (isFloat)
libCall = spv::GLSLstd450FMin;
else if (isUnsigned)
libCall = spv::GLSLstd450UMin;
else
libCall = spv::GLSLstd450SMin;
break; break;
case glslang::EOpModf: case glslang::EOpModf:
libCall = GLSL_STD_450::Modf; libCall = spv::GLSLstd450Modf;
break; break;
case glslang::EOpMax: case glslang::EOpMax:
libCall = GLSL_STD_450::Max; if (isFloat)
libCall = spv::GLSLstd450FMax;
else if (isUnsigned)
libCall = spv::GLSLstd450UMax;
else
libCall = spv::GLSLstd450SMax;
break; break;
case glslang::EOpPow: case glslang::EOpPow:
libCall = GLSL_STD_450::Pow; libCall = spv::GLSLstd450Pow;
break; break;
case glslang::EOpDot: case glslang::EOpDot:
opCode = spv::OpDot; opCode = spv::OpDot;
break; break;
case glslang::EOpAtan: case glslang::EOpAtan:
libCall = GLSL_STD_450::Atan2; libCall = spv::GLSLstd450Atan2;
break; break;
case glslang::EOpClamp: case glslang::EOpClamp:
libCall = GLSL_STD_450::Clamp; if (isFloat)
libCall = spv::GLSLstd450FClamp;
else if (isUnsigned)
libCall = spv::GLSLstd450UClamp;
else
libCall = spv::GLSLstd450SClamp;
break; break;
case glslang::EOpMix: case glslang::EOpMix:
libCall = GLSL_STD_450::Mix; libCall = spv::GLSLstd450Mix;
break; break;
case glslang::EOpStep: case glslang::EOpStep:
libCall = GLSL_STD_450::Step; libCall = spv::GLSLstd450Step;
break; break;
case glslang::EOpSmoothStep: case glslang::EOpSmoothStep:
libCall = GLSL_STD_450::SmoothStep; libCall = spv::GLSLstd450SmoothStep;
break; break;
case glslang::EOpDistance: case glslang::EOpDistance:
libCall = GLSL_STD_450::Distance; libCall = spv::GLSLstd450Distance;
break; break;
case glslang::EOpCross: case glslang::EOpCross:
libCall = GLSL_STD_450::Cross; libCall = spv::GLSLstd450Cross;
break; break;
case glslang::EOpFaceForward: case glslang::EOpFaceForward:
libCall = GLSL_STD_450::FaceForward; libCall = spv::GLSLstd450FaceForward;
break; break;
case glslang::EOpReflect: case glslang::EOpReflect:
libCall = GLSL_STD_450::Reflect; libCall = spv::GLSLstd450Reflect;
break; break;
case glslang::EOpRefract: case glslang::EOpRefract:
libCall = GLSL_STD_450::Refract; libCall = spv::GLSLstd450Refract;
break; break;
default: default:
@ -2444,26 +2526,26 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
builder.createNoResultOp(spv::OpEndPrimitive); builder.createNoResultOp(spv::OpEndPrimitive);
return 0; return 0;
case glslang::EOpBarrier: case glslang::EOpBarrier:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsAllMemory); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
builder.createControlBarrier(spv::ExecutionScopeDevice); builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
return 0; return 0;
case glslang::EOpMemoryBarrier: case glslang::EOpMemoryBarrier:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsAllMemory); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
return 0; return 0;
case glslang::EOpMemoryBarrierAtomicCounter: case glslang::EOpMemoryBarrierAtomicCounter:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask);
return 0; return 0;
case glslang::EOpMemoryBarrierBuffer: case glslang::EOpMemoryBarrierBuffer:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsUniformMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsUniformMemoryMask);
return 0; return 0;
case glslang::EOpMemoryBarrierImage: case glslang::EOpMemoryBarrierImage:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsImageMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsImageMemoryMask);
return 0; return 0;
case glslang::EOpMemoryBarrierShared: case glslang::EOpMemoryBarrierShared:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsWorkgroupLocalMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupLocalMemoryMask);
return 0; return 0;
case glslang::EOpGroupMemoryBarrier: case glslang::EOpGroupMemoryBarrier:
builder.createMemoryBarrier(spv::ExecutionScopeDevice, spv::MemorySemanticsWorkgroupGlobalMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupGlobalMemoryMask);
return 0; return 0;
default: default:
spv::MissingFunctionality("operation with no arguments"); 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); builder.addDecoration(id, spv::DecorationComponent, symbol->getQualifier().layoutComponent);
if (glslangIntermediate->getXfbMode()) { if (glslangIntermediate->getXfbMode()) {
if (symbol->getQualifier().hasXfbStride()) if (symbol->getQualifier().hasXfbStride())
builder.addDecoration(id, spv::DecorationStride, symbol->getQualifier().layoutXfbStride); builder.addDecoration(id, spv::DecorationXfbStride, symbol->getQualifier().layoutXfbStride);
if (symbol->getQualifier().hasXfbBuffer()) if (symbol->getQualifier().hasXfbBuffer())
builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer); builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer);
if (symbol->getQualifier().hasXfbOffset()) if (symbol->getQualifier().hasXfbOffset())
@ -2512,14 +2594,14 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
builder.addDecoration(id, spv::DecorationBinding, symbol->getQualifier().layoutBinding); builder.addDecoration(id, spv::DecorationBinding, symbol->getQualifier().layoutBinding);
if (glslangIntermediate->getXfbMode()) { if (glslangIntermediate->getXfbMode()) {
if (symbol->getQualifier().hasXfbStride()) if (symbol->getQualifier().hasXfbStride())
builder.addDecoration(id, spv::DecorationStride, symbol->getQualifier().layoutXfbStride); builder.addDecoration(id, spv::DecorationXfbStride, symbol->getQualifier().layoutXfbStride);
if (symbol->getQualifier().hasXfbBuffer()) if (symbol->getQualifier().hasXfbBuffer())
builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer); builder.addDecoration(id, spv::DecorationXfbBuffer, symbol->getQualifier().layoutXfbBuffer);
} }
// built-in variable decorations // built-in variable decorations
spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn); spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn);
if ((unsigned int)builtIn != spv::BadValue) if (builtIn != spv::BadValue)
builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn);
if (linkageOnly) if (linkageOnly)

50
SPIRV/SPVRemapper.cpp Normal file → Executable file
View File

@ -82,6 +82,8 @@ namespace spv {
case spv::OpTypeFloat: // fall through... case spv::OpTypeFloat: // fall through...
case spv::OpTypePointer: return range_t(2, 3); case spv::OpTypePointer: return range_t(2, 3);
case spv::OpTypeInt: return range_t(2, 4); 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::OpTypeSampler: return range_t(3, 8);
case spv::OpTypeVector: // fall through case spv::OpTypeVector: // fall through
case spv::OpTypeMatrix: // ... case spv::OpTypeMatrix: // ...
@ -164,8 +166,8 @@ namespace spv {
case spv::OpTypeFloat: case spv::OpTypeFloat:
case spv::OpTypeVector: case spv::OpTypeVector:
case spv::OpTypeMatrix: case spv::OpTypeMatrix:
case spv::OpTypeImage:
case spv::OpTypeSampler: case spv::OpTypeSampler:
case spv::OpTypeFilter:
case spv::OpTypeArray: case spv::OpTypeArray:
case spv::OpTypeRuntimeArray: case spv::OpTypeRuntimeArray:
case spv::OpTypeStruct: case spv::OpTypeStruct:
@ -184,12 +186,11 @@ namespace spv {
bool spirvbin_t::isConstOp(spv::Op opCode) const bool spirvbin_t::isConstOp(spv::Op opCode) const
{ {
switch (opCode) { 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::OpConstantSampler: error("unimplemented constant type");
case spv::OpConstantTrue: case spv::OpConstantTrue:
case spv::OpConstantFalse: case spv::OpConstantFalse:
case spv::OpConstantNullPointer:
case spv::OpConstantComposite: case spv::OpConstantComposite:
case spv::OpConstant: return true; case spv::OpConstant: return true;
default: return false; default: return false;
@ -486,7 +487,7 @@ namespace spv {
case spv::OperandFunction: case spv::OperandFunction:
case spv::OperandMemorySemantics: case spv::OperandMemorySemantics:
case spv::OperandMemoryAccess: case spv::OperandMemoryAccess:
case spv::OperandExecutionScope: case spv::OperandScope:
case spv::OperandGroupOperation: case spv::OperandGroupOperation:
case spv::OperandKernelEnqueueFlags: case spv::OperandKernelEnqueueFlags:
case spv::OperandKernelProfilingInfo: case spv::OperandKernelProfilingInfo:
@ -610,19 +611,14 @@ namespace spv {
fnId = asId(start + 2); fnId = asId(start + 2);
break; break;
case spv::OpTextureSample: case spv::OpImageSampleImplicitLod:
case spv::OpTextureSampleDref: case spv::OpImageSampleExplicitLod:
case spv::OpTextureSampleLod: case spv::OpImageSampleDrefImplicitLod:
case spv::OpTextureSampleProj: case spv::OpImageSampleDrefExplicitLod:
case spv::OpTextureSampleGrad: case spv::OpImageSampleProjImplicitLod:
case spv::OpTextureSampleOffset: case spv::OpImageSampleProjExplicitLod:
case spv::OpTextureSampleProjLod: case spv::OpImageSampleProjDrefImplicitLod:
case spv::OpTextureSampleProjGrad: case spv::OpImageSampleProjDrefExplicitLod:
case spv::OpTextureSampleLodOffset:
case spv::OpTextureSampleProjOffset:
case spv::OpTextureSampleGradOffset:
case spv::OpTextureSampleProjLodOffset:
case spv::OpTextureSampleProjGradOffset:
case spv::OpDot: case spv::OpDot:
case spv::OpCompositeExtract: case spv::OpCompositeExtract:
case spv::OpCompositeInsert: case spv::OpCompositeInsert:
@ -668,7 +664,7 @@ namespace spv {
process( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
// Add inputs and uniforms to the map // 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::StorageClassUniform ||
spv[start+3] == spv::StorageClassUniformConstant || spv[start+3] == spv::StorageClassUniformConstant ||
spv[start+3] == spv::StorageClassInput)) spv[start+3] == spv::StorageClassInput))
@ -695,7 +691,7 @@ namespace spv {
process( process(
[&](spv::Op opCode, unsigned start) { [&](spv::Op opCode, unsigned start) {
// Add inputs and uniforms to the map // 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)) (spv[start+3] == spv::StorageClassOutput))
fnLocalVars.insert(asId(start+2)); fnLocalVars.insert(asId(start+2));
@ -729,8 +725,7 @@ namespace spv {
const int wordCount = asWordCount(start); const int wordCount = asWordCount(start);
// Add local variables to the map // Add local variables to the map
if ((opCode == spv::OpVariable && spv[start+3] == spv::StorageClassFunction && asWordCount(start) == 4) || if ((opCode == spv::OpVariable && spv[start+3] == spv::StorageClassFunction && asWordCount(start) == 4))
(opCode == spv::OpVariableArray && spv[start+3] == spv::StorageClassFunction))
fnLocalVars.insert(asId(start+2)); fnLocalVars.insert(asId(start+2));
// Ignore process vars referenced via access chain // Ignore process vars referenced via access chain
@ -1008,14 +1003,14 @@ namespace spv {
return 6 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1); return 6 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1);
case spv::OpTypeMatrix: case spv::OpTypeMatrix:
return 30 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1); return 30 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1);
case spv::OpTypeSampler: case spv::OpTypeImage:
return 120 + hashType(typePos(spv[typeStart+2])) + return 120 + hashType(typePos(spv[typeStart+2])) +
spv[typeStart+3] + // dimensionality spv[typeStart+3] + // dimensionality
spv[typeStart+4] * 8 * 16 + // content spv[typeStart+4] * 8 * 16 + // depth
spv[typeStart+5] * 4 * 16 + // arrayed spv[typeStart+5] * 4 * 16 + // arrayed
spv[typeStart+6] * 2 * 16 + // compare spv[typeStart+6] * 2 * 16 + // multisampled
spv[typeStart+7] * 1 * 16; // multisampled spv[typeStart+7] * 1 * 16; // format
case spv::OpTypeFilter: case spv::OpTypeSampler:
return 500; return 500;
case spv::OpTypeArray: case spv::OpTypeArray:
return 501 + hashType(typePos(spv[typeStart+2])) * spv[typeStart+3]; return 501 + hashType(typePos(spv[typeStart+2])) * spv[typeStart+3];
@ -1045,12 +1040,11 @@ namespace spv {
case spv::OpTypeQueue: return 300003; case spv::OpTypeQueue: return 300003;
case spv::OpTypePipe: return 300004; case spv::OpTypePipe: return 300004;
case spv::OpConstantNullObject: return 300005; case spv::OpConstantNull: return 300005;
case spv::OpConstantSampler: return 300006; case spv::OpConstantSampler: return 300006;
case spv::OpConstantTrue: return 300007; case spv::OpConstantTrue: return 300007;
case spv::OpConstantFalse: return 300008; case spv::OpConstantFalse: return 300008;
case spv::OpConstantNullPointer: return 300009;
case spv::OpConstantComposite: case spv::OpConstantComposite:
{ {
std::uint32_t hash = 300011 + hashType(typePos(spv[typeStart+1])); std::uint32_t hash = 300011 + hashType(typePos(spv[typeStart+1]));

2
SPIRV/SPVRemapper.h Normal file → Executable file
View File

@ -101,7 +101,7 @@ public:
#include <set> #include <set>
#include <cassert> #include <cassert>
#include "spirv.h" #include "spirv.hpp"
#include "spvIR.h" #include "spvIR.h"
namespace spv { namespace spv {

198
SPIRV/SpvBuilder.cpp Normal file → Executable file
View File

@ -295,31 +295,54 @@ Id Builder::makeFunctionType(Id returnType, std::vector<Id>& paramTypes)
return type->getResultId(); 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 // try to find it
Instruction* type; Instruction* type;
for (int t = 0; t < (int)groupedTypes[OpTypeSampler].size(); ++t) { for (int t = 0; t < (int)groupedTypes[OpTypeImage].size(); ++t) {
type = groupedTypes[OpTypeSampler][t]; type = groupedTypes[OpTypeImage][t];
if (type->getIdOperand(0) == sampledType && if (type->getIdOperand(0) == sampledType &&
type->getImmediateOperand(1) == (unsigned int)dim && 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(3) == (arrayed ? 1u : 0u) &&
type->getImmediateOperand(4) == ( shadow ? 1u : 0u) && type->getImmediateOperand(4) == ( ms ? 1u : 0u) &&
type->getImmediateOperand(5) == ( ms ? 1u : 0u)) type->getImmediateOperand(5) == sampled &&
type->getImmediateOperand(6) == (unsigned int)format)
return type->getResultId(); return type->getResultId();
} }
// not found, make it // not found, make it
type = new Instruction(getUniqueId(), NoType, OpTypeSampler); type = new Instruction(getUniqueId(), NoType, OpTypeImage);
type->addIdOperand(sampledType); type->addIdOperand(sampledType);
type->addImmediateOperand( dim); type->addImmediateOperand( dim);
type->addImmediateOperand(content); type->addImmediateOperand( depth ? 1 : 0);
type->addImmediateOperand(arrayed ? 1 : 0); type->addImmediateOperand(arrayed ? 1 : 0);
type->addImmediateOperand( shadow ? 1 : 0);
type->addImmediateOperand( ms ? 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); constantsTypesGlobals.push_back(type);
module.mapInstruction(type); module.mapInstruction(type);
@ -606,11 +629,12 @@ Id Builder::makeCompositeConstant(Id typeId, std::vector<Id>& members)
return c->getResultId(); 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); Instruction* entryPoint = new Instruction(OpEntryPoint);
entryPoint->addImmediateOperand(model); entryPoint->addImmediateOperand(model);
entryPoint->addIdOperand(function->getId()); entryPoint->addIdOperand(function->getId());
entryPoint->addStringOperand(name);
entryPoints.push_back(entryPoint); entryPoints.push_back(entryPoint);
} }
@ -945,18 +969,20 @@ void Builder::createNoResultOp(Op opCode, Id operand)
buildPoint->addInstruction(op); buildPoint->addInstruction(op);
} }
void Builder::createControlBarrier(unsigned executionScope) void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask semantics)
{ {
Instruction* op = new Instruction(OpControlBarrier); Instruction* op = new Instruction(OpControlBarrier);
op->addImmediateOperand(executionScope); op->addImmediateOperand(makeUintConstant(execution));
op->addImmediateOperand(makeUintConstant(memory));
op->addImmediateOperand(makeUintConstant(semantics));
buildPoint->addInstruction(op); buildPoint->addInstruction(op);
} }
void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemantics) void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemantics)
{ {
Instruction* op = new Instruction(OpMemoryBarrier); Instruction* op = new Instruction(OpMemoryBarrier);
op->addImmediateOperand(executionScope); op->addImmediateOperand(makeUintConstant(executionScope));
op->addImmediateOperand(memorySemantics); op->addImmediateOperand(makeUintConstant(memorySemantics));
buildPoint->addInstruction(op); buildPoint->addInstruction(op);
} }
@ -991,7 +1017,7 @@ Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3)
return op->getResultId(); return op->getResultId();
} }
Id Builder::createOp(Op opCode, Id typeId, std::vector<Id>& operands) Id Builder::createOp(Op opCode, Id typeId, const std::vector<Id>& operands)
{ {
Instruction* op = new Instruction(getUniqueId(), typeId, opCode); Instruction* op = new Instruction(getUniqueId(), typeId, opCode);
for (auto operand : operands) 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. // Create the correct instruction based on the inputs, and make the call.
Id Builder::createTextureCall(Decoration precision, Id resultType, bool proj, const TextureParameters& parameters) 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] = {}; Id texArgs[maxTextureArgs] = {};
// //
// Set up the arguments // Set up the fixed arguments
// //
int numArgs = 0; int numArgs = 0;
bool xplicit = false;
texArgs[numArgs++] = parameters.sampler; texArgs[numArgs++] = parameters.sampler;
texArgs[numArgs++] = parameters.coords; 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) if (parameters.Dref)
texArgs[numArgs++] = 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 // Set up the instruction
// //
Op opCode; Op opCode;
if (proj && parameters.gradX && parameters.offset) opCode = OpImageSampleImplicitLod;
opCode = OpTextureSampleProjGradOffset; if (xplicit) {
else if (proj && parameters.lod && parameters.offset) if (parameters.Dref) {
opCode = OpTextureSampleProjLodOffset; if (proj)
else if (parameters.gradX && parameters.offset) opCode = OpImageSampleProjDrefExplicitLod;
opCode = OpTextureSampleGradOffset; else
else if (proj && parameters.offset) opCode = OpImageSampleDrefExplicitLod;
opCode = OpTextureSampleProjOffset; } else {
else if (parameters.lod && parameters.offset) if (proj)
opCode = OpTextureSampleLodOffset; opCode = OpImageSampleProjExplicitLod;
else if (proj && parameters.gradX) else
opCode = OpTextureSampleProjGrad; opCode = OpImageSampleExplicitLod;
else if (proj && parameters.lod) }
opCode = OpTextureSampleProjLod; } else {
else if (parameters.offset) if (parameters.Dref) {
opCode = OpTextureSampleOffset; if (proj)
else if (parameters.gradX) opCode = OpImageSampleProjDrefImplicitLod;
opCode = OpTextureSampleGrad; else
else if (proj) opCode = OpImageSampleDrefImplicitLod;
opCode = OpTextureSampleProj; } else {
else if (parameters.lod) if (proj)
opCode = OpTextureSampleLod; opCode = OpImageSampleProjImplicitLod;
else if (parameters.Dref) else
opCode = OpTextureSampleDref; opCode = OpImageSampleImplicitLod;
else }
opCode = OpTextureSample; }
Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode); 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]); textureInst->addIdOperand(texArgs[op]);
setPrecision(textureInst->getResultId(), precision); setPrecision(textureInst->getResultId(), precision);
buildPoint->addInstruction(textureInst); 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) Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameters)
{ {
// Figure out the result type // Figure out the result type
Id resultType = NoType; Id resultType = 0;
switch (opCode) { switch (opCode) {
case OpTextureQuerySize: case OpImageQuerySize:
case OpTextureQuerySizeLod: case OpImageQuerySizeLod:
{ {
int numComponents; int numComponents;
switch (getDimensionality(parameters.sampler)) { switch (getTypeDimensionality(getImageType(parameters.sampler))) {
case Dim1D: case Dim1D:
case DimBuffer: case DimBuffer:
numComponents = 1; numComponents = 1;
@ -1199,7 +1256,7 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
MissingFunctionality("texture query dimensionality"); MissingFunctionality("texture query dimensionality");
break; break;
} }
if (isArrayedSampler(parameters.sampler)) if (isArrayedImageType(getImageType(parameters.sampler)))
++numComponents; ++numComponents;
if (numComponents == 1) if (numComponents == 1)
resultType = makeIntType(32); resultType = makeIntType(32);
@ -1208,11 +1265,11 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter
break; break;
} }
case OpTextureQueryLod: case OpImageQueryLod:
resultType = makeVectorType(makeFloatType(32), 2); resultType = makeVectorType(makeFloatType(32), 2);
break; break;
case OpTextureQueryLevels: case OpImageQueryLevels:
case OpTextureQuerySamples: case OpImageQuerySamples:
resultType = makeIntType(32); resultType = makeIntType(32);
break; break;
default: default:
@ -2040,7 +2097,16 @@ void Builder::dump(std::vector<unsigned int>& out) const
extInst.addStringOperand(extensions[e]); extInst.addStringOperand(extensions[e]);
extInst.dump(out); extInst.dump(out);
} }
// TBD: OpExtension ... // TBD: OpExtension ...
// Capabilities
for (auto cap : capabilities) {
Instruction capInst(0, 0, OpCapability);
capInst.addImmediateOperand(cap);
capInst.dump(out);
}
dumpInstructions(out, imports); dumpInstructions(out, imports);
Instruction memInst(0, 0, OpMemoryModel); Instruction memInst(0, 0, OpMemoryModel);
memInst.addImmediateOperand(addressModel); memInst.addImmediateOperand(addressModel);

40
SPIRV/SpvBuilder.h Normal file → Executable file
View File

@ -48,7 +48,7 @@
#ifndef SpvBuilder_H #ifndef SpvBuilder_H
#define SpvBuilder_H #define SpvBuilder_H
#include "spirv.h" #include "spirv.hpp"
#include "spvIR.h" #include "spvIR.h"
#include <algorithm> #include <algorithm>
@ -77,6 +77,8 @@ public:
memoryModel = mem; memoryModel = mem;
} }
void addCapability(spv::Capability cap) { capabilities.push_back(cap); }
// To get a new <id> for anything needing a new one. // To get a new <id> for anything needing a new one.
Id getUniqueId() { return ++uniqueId; } Id getUniqueId() { return ++uniqueId; }
@ -101,12 +103,8 @@ public:
Id makeMatrixType(Id component, int cols, int rows); Id makeMatrixType(Id component, int cols, int rows);
Id makeArrayType(Id element, unsigned size); Id makeArrayType(Id element, unsigned size);
Id makeFunctionType(Id returnType, std::vector<Id>& paramTypes); Id makeFunctionType(Id returnType, std::vector<Id>& paramTypes);
enum samplerContent { Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
samplerContentTexture, Id makeSampledImageType(Id imageType);
samplerContentImage,
samplerContentTextureFilter
};
Id makeSampler(Id sampledType, Dim, samplerContent, bool arrayed, bool shadow, bool ms);
// For querying about types. // For querying about types.
Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } Id getTypeId(Id resultId) const { return module.getTypeId(resultId); }
@ -133,7 +131,9 @@ public:
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; } bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; } bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId); } 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 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; } bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == OpConstant; }
unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); } 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)); } int getNumRows(Id resultId) const { return getTypeNumRows(getTypeId(resultId)); }
Dim getDimensionality(Id resultId) const Dim getTypeDimensionality(Id typeId) const
{ {
assert(isSamplerType(getTypeId(resultId))); assert(isImageType(typeId));
return (Dim)module.getInstruction(getTypeId(resultId))->getImmediateOperand(1); return (Dim)module.getInstruction(typeId)->getImmediateOperand(1);
} }
bool isArrayedSampler(Id resultId) const Id getImageType(Id resultId) const
{ {
assert(isSamplerType(getTypeId(resultId))); assert(isSampledImageType(getTypeId(resultId)));
return module.getInstruction(getTypeId(resultId))->getImmediateOperand(3) != 0; 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). // 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<Id>& comps); Id makeCompositeConstant(Id type, std::vector<Id>& comps);
// Methods for adding information outside the CFG. // 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 addExecutionMode(Function*, ExecutionMode mode, int value = -1);
void addName(Id, const char* name); void addName(Id, const char* name);
void addMemberName(Id, int member, const char* name); void addMemberName(Id, int member, const char* name);
@ -233,12 +238,12 @@ public:
void createNoResultOp(Op); void createNoResultOp(Op);
void createNoResultOp(Op, Id operand); void createNoResultOp(Op, Id operand);
void createControlBarrier(unsigned executionScope); void createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask);
void createMemoryBarrier(unsigned executionScope, unsigned memorySemantics); void createMemoryBarrier(unsigned executionScope, unsigned memorySemantics);
Id createUnaryOp(Op, Id typeId, Id operand); Id createUnaryOp(Op, Id typeId, Id operand);
Id createBinOp(Op, Id typeId, Id operand1, Id operand2); Id createBinOp(Op, Id typeId, Id operand1, Id operand2);
Id createTriOp(Op, Id typeId, Id operand1, Id operand2, Id operand3); Id createTriOp(Op, Id typeId, Id operand1, Id operand2, Id operand3);
Id createOp(Op, Id typeId, std::vector<Id>& operands); Id createOp(Op, Id typeId, const std::vector<Id>& operands);
Id createFunctionCall(spv::Function*, std::vector<spv::Id>&); Id createFunctionCall(spv::Function*, std::vector<spv::Id>&);
// Take an rvalue (source) and a set of channels to extract from it to // Take an rvalue (source) and a set of channels to extract from it to
@ -283,8 +288,10 @@ public:
Id lod; Id lod;
Id Dref; Id Dref;
Id offset; Id offset;
Id offsets;
Id gradX; Id gradX;
Id gradY; Id gradY;
Id sample;
}; };
// Select the correct texture operation based on all inputs, and emit the correct instruction // Select the correct texture operation based on all inputs, and emit the correct instruction
@ -497,6 +504,7 @@ protected:
std::vector<const char*> extensions; std::vector<const char*> extensions;
AddressingModel addressModel; AddressingModel addressModel;
MemoryModel memoryModel; MemoryModel memoryModel;
std::vector<spv::Capability> capabilities;
int builderNumber; int builderNumber;
Module module; Module module;
Block* buildPoint; Block* buildPoint;

209
SPIRV/disassemble.cpp Normal file → Executable file
View File

@ -1,5 +1,5 @@
// //
//Copyright (C) 2014 LunarG, Inc. //Copyright (C) 2014-2015 LunarG, Inc.
// //
//All rights reserved. //All rights reserved.
// //
@ -21,16 +21,16 @@
// //
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT //"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 //FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, //INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
//CAUSED AND ON ANY THEORY OF LIAstreamITY, WHETHER IN CONTRACT, STRICT //CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
//LIAstreamITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //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 // Author: John Kessenich, LunarG
@ -41,25 +41,34 @@
// //
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <assert.h> #include <assert.h>
#include <iomanip> #include <iomanip>
#include <stack> #include <stack>
#include <sstream> #include <sstream>
#include <cstring>
#include "GLSL450Lib.h"
extern const char* GlslStd450DebugNames[GLSL_STD_450::Count];
#include "disassemble.h" #include "disassemble.h"
#include "doc.h" #include "doc.h"
namespace spv { namespace spv {
#include "GLSL.std.450.h"
const char* GlslStd450DebugNames[spv::GLSLstd450Count];
void Kill(std::ostream& out, const char* message) void Kill(std::ostream& out, const char* message)
{ {
out << std::endl << "Disassembly failed: " << message << std::endl; out << std::endl << "Disassembly failed: " << message << std::endl;
exit(1); 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. // Container class for a single instance of a SPIR-V stream, with methods for disassembly.
class SpirvStream { class SpirvStream {
public: public:
@ -70,9 +79,8 @@ public:
void processInstructions(); void processInstructions();
protected: protected:
SpirvStream(SpirvStream&); SpirvStream(const SpirvStream&);
SpirvStream& operator=(SpirvStream&); SpirvStream& operator=(const SpirvStream&);
Op getOpCode(int id) const { return idInstruction[id] ? (Op)(stream[idInstruction[id]] & OpCodeMask) : OpNop; } Op getOpCode(int id) const { return idInstruction[id] ? (Op)(stream[idInstruction[id]] & OpCodeMask) : OpNop; }
// Output methods // Output methods
@ -81,6 +89,7 @@ protected:
void outputResultId(Id id); void outputResultId(Id id);
void outputTypeId(Id id); void outputTypeId(Id id);
void outputId(Id id); void outputId(Id id);
void outputMask(OperandClass operandClass, unsigned mask);
void disassembleImmediates(int numOperands); void disassembleImmediates(int numOperands);
void disassembleIds(int numOperands); void disassembleIds(int numOperands);
void disassembleString(); void disassembleString();
@ -241,6 +250,18 @@ void SpirvStream::outputId(Id id)
out << "(" << idDescriptor[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) void SpirvStream::disassembleImmediates(int numOperands)
{ {
for (int i = 0; i < numOperands; ++i) { for (int i = 0; i < numOperands; ++i) {
@ -294,8 +315,9 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
nestedControl.push(nextNestedControl); nestedControl.push(nextNestedControl);
nextNestedControl = 0; nextNestedControl = 0;
} }
} else if (opCode == OpExtInstImport) } else if (opCode == OpExtInstImport) {
idDescriptor[resultId] = (char*)(&stream[word]); idDescriptor[resultId] = (char*)(&stream[word]);
}
else { else {
if (idDescriptor[resultId].size() == 0) { if (idDescriptor[resultId].size() == 0) {
switch (opCode) { 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 // Process the operands. Note, a new context-dependent set could be
// swapped in mid-traversal. // swapped in mid-traversal.
// Handle textures specially, so can put out helpful strings. // Handle images specially, so can put out helpful strings.
if (opCode == OpTypeSampler) { if (opCode == OpTypeImage) {
out << " ";
disassembleIds(1); disassembleIds(1);
out << " " << DimensionString((Dim)stream[word++]); 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 ? " depth" : "");
out << (stream[word++] != 0 ? " array" : "");
out << (stream[word++] != 0 ? " multi-sampled" : ""); 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; return;
} }
// Handle all the parameterized operands // 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 << " "; out << " ";
OperandClass operandClass = InstructionDesc[opCode].operands.getClass(op); OperandClass operandClass = InstructionDesc[opCode].operands.getClass(op);
switch (operandClass) { switch (operandClass) {
case OperandId: case OperandId:
case OperandScope:
case OperandMemorySemantics:
disassembleIds(1); disassembleIds(1);
// Get names for printing "(XXX)" for readability, *after* this id // Get names for printing "(XXX)" for readability, *after* this id
if (opCode == OpName) if (opCode == OpName)
@ -367,15 +397,34 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
case OperandVariableIds: case OperandVariableIds:
disassembleIds(numOperands); disassembleIds(numOperands);
return; return;
case OperandOptionalImage:
outputMask(operandClass, stream[word++]);
--numOperands;
disassembleIds(numOperands);
return;
case OperandOptionalLiteral:
case OperandVariableLiterals: case OperandVariableLiterals:
if ((opCode == OpDecorate && stream[word - 1] == DecorationBuiltIn) || if (opCode == OpDecorate && stream[word - 1] == DecorationBuiltIn ||
(opCode == OpMemberDecorate && stream[word - 1] == DecorationBuiltIn)) { opCode == OpMemberDecorate && stream[word - 1] == DecorationBuiltIn) {
out << BuiltInString(stream[word++]); out << BuiltInString(stream[word++]);
--numOperands; --numOperands;
++op; ++op;
} }
disassembleImmediates(numOperands); disassembleImmediates(numOperands);
return; 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: case OperandVariableLiteralId:
while (numOperands > 0) { while (numOperands > 0) {
out << std::endl; out << std::endl;
@ -392,9 +441,16 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
case OperandLiteralNumber: case OperandLiteralNumber:
disassembleImmediates(1); disassembleImmediates(1);
if (opCode == OpExtInst) { 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]; unsigned entrypoint = stream[word - 1];
if (entrypoint < GLSL_STD_450::Count) if (extInstSet == GLSL450Inst) {
out << "(" << GlslStd450DebugNames[entrypoint] << ")"; if (entrypoint < spv::GLSLstd450Count) {
out << "(" << GlslStd450DebugNames[entrypoint] << ")";
}
}
} }
break; break;
case OperandLiteralString: case OperandLiteralString:
@ -403,18 +459,9 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
default: default:
assert(operandClass >= OperandSource && operandClass < OperandOpcode); assert(operandClass >= OperandSource && operandClass < OperandOpcode);
if (OperandClassParams[operandClass].bitmask) { if (OperandClassParams[operandClass].bitmask)
unsigned int mask = stream[word++]; outputMask(operandClass, stream[word++]);
if (mask == 0) else
out << "None";
else {
for (int m = 0; m < OperandClassParams[operandClass].ceiling; ++m) {
if (mask & (1 << m))
out << OperandClassParams[operandClass].getName(m) << " ";
}
}
break;
} else
out << OperandClassParams[operandClass].getName(stream[word++]); out << OperandClassParams[operandClass].getName(stream[word++]);
break; break;
@ -425,9 +472,97 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
return; 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<unsigned int>& stream) void Disassemble(std::ostream& out, const std::vector<unsigned int>& stream)
{ {
SpirvStream SpirvStream(out, stream); SpirvStream SpirvStream(out, stream);
GLSLstd450GetDebugNames(GlslStd450DebugNames);
SpirvStream.validate(); SpirvStream.validate();
SpirvStream.processInstructions(); SpirvStream.processInstructions();
} }

2
SPIRV/disassemble.h Normal file → Executable file
View File

@ -1,5 +1,5 @@
// //
//Copyright (C) 2014 LunarG, Inc. //Copyright (C) 2014-2015 LunarG, Inc.
// //
//All rights reserved. //All rights reserved.
// //

1977
SPIRV/doc.cpp Normal file → Executable file

File diff suppressed because it is too large Load Diff

46
SPIRV/doc.h Normal file → Executable file
View File

@ -1,5 +1,5 @@
// //
//Copyright (C) 2014 LunarG, Inc. //Copyright (C) 2014-2015 LunarG, Inc.
// //
//All rights reserved. //All rights reserved.
// //
@ -40,7 +40,7 @@
// Parameterize the SPIR-V enumerants. // Parameterize the SPIR-V enumerants.
// //
#include "spirv.h" #include "spirv.hpp"
#include <vector> #include <vector>
@ -64,6 +64,10 @@ const char* LoopControlString(int);
const char* FunctionControlString(int); const char* FunctionControlString(int);
const char* SamplerAddressingModeString(int); const char* SamplerAddressingModeString(int);
const char* SamplerFilterModeString(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* FPFastMathString(int);
const char* FPRoundingModeString(int); const char* FPRoundingModeString(int);
const char* LinkageTypeString(int); const char* LinkageTypeString(int);
@ -75,11 +79,12 @@ const char* ExecutionScopeString(int);
const char* GroupOperationString(int); const char* GroupOperationString(int);
const char* KernelEnqueueFlagsString(int); const char* KernelEnqueueFlagsString(int);
const char* KernelProfilingInfoString(int); const char* KernelProfilingInfoString(int);
const char* CapabilityString(int);
const char* OpcodeString(int); const char* OpcodeString(int);
// For grouping opcodes into subsections // For grouping opcodes into subsections
enum OpcodeClass { enum OpcodeClass {
OpClassMisc, // default, until opcode is classified OpClassMisc,
OpClassDebug, OpClassDebug,
OpClassAnnotate, OpClassAnnotate,
OpClassExtension, OpClassExtension,
@ -88,10 +93,11 @@ enum OpcodeClass {
OpClassConstant, OpClassConstant,
OpClassMemory, OpClassMemory,
OpClassFunction, OpClassFunction,
OpClassTexture, OpClassImage,
OpClassConvert, OpClassConvert,
OpClassComposite, OpClassComposite,
OpClassArithmetic, OpClassArithmetic,
OpClassBit,
OpClassRelationalLogical, OpClassRelationalLogical,
OpClassDerivative, OpClassDerivative,
OpClassFlowControl, OpClassFlowControl,
@ -102,7 +108,8 @@ enum OpcodeClass {
OpClassDeviceSideEnqueue, OpClassDeviceSideEnqueue,
OpClassPipe, OpClassPipe,
OpClassCount OpClassCount,
OpClassMissing // all instructions start out as missing
}; };
// For parameterizing operands. // For parameterizing operands.
@ -110,8 +117,11 @@ enum OperandClass {
OperandNone, OperandNone,
OperandId, OperandId,
OperandOptionalId, OperandOptionalId,
OperandOptionalImage,
OperandVariableIds, OperandVariableIds,
OperandOptionalLiteral,
OperandVariableLiterals, OperandVariableLiterals,
OperandVariableIdLiteral,
OperandVariableLiteralId, OperandVariableLiteralId,
OperandLiteralNumber, OperandLiteralNumber,
OperandLiteralString, OperandLiteralString,
@ -124,6 +134,10 @@ enum OperandClass {
OperandDimensionality, OperandDimensionality,
OperandSamplerAddressingMode, OperandSamplerAddressingMode,
OperandSamplerFilterMode, OperandSamplerFilterMode,
OperandSamplerImageFormat,
OperandImageChannelOrder,
OperandImageChannelDataType,
OperandImageOperands,
OperandFPFastMath, OperandFPFastMath,
OperandFPRoundingMode, OperandFPRoundingMode,
OperandLinkageType, OperandLinkageType,
@ -136,29 +150,17 @@ enum OperandClass {
OperandFunction, OperandFunction,
OperandMemorySemantics, OperandMemorySemantics,
OperandMemoryAccess, OperandMemoryAccess,
OperandExecutionScope, OperandScope,
OperandGroupOperation, OperandGroupOperation,
OperandKernelEnqueueFlags, OperandKernelEnqueueFlags,
OperandKernelProfilingInfo, OperandKernelProfilingInfo,
OperandCapability,
OperandOpcode, OperandOpcode,
OperandCount 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: // Any specific enum can have a set of capabilities that allow it:
typedef std::vector<Capability> EnumCaps; typedef std::vector<Capability> EnumCaps;
@ -213,8 +215,8 @@ public:
class InstructionParameters { class InstructionParameters {
public: public:
InstructionParameters() : InstructionParameters() :
opDesc(0), opDesc("TBD"),
opClass(OpClassMisc), opClass(OpClassMissing),
typePresent(true), // most normal, only exceptions have to be spelled out typePresent(true), // most normal, only exceptions have to be spelled out
resultPresent(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; int resultPresent : 1;
}; };
const int OpcodeCeiling = 267; const int OpcodeCeiling = 305;
// The set of objects that hold all the instruction/operand // The set of objects that hold all the instruction/operand
// parameterization information. // parameterization information.

2
SPIRV/spvIR.h Normal file → Executable file
View File

@ -50,7 +50,7 @@
#ifndef spvIR_H #ifndef spvIR_H
#define spvIR_H #define spvIR_H
#include "spirv.h" #include "spirv.hpp"
#include <vector> #include <vector>
#include <iostream> #include <iostream>

7
StandAlone/StandAlone.cpp Normal file → Executable file
View File

@ -42,7 +42,7 @@
#include "./../glslang/Include/revision.h" #include "./../glslang/Include/revision.h"
#include "./../glslang/Public/ShaderLang.h" #include "./../glslang/Public/ShaderLang.h"
#include "../SPIRV/GlslangToSpv.h" #include "../SPIRV/GlslangToSpv.h"
#include "../SPIRV/GLSL450Lib.h" #include "../SPIRV/GLSL.std.450.h"
#include "../SPIRV/doc.h" #include "../SPIRV/doc.h"
#include "../SPIRV/disassemble.h" #include "../SPIRV/disassemble.h"
#include <string.h> #include <string.h>
@ -644,8 +644,6 @@ CompileShaders(void*)
return 0; return 0;
} }
const char* GlslStd450DebugNames[GLSL_STD_450::Count];
// Outputs the given string, but only if it is non-null and non-empty. // Outputs the given string, but only if it is non-null and non-empty.
// This prevents erroneous newlines from appearing. // This prevents erroneous newlines from appearing.
void PutsIfNonEmpty(const char* str) void PutsIfNonEmpty(const char* str)
@ -754,7 +752,6 @@ void CompileAndLinkShaders()
glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage)); glslang::OutputSpv(spirv, GetBinaryName((EShLanguage)stage));
if (Options & EOptionHumanReadableSpv) { if (Options & EOptionHumanReadableSpv) {
spv::Parameterize(); spv::Parameterize();
GLSL_STD_450::GetDebugNames(GlslStd450DebugNames);
spv::Disassemble(std::cout, spirv); spv::Disassemble(std::cout, spirv);
} }
} }
@ -790,7 +787,7 @@ int C_DECL main(int argc, char* argv[])
std::string spirvVersion; std::string spirvVersion;
glslang::GetSpirvVersion(spirvVersion); glslang::GetSpirvVersion(spirvVersion);
printf("SPIR-V Version %s\n", spirvVersion.c_str()); 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()) if (Worklist.empty())
return ESuccess; return ESuccess;
} }

58
Test/baseResults/spv.100ops.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 48 // Id's are bound by 48
Source ESSL 100 Source ESSL 100
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "foo(" Name 9 "foo("
Name 12 "face1" Name 12 "face1"
@ -19,68 +21,68 @@ Linked fragment stage:
Name 22 "low" Name 22 "low"
Name 27 "high" Name 27 "high"
Name 37 "gl_FragColor" Name 37 "gl_FragColor"
Decorate 12(face1) PrecisionLow Decorate 12(face1) RelaxedPrecision
Decorate 14(face2) PrecisionLow Decorate 14(face2) RelaxedPrecision
Decorate 18(z) PrecisionMedium Decorate 18(z) RelaxedPrecision
Decorate 22(low) PrecisionMedium Decorate 22(low) RelaxedPrecision
Decorate 27(high) PrecisionMedium Decorate 27(high) RelaxedPrecision
Decorate 37(gl_FragColor) PrecisionMedium Decorate 37(gl_FragColor) RelaxedPrecision
Decorate 37(gl_FragColor) BuiltIn FragColor Decorate 37(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeFunction 7(float) 8: TypeFunction 7(float)
11: TypePointer PrivateGlobal 7(float) 11: TypePointer PrivateGlobal 7(float)
12(face1): 11(ptr) Variable PrivateGlobal 12(face1): 11(ptr) Variable PrivateGlobal
13: 7(float) Constant 1093664768 13: 7(float) Constant 1093664768
14(face2): 11(ptr) Variable PrivateGlobal 14(face2): 11(ptr) Variable PrivateGlobal
15: 7(float) Constant 3221225472 15: 7(float) Constant 3221225472
16: TypeInt 32 1 16: TypeInt 32 1
17: TypePointer Function 16(int) 17: TypePointer Function 16(int)
19: 16(int) Constant 3 19: 16(int) Constant 3
20: 16(int) Constant 2 20: 16(int) Constant 2
21: TypePointer UniformConstant 16(int) 21: TypePointer UniformConstant 16(int)
22(low): 21(ptr) Variable UniformConstant 22(low): 21(ptr) Variable UniformConstant
25: 16(int) Constant 1 25: 16(int) Constant 1
27(high): 21(ptr) Variable UniformConstant 27(high): 21(ptr) Variable UniformConstant
29: TypeBool 29: TypeBool
35: TypeVector 7(float) 4 35: TypeVector 7(float) 4
36: TypePointer Output 35(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
18(z): 17(ptr) Variable Function 18(z): 17(ptr) Variable Function
Store 12(face1) 13 Store 12(face1) 13
Store 14(face2) 15 Store 14(face2) 15
Store 18(z) 19 Store 18(z) 19
23: 16(int) Load 22(low) 23: 16(int) Load 22(low)
24: 16(int) IMul 20 23 24: 16(int) IMul 20 23
26: 16(int) IAdd 24 25 26: 16(int) IAdd 24 25
28: 16(int) Load 27(high) 28: 16(int) Load 27(high)
30: 29(bool) SLessThan 26 28 30: 29(bool) SLessThan 26 28
SelectionMerge 32 None SelectionMerge 32 None
BranchConditional 30 31 32 BranchConditional 30 31 32
31: Label 31: Label
33: 16(int) Load 18(z) 33: 16(int) Load 18(z)
34: 16(int) IAdd 33 25 34: 16(int) IAdd 33 25
Store 18(z) 34 Store 18(z) 34
Branch 32 Branch 32
32: Label 32: Label
38: 7(float) Load 12(face1) 38: 7(float) Load 12(face1)
39: 16(int) Load 18(z) 39: 16(int) Load 18(z)
40: 7(float) ConvertSToF 39 40: 7(float) ConvertSToF 39
41: 35(fvec4) CompositeConstruct 40 40 40 40 41: 35(fvec4) CompositeConstruct 40 40 40 40
42: 35(fvec4) VectorTimesScalar 41 38 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 44: 35(fvec4) CompositeConstruct 43 43 43 43
45: 35(fvec4) FAdd 42 44 45: 35(fvec4) FAdd 42 44
Store 37(gl_FragColor) 45 Store 37(gl_FragColor) 45
Branch 6 Branch 6
6: Label 6: Label
Return Return
FunctionEnd FunctionEnd
9(foo(): 7(float) Function None 8 9(foo(): 7(float) Function None 8
10: Label 10: Label
46: 7(float) Load 14(face2) 46: 7(float) Load 14(face2)
ReturnValue 46 ReturnValue 46
FunctionEnd FunctionEnd

181
Test/baseResults/spv.140.frag.out Normal file → Executable file
View File

@ -5,12 +5,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 90 // Id's are bound by 93
Source GLSL 140 Source GLSL 140
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "foo(" Name 9 "foo("
Name 12 "i1" Name 12 "i1"
@ -19,130 +21,137 @@ Linked fragment stage:
Name 29 "o" Name 29 "o"
Name 34 "gl_ClipDistance" Name 34 "gl_ClipDistance"
Name 43 "k" Name 43 "k"
Name 54 "sampR" Name 55 "sampR"
Name 60 "sampB" Name 62 "sampB"
Name 83 "samp2Da" Name 86 "samp2Da"
Name 87 "bn" Name 90 "bn"
MemberName 87(bn) 0 "matra" MemberName 90(bn) 0 "matra"
MemberName 87(bn) 1 "matca" MemberName 90(bn) 1 "matca"
MemberName 87(bn) 2 "matr" MemberName 90(bn) 2 "matr"
MemberName 87(bn) 3 "matc" MemberName 90(bn) 3 "matc"
MemberName 87(bn) 4 "matrdef" MemberName 90(bn) 4 "matrdef"
Name 89 "" Name 92 ""
Decorate 17(gl_FrontFacing) BuiltIn FrontFacing Decorate 17(gl_FrontFacing) BuiltIn FrontFacing
Decorate 34(gl_ClipDistance) Smooth Decorate 34(gl_ClipDistance) Smooth
Decorate 34(gl_ClipDistance) BuiltIn ClipDistance Decorate 34(gl_ClipDistance) BuiltIn ClipDistance
Decorate 43(k) Smooth Decorate 43(k) Smooth
Decorate 83(samp2Da) NoStaticUse Decorate 86(samp2Da) NoStaticUse
MemberDecorate 87(bn) 0 RowMajor MemberDecorate 90(bn) 0 RowMajor
MemberDecorate 87(bn) 1 ColMajor MemberDecorate 90(bn) 0 Offset 0
MemberDecorate 87(bn) 2 RowMajor MemberDecorate 90(bn) 1 ColMajor
MemberDecorate 87(bn) 3 ColMajor MemberDecorate 90(bn) 1 Offset 256
MemberDecorate 87(bn) 4 RowMajor MemberDecorate 90(bn) 2 RowMajor
Decorate 87(bn) GLSLStd140 MemberDecorate 90(bn) 2 Offset 512
Decorate 87(bn) Block MemberDecorate 90(bn) 3 ColMajor
Decorate 89 NoStaticUse 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 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeFunction 7(float) 8: TypeFunction 7(float)
11: TypePointer PrivateGlobal 7(float) 11: TypePointer PrivateGlobal 7(float)
12(i1): 11(ptr) Variable PrivateGlobal 12(i1): 11(ptr) Variable PrivateGlobal
13: TypePointer Function 7(float) 13: TypePointer Function 7(float)
15: TypeBool 15: TypeBool
16: TypePointer Input 15(bool) 16: TypePointer Input 15(bool)
17(gl_FrontFacing): 16(ptr) Variable Input 17(gl_FrontFacing): 16(ptr) Variable Input
21: 7(float) Constant 3221225472 21: 7(float) Constant 3221225472
23: 7(float) Constant 1073741824 23: 7(float) Constant 1073741824
25(i2): 11(ptr) Variable PrivateGlobal 25(i2): 11(ptr) Variable PrivateGlobal
26: 7(float) Constant 1120665600 26: 7(float) Constant 1120665600
27: TypeVector 7(float) 4 27: TypeVector 7(float) 4
28: TypePointer Output 27(fvec4) 28: TypePointer Output 27(fvec4)
29(o): 28(ptr) Variable Output 29(o): 28(ptr) Variable Output
30: TypeInt 32 0 30: TypeInt 32 0
31: 30(int) Constant 5 31: 30(int) Constant 5
32: TypeArray 7(float) 31 32: TypeArray 7(float) 31
33: TypePointer Input 32 33: TypePointer Input 32
34(gl_ClipDistance): 33(ptr) Variable Input 34(gl_ClipDistance): 33(ptr) Variable Input
35: TypeInt 32 1 35: TypeInt 32 1
36: 35(int) Constant 2 36: 35(int) Constant 2
37: TypePointer Input 7(float) 37: TypePointer Input 7(float)
42: TypePointer Input 27(fvec4) 42: TypePointer Input 27(fvec4)
43(k): 42(ptr) Variable Input 43(k): 42(ptr) Variable Input
45: TypeVector 35(int) 4 45: TypeVector 35(int) 4
52: TypeSampler7(float) Rect filter+texture 52: TypeImage 7(float) Rect sampled format:Unknown
53: TypePointer UniformConstant 52 53: TypeSampledImage 52
54(sampR): 53(ptr) Variable UniformConstant 54: TypePointer UniformConstant 53
56: TypeVector 35(int) 2 55(sampR): 54(ptr) Variable UniformConstant
58: TypeSampler35(int) Buffer filter+texture 57: TypeVector 35(int) 2
59: TypePointer UniformConstant 58 59: TypeImage 35(int) Buffer sampled format:Unknown
60(sampB): 59(ptr) Variable UniformConstant 60: TypeSampledImage 59
65: TypeVector 7(float) 2 61: TypePointer UniformConstant 60
68: 7(float) Constant 1120403456 62(sampB): 61(ptr) Variable UniformConstant
79: TypeSampler7(float) 2D filter+texture 67: TypeVector 7(float) 2
80: 30(int) Constant 3 70: 7(float) Constant 1120403456
81: TypeArray 79 80 81: TypeImage 7(float) 2D sampled format:Unknown
82: TypePointer UniformConstant 81 82: TypeSampledImage 81
83(samp2Da): 82(ptr) Variable UniformConstant 83: 30(int) Constant 3
84: TypeMatrix 27(fvec4) 4 84: TypeArray 82 83
85: 30(int) Constant 4 85: TypePointer UniformConstant 84
86: TypeArray 84 85 86(samp2Da): 85(ptr) Variable UniformConstant
87(bn): TypeStruct 86 86 84 84 84 87: TypeMatrix 27(fvec4) 4
88: TypePointer Uniform 87(bn) 88: 30(int) Constant 4
89: 88(ptr) Variable Uniform 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 4(main): 2 Function None 3
5: Label 5: Label
14: 13(ptr) Variable Function 14: 13(ptr) Variable Function
18: 15(bool) Load 17(gl_FrontFacing) 18: 15(bool) Load 17(gl_FrontFacing)
SelectionMerge 20 None SelectionMerge 20 None
BranchConditional 18 19 22 BranchConditional 18 19 22
19: Label 19: Label
Store 14 21 Store 14 21
Branch 20 Branch 20
22: Label 22: Label
Store 14 23 Store 14 23
Branch 20 Branch 20
20: Label 20: Label
24: 7(float) Load 14 24: 7(float) Load 14
Store 12(i1) 24 Store 12(i1) 24
Store 25(i2) 26 Store 25(i2) 26
38: 37(ptr) AccessChain 34(gl_ClipDistance) 36 38: 37(ptr) AccessChain 34(gl_ClipDistance) 36
39: 7(float) Load 38 39: 7(float) Load 38
40: 27(fvec4) Load 29(o) 40: 27(fvec4) Load 29(o)
41: 27(fvec4) CompositeInsert 39 40 1 41: 27(fvec4) CompositeInsert 39 40 1
Store 29(o) 41 Store 29(o) 41
44: 27(fvec4) Load 43(k) 44: 27(fvec4) Load 43(k)
46: 45(ivec4) ConvertFToS 44 46: 45(ivec4) ConvertFToS 44
47: 35(int) CompositeExtract 46 0 47: 35(int) CompositeExtract 46 0
48: 37(ptr) AccessChain 34(gl_ClipDistance) 47 48: 37(ptr) AccessChain 34(gl_ClipDistance) 47
49: 7(float) Load 48 49: 7(float) Load 48
50: 27(fvec4) Load 29(o) 50: 27(fvec4) Load 29(o)
51: 27(fvec4) CompositeInsert 49 50 2 51: 27(fvec4) CompositeInsert 49 50 2
Store 29(o) 51 Store 29(o) 51
55: 52 Load 54(sampR) 56: 53 Load 55(sampR)
57: 56(ivec2) TextureQuerySize 55 58: 57(ivec2) ImageQuerySize 56
61: 58 Load 60(sampB) 63: 60 Load 62(sampB)
62: 35(int) TextureQuerySize 61 64: 35(int) ImageQuerySize 63
63: 56(ivec2) CompositeConstruct 62 62 65: 57(ivec2) CompositeConstruct 64 64
64: 56(ivec2) IAdd 57 63 66: 57(ivec2) IAdd 58 65
66: 65(fvec2) ConvertSToF 64 68: 67(fvec2) ConvertSToF 66
67: 7(float) CompositeExtract 66 0 69: 7(float) CompositeExtract 68 0
69: 7(float) FDiv 67 68 71: 7(float) FDiv 69 70
70: 27(fvec4) Load 29(o) 72: 27(fvec4) Load 29(o)
71: 27(fvec4) CompositeInsert 69 70 3 73: 27(fvec4) CompositeInsert 71 72 3
Store 29(o) 71 Store 29(o) 73
72: 7(float) FunctionCall 9(foo() 74: 7(float) FunctionCall 9(foo()
73: 27(fvec4) Load 29(o) 75: 27(fvec4) Load 29(o)
74: 27(fvec4) CompositeInsert 72 73 2 76: 27(fvec4) CompositeInsert 74 75 2
Store 29(o) 74 Store 29(o) 76
Branch 6 Branch 6
6: Label 6: Label
Return Return
FunctionEnd FunctionEnd
9(foo(): 7(float) Function None 8 9(foo(): 7(float) Function None 8
10: Label 10: Label
75: 7(float) Load 12(i1) 77: 7(float) Load 12(i1)
76: 7(float) Load 25(i2) 78: 7(float) Load 25(i2)
77: 7(float) FAdd 75 76 79: 7(float) FAdd 77 78
ReturnValue 77 ReturnValue 79
FunctionEnd FunctionEnd

73
Test/baseResults/spv.150.geom.out Normal file → Executable file
View File

@ -8,12 +8,13 @@ Linked geometry stage:
// Id's are bound by 72 // Id's are bound by 72
Source GLSL 150 Source GLSL 150
Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 EntryPoint Geometry 4 "main"
ExecutionMode 4 InputTrianglesAdjacency ExecutionMode 4 InputTrianglesAdjacency
ExecutionMode 4 Invocations 0 ExecutionMode 4 Invocations 0
ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 30 ExecutionMode 4 OutputVertices 30
Name 4 "main" Name 4 "main"
Name 9 "fromVertex" Name 9 "fromVertex"
@ -38,36 +39,36 @@ Linked geometry stage:
Name 69 "toFragment" Name 69 "toFragment"
MemberName 69(toFragment) 0 "color" MemberName 69(toFragment) 0 "color"
Name 71 "toF" Name 71 "toF"
Decorate 9(fromVertex) Block Decorate 9(fromVertex) Block
Decorate 9(fromVertex) Stream 3 Decorate 9(fromVertex) Stream 3
Decorate 11 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) 0 BuiltIn Position
MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 28(gl_PerVertex) Block Decorate 28(gl_PerVertex) Block
Decorate 28(gl_PerVertex) Stream 0 Decorate 28(gl_PerVertex) Stream 0
Decorate 30 Stream 0 Decorate 30 Stream 0
MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance 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) Stream 0
Decorate 48(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 48(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 50(gl_PrimitiveIDIn) BuiltIn PrimitiveId Decorate 50(gl_PrimitiveIDIn) BuiltIn PrimitiveId
Decorate 52(gl_Layer) Stream 0 Decorate 52(gl_Layer) Stream 0
Decorate 52(gl_Layer) BuiltIn Layer Decorate 52(gl_Layer) BuiltIn Layer
Decorate 69(toFragment) Block Decorate 69(toFragment) Block
Decorate 69(toFragment) Stream 3 Decorate 69(toFragment) Stream 3
Decorate 71(toF) Stream 3 Decorate 71(toF) Stream 3
Decorate 71(toF) NoStaticUse Decorate 71(toF) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 3 8: TypeVector 7(float) 3
9(fromVertex): TypeStruct 8(fvec3) 9(fromVertex): TypeStruct 8(fvec3)
10: TypePointer Output 9(fromVertex) 10: TypePointer Output 9(fromVertex)
11: 10(ptr) Variable Output 11: 10(ptr) Variable Output
12: TypeInt 32 1 12: TypeInt 32 1
13: 12(int) Constant 0 13: 12(int) Constant 0
14(fromVertex): TypeStruct 8(fvec3) 14(fromVertex): TypeStruct 8(fvec3)
@ -75,7 +76,7 @@ Linked geometry stage:
16: 15(int) Constant 6 16: 15(int) Constant 6
17: TypeArray 14(fromVertex) 16 17: TypeArray 14(fromVertex) 16
18: TypePointer Input 17 18: TypePointer Input 17
19(fromV): 18(ptr) Variable Input 19(fromV): 18(ptr) Variable Input
20: TypePointer Input 8(fvec3) 20: TypePointer Input 8(fvec3)
23: TypePointer Output 8(fvec3) 23: TypePointer Output 8(fvec3)
25: TypeVector 7(float) 4 25: TypeVector 7(float) 4
@ -83,11 +84,11 @@ Linked geometry stage:
27: TypeArray 7(float) 26 27: TypeArray 7(float) 26
28(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27 28(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27
29: TypePointer Output 28(gl_PerVertex) 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 31(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27
32: TypeArray 31(gl_PerVertex) 16 32: TypeArray 31(gl_PerVertex) 16
33: TypePointer Input 32 33: TypePointer Input 32
34(gl_in): 33(ptr) Variable Input 34(gl_in): 33(ptr) Variable Input
35: TypePointer Input 25(fvec4) 35: TypePointer Input 25(fvec4)
38: TypePointer Output 25(fvec4) 38: TypePointer Output 25(fvec4)
40: 12(int) Constant 1 40: 12(int) Constant 1
@ -95,52 +96,52 @@ Linked geometry stage:
42: TypePointer Input 7(float) 42: TypePointer Input 7(float)
45: TypePointer Output 7(float) 45: TypePointer Output 7(float)
47: TypePointer Output 12(int) 47: TypePointer Output 12(int)
48(gl_PrimitiveID): 47(ptr) Variable Output 48(gl_PrimitiveID): 47(ptr) Variable Output
49: TypePointer Input 12(int) 49: TypePointer Input 12(int)
50(gl_PrimitiveIDIn): 49(ptr) Variable Input 50(gl_PrimitiveIDIn): 49(ptr) Variable Input
52(gl_Layer): 47(ptr) Variable Output 52(gl_Layer): 47(ptr) Variable Output
53: 12(int) Constant 2 53: 12(int) Constant 2
54: 7(float) Constant 1073741824 54: 7(float) Constant 1073741824
69(toFragment): TypeStruct 8(fvec3) 69(toFragment): TypeStruct 8(fvec3)
70: TypePointer Output 69(toFragment) 70: TypePointer Output 69(toFragment)
71(toF): 70(ptr) Variable Output 71(toF): 70(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
21: 20(ptr) AccessChain 19(fromV) 13 13 21: 20(ptr) AccessChain 19(fromV) 13 13
22: 8(fvec3) Load 21 22: 8(fvec3) Load 21
24: 23(ptr) AccessChain 11 13 24: 23(ptr) AccessChain 11 13
Store 24 22 Store 24 22
36: 35(ptr) AccessChain 34(gl_in) 13 13 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 39: 38(ptr) AccessChain 30 13
Store 39 37 Store 39 37
43: 42(ptr) AccessChain 34(gl_in) 41 40 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 46: 45(ptr) AccessChain 30 40
Store 46 44 Store 46 44
51: 12(int) Load 50(gl_PrimitiveIDIn) 51: 12(int) Load 50(gl_PrimitiveIDIn)
Store 48(gl_PrimitiveID) 51 Store 48(gl_PrimitiveID) 51
Store 52(gl_Layer) 53 Store 52(gl_Layer) 53
EmitVertex EmitVertex
55: 20(ptr) AccessChain 19(fromV) 13 13 55: 20(ptr) AccessChain 19(fromV) 13 13
56: 8(fvec3) Load 55 56: 8(fvec3) Load 55
57: 8(fvec3) VectorTimesScalar 56 54 57: 8(fvec3) VectorTimesScalar 56 54
58: 23(ptr) AccessChain 11 13 58: 23(ptr) AccessChain 11 13
Store 58 57 Store 58 57
59: 35(ptr) AccessChain 34(gl_in) 13 13 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 61: 25(fvec4) VectorTimesScalar 60 54
62: 38(ptr) AccessChain 30 13 62: 38(ptr) AccessChain 30 13
Store 62 61 Store 62 61
63: 42(ptr) AccessChain 34(gl_in) 41 40 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 65: 7(float) FMul 54 64
66: 45(ptr) AccessChain 30 40 66: 45(ptr) AccessChain 30 40
Store 66 65 Store 66 65
67: 12(int) Load 50(gl_PrimitiveIDIn) 67: 12(int) Load 50(gl_PrimitiveIDIn)
68: 12(int) IAdd 67 40 68: 12(int) IAdd 67 40
Store 48(gl_PrimitiveID) 68 Store 48(gl_PrimitiveID) 68
Store 52(gl_Layer) 41 Store 52(gl_Layer) 41
EmitVertex EmitVertex
EndPrimitive EndPrimitive
Branch 6 Branch 6

52
Test/baseResults/spv.150.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 53 // Id's are bound by 53
Source GLSL 150 Source GLSL 150
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 14 "gl_PerVertex" Name 14 "gl_PerVertex"
MemberName 14(gl_PerVertex) 0 "gl_Position" MemberName 14(gl_PerVertex) 0 "gl_Position"
@ -38,19 +39,18 @@ Linked vertex stage:
Name 49 "ui" Name 49 "ui"
Name 51 "gl_VertexID" Name 51 "gl_VertexID"
Name 52 "gl_InstanceID" 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) 0 BuiltIn Position
MemberDecorate 14(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 14(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 14(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 14(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 14(gl_PerVertex) 3 BuiltIn ClipVertex Decorate 14(gl_PerVertex) Block
Decorate 14(gl_PerVertex) Block Decorate 49(ui) NoStaticUse
Decorate 49(ui) NoStaticUse
Decorate 51(gl_VertexID) BuiltIn VertexId 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) BuiltIn InstanceId
Decorate 52(gl_InstanceID) NoStaticUse Decorate 52(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypeInt 32 0 9: TypeInt 32 0
@ -60,15 +60,15 @@ Linked vertex stage:
13: TypeArray 8(fvec4) 12 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) 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) 15: TypePointer Output 14(gl_PerVertex)
16: 15(ptr) Variable Output 16: 15(ptr) Variable Output
17: TypeInt 32 1 17: TypeInt 32 1
18: 17(int) Constant 0 18: 17(int) Constant 0
19: TypePointer Input 8(fvec4) 19: TypePointer Input 8(fvec4)
20(iv4): 19(ptr) Variable Input 20(iv4): 19(ptr) Variable Input
22: TypePointer Output 8(fvec4) 22: TypePointer Output 8(fvec4)
24: 17(int) Constant 1 24: 17(int) Constant 1
25: TypePointer UniformConstant 7(float) 25: TypePointer UniformConstant 7(float)
26(ps): 25(ptr) Variable UniformConstant 26(ps): 25(ptr) Variable UniformConstant
28: TypePointer Output 7(float) 28: TypePointer Output 7(float)
30: 17(int) Constant 2 30: 17(int) Constant 2
34: 9(int) Constant 3 34: 9(int) Constant 3
@ -77,32 +77,32 @@ Linked vertex stage:
37: TypeArray 36(s1) 10 37: TypeArray 36(s1) 10
38(s2): TypeStruct 17(int) 37 38(s2): TypeStruct 17(int) 37
39: TypePointer Output 38(s2) 39: TypePointer Output 38(s2)
40(s2out): 39(ptr) Variable Output 40(s2out): 39(ptr) Variable Output
41: TypePointer Function 17(int) 41: TypePointer Function 17(int)
48: TypePointer UniformConstant 17(int) 48: TypePointer UniformConstant 17(int)
49(ui): 48(ptr) Variable UniformConstant 49(ui): 48(ptr) Variable UniformConstant
50: TypePointer Input 17(int) 50: TypePointer Input 17(int)
51(gl_VertexID): 50(ptr) Variable Input 51(gl_VertexID): 50(ptr) Variable Input
52(gl_InstanceID): 50(ptr) Variable Input 52(gl_InstanceID): 50(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
42(i): 41(ptr) Variable Function 42(i): 41(ptr) Variable Function
21: 8(fvec4) Load 20(iv4) 21: 8(fvec4) Load 20(iv4)
23: 22(ptr) AccessChain 16 18 23: 22(ptr) AccessChain 16 18
Store 23 21 Store 23 21
27: 7(float) Load 26(ps) 27: 7(float) Load 26(ps)
29: 28(ptr) AccessChain 16 24 29: 28(ptr) AccessChain 16 24
Store 29 27 Store 29 27
31: 8(fvec4) Load 20(iv4) 31: 8(fvec4) Load 20(iv4)
32: 7(float) CompositeExtract 31 0 32: 7(float) CompositeExtract 31 0
33: 28(ptr) AccessChain 16 30 30 33: 28(ptr) AccessChain 16 30 30
Store 33 32 Store 33 32
43: 17(int) Load 42(i) 43: 17(int) Load 42(i)
44: 7(float) Load 26(ps) 44: 7(float) Load 26(ps)
45: 22(ptr) AccessChain 40(s2out) 24 43 30 30 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 47: 8(fvec4) CompositeInsert 44 46 3
Store 45 47 Store 45 47
Branch 6 Branch 6
6: Label 6: Label
Return Return

61
Test/baseResults/spv.300BuiltIns.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 41 // Id's are bound by 41
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 12 "gl_VertexID" Name 12 "gl_VertexID"
@ -19,63 +20,59 @@ Linked vertex stage:
Name 26 "ps" Name 26 "ps"
Name 34 "gl_PointSize" Name 34 "gl_PointSize"
Name 40 "gl_InstanceID" Name 40 "gl_InstanceID"
Decorate 9(i) PrecisionMedium Decorate 9(i) RelaxedPrecision
Decorate 12(gl_VertexID) PrecisionHigh
Decorate 12(gl_VertexID) BuiltIn VertexId Decorate 12(gl_VertexID) BuiltIn VertexId
Decorate 17(j) PrecisionMedium Decorate 17(j) RelaxedPrecision
Decorate 24(gl_Position) PrecisionHigh Decorate 24(gl_Position) Invariant
Decorate 24(gl_Position) Invariant
Decorate 24(gl_Position) BuiltIn Position Decorate 24(gl_Position) BuiltIn Position
Decorate 26(ps) PrecisionMedium Decorate 26(ps) RelaxedPrecision
Decorate 34(gl_PointSize) PrecisionHigh
Decorate 34(gl_PointSize) BuiltIn PointSize Decorate 34(gl_PointSize) BuiltIn PointSize
Decorate 40(gl_InstanceID) PrecisionHigh
Decorate 40(gl_InstanceID) BuiltIn InstanceId Decorate 40(gl_InstanceID) BuiltIn InstanceId
Decorate 40(gl_InstanceID) NoStaticUse Decorate 40(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 4 10: 7(int) Constant 4
11: TypePointer Input 7(int) 11: TypePointer Input 7(int)
12(gl_VertexID): 11(ptr) Variable Input 12(gl_VertexID): 11(ptr) Variable Input
15: 7(int) Constant 10 15: 7(int) Constant 10
21: TypeFloat 32 21: TypeFloat 32
22: TypeVector 21(float) 4 22: TypeVector 21(float) 4
23: TypePointer Output 22(fvec4) 23: TypePointer Output 22(fvec4)
24(gl_Position): 23(ptr) Variable Output 24(gl_Position): 23(ptr) Variable Output
25: TypePointer Input 21(float) 25: TypePointer Input 21(float)
26(ps): 25(ptr) Variable Input 26(ps): 25(ptr) Variable Input
33: TypePointer Output 21(float) 33: TypePointer Output 21(float)
34(gl_PointSize): 33(ptr) Variable Output 34(gl_PointSize): 33(ptr) Variable Output
40(gl_InstanceID): 11(ptr) Variable Input 40(gl_InstanceID): 11(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
17(j): 8(ptr) Variable Function 17(j): 8(ptr) Variable Function
13: 7(int) Load 12(gl_VertexID) 13: 7(int) Load 12(gl_VertexID)
14: 7(int) IMul 10 13 14: 7(int) IMul 10 13
16: 7(int) ISub 14 15 16: 7(int) ISub 14 15
Store 9(i) 16 Store 9(i) 16
18: 7(int) Load 12(gl_VertexID) 18: 7(int) Load 12(gl_VertexID)
19: 7(int) IMul 10 18 19: 7(int) IMul 10 18
20: 7(int) ISub 19 15 20: 7(int) ISub 19 15
Store 17(j) 20 Store 17(j) 20
27: 21(float) Load 26(ps) 27: 21(float) Load 26(ps)
28: 22(fvec4) CompositeConstruct 27 27 27 27 28: 22(fvec4) CompositeConstruct 27 27 27 27
Store 24(gl_Position) 28 Store 24(gl_Position) 28
29: 7(int) Load 9(i) 29: 7(int) Load 9(i)
30: 21(float) ConvertSToF 29 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 32: 22(fvec4) VectorTimesScalar 31 30
Store 24(gl_Position) 32 Store 24(gl_Position) 32
35: 21(float) Load 26(ps) 35: 21(float) Load 26(ps)
Store 34(gl_PointSize) 35 Store 34(gl_PointSize) 35
36: 7(int) Load 17(j) 36: 7(int) Load 17(j)
37: 21(float) ConvertSToF 36 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 39: 21(float) FMul 38 37
Store 34(gl_PointSize) 39 Store 34(gl_PointSize) 39
Branch 6 Branch 6
6: Label 6: Label
Return Return

44
Test/baseResults/spv.300layout.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 38 // Id's are bound by 38
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "c" Name 10 "c"
Name 12 "color" Name 12 "color"
@ -20,27 +22,27 @@ Linked fragment stage:
Name 16 "s" Name 16 "s"
Name 27 "p" Name 27 "p"
Name 30 "pos" Name 30 "pos"
Decorate 10(c) PrecisionMedium Decorate 10(c) RelaxedPrecision
Decorate 10(c) Location 7 Decorate 10(c) Location 7
Decorate 12(color) PrecisionMedium Decorate 12(color) RelaxedPrecision
Decorate 12(color) Smooth Decorate 12(color) Smooth
MemberDecorate 14(S) 0 PrecisionMedium MemberDecorate 14(S) 0 RelaxedPrecision
MemberDecorate 14(S) 1 PrecisionMedium MemberDecorate 14(S) 1 RelaxedPrecision
Decorate 27(p) PrecisionMedium Decorate 27(p) RelaxedPrecision
Decorate 27(p) Location 3 Decorate 27(p) Location 3
Decorate 30(pos) PrecisionMedium Decorate 30(pos) RelaxedPrecision
Decorate 30(pos) Smooth Decorate 30(pos) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 3 8: TypeVector 7(float) 3
9: TypePointer Output 8(fvec3) 9: TypePointer Output 8(fvec3)
10(c): 9(ptr) Variable Output 10(c): 9(ptr) Variable Output
11: TypePointer Input 8(fvec3) 11: TypePointer Input 8(fvec3)
12(color): 11(ptr) Variable Input 12(color): 11(ptr) Variable Input
14(S): TypeStruct 8(fvec3) 7(float) 14(S): TypeStruct 8(fvec3) 7(float)
15: TypePointer Input 14(S) 15: TypePointer Input 14(S)
16(s): 15(ptr) Variable Input 16(s): 15(ptr) Variable Input
17: TypeInt 32 1 17: TypeInt 32 1
18: 17(int) Constant 0 18: 17(int) Constant 0
22: TypeVector 7(float) 4 22: TypeVector 7(float) 4
@ -48,25 +50,25 @@ Linked fragment stage:
24: 23(int) Constant 2 24: 23(int) Constant 2
25: TypeArray 22(fvec4) 24 25: TypeArray 22(fvec4) 24
26: TypePointer Output 25 26: TypePointer Output 25
27(p): 26(ptr) Variable Output 27(p): 26(ptr) Variable Output
28: 17(int) Constant 1 28: 17(int) Constant 1
29: TypePointer Input 22(fvec4) 29: TypePointer Input 22(fvec4)
30(pos): 29(ptr) Variable Input 30(pos): 29(ptr) Variable Input
32: TypePointer Input 7(float) 32: TypePointer Input 7(float)
36: TypePointer Output 22(fvec4) 36: TypePointer Output 22(fvec4)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
13: 8(fvec3) Load 12(color) 13: 8(fvec3) Load 12(color)
19: 11(ptr) AccessChain 16(s) 18 19: 11(ptr) AccessChain 16(s) 18
20: 8(fvec3) Load 19 20: 8(fvec3) Load 19
21: 8(fvec3) FAdd 13 20 21: 8(fvec3) FAdd 13 20
Store 10(c) 21 Store 10(c) 21
31: 22(fvec4) Load 30(pos) 31: 22(fvec4) Load 30(pos)
33: 32(ptr) AccessChain 16(s) 28 33: 32(ptr) AccessChain 16(s) 28
34: 7(float) Load 33 34: 7(float) Load 33
35: 22(fvec4) VectorTimesScalar 31 34 35: 22(fvec4) VectorTimesScalar 31 34
37: 36(ptr) AccessChain 27(p) 28 37: 36(ptr) AccessChain 27(p) 28
Store 37 35 Store 37 35
Branch 6 Branch 6
6: Label 6: Label
Return Return

136
Test/baseResults/spv.300layoutp.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 112 // Id's are bound by 112
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 10 "pos" Name 10 "pos"
Name 12 "p" Name 12 "p"
@ -41,64 +42,47 @@ Linked vertex stage:
Name 80 "s" Name 80 "s"
Name 110 "gl_VertexID" Name 110 "gl_VertexID"
Name 111 "gl_InstanceID" Name 111 "gl_InstanceID"
Decorate 10(pos) PrecisionHigh Decorate 10(pos) Smooth
Decorate 10(pos) Smooth
Decorate 12(p) PrecisionHigh
Decorate 12(p) Location 3 Decorate 12(p) Location 3
MemberDecorate 18(Transform) 0 RowMajor MemberDecorate 18(Transform) 0 RowMajor
MemberDecorate 18(Transform) 0 PrecisionHigh MemberDecorate 18(Transform) 0 Offset 0
MemberDecorate 18(Transform) 1 ColMajor MemberDecorate 18(Transform) 1 ColMajor
MemberDecorate 18(Transform) 1 PrecisionHigh MemberDecorate 18(Transform) 1 Offset 64
MemberDecorate 18(Transform) 2 RowMajor MemberDecorate 18(Transform) 2 RowMajor
MemberDecorate 18(Transform) 2 PrecisionHigh MemberDecorate 18(Transform) 2 Offset 128
MemberDecorate 18(Transform) 3 PrecisionHigh MemberDecorate 18(Transform) 3 Offset 176
Decorate 18(Transform) GLSLStd140 Decorate 18(Transform) Block
Decorate 18(Transform) Block MemberDecorate 34(T3) 0 ColMajor
MemberDecorate 34(T3) 0 ColMajor MemberDecorate 34(T3) 1 RowMajor
MemberDecorate 34(T3) 0 PrecisionHigh MemberDecorate 34(T3) 2 ColMajor
MemberDecorate 34(T3) 1 RowMajor Decorate 34(T3) GLSLShared
MemberDecorate 34(T3) 1 PrecisionHigh Decorate 34(T3) Block
MemberDecorate 34(T3) 2 ColMajor MemberDecorate 44(T2) 1 RowMajor
MemberDecorate 34(T3) 2 PrecisionHigh Decorate 44(T2) GLSLShared
MemberDecorate 34(T3) 3 PrecisionHigh Decorate 44(T2) Block
Decorate 34(T3) GLSLShared Decorate 52(color) Smooth
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
Decorate 54(c) Location 7 Decorate 54(c) Location 7
Decorate 62(iout) PrecisionHigh Decorate 62(iout) Flat
Decorate 62(iout) Flat
Decorate 68(uiuin) PrecisionHigh
Decorate 74(aiv2) PrecisionHigh
Decorate 74(aiv2) Location 9 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) BuiltIn VertexId
Decorate 110(gl_VertexID) NoStaticUse Decorate 110(gl_VertexID) NoStaticUse
Decorate 111(gl_InstanceID) PrecisionHigh
Decorate 111(gl_InstanceID) BuiltIn InstanceId Decorate 111(gl_InstanceID) BuiltIn InstanceId
Decorate 111(gl_InstanceID) NoStaticUse Decorate 111(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Output 8(fvec4) 9: TypePointer Output 8(fvec4)
10(pos): 9(ptr) Variable Output 10(pos): 9(ptr) Variable Output
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(p): 11(ptr) Variable Input 12(p): 11(ptr) Variable Input
14: TypeMatrix 8(fvec4) 4 14: TypeMatrix 8(fvec4) 4
15: TypeVector 7(float) 3 15: TypeVector 7(float) 3
16: TypeMatrix 15(fvec3) 3 16: TypeMatrix 15(fvec3) 3
17: TypeInt 32 1 17: TypeInt 32 1
18(Transform): TypeStruct 14 14 16 17(int) 18(Transform): TypeStruct 14 14 16 17(int)
19: TypePointer Uniform 18(Transform) 19: TypePointer Uniform 18(Transform)
20(tblock): 19(ptr) Variable Uniform 20(tblock): 19(ptr) Variable Uniform
21: 17(int) Constant 0 21: 17(int) Constant 0
22: TypePointer Uniform 14 22: TypePointer Uniform 14
25: 17(int) Constant 1 25: 17(int) Constant 1
@ -109,29 +93,29 @@ Linked vertex stage:
33: TypeArray 31(ivec3) 32 33: TypeArray 31(ivec3) 32
34(T3): TypeStruct 14 14 29 33 34(T3): TypeStruct 14 14 29 33
35: TypePointer Uniform 34(T3) 35: TypePointer Uniform 34(T3)
36: 35(ptr) Variable Uniform 36: 35(ptr) Variable Uniform
43: TypeBool 43: TypeBool
44(T2): TypeStruct 43(bool) 14 44(T2): TypeStruct 43(bool) 14
45: TypePointer Uniform 44(T2) 45: TypePointer Uniform 44(T2)
46: 45(ptr) Variable Uniform 46: 45(ptr) Variable Uniform
51: TypePointer Output 15(fvec3) 51: TypePointer Output 15(fvec3)
52(color): 51(ptr) Variable Output 52(color): 51(ptr) Variable Output
53: TypePointer Input 15(fvec3) 53: TypePointer Input 15(fvec3)
54(c): 53(ptr) Variable Input 54(c): 53(ptr) Variable Input
56: 17(int) Constant 2 56: 17(int) Constant 2
57: TypePointer Uniform 16 57: TypePointer Uniform 16
61: TypePointer Output 17(int) 61: TypePointer Output 17(int)
62(iout): 61(ptr) Variable Output 62(iout): 61(ptr) Variable Output
63: 17(int) Constant 3 63: 17(int) Constant 3
64: TypePointer Uniform 17(int) 64: TypePointer Uniform 17(int)
67: TypePointer UniformConstant 30(int) 67: TypePointer UniformConstant 30(int)
68(uiuin): 67(ptr) Variable UniformConstant 68(uiuin): 67(ptr) Variable UniformConstant
72: TypeVector 17(int) 2 72: TypeVector 17(int) 2
73: TypePointer Input 72(ivec2) 73: TypePointer Input 72(ivec2)
74(aiv2): 73(ptr) Variable Input 74(aiv2): 73(ptr) Variable Input
78(S): TypeStruct 15(fvec3) 7(float) 78(S): TypeStruct 15(fvec3) 7(float)
79: TypePointer Output 78(S) 79: TypePointer Output 78(S)
80(s): 79(ptr) Variable Output 80(s): 79(ptr) Variable Output
85: TypePointer Output 7(float) 85: TypePointer Output 7(float)
87: TypePointer Uniform 15(fvec3) 87: TypePointer Uniform 15(fvec3)
90: 7(float) Constant 1065353216 90: 7(float) Constant 1065353216
@ -141,65 +125,65 @@ Linked vertex stage:
98: 30(int) Constant 5 98: 30(int) Constant 5
99: 31(ivec3) ConstantComposite 98 98 98 99: 31(ivec3) ConstantComposite 98 98 98
109: TypePointer Input 17(int) 109: TypePointer Input 17(int)
110(gl_VertexID): 109(ptr) Variable Input 110(gl_VertexID): 109(ptr) Variable Input
111(gl_InstanceID): 109(ptr) Variable Input 111(gl_InstanceID): 109(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
13: 8(fvec4) Load 12(p) 13: 8(fvec4) Load 12(p)
23: 22(ptr) AccessChain 20(tblock) 21 23: 22(ptr) AccessChain 20(tblock) 21
24: 14 Load 23 24: 14 Load 23
26: 22(ptr) AccessChain 20(tblock) 25 26: 22(ptr) AccessChain 20(tblock) 25
27: 14 Load 26 27: 14 Load 26
28: 14 MatrixTimesMatrix 24 27 28: 14 MatrixTimesMatrix 24 27
37: 22(ptr) AccessChain 36 25 37: 22(ptr) AccessChain 36 25
38: 14 Load 37 38: 14 Load 37
39: 14 MatrixTimesMatrix 28 38 39: 14 MatrixTimesMatrix 28 38
40: 22(ptr) AccessChain 36 21 40: 22(ptr) AccessChain 36 21
41: 14 Load 40 41: 14 Load 40
42: 14 MatrixTimesMatrix 39 41 42: 14 MatrixTimesMatrix 39 41
47: 22(ptr) AccessChain 46 25 47: 22(ptr) AccessChain 46 25
48: 14 Load 47 48: 14 Load 47
49: 14 MatrixTimesMatrix 42 48 49: 14 MatrixTimesMatrix 42 48
50: 8(fvec4) VectorTimesMatrix 13 49 50: 8(fvec4) VectorTimesMatrix 13 49
Store 10(pos) 50 Store 10(pos) 50
55: 15(fvec3) Load 54(c) 55: 15(fvec3) Load 54(c)
58: 57(ptr) AccessChain 20(tblock) 56 58: 57(ptr) AccessChain 20(tblock) 56
59: 16 Load 58 59: 16 Load 58
60: 15(fvec3) VectorTimesMatrix 55 59 60: 15(fvec3) VectorTimesMatrix 55 59
Store 52(color) 60 Store 52(color) 60
65: 64(ptr) AccessChain 20(tblock) 63 65: 64(ptr) AccessChain 20(tblock) 63
66: 17(int) Load 65 66: 17(int) Load 65
69: 30(int) Load 68(uiuin) 69: 30(int) Load 68(uiuin)
70: 17(int) Bitcast 69 70: 17(int) Bitcast 69
71: 17(int) IAdd 66 70 71: 17(int) IAdd 66 70
75: 72(ivec2) Load 74(aiv2) 75: 72(ivec2) Load 74(aiv2)
76: 17(int) CompositeExtract 75 1 76: 17(int) CompositeExtract 75 1
77: 17(int) IAdd 71 76 77: 17(int) IAdd 71 76
Store 62(iout) 77 Store 62(iout) 77
81: 15(fvec3) Load 54(c) 81: 15(fvec3) Load 54(c)
82: 51(ptr) AccessChain 80(s) 21 82: 51(ptr) AccessChain 80(s) 21
Store 82 81 Store 82 81
83: 8(fvec4) Load 12(p) 83: 8(fvec4) Load 12(p)
84: 7(float) CompositeExtract 83 0 84: 7(float) CompositeExtract 83 0
86: 85(ptr) AccessChain 80(s) 25 86: 85(ptr) AccessChain 80(s) 25
Store 86 84 Store 86 84
88: 87(ptr) AccessChain 36 56 25 88: 87(ptr) AccessChain 36 56 25
89: 15(fvec3) Load 88 89: 15(fvec3) Load 88
93: 92(bvec3) FOrdNotEqual 89 91 93: 92(bvec3) FOrdNotEqual 89 91
94: 43(bool) Any 93 94: 43(bool) Any 93
96: 95(ptr) AccessChain 36 63 56 96: 95(ptr) AccessChain 36 63 56
97: 31(ivec3) Load 96 97: 31(ivec3) Load 96
100: 92(bvec3) INotEqual 97 99 100: 92(bvec3) INotEqual 97 99
101: 43(bool) Any 100 101: 43(bool) Any 100
102: 43(bool) LogicalOr 94 101 102: 43(bool) LogicalOr 94 101
SelectionMerge 104 None SelectionMerge 104 None
BranchConditional 102 103 104 BranchConditional 102 103 104
103: Label 103: Label
105: 51(ptr) AccessChain 80(s) 21 105: 51(ptr) AccessChain 80(s) 21
106: 15(fvec3) Load 105 106: 15(fvec3) Load 105
107: 15(fvec3) CompositeConstruct 90 90 90 107: 15(fvec3) CompositeConstruct 90 90 90
108: 15(fvec3) FAdd 106 107 108: 15(fvec3) FAdd 106 107
Store 105 108 Store 105 108
Branch 104 Branch 104
104: Label 104: Label
Branch 6 Branch 6

25
Test/baseResults/spv.330.geom.out Normal file → Executable file
View File

@ -9,12 +9,13 @@ Linked geometry stage:
Source GLSL 330 Source GLSL 330
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 EntryPoint Geometry 4 "main"
ExecutionMode 4 InputTriangles ExecutionMode 4 InputTriangles
ExecutionMode 4 Invocations 0 ExecutionMode 4 Invocations 0
ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
Name 4 "main" Name 4 "main"
Name 12 "gl_PerVertex" Name 12 "gl_PerVertex"
@ -27,14 +28,14 @@ Linked geometry stage:
Name 21 "gl_in" Name 21 "gl_in"
MemberDecorate 12(gl_PerVertex) 0 BuiltIn Position MemberDecorate 12(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 12(gl_PerVertex) 1 BuiltIn ClipDistance MemberDecorate 12(gl_PerVertex) 1 BuiltIn ClipDistance
Decorate 12(gl_PerVertex) Block Decorate 12(gl_PerVertex) Block
Decorate 12(gl_PerVertex) Stream 0 Decorate 12(gl_PerVertex) Stream 0
Decorate 14 Stream 0 Decorate 14 Stream 0
MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 17(gl_PerVertex) 1 BuiltIn ClipDistance MemberDecorate 17(gl_PerVertex) 1 BuiltIn ClipDistance
Decorate 17(gl_PerVertex) Block Decorate 17(gl_PerVertex) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypeInt 32 0 9: TypeInt 32 0
@ -42,14 +43,14 @@ Linked geometry stage:
11: TypeArray 7(float) 10 11: TypeArray 7(float) 10
12(gl_PerVertex): TypeStruct 8(fvec4) 11 12(gl_PerVertex): TypeStruct 8(fvec4) 11
13: TypePointer Output 12(gl_PerVertex) 13: TypePointer Output 12(gl_PerVertex)
14: 13(ptr) Variable Output 14: 13(ptr) Variable Output
15: TypeInt 32 1 15: TypeInt 32 1
16: 15(int) Constant 0 16: 15(int) Constant 0
17(gl_PerVertex): TypeStruct 8(fvec4) 11 17(gl_PerVertex): TypeStruct 8(fvec4) 11
18: 9(int) Constant 3 18: 9(int) Constant 3
19: TypeArray 17(gl_PerVertex) 18 19: TypeArray 17(gl_PerVertex) 18
20: TypePointer Input 19 20: TypePointer Input 19
21(gl_in): 20(ptr) Variable Input 21(gl_in): 20(ptr) Variable Input
22: 15(int) Constant 1 22: 15(int) Constant 1
23: TypePointer Input 8(fvec4) 23: TypePointer Input 8(fvec4)
26: TypePointer Output 8(fvec4) 26: TypePointer Output 8(fvec4)
@ -58,13 +59,13 @@ Linked geometry stage:
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
24: 23(ptr) AccessChain 21(gl_in) 22 16 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 27: 26(ptr) AccessChain 14 16
Store 27 25 Store 27 25
29: 28(ptr) AccessChain 21(gl_in) 22 22 16 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 32: 31(ptr) AccessChain 14 22 16
Store 32 30 Store 32 30
EmitVertex EmitVertex
EndPrimitive EndPrimitive
Branch 6 Branch 6

311
Test/baseResults/spv.400.tesc.out Normal file → Executable file
View File

@ -7,170 +7,173 @@ Linked tessellation control stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 89 // Id's are bound by 91
Source GLSL 400 Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 EntryPoint TessellationControl 4 "main"
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
Name 4 "main" Name 4 "main"
Name 9 "a" Name 13 "a"
Name 14 "p" Name 18 "p"
Name 18 "gl_PerVertex" Name 20 "gl_PerVertex"
MemberName 18(gl_PerVertex) 0 "gl_Position" MemberName 20(gl_PerVertex) 0 "gl_Position"
MemberName 18(gl_PerVertex) 1 "gl_PointSize" MemberName 20(gl_PerVertex) 1 "gl_PointSize"
MemberName 18(gl_PerVertex) 2 "gl_ClipDistance" MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
Name 22 "gl_in" Name 24 "gl_in"
Name 29 "ps" Name 31 "ps"
Name 33 "cd" Name 35 "cd"
Name 37 "pvi" Name 39 "pvi"
Name 39 "gl_PatchVerticesIn" Name 41 "gl_PatchVerticesIn"
Name 41 "pid" Name 43 "pid"
Name 42 "gl_PrimitiveID" Name 44 "gl_PrimitiveID"
Name 44 "iid" Name 46 "iid"
Name 45 "gl_InvocationID" Name 47 "gl_InvocationID"
Name 47 "gl_PerVertex" Name 49 "gl_PerVertex"
MemberName 47(gl_PerVertex) 0 "gl_Position" MemberName 49(gl_PerVertex) 0 "gl_Position"
MemberName 47(gl_PerVertex) 1 "gl_PointSize" MemberName 49(gl_PerVertex) 1 "gl_PointSize"
MemberName 47(gl_PerVertex) 2 "gl_ClipDistance" MemberName 49(gl_PerVertex) 2 "gl_ClipDistance"
Name 51 "gl_out" Name 53 "gl_out"
Name 62 "gl_TessLevelOuter" Name 64 "gl_TessLevelOuter"
Name 69 "gl_TessLevelInner" Name 71 "gl_TessLevelInner"
Name 74 "outa" Name 76 "outa"
Name 75 "patchOut" Name 77 "patchOut"
Name 79 "inb" Name 81 "inb"
Name 80 "ind" Name 82 "ind"
Name 83 "ivla" Name 85 "ivla"
Name 84 "ivlb" Name 86 "ivlb"
Name 87 "ovla" Name 89 "ovla"
Name 88 "ovlb" Name 90 "ovlb"
Decorate 18(gl_PerVertex) Block Decorate 20(gl_PerVertex) Block
Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices
Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 45(gl_InvocationID) BuiltIn InvocationId Decorate 47(gl_InvocationID) BuiltIn InvocationId
MemberDecorate 47(gl_PerVertex) 0 BuiltIn Position MemberDecorate 49(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 47(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 49(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 47(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 49(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 47(gl_PerVertex) Block Decorate 49(gl_PerVertex) Block
Decorate 62(gl_TessLevelOuter) Patch Decorate 64(gl_TessLevelOuter) Patch
Decorate 62(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 64(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 69(gl_TessLevelInner) Patch Decorate 71(gl_TessLevelInner) Patch
Decorate 69(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 71(gl_TessLevelInner) BuiltIn TessLevelInner
Decorate 74(outa) NoStaticUse Decorate 76(outa) NoStaticUse
Decorate 75(patchOut) Patch Decorate 77(patchOut) Patch
Decorate 75(patchOut) NoStaticUse Decorate 77(patchOut) NoStaticUse
Decorate 79(inb) NoStaticUse Decorate 81(inb) NoStaticUse
Decorate 80(ind) NoStaticUse Decorate 82(ind) NoStaticUse
Decorate 83(ivla) Location 3 Decorate 85(ivla) Location 3
Decorate 83(ivla) NoStaticUse Decorate 85(ivla) NoStaticUse
Decorate 84(ivlb) Location 4 Decorate 86(ivlb) Location 4
Decorate 84(ivlb) NoStaticUse Decorate 86(ivlb) NoStaticUse
Decorate 87(ovla) Location 3 Decorate 89(ovla) Location 3
Decorate 87(ovla) NoStaticUse Decorate 89(ovla) NoStaticUse
Decorate 88(ovlb) Location 4 Decorate 90(ovlb) Location 4
Decorate 88(ovlb) NoStaticUse Decorate 90(ovlb) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 0
8: TypePointer Function 7(int) 8: 7(int) Constant 1
10: 7(int) Constant 5392 9: 7(int) Constant 1023
11: TypeFloat 32 10: 7(int) Constant 0
12: TypeVector 11(float) 4 11: TypeInt 32 1
13: TypePointer Function 12(fvec4) 12: TypePointer Function 11(int)
15: TypeInt 32 0 14: 11(int) Constant 5392
16: 15(int) Constant 1 15: TypeFloat 32
17: TypeArray 11(float) 16 16: TypeVector 15(float) 4
18(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 17: TypePointer Function 16(fvec4)
19: 15(int) Constant 32 19: TypeArray 15(float) 8
20: TypeArray 18(gl_PerVertex) 19 20(gl_PerVertex): TypeStruct 16(fvec4) 15(float) 19
21: TypePointer Input 20 21: 7(int) Constant 32
22(gl_in): 21(ptr) Variable Input 22: TypeArray 20(gl_PerVertex) 21
23: 7(int) Constant 1 23: TypePointer Input 22
24: 7(int) Constant 0 24(gl_in): 23(ptr) Variable Input
25: TypePointer Input 12(fvec4) 25: 11(int) Constant 1
28: TypePointer Function 11(float) 26: 11(int) Constant 0
30: TypePointer Input 11(float) 27: TypePointer Input 16(fvec4)
34: 7(int) Constant 2 30: TypePointer Function 15(float)
38: TypePointer Input 7(int) 32: TypePointer Input 15(float)
39(gl_PatchVerticesIn): 38(ptr) Variable Input 36: 11(int) Constant 2
42(gl_PrimitiveID): 38(ptr) Variable Input 40: TypePointer Input 11(int)
45(gl_InvocationID): 38(ptr) Variable Input 41(gl_PatchVerticesIn): 40(ptr) Variable Input
47(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 44(gl_PrimitiveID): 40(ptr) Variable Input
48: 15(int) Constant 4 47(gl_InvocationID): 40(ptr) Variable Input
49: TypeArray 47(gl_PerVertex) 48 49(gl_PerVertex): TypeStruct 16(fvec4) 15(float) 19
50: TypePointer Output 49 50: 7(int) Constant 4
51(gl_out): 50(ptr) Variable Output 51: TypeArray 49(gl_PerVertex) 50
53: TypePointer Output 12(fvec4) 52: TypePointer Output 51
56: TypePointer Output 11(float) 53(gl_out): 52(ptr) Variable Output
60: TypeArray 11(float) 48 55: TypePointer Output 16(fvec4)
61: TypePointer Output 60 58: TypePointer Output 15(float)
62(gl_TessLevelOuter): 61(ptr) Variable Output 62: TypeArray 15(float) 50
63: 7(int) Constant 3 63: TypePointer Output 62
64: 11(float) Constant 1078774989 64(gl_TessLevelOuter): 63(ptr) Variable Output
66: 15(int) Constant 2 65: 11(int) Constant 3
67: TypeArray 11(float) 66 66: 15(float) Constant 1078774989
68: TypePointer Output 67 68: 7(int) Constant 2
69(gl_TessLevelInner): 68(ptr) Variable Output 69: TypeArray 15(float) 68
70: 11(float) Constant 1067869798 70: TypePointer Output 69
72: TypeArray 7(int) 48 71(gl_TessLevelInner): 70(ptr) Variable Output
73: TypePointer PrivateGlobal 72 72: 15(float) Constant 1067869798
74(outa): 73(ptr) Variable PrivateGlobal 74: TypeArray 11(int) 50
75(patchOut): 53(ptr) Variable Output 75: TypePointer PrivateGlobal 74
76: TypeVector 11(float) 2 76(outa): 75(ptr) Variable PrivateGlobal
77: TypeArray 76(fvec2) 19 77(patchOut): 55(ptr) Variable Output
78: TypePointer Input 77 78: TypeVector 15(float) 2
79(inb): 78(ptr) Variable Input 79: TypeArray 78(fvec2) 21
80(ind): 78(ptr) Variable Input 80: TypePointer Input 79
81: TypeArray 12(fvec4) 19 81(inb): 80(ptr) Variable Input
82: TypePointer Input 81 82(ind): 80(ptr) Variable Input
83(ivla): 82(ptr) Variable Input 83: TypeArray 16(fvec4) 21
84(ivlb): 82(ptr) Variable Input 84: TypePointer Input 83
85: TypeArray 12(fvec4) 48 85(ivla): 84(ptr) Variable Input
86: TypePointer Output 85 86(ivlb): 84(ptr) Variable Input
87(ovla): 86(ptr) Variable Output 87: TypeArray 16(fvec4) 50
88(ovlb): 86(ptr) Variable Output 88: TypePointer Output 87
89(ovla): 88(ptr) Variable Output
90(ovlb): 88(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(a): 8(ptr) Variable Function 13(a): 12(ptr) Variable Function
14(p): 13(ptr) Variable Function 18(p): 17(ptr) Variable Function
29(ps): 28(ptr) Variable Function 31(ps): 30(ptr) Variable Function
33(cd): 28(ptr) Variable Function 35(cd): 30(ptr) Variable Function
37(pvi): 8(ptr) Variable Function 39(pvi): 12(ptr) Variable Function
41(pid): 8(ptr) Variable Function 43(pid): 12(ptr) Variable Function
44(iid): 8(ptr) Variable Function 46(iid): 12(ptr) Variable Function
MemoryBarrier Device Relaxed SequentiallyConsistent Acquire Release UniformMemory SubgroupMemory WorkgroupLocalMemory WorkgroupGlobalMemory AtomicCounterMemory ImageMemory MemoryBarrier 8 9
ControlBarrier Device ControlBarrier 8 8 10
Store 9(a) 10 Store 13(a) 14
26: 25(ptr) AccessChain 22(gl_in) 23 24 28: 27(ptr) AccessChain 24(gl_in) 25 26
27: 12(fvec4) Load 26 29: 16(fvec4) Load 28
Store 14(p) 27 Store 18(p) 29
31: 30(ptr) AccessChain 22(gl_in) 23 23 33: 32(ptr) AccessChain 24(gl_in) 25 25
32: 11(float) Load 31 34: 15(float) Load 33
Store 29(ps) 32 Store 31(ps) 34
35: 30(ptr) AccessChain 22(gl_in) 23 34 34 37: 32(ptr) AccessChain 24(gl_in) 25 36 36
36: 11(float) Load 35 38: 15(float) Load 37
Store 33(cd) 36 Store 35(cd) 38
40: 7(int) Load 39(gl_PatchVerticesIn) 42: 11(int) Load 41(gl_PatchVerticesIn)
Store 37(pvi) 40 Store 39(pvi) 42
43: 7(int) Load 42(gl_PrimitiveID) 45: 11(int) Load 44(gl_PrimitiveID)
Store 41(pid) 43 Store 43(pid) 45
46: 7(int) Load 45(gl_InvocationID) 48: 11(int) Load 47(gl_InvocationID)
Store 44(iid) 46 Store 46(iid) 48
52: 12(fvec4) Load 14(p) 54: 16(fvec4) Load 18(p)
54: 53(ptr) AccessChain 51(gl_out) 23 24 56: 55(ptr) AccessChain 53(gl_out) 25 26
Store 54 52 Store 56 54
55: 11(float) Load 29(ps) 57: 15(float) Load 31(ps)
57: 56(ptr) AccessChain 51(gl_out) 23 23 59: 58(ptr) AccessChain 53(gl_out) 25 25
Store 57 55 Store 59 57
58: 11(float) Load 33(cd) 60: 15(float) Load 35(cd)
59: 56(ptr) AccessChain 51(gl_out) 23 34 23 61: 58(ptr) AccessChain 53(gl_out) 25 36 25
Store 59 58 Store 61 60
65: 56(ptr) AccessChain 62(gl_TessLevelOuter) 63 67: 58(ptr) AccessChain 64(gl_TessLevelOuter) 65
Store 65 64 Store 67 66
71: 56(ptr) AccessChain 69(gl_TessLevelInner) 23 73: 58(ptr) AccessChain 71(gl_TessLevelInner) 25
Store 71 70 Store 73 72
Branch 6 Branch 6
6: Label 6: Label
Return Return

131
Test/baseResults/spv.400.tese.out Normal file → Executable file
View File

@ -11,10 +11,11 @@ Linked tessellation evaluation stage:
Source GLSL 400 Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 EntryPoint TessellationEvaluation 4 "main"
ExecutionMode 4 InputTriangles ExecutionMode 4 InputTriangles
Name 4 "main" Name 4 "main"
Name 9 "a" Name 9 "a"
Name 14 "p" Name 14 "p"
@ -52,34 +53,34 @@ Linked tessellation evaluation stage:
Name 94 "ivla" Name 94 "ivla"
Name 95 "ivlb" Name 95 "ivlb"
Name 98 "ovla" Name 98 "ovla"
Decorate 18(gl_PerVertex) Block Decorate 18(gl_PerVertex) Block
Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices
Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 48(gl_TessCoord) BuiltIn TessCoord Decorate 48(gl_TessCoord) BuiltIn TessCoord
Decorate 54(gl_TessLevelOuter) Patch Decorate 54(gl_TessLevelOuter) Patch
Decorate 54(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 54(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 62(gl_TessLevelInner) Patch Decorate 62(gl_TessLevelInner) Patch
Decorate 62(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 62(gl_TessLevelInner) BuiltIn TessLevelInner
MemberDecorate 67(gl_PerVertex) 0 BuiltIn Position MemberDecorate 67(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 67(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 67(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 67(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 67(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 67(gl_PerVertex) Block Decorate 67(gl_PerVertex) Block
Decorate 78(patchIn) Patch Decorate 78(patchIn) Patch
Decorate 78(patchIn) NoStaticUse Decorate 78(patchIn) NoStaticUse
Decorate 82(inb) NoStaticUse Decorate 82(inb) NoStaticUse
Decorate 83(ind) NoStaticUse Decorate 83(ind) NoStaticUse
Decorate 84(testblb) Block Decorate 84(testblb) Block
Decorate 87(blb) NoStaticUse Decorate 87(blb) NoStaticUse
Decorate 88(testbld) Block Decorate 88(testbld) Block
Decorate 91(bld) NoStaticUse Decorate 91(bld) NoStaticUse
Decorate 94(ivla) Location 23 Decorate 94(ivla) Location 23
Decorate 94(ivla) NoStaticUse Decorate 94(ivla) NoStaticUse
Decorate 95(ivlb) Location 24 Decorate 95(ivlb) Location 24
Decorate 95(ivlb) NoStaticUse Decorate 95(ivlb) NoStaticUse
Decorate 98(ovla) Location 23 Decorate 98(ovla) Location 23
Decorate 98(ovla) NoStaticUse Decorate 98(ovla) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 1512 10: 7(int) Constant 1512
@ -93,7 +94,7 @@ Linked tessellation evaluation stage:
19: 15(int) Constant 32 19: 15(int) Constant 32
20: TypeArray 18(gl_PerVertex) 19 20: TypeArray 18(gl_PerVertex) 19
21: TypePointer Input 20 21: TypePointer Input 20
22(gl_in): 21(ptr) Variable Input 22(gl_in): 21(ptr) Variable Input
23: 7(int) Constant 1 23: 7(int) Constant 1
24: 7(int) Constant 0 24: 7(int) Constant 0
25: TypePointer Input 12(fvec4) 25: TypePointer Input 12(fvec4)
@ -101,91 +102,91 @@ Linked tessellation evaluation stage:
30: TypePointer Input 11(float) 30: TypePointer Input 11(float)
34: 7(int) Constant 2 34: 7(int) Constant 2
38: TypePointer Input 7(int) 38: TypePointer Input 7(int)
39(gl_PatchVerticesIn): 38(ptr) Variable Input 39(gl_PatchVerticesIn): 38(ptr) Variable Input
42(gl_PrimitiveID): 38(ptr) Variable Input 42(gl_PrimitiveID): 38(ptr) Variable Input
44: TypeVector 11(float) 3 44: TypeVector 11(float) 3
45: TypePointer Function 44(fvec3) 45: TypePointer Function 44(fvec3)
47: TypePointer Input 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 51: 15(int) Constant 4
52: TypeArray 11(float) 51 52: TypeArray 11(float) 51
53: TypePointer Input 52 53: TypePointer Input 52
54(gl_TessLevelOuter): 53(ptr) Variable Input 54(gl_TessLevelOuter): 53(ptr) Variable Input
55: 7(int) Constant 3 55: 7(int) Constant 3
59: 15(int) Constant 2 59: 15(int) Constant 2
60: TypeArray 11(float) 59 60: TypeArray 11(float) 59
61: TypePointer Input 60 61: TypePointer Input 60
62(gl_TessLevelInner): 61(ptr) Variable Input 62(gl_TessLevelInner): 61(ptr) Variable Input
65: 15(int) Constant 3 65: 15(int) Constant 3
66: TypeArray 11(float) 65 66: TypeArray 11(float) 65
67(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 66 67(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 66
68: TypePointer Output 67(gl_PerVertex) 68: TypePointer Output 67(gl_PerVertex)
69: 68(ptr) Variable Output 69: 68(ptr) Variable Output
71: TypePointer Output 12(fvec4) 71: TypePointer Output 12(fvec4)
74: TypePointer Output 11(float) 74: TypePointer Output 11(float)
78(patchIn): 25(ptr) Variable Input 78(patchIn): 25(ptr) Variable Input
79: TypeVector 11(float) 2 79: TypeVector 11(float) 2
80: TypeArray 79(fvec2) 19 80: TypeArray 79(fvec2) 19
81: TypePointer Input 80 81: TypePointer Input 80
82(inb): 81(ptr) Variable Input 82(inb): 81(ptr) Variable Input
83(ind): 81(ptr) Variable Input 83(ind): 81(ptr) Variable Input
84(testblb): TypeStruct 7(int) 84(testblb): TypeStruct 7(int)
85: TypeArray 84(testblb) 19 85: TypeArray 84(testblb) 19
86: TypePointer Input 85 86: TypePointer Input 85
87(blb): 86(ptr) Variable Input 87(blb): 86(ptr) Variable Input
88(testbld): TypeStruct 7(int) 88(testbld): TypeStruct 7(int)
89: TypeArray 88(testbld) 19 89: TypeArray 88(testbld) 19
90: TypePointer Input 89 90: TypePointer Input 89
91(bld): 90(ptr) Variable Input 91(bld): 90(ptr) Variable Input
92: TypeArray 12(fvec4) 19 92: TypeArray 12(fvec4) 19
93: TypePointer Input 92 93: TypePointer Input 92
94(ivla): 93(ptr) Variable Input 94(ivla): 93(ptr) Variable Input
95(ivlb): 93(ptr) Variable Input 95(ivlb): 93(ptr) Variable Input
96: TypeArray 12(fvec4) 59 96: TypeArray 12(fvec4) 59
97: TypePointer Output 96 97: TypePointer Output 96
98(ovla): 97(ptr) Variable Output 98(ovla): 97(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(a): 8(ptr) Variable Function 9(a): 8(ptr) Variable Function
14(p): 13(ptr) Variable Function 14(p): 13(ptr) Variable Function
29(ps): 28(ptr) Variable Function 29(ps): 28(ptr) Variable Function
33(cd): 28(ptr) Variable Function 33(cd): 28(ptr) Variable Function
37(pvi): 8(ptr) Variable Function 37(pvi): 8(ptr) Variable Function
41(pid): 8(ptr) Variable Function 41(pid): 8(ptr) Variable Function
46(tc): 45(ptr) Variable Function 46(tc): 45(ptr) Variable Function
50(tlo): 28(ptr) Variable Function 50(tlo): 28(ptr) Variable Function
58(tli): 28(ptr) Variable Function 58(tli): 28(ptr) Variable Function
Store 9(a) 10 Store 9(a) 10
26: 25(ptr) AccessChain 22(gl_in) 23 24 26: 25(ptr) AccessChain 22(gl_in) 23 24
27: 12(fvec4) Load 26 27: 12(fvec4) Load 26
Store 14(p) 27 Store 14(p) 27
31: 30(ptr) AccessChain 22(gl_in) 23 23 31: 30(ptr) AccessChain 22(gl_in) 23 23
32: 11(float) Load 31 32: 11(float) Load 31
Store 29(ps) 32 Store 29(ps) 32
35: 30(ptr) AccessChain 22(gl_in) 23 34 34 35: 30(ptr) AccessChain 22(gl_in) 23 34 34
36: 11(float) Load 35 36: 11(float) Load 35
Store 33(cd) 36 Store 33(cd) 36
40: 7(int) Load 39(gl_PatchVerticesIn) 40: 7(int) Load 39(gl_PatchVerticesIn)
Store 37(pvi) 40 Store 37(pvi) 40
43: 7(int) Load 42(gl_PrimitiveID) 43: 7(int) Load 42(gl_PrimitiveID)
Store 41(pid) 43 Store 41(pid) 43
49: 44(fvec3) Load 48(gl_TessCoord) 49: 44(fvec3) Load 48(gl_TessCoord)
Store 46(tc) 49 Store 46(tc) 49
56: 30(ptr) AccessChain 54(gl_TessLevelOuter) 55 56: 30(ptr) AccessChain 54(gl_TessLevelOuter) 55
57: 11(float) Load 56 57: 11(float) Load 56
Store 50(tlo) 57 Store 50(tlo) 57
63: 30(ptr) AccessChain 62(gl_TessLevelInner) 23 63: 30(ptr) AccessChain 62(gl_TessLevelInner) 23
64: 11(float) Load 63 64: 11(float) Load 63
Store 58(tli) 64 Store 58(tli) 64
70: 12(fvec4) Load 14(p) 70: 12(fvec4) Load 14(p)
72: 71(ptr) AccessChain 69 24 72: 71(ptr) AccessChain 69 24
Store 72 70 Store 72 70
73: 11(float) Load 29(ps) 73: 11(float) Load 29(ps)
75: 74(ptr) AccessChain 69 23 75: 74(ptr) AccessChain 69 23
Store 75 73 Store 75 73
76: 11(float) Load 33(cd) 76: 11(float) Load 33(cd)
77: 74(ptr) AccessChain 69 34 34 77: 74(ptr) AccessChain 69 34 34
Store 77 76 Store 77 76
Branch 6 Branch 6
6: Label 6: Label
Return Return

120
Test/baseResults/spv.430.vert.out Normal file → Executable file
View File

@ -7,12 +7,13 @@ Linked vertex stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 62 // Id's are bound by 63
Source GLSL 430 Source GLSL 430
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 11 "gl_PerVertex" Name 11 "gl_PerVertex"
MemberName 11(gl_PerVertex) 0 "gl_ClipDistance" MemberName 11(gl_PerVertex) 0 "gl_ClipDistance"
@ -29,49 +30,49 @@ Linked vertex stage:
Name 49 "anonblock" Name 49 "anonblock"
MemberName 49(anonblock) 0 "aoeu" MemberName 49(anonblock) 0 "aoeu"
Name 51 "" Name 51 ""
Name 54 "sampb1" Name 55 "sampb1"
Name 57 "sampb2" Name 58 "sampb2"
Name 58 "sampb4" Name 59 "sampb4"
Name 60 "gl_VertexID" Name 61 "gl_VertexID"
Name 61 "gl_InstanceID" Name 62 "gl_InstanceID"
MemberDecorate 11(gl_PerVertex) 0 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 0 BuiltIn ClipDistance
Decorate 11(gl_PerVertex) Block Decorate 11(gl_PerVertex) Block
Decorate 35(badorder3) Flat Decorate 35(badorder3) Flat
Decorate 43(uv4) Location 4 Decorate 43(uv4) Location 4
Decorate 43(uv4) NoStaticUse Decorate 43(uv4) NoStaticUse
Decorate 29 NoStaticUse Decorate 29 NoStaticUse
Decorate 29 NoStaticUse Decorate 29 NoStaticUse
Decorate 44(badorder) NoStaticUse Decorate 44(badorder) NoStaticUse
Decorate 45(badorder2) Smooth Decorate 45(badorder2) Smooth
Decorate 45(badorder2) Invariant Decorate 45(badorder2) Invariant
Decorate 45(badorder2) NoStaticUse Decorate 45(badorder2) NoStaticUse
Decorate 46(boundblock) GLSLShared Decorate 46(boundblock) GLSLShared
Decorate 46(boundblock) Block Decorate 46(boundblock) Block
Decorate 48(boundInst) Binding 3 Decorate 48(boundInst) Binding 3
Decorate 48(boundInst) NoStaticUse Decorate 48(boundInst) NoStaticUse
Decorate 49(anonblock) GLSLShared Decorate 49(anonblock) GLSLShared
Decorate 49(anonblock) Block Decorate 49(anonblock) Block
Decorate 51 Binding 7 Decorate 51 Binding 7
Decorate 51 NoStaticUse Decorate 51 NoStaticUse
Decorate 54(sampb1) Binding 4 Decorate 55(sampb1) Binding 4
Decorate 54(sampb1) NoStaticUse Decorate 55(sampb1) NoStaticUse
Decorate 57(sampb2) Binding 5 Decorate 58(sampb2) Binding 5
Decorate 57(sampb2) NoStaticUse Decorate 58(sampb2) NoStaticUse
Decorate 58(sampb4) Binding 31 Decorate 59(sampb4) Binding 31
Decorate 58(sampb4) NoStaticUse Decorate 59(sampb4) NoStaticUse
Decorate 60(gl_VertexID) BuiltIn VertexId Decorate 61(gl_VertexID) BuiltIn VertexId
Decorate 60(gl_VertexID) NoStaticUse Decorate 61(gl_VertexID) NoStaticUse
Decorate 61(gl_InstanceID) BuiltIn InstanceId Decorate 62(gl_InstanceID) BuiltIn InstanceId
Decorate 61(gl_InstanceID) NoStaticUse Decorate 62(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeInt 32 0 8: TypeInt 32 0
9: 8(int) Constant 3 9: 8(int) Constant 3
10: TypeArray 7(float) 9 10: TypeArray 7(float) 9
11(gl_PerVertex): TypeStruct 10 11(gl_PerVertex): TypeStruct 10
12: TypePointer Output 11(gl_PerVertex) 12: TypePointer Output 11(gl_PerVertex)
13: 12(ptr) Variable Output 13: 12(ptr) Variable Output
14: TypeInt 32 1 14: TypeInt 32 1
15: 14(int) Constant 0 15: 14(int) Constant 0
16: 14(int) Constant 2 16: 14(int) Constant 2
@ -81,53 +82,54 @@ Linked vertex stage:
21: 8(int) Constant 10 21: 8(int) Constant 10
22: TypeArray 20(fvec4) 21 22: TypeArray 20(fvec4) 21
23: TypePointer Input 22 23: TypePointer Input 22
24(bad): 23(ptr) Variable Input 24(bad): 23(ptr) Variable Input
25: TypePointer Input 20(fvec4) 25: TypePointer Input 20(fvec4)
29: 7(float) Constant 1082549862 29: 7(float) Constant 1082549862
30: TypeBool 30: TypeBool
34: TypePointer Output 20(fvec4) 34: TypePointer Output 20(fvec4)
35(badorder3): 34(ptr) Variable Output 35(badorder3): 34(ptr) Variable Output
38: TypePointer UniformConstant 7(float) 38: TypePointer UniformConstant 7(float)
39(f): 38(ptr) Variable UniformConstant 39(f): 38(ptr) Variable UniformConstant
42: TypePointer UniformConstant 20(fvec4) 42: TypePointer UniformConstant 20(fvec4)
43(uv4): 42(ptr) Variable UniformConstant 43(uv4): 42(ptr) Variable UniformConstant
44(badorder): 25(ptr) Variable Input 44(badorder): 25(ptr) Variable Input
45(badorder2): 34(ptr) Variable Output 45(badorder2): 34(ptr) Variable Output
46(boundblock): TypeStruct 14(int) 46(boundblock): TypeStruct 14(int)
47: TypePointer Uniform 46(boundblock) 47: TypePointer Uniform 46(boundblock)
48(boundInst): 47(ptr) Variable Uniform 48(boundInst): 47(ptr) Variable Uniform
49(anonblock): TypeStruct 14(int) 49(anonblock): TypeStruct 14(int)
50: TypePointer Uniform 49(anonblock) 50: TypePointer Uniform 49(anonblock)
51: 50(ptr) Variable Uniform 51: 50(ptr) Variable Uniform
52: TypeSampler7(float) 2D filter+texture 52: TypeImage 7(float) 2D sampled format:Unknown
53: TypePointer UniformConstant 52 53: TypeSampledImage 52
54(sampb1): 53(ptr) Variable UniformConstant 54: TypePointer UniformConstant 53
55: TypeArray 52 21 55(sampb1): 54(ptr) Variable UniformConstant
56: TypePointer UniformConstant 55 56: TypeArray 53 21
57(sampb2): 56(ptr) Variable UniformConstant 57: TypePointer UniformConstant 56
58(sampb4): 53(ptr) Variable UniformConstant 58(sampb2): 57(ptr) Variable UniformConstant
59: TypePointer Input 14(int) 59(sampb4): 54(ptr) Variable UniformConstant
60(gl_VertexID): 59(ptr) Variable Input 60: TypePointer Input 14(int)
61(gl_InstanceID): 59(ptr) Variable Input 61(gl_VertexID): 60(ptr) Variable Input
62(gl_InstanceID): 60(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
19: 18(ptr) AccessChain 13 15 16 19: 18(ptr) AccessChain 13 15 16
Store 19 17 Store 19 17
26: 25(ptr) AccessChain 24(bad) 15 26: 25(ptr) AccessChain 24(bad) 15
27: 20(fvec4) Load 26 27: 20(fvec4) Load 26
28: 7(float) CompositeExtract 27 0 28: 7(float) CompositeExtract 27 0
31: 30(bool) FOrdEqual 28 29 31: 30(bool) FOrdEqual 28 29
SelectionMerge 33 None SelectionMerge 33 None
BranchConditional 31 32 33 BranchConditional 31 32 33
32: Label 32: Label
36: 25(ptr) AccessChain 24(bad) 15 36: 25(ptr) AccessChain 24(bad) 15
37: 20(fvec4) Load 36 37: 20(fvec4) Load 36
Store 35(badorder3) 37 Store 35(badorder3) 37
Branch 33 Branch 33
33: Label 33: Label
40: 7(float) Load 39(f) 40: 7(float) Load 39(f)
41: 18(ptr) AccessChain 13 15 15 41: 18(ptr) AccessChain 13 15 15
Store 41 40 Store 41 40
Branch 6 Branch 6
6: Label 6: Label
Return Return

652
Test/baseResults/spv.Operations.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 399 // Id's are bound by 399
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "v" Name 10 "v"
Name 12 "uv4" Name 12 "uv4"
@ -25,27 +27,27 @@ Linked fragment stage:
Name 396 "uiv4" Name 396 "uiv4"
Name 398 "ub" Name 398 "ub"
Decorate 378(gl_FragColor) BuiltIn FragColor Decorate 378(gl_FragColor) BuiltIn FragColor
Decorate 396(uiv4) NoStaticUse Decorate 396(uiv4) NoStaticUse
Decorate 398(ub) NoStaticUse Decorate 398(ub) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer UniformConstant 8(fvec4) 11: TypePointer UniformConstant 8(fvec4)
12(uv4): 11(ptr) Variable UniformConstant 12(uv4): 11(ptr) Variable UniformConstant
19: TypeInt 32 1 19: TypeInt 32 1
20: TypePointer Function 19(int) 20: TypePointer Function 19(int)
22: TypePointer UniformConstant 19(int) 22: TypePointer UniformConstant 19(int)
23(ui): 22(ptr) Variable UniformConstant 23(ui): 22(ptr) Variable UniformConstant
169: TypePointer UniformConstant 7(float) 169: TypePointer UniformConstant 7(float)
170(uf): 169(ptr) Variable UniformConstant 170(uf): 169(ptr) Variable UniformConstant
215: TypeBool 215: TypeBool
216: TypePointer Function 215(bool) 216: TypePointer Function 215(bool)
220: TypeVector 215(bool) 4 220: TypeVector 215(bool) 4
242: TypePointer UniformConstant 220(bvec4) 242: TypePointer UniformConstant 220(bvec4)
243(ub41): 242(ptr) Variable UniformConstant 243(ub41): 242(ptr) Variable UniformConstant
245(ub42): 242(ptr) Variable UniformConstant 245(ub42): 242(ptr) Variable UniformConstant
292: 19(int) Constant 2 292: 19(int) Constant 2
299: 19(int) Constant 1 299: 19(int) Constant 1
301: TypePointer Function 7(float) 301: TypePointer Function 7(float)
@ -55,458 +57,458 @@ Linked fragment stage:
359: 19(int) Constant 66 359: 19(int) Constant 66
365: 19(int) Constant 17 365: 19(int) Constant 17
377: TypePointer Output 8(fvec4) 377: TypePointer Output 8(fvec4)
378(gl_FragColor): 377(ptr) Variable Output 378(gl_FragColor): 377(ptr) Variable Output
394: TypeVector 19(int) 4 394: TypeVector 19(int) 4
395: TypePointer UniformConstant 394(ivec4) 395: TypePointer UniformConstant 394(ivec4)
396(uiv4): 395(ptr) Variable UniformConstant 396(uiv4): 395(ptr) Variable UniformConstant
397: TypePointer UniformConstant 215(bool) 397: TypePointer UniformConstant 215(bool)
398(ub): 397(ptr) Variable UniformConstant 398(ub): 397(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(v): 9(ptr) Variable Function 10(v): 9(ptr) Variable Function
21(i): 20(ptr) Variable Function 21(i): 20(ptr) Variable Function
217(b): 216(ptr) Variable Function 217(b): 216(ptr) Variable Function
302(f): 301(ptr) Variable Function 302(f): 301(ptr) Variable Function
379: 9(ptr) Variable Function 379: 9(ptr) Variable Function
13: 8(fvec4) Load 12(uv4) 13: 8(fvec4) Load 12(uv4)
14: 8(fvec4) ExtInst 1(GLSL.std.450) 8(radians) 13 14: 8(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 13
Store 10(v) 14 Store 10(v) 14
15: 8(fvec4) Load 10(v) 15: 8(fvec4) Load 10(v)
16: 8(fvec4) ExtInst 1(GLSL.std.450) 9(degrees) 15 16: 8(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 15
17: 8(fvec4) Load 10(v) 17: 8(fvec4) Load 10(v)
18: 8(fvec4) FAdd 17 16 18: 8(fvec4) FAdd 17 16
Store 10(v) 18 Store 10(v) 18
24: 19(int) Load 23(ui) 24: 19(int) Load 23(ui)
25: 19(int) Load 23(ui) 25: 19(int) Load 23(ui)
26: 19(int) IMul 24 25 26: 19(int) IMul 24 25
Store 21(i) 26 Store 21(i) 26
27: 8(fvec4) Load 10(v) 27: 8(fvec4) Load 10(v)
28: 8(fvec4) ExtInst 1(GLSL.std.450) 10(sin) 27 28: 8(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 27
29: 8(fvec4) Load 10(v) 29: 8(fvec4) Load 10(v)
30: 8(fvec4) FAdd 29 28 30: 8(fvec4) FAdd 29 28
Store 10(v) 30 Store 10(v) 30
31: 8(fvec4) Load 10(v) 31: 8(fvec4) Load 10(v)
32: 8(fvec4) ExtInst 1(GLSL.std.450) 11(cos) 31 32: 8(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 31
33: 8(fvec4) Load 10(v) 33: 8(fvec4) Load 10(v)
34: 8(fvec4) FAdd 33 32 34: 8(fvec4) FAdd 33 32
Store 10(v) 34 Store 10(v) 34
35: 8(fvec4) Load 10(v) 35: 8(fvec4) Load 10(v)
36: 8(fvec4) ExtInst 1(GLSL.std.450) 12(tan) 35 36: 8(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 35
37: 8(fvec4) Load 10(v) 37: 8(fvec4) Load 10(v)
38: 8(fvec4) FAdd 37 36 38: 8(fvec4) FAdd 37 36
Store 10(v) 38 Store 10(v) 38
39: 8(fvec4) Load 10(v) 39: 8(fvec4) Load 10(v)
40: 8(fvec4) ExtInst 1(GLSL.std.450) 13(asin) 39 40: 8(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 39
41: 8(fvec4) Load 10(v) 41: 8(fvec4) Load 10(v)
42: 8(fvec4) FAdd 41 40 42: 8(fvec4) FAdd 41 40
Store 10(v) 42 Store 10(v) 42
43: 8(fvec4) Load 10(v) 43: 8(fvec4) Load 10(v)
44: 8(fvec4) ExtInst 1(GLSL.std.450) 14(acos) 43 44: 8(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 43
45: 8(fvec4) Load 10(v) 45: 8(fvec4) Load 10(v)
46: 8(fvec4) FAdd 45 44 46: 8(fvec4) FAdd 45 44
Store 10(v) 46 Store 10(v) 46
47: 8(fvec4) Load 10(v) 47: 8(fvec4) Load 10(v)
48: 8(fvec4) ExtInst 1(GLSL.std.450) 15(atan) 47 48: 8(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 47
49: 8(fvec4) Load 10(v) 49: 8(fvec4) Load 10(v)
50: 8(fvec4) FAdd 49 48 50: 8(fvec4) FAdd 49 48
Store 10(v) 50 Store 10(v) 50
51: 8(fvec4) Load 10(v) 51: 8(fvec4) Load 10(v)
52: 8(fvec4) ExtInst 1(GLSL.std.450) 16(sinh) 51 52: 8(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 51
53: 8(fvec4) Load 10(v) 53: 8(fvec4) Load 10(v)
54: 8(fvec4) FAdd 53 52 54: 8(fvec4) FAdd 53 52
Store 10(v) 54 Store 10(v) 54
55: 8(fvec4) Load 10(v) 55: 8(fvec4) Load 10(v)
56: 8(fvec4) ExtInst 1(GLSL.std.450) 17(cosh) 55 56: 8(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 55
57: 8(fvec4) Load 10(v) 57: 8(fvec4) Load 10(v)
58: 8(fvec4) FAdd 57 56 58: 8(fvec4) FAdd 57 56
Store 10(v) 58 Store 10(v) 58
59: 8(fvec4) Load 10(v) 59: 8(fvec4) Load 10(v)
60: 8(fvec4) ExtInst 1(GLSL.std.450) 18(tanh) 59 60: 8(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 59
61: 8(fvec4) Load 10(v) 61: 8(fvec4) Load 10(v)
62: 8(fvec4) FAdd 61 60 62: 8(fvec4) FAdd 61 60
Store 10(v) 62 Store 10(v) 62
63: 8(fvec4) Load 10(v) 63: 8(fvec4) Load 10(v)
64: 8(fvec4) ExtInst 1(GLSL.std.450) 19(asinh) 63 64: 8(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 63
65: 8(fvec4) Load 10(v) 65: 8(fvec4) Load 10(v)
66: 8(fvec4) FAdd 65 64 66: 8(fvec4) FAdd 65 64
Store 10(v) 66 Store 10(v) 66
67: 8(fvec4) Load 10(v) 67: 8(fvec4) Load 10(v)
68: 8(fvec4) ExtInst 1(GLSL.std.450) 20(acosh) 67 68: 8(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 67
69: 8(fvec4) Load 10(v) 69: 8(fvec4) Load 10(v)
70: 8(fvec4) FAdd 69 68 70: 8(fvec4) FAdd 69 68
Store 10(v) 70 Store 10(v) 70
71: 8(fvec4) Load 10(v) 71: 8(fvec4) Load 10(v)
72: 8(fvec4) ExtInst 1(GLSL.std.450) 21(atanh) 71 72: 8(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 71
73: 8(fvec4) Load 10(v) 73: 8(fvec4) Load 10(v)
74: 8(fvec4) FAdd 73 72 74: 8(fvec4) FAdd 73 72
Store 10(v) 74 Store 10(v) 74
75: 8(fvec4) Load 10(v) 75: 8(fvec4) Load 10(v)
76: 8(fvec4) Load 10(v) 76: 8(fvec4) Load 10(v)
77: 8(fvec4) ExtInst 1(GLSL.std.450) 23(pow) 75 76 77: 8(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 75 76
78: 8(fvec4) Load 10(v) 78: 8(fvec4) Load 10(v)
79: 8(fvec4) FAdd 78 77 79: 8(fvec4) FAdd 78 77
Store 10(v) 79 Store 10(v) 79
80: 8(fvec4) Load 10(v) 80: 8(fvec4) Load 10(v)
81: 8(fvec4) ExtInst 1(GLSL.std.450) 24(exp) 80 81: 8(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 80
82: 8(fvec4) Load 10(v) 82: 8(fvec4) Load 10(v)
83: 8(fvec4) FAdd 82 81 83: 8(fvec4) FAdd 82 81
Store 10(v) 83 Store 10(v) 83
84: 8(fvec4) Load 10(v) 84: 8(fvec4) Load 10(v)
85: 8(fvec4) ExtInst 1(GLSL.std.450) 25(log) 84 85: 8(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 84
86: 8(fvec4) Load 10(v) 86: 8(fvec4) Load 10(v)
87: 8(fvec4) FAdd 86 85 87: 8(fvec4) FAdd 86 85
Store 10(v) 87 Store 10(v) 87
88: 8(fvec4) Load 10(v) 88: 8(fvec4) Load 10(v)
89: 8(fvec4) ExtInst 1(GLSL.std.450) 26(exp2) 88 89: 8(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 88
90: 8(fvec4) Load 10(v) 90: 8(fvec4) Load 10(v)
91: 8(fvec4) FAdd 90 89 91: 8(fvec4) FAdd 90 89
Store 10(v) 91 Store 10(v) 91
92: 8(fvec4) Load 10(v) 92: 8(fvec4) Load 10(v)
93: 8(fvec4) ExtInst 1(GLSL.std.450) 27(log2) 92 93: 8(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 92
94: 8(fvec4) Load 10(v) 94: 8(fvec4) Load 10(v)
95: 8(fvec4) FAdd 94 93 95: 8(fvec4) FAdd 94 93
Store 10(v) 95 Store 10(v) 95
96: 8(fvec4) Load 10(v) 96: 8(fvec4) Load 10(v)
97: 8(fvec4) ExtInst 1(GLSL.std.450) 28(sqrt) 96 97: 8(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 96
98: 8(fvec4) Load 10(v) 98: 8(fvec4) Load 10(v)
99: 8(fvec4) FAdd 98 97 99: 8(fvec4) FAdd 98 97
Store 10(v) 99 Store 10(v) 99
100: 8(fvec4) Load 10(v) 100: 8(fvec4) Load 10(v)
101: 8(fvec4) ExtInst 1(GLSL.std.450) 29(inverseSqrt) 100 101: 8(fvec4) ExtInst 1(GLSL.std.450) 32(Inversesqrt) 100
102: 8(fvec4) Load 10(v) 102: 8(fvec4) Load 10(v)
103: 8(fvec4) FAdd 102 101 103: 8(fvec4) FAdd 102 101
Store 10(v) 103 Store 10(v) 103
104: 8(fvec4) Load 10(v) 104: 8(fvec4) Load 10(v)
105: 8(fvec4) ExtInst 1(GLSL.std.450) 3(abs) 104 105: 8(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 104
106: 8(fvec4) Load 10(v) 106: 8(fvec4) Load 10(v)
107: 8(fvec4) FAdd 106 105 107: 8(fvec4) FAdd 106 105
Store 10(v) 107 Store 10(v) 107
108: 8(fvec4) Load 10(v) 108: 8(fvec4) Load 10(v)
109: 8(fvec4) ExtInst 1(GLSL.std.450) 4(sign) 108 109: 8(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 108
110: 8(fvec4) Load 10(v) 110: 8(fvec4) Load 10(v)
111: 8(fvec4) FAdd 110 109 111: 8(fvec4) FAdd 110 109
Store 10(v) 111 Store 10(v) 111
112: 8(fvec4) Load 10(v) 112: 8(fvec4) Load 10(v)
113: 8(fvec4) ExtInst 1(GLSL.std.450) 5(floor) 112 113: 8(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 112
114: 8(fvec4) Load 10(v) 114: 8(fvec4) Load 10(v)
115: 8(fvec4) FAdd 114 113 115: 8(fvec4) FAdd 114 113
Store 10(v) 115 Store 10(v) 115
116: 8(fvec4) Load 10(v) 116: 8(fvec4) Load 10(v)
117: 8(fvec4) ExtInst 1(GLSL.std.450) 6(ceil) 116 117: 8(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 116
118: 8(fvec4) Load 10(v) 118: 8(fvec4) Load 10(v)
119: 8(fvec4) FAdd 118 117 119: 8(fvec4) FAdd 118 117
Store 10(v) 119 Store 10(v) 119
120: 8(fvec4) Load 10(v) 120: 8(fvec4) Load 10(v)
121: 8(fvec4) ExtInst 1(GLSL.std.450) 7(fract) 120 121: 8(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 120
122: 8(fvec4) Load 10(v) 122: 8(fvec4) Load 10(v)
123: 8(fvec4) FAdd 122 121 123: 8(fvec4) FAdd 122 121
Store 10(v) 123 Store 10(v) 123
124: 8(fvec4) Load 10(v) 124: 8(fvec4) Load 10(v)
125: 8(fvec4) Load 10(v) 125: 8(fvec4) Load 10(v)
126: 8(fvec4) FMod 124 125 126: 8(fvec4) FMod 124 125
127: 8(fvec4) Load 10(v) 127: 8(fvec4) Load 10(v)
128: 8(fvec4) FAdd 127 126 128: 8(fvec4) FAdd 127 126
Store 10(v) 128 Store 10(v) 128
129: 8(fvec4) Load 10(v) 129: 8(fvec4) Load 10(v)
130: 8(fvec4) Load 10(v) 130: 8(fvec4) Load 10(v)
131: 7(float) CompositeExtract 130 0 131: 7(float) CompositeExtract 130 0
132: 8(fvec4) CompositeConstruct 131 131 131 131 132: 8(fvec4) CompositeConstruct 131 131 131 131
133: 8(fvec4) FMod 129 132 133: 8(fvec4) FMod 129 132
134: 8(fvec4) Load 10(v) 134: 8(fvec4) Load 10(v)
135: 8(fvec4) FAdd 134 133 135: 8(fvec4) FAdd 134 133
Store 10(v) 135 Store 10(v) 135
136: 8(fvec4) Load 10(v) 136: 8(fvec4) Load 10(v)
137: 8(fvec4) Load 12(uv4) 137: 8(fvec4) Load 12(uv4)
138: 8(fvec4) ExtInst 1(GLSL.std.450) 33(min) 136 137 138: 8(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 136 137
139: 8(fvec4) Load 10(v) 139: 8(fvec4) Load 10(v)
140: 8(fvec4) FAdd 139 138 140: 8(fvec4) FAdd 139 138
Store 10(v) 140 Store 10(v) 140
141: 8(fvec4) Load 10(v) 141: 8(fvec4) Load 10(v)
142: 8(fvec4) Load 12(uv4) 142: 8(fvec4) Load 12(uv4)
143: 8(fvec4) ExtInst 1(GLSL.std.450) 34(max) 141 142 143: 8(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 141 142
144: 8(fvec4) Load 10(v) 144: 8(fvec4) Load 10(v)
145: 8(fvec4) FAdd 144 143 145: 8(fvec4) FAdd 144 143
Store 10(v) 145 Store 10(v) 145
146: 8(fvec4) Load 10(v) 146: 8(fvec4) Load 10(v)
147: 8(fvec4) Load 12(uv4) 147: 8(fvec4) Load 12(uv4)
148: 8(fvec4) Load 12(uv4) 148: 8(fvec4) Load 12(uv4)
149: 8(fvec4) ExtInst 1(GLSL.std.450) 35(clamp) 146 147 148 149: 8(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 146 147 148
150: 8(fvec4) Load 10(v) 150: 8(fvec4) Load 10(v)
151: 8(fvec4) FAdd 150 149 151: 8(fvec4) FAdd 150 149
Store 10(v) 151 Store 10(v) 151
152: 8(fvec4) Load 10(v) 152: 8(fvec4) Load 10(v)
153: 8(fvec4) Load 10(v) 153: 8(fvec4) Load 10(v)
154: 8(fvec4) Load 10(v) 154: 8(fvec4) Load 10(v)
155: 8(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 152 153 154 155: 8(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 152 153 154
156: 8(fvec4) Load 10(v) 156: 8(fvec4) Load 10(v)
157: 8(fvec4) FAdd 156 155 157: 8(fvec4) FAdd 156 155
Store 10(v) 157 Store 10(v) 157
158: 8(fvec4) Load 10(v) 158: 8(fvec4) Load 10(v)
159: 8(fvec4) Load 10(v) 159: 8(fvec4) Load 10(v)
160: 8(fvec4) ExtInst 1(GLSL.std.450) 37(step) 158 159 160: 8(fvec4) ExtInst 1(GLSL.std.450) 47(Step) 158 159
161: 8(fvec4) Load 10(v) 161: 8(fvec4) Load 10(v)
162: 8(fvec4) FAdd 161 160 162: 8(fvec4) FAdd 161 160
Store 10(v) 162 Store 10(v) 162
163: 8(fvec4) Load 10(v) 163: 8(fvec4) Load 10(v)
164: 8(fvec4) Load 10(v) 164: 8(fvec4) Load 10(v)
165: 8(fvec4) Load 10(v) 165: 8(fvec4) Load 10(v)
166: 8(fvec4) ExtInst 1(GLSL.std.450) 38(smoothStep) 163 164 165 166: 8(fvec4) ExtInst 1(GLSL.std.450) 48(Smoothstep) 163 164 165
167: 8(fvec4) Load 10(v) 167: 8(fvec4) Load 10(v)
168: 8(fvec4) FAdd 167 166 168: 8(fvec4) FAdd 167 166
Store 10(v) 168 Store 10(v) 168
171: 7(float) Load 170(uf) 171: 7(float) Load 170(uf)
172: 8(fvec4) Load 10(v) 172: 8(fvec4) Load 10(v)
173: 8(fvec4) ExtInst 1(GLSL.std.450) 37(step) 171 172 173: 8(fvec4) ExtInst 1(GLSL.std.450) 47(Step) 171 172
174: 8(fvec4) Load 10(v) 174: 8(fvec4) Load 10(v)
175: 8(fvec4) FAdd 174 173 175: 8(fvec4) FAdd 174 173
Store 10(v) 175 Store 10(v) 175
176: 7(float) Load 170(uf) 176: 7(float) Load 170(uf)
177: 7(float) Load 170(uf) 177: 7(float) Load 170(uf)
178: 8(fvec4) Load 10(v) 178: 8(fvec4) Load 10(v)
179: 8(fvec4) ExtInst 1(GLSL.std.450) 38(smoothStep) 176 177 178 179: 8(fvec4) ExtInst 1(GLSL.std.450) 48(Smoothstep) 176 177 178
180: 8(fvec4) Load 10(v) 180: 8(fvec4) Load 10(v)
181: 8(fvec4) FAdd 180 179 181: 8(fvec4) FAdd 180 179
Store 10(v) 181 Store 10(v) 181
182: 8(fvec4) Load 10(v) 182: 8(fvec4) Load 10(v)
183: 8(fvec4) ExtInst 1(GLSL.std.450) 61(normalize) 182 183: 8(fvec4) ExtInst 1(GLSL.std.450) 68(Normalize) 182
184: 8(fvec4) Load 10(v) 184: 8(fvec4) Load 10(v)
185: 8(fvec4) FAdd 184 183 185: 8(fvec4) FAdd 184 183
Store 10(v) 185 Store 10(v) 185
186: 8(fvec4) Load 10(v) 186: 8(fvec4) Load 10(v)
187: 8(fvec4) Load 10(v) 187: 8(fvec4) Load 10(v)
188: 8(fvec4) Load 10(v) 188: 8(fvec4) Load 10(v)
189: 8(fvec4) ExtInst 1(GLSL.std.450) 63(faceForward) 186 187 188 189: 8(fvec4) ExtInst 1(GLSL.std.450) 69(Faceforward) 186 187 188
190: 8(fvec4) Load 10(v) 190: 8(fvec4) Load 10(v)
191: 8(fvec4) FAdd 190 189 191: 8(fvec4) FAdd 190 189
Store 10(v) 191 Store 10(v) 191
192: 8(fvec4) Load 10(v) 192: 8(fvec4) Load 10(v)
193: 8(fvec4) Load 10(v) 193: 8(fvec4) Load 10(v)
194: 8(fvec4) ExtInst 1(GLSL.std.450) 64(reflect) 192 193 194: 8(fvec4) ExtInst 1(GLSL.std.450) 70(Reflect) 192 193
195: 8(fvec4) Load 10(v) 195: 8(fvec4) Load 10(v)
196: 8(fvec4) FAdd 195 194 196: 8(fvec4) FAdd 195 194
Store 10(v) 196 Store 10(v) 196
197: 8(fvec4) Load 10(v) 197: 8(fvec4) Load 10(v)
198: 8(fvec4) Load 10(v) 198: 8(fvec4) Load 10(v)
199: 7(float) Load 170(uf) 199: 7(float) Load 170(uf)
200: 8(fvec4) ExtInst 1(GLSL.std.450) 65(refract) 197 198 199 200: 8(fvec4) ExtInst 1(GLSL.std.450) 71(Refract) 197 198 199
201: 8(fvec4) Load 10(v) 201: 8(fvec4) Load 10(v)
202: 8(fvec4) FAdd 201 200 202: 8(fvec4) FAdd 201 200
Store 10(v) 202 Store 10(v) 202
203: 8(fvec4) Load 10(v) 203: 8(fvec4) Load 10(v)
204: 8(fvec4) DPdx 203 204: 8(fvec4) DPdx 203
205: 8(fvec4) Load 10(v) 205: 8(fvec4) Load 10(v)
206: 8(fvec4) FAdd 205 204 206: 8(fvec4) FAdd 205 204
Store 10(v) 206 Store 10(v) 206
207: 8(fvec4) Load 10(v) 207: 8(fvec4) Load 10(v)
208: 8(fvec4) DPdy 207 208: 8(fvec4) DPdy 207
209: 8(fvec4) Load 10(v) 209: 8(fvec4) Load 10(v)
210: 8(fvec4) FAdd 209 208 210: 8(fvec4) FAdd 209 208
Store 10(v) 210 Store 10(v) 210
211: 8(fvec4) Load 10(v) 211: 8(fvec4) Load 10(v)
212: 8(fvec4) Fwidth 211 212: 8(fvec4) Fwidth 211
213: 8(fvec4) Load 10(v) 213: 8(fvec4) Load 10(v)
214: 8(fvec4) FAdd 213 212 214: 8(fvec4) FAdd 213 212
Store 10(v) 214 Store 10(v) 214
218: 8(fvec4) Load 10(v) 218: 8(fvec4) Load 10(v)
219: 8(fvec4) Load 12(uv4) 219: 8(fvec4) Load 12(uv4)
221: 220(bvec4) FOrdLessThan 218 219 221: 220(bvec4) FOrdLessThan 218 219
222: 215(bool) Any 221 222: 215(bool) Any 221
Store 217(b) 222 Store 217(b) 222
223: 215(bool) Load 217(b) 223: 215(bool) Load 217(b)
224: 8(fvec4) Load 10(v) 224: 8(fvec4) Load 10(v)
225: 8(fvec4) Load 12(uv4) 225: 8(fvec4) Load 12(uv4)
226: 220(bvec4) FOrdLessThanEqual 224 225 226: 220(bvec4) FOrdLessThanEqual 224 225
227: 215(bool) Any 226 227: 215(bool) Any 226
228: 215(bool) LogicalAnd 223 227 228: 215(bool) LogicalAnd 223 227
Store 217(b) 228 Store 217(b) 228
229: 215(bool) Load 217(b) 229: 215(bool) Load 217(b)
230: 8(fvec4) Load 10(v) 230: 8(fvec4) Load 10(v)
231: 8(fvec4) Load 12(uv4) 231: 8(fvec4) Load 12(uv4)
232: 220(bvec4) FOrdGreaterThan 230 231 232: 220(bvec4) FOrdGreaterThan 230 231
233: 215(bool) Any 232 233: 215(bool) Any 232
234: 215(bool) LogicalAnd 229 233 234: 215(bool) LogicalAnd 229 233
Store 217(b) 234 Store 217(b) 234
235: 215(bool) Load 217(b) 235: 215(bool) Load 217(b)
236: 8(fvec4) Load 10(v) 236: 8(fvec4) Load 10(v)
237: 8(fvec4) Load 12(uv4) 237: 8(fvec4) Load 12(uv4)
238: 220(bvec4) FOrdGreaterThanEqual 236 237 238: 220(bvec4) FOrdGreaterThanEqual 236 237
239: 215(bool) Any 238 239: 215(bool) Any 238
240: 215(bool) LogicalAnd 235 239 240: 215(bool) LogicalAnd 235 239
Store 217(b) 240 Store 217(b) 240
241: 215(bool) Load 217(b) 241: 215(bool) Load 217(b)
244: 220(bvec4) Load 243(ub41) 244: 220(bvec4) Load 243(ub41)
246: 220(bvec4) Load 245(ub42) 246: 220(bvec4) Load 245(ub42)
247: 220(bvec4) IEqual 244 246 247: 220(bvec4) IEqual 244 246
248: 215(bool) Any 247 248: 215(bool) Any 247
249: 215(bool) LogicalAnd 241 248 249: 215(bool) LogicalAnd 241 248
Store 217(b) 249 Store 217(b) 249
250: 215(bool) Load 217(b) 250: 215(bool) Load 217(b)
251: 220(bvec4) Load 243(ub41) 251: 220(bvec4) Load 243(ub41)
252: 220(bvec4) Load 245(ub42) 252: 220(bvec4) Load 245(ub42)
253: 220(bvec4) INotEqual 251 252 253: 220(bvec4) INotEqual 251 252
254: 215(bool) Any 253 254: 215(bool) Any 253
255: 215(bool) LogicalAnd 250 254 255: 215(bool) LogicalAnd 250 254
Store 217(b) 255 Store 217(b) 255
256: 215(bool) Load 217(b) 256: 215(bool) Load 217(b)
257: 220(bvec4) Load 243(ub41) 257: 220(bvec4) Load 243(ub41)
258: 215(bool) Any 257 258: 215(bool) Any 257
259: 215(bool) LogicalAnd 256 258 259: 215(bool) LogicalAnd 256 258
Store 217(b) 259 Store 217(b) 259
260: 215(bool) Load 217(b) 260: 215(bool) Load 217(b)
261: 220(bvec4) Load 243(ub41) 261: 220(bvec4) Load 243(ub41)
262: 215(bool) All 261 262: 215(bool) All 261
263: 215(bool) LogicalAnd 260 262 263: 215(bool) LogicalAnd 260 262
Store 217(b) 263 Store 217(b) 263
264: 215(bool) Load 217(b) 264: 215(bool) Load 217(b)
265: 220(bvec4) Load 243(ub41) 265: 220(bvec4) Load 243(ub41)
266: 220(bvec4) Not 265 266: 220(bvec4) LogicalNot 265
267: 215(bool) Any 266 267: 215(bool) Any 266
268: 215(bool) LogicalAnd 264 267 268: 215(bool) LogicalAnd 264 267
Store 217(b) 268 Store 217(b) 268
269: 19(int) Load 21(i) 269: 19(int) Load 21(i)
270: 19(int) Load 23(ui) 270: 19(int) Load 23(ui)
271: 19(int) IAdd 269 270 271: 19(int) IAdd 269 270
272: 19(int) Load 21(i) 272: 19(int) Load 21(i)
273: 19(int) IMul 271 272 273: 19(int) IMul 271 272
274: 19(int) Load 23(ui) 274: 19(int) Load 23(ui)
275: 19(int) ISub 273 274 275: 19(int) ISub 273 274
276: 19(int) Load 21(i) 276: 19(int) Load 21(i)
277: 19(int) SDiv 275 276 277: 19(int) SDiv 275 276
Store 21(i) 277 Store 21(i) 277
278: 19(int) Load 21(i) 278: 19(int) Load 21(i)
279: 19(int) Load 23(ui) 279: 19(int) Load 23(ui)
280: 19(int) SMod 278 279 280: 19(int) SMod 278 279
Store 21(i) 280 Store 21(i) 280
281: 19(int) Load 21(i) 281: 19(int) Load 21(i)
282: 19(int) Load 23(ui) 282: 19(int) Load 23(ui)
283: 215(bool) IEqual 281 282 283: 215(bool) IEqual 281 282
284: 19(int) Load 21(i) 284: 19(int) Load 21(i)
285: 19(int) Load 23(ui) 285: 19(int) Load 23(ui)
286: 215(bool) INotEqual 284 285 286: 215(bool) INotEqual 284 285
287: 19(int) Load 21(i) 287: 19(int) Load 21(i)
288: 19(int) Load 23(ui) 288: 19(int) Load 23(ui)
289: 215(bool) IEqual 287 288 289: 215(bool) IEqual 287 288
290: 215(bool) LogicalAnd 286 289 290: 215(bool) LogicalAnd 286 289
291: 19(int) Load 21(i) 291: 19(int) Load 21(i)
293: 215(bool) INotEqual 291 292 293: 215(bool) INotEqual 291 292
294: 215(bool) LogicalXor 290 293 294: 215(bool) LogicalNotEqual 290 293
295: 215(bool) LogicalOr 283 294 295: 215(bool) LogicalOr 283 294
SelectionMerge 297 None SelectionMerge 297 None
BranchConditional 295 296 297 BranchConditional 295 296 297
296: Label 296: Label
298: 19(int) Load 21(i) 298: 19(int) Load 21(i)
300: 19(int) IAdd 298 299 300: 19(int) IAdd 298 299
Store 21(i) 300 Store 21(i) 300
Branch 297 Branch 297
297: Label 297: Label
303: 7(float) Load 170(uf) 303: 7(float) Load 170(uf)
304: 7(float) Load 170(uf) 304: 7(float) Load 170(uf)
305: 7(float) FAdd 303 304 305: 7(float) FAdd 303 304
306: 7(float) Load 170(uf) 306: 7(float) Load 170(uf)
307: 7(float) FMul 305 306 307: 7(float) FMul 305 306
308: 7(float) Load 170(uf) 308: 7(float) Load 170(uf)
309: 7(float) FSub 307 308 309: 7(float) FSub 307 308
310: 7(float) Load 170(uf) 310: 7(float) Load 170(uf)
311: 7(float) FDiv 309 310 311: 7(float) FDiv 309 310
Store 302(f) 311 Store 302(f) 311
312: 8(fvec4) Load 10(v) 312: 8(fvec4) Load 10(v)
313: 7(float) ExtInst 1(GLSL.std.450) 58(length) 312 313: 7(float) ExtInst 1(GLSL.std.450) 65(Length) 312
314: 7(float) Load 302(f) 314: 7(float) Load 302(f)
315: 7(float) FAdd 314 313 315: 7(float) FAdd 314 313
Store 302(f) 315 Store 302(f) 315
316: 8(fvec4) Load 10(v) 316: 8(fvec4) Load 10(v)
317: 8(fvec4) Load 10(v) 317: 8(fvec4) Load 10(v)
318: 7(float) ExtInst 1(GLSL.std.450) 59(distance) 316 317 318: 7(float) ExtInst 1(GLSL.std.450) 66(Distance) 316 317
319: 7(float) Load 302(f) 319: 7(float) Load 302(f)
320: 7(float) FAdd 319 318 320: 7(float) FAdd 319 318
Store 302(f) 320 Store 302(f) 320
321: 8(fvec4) Load 10(v) 321: 8(fvec4) Load 10(v)
322: 8(fvec4) Load 10(v) 322: 8(fvec4) Load 10(v)
323: 7(float) Dot 321 322 323: 7(float) Dot 321 322
324: 7(float) Load 302(f) 324: 7(float) Load 302(f)
325: 7(float) FAdd 324 323 325: 7(float) FAdd 324 323
Store 302(f) 325 Store 302(f) 325
326: 7(float) Load 302(f) 326: 7(float) Load 302(f)
327: 7(float) Load 170(uf) 327: 7(float) Load 170(uf)
328: 7(float) FMul 326 327 328: 7(float) FMul 326 327
329: 7(float) Load 302(f) 329: 7(float) Load 302(f)
330: 7(float) FAdd 329 328 330: 7(float) FAdd 329 328
Store 302(f) 330 Store 302(f) 330
331: 8(fvec4) Load 10(v) 331: 8(fvec4) Load 10(v)
333: 332(fvec3) VectorShuffle 331 331 0 1 2 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 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 337: 7(float) CompositeExtract 336 0
338: 7(float) Load 302(f) 338: 7(float) Load 302(f)
339: 7(float) FAdd 338 337 339: 7(float) FAdd 338 337
Store 302(f) 339 Store 302(f) 339
340: 7(float) Load 302(f) 340: 7(float) Load 302(f)
341: 7(float) Load 170(uf) 341: 7(float) Load 170(uf)
342: 215(bool) FOrdEqual 340 341 342: 215(bool) FOrdEqual 340 341
343: 7(float) Load 302(f) 343: 7(float) Load 302(f)
344: 7(float) Load 170(uf) 344: 7(float) Load 170(uf)
345: 215(bool) FOrdNotEqual 343 344 345: 215(bool) FOrdNotEqual 343 344
346: 7(float) Load 302(f) 346: 7(float) Load 302(f)
348: 215(bool) FOrdNotEqual 346 347 348: 215(bool) FOrdNotEqual 346 347
349: 215(bool) LogicalAnd 345 348 349: 215(bool) LogicalAnd 345 348
350: 215(bool) LogicalOr 342 349 350: 215(bool) LogicalOr 342 349
SelectionMerge 352 None SelectionMerge 352 None
BranchConditional 350 351 352 BranchConditional 350 351 352
351: Label 351: Label
353: 7(float) Load 302(f) 353: 7(float) Load 302(f)
355: 7(float) FAdd 353 354 355: 7(float) FAdd 353 354
Store 302(f) 355 Store 302(f) 355
Branch 352 Branch 352
352: Label 352: Label
356: 19(int) Load 23(ui) 356: 19(int) Load 23(ui)
357: 19(int) Load 21(i) 357: 19(int) Load 21(i)
358: 19(int) BitwiseAnd 357 356 358: 19(int) BitwiseAnd 357 356
Store 21(i) 358 Store 21(i) 358
360: 19(int) Load 21(i) 360: 19(int) Load 21(i)
361: 19(int) BitwiseOr 360 359 361: 19(int) BitwiseOr 360 359
Store 21(i) 361 Store 21(i) 361
362: 19(int) Load 23(ui) 362: 19(int) Load 23(ui)
363: 19(int) Load 21(i) 363: 19(int) Load 21(i)
364: 19(int) BitwiseXor 363 362 364: 19(int) BitwiseXor 363 362
Store 21(i) 364 Store 21(i) 364
366: 19(int) Load 21(i) 366: 19(int) Load 21(i)
367: 19(int) SMod 366 365 367: 19(int) SMod 366 365
Store 21(i) 367 Store 21(i) 367
368: 19(int) Load 21(i) 368: 19(int) Load 21(i)
369: 19(int) ShiftRightArithmetic 368 292 369: 19(int) ShiftRightArithmetic 368 292
Store 21(i) 369 Store 21(i) 369
370: 19(int) Load 23(ui) 370: 19(int) Load 23(ui)
371: 19(int) Load 21(i) 371: 19(int) Load 21(i)
372: 19(int) ShiftLeftLogical 371 370 372: 19(int) ShiftLeftLogical 371 370
Store 21(i) 372 Store 21(i) 372
373: 19(int) Load 21(i) 373: 19(int) Load 21(i)
374: 19(int) Not 373 374: 19(int) Not 373
Store 21(i) 374 Store 21(i) 374
375: 215(bool) Load 217(b) 375: 215(bool) Load 217(b)
376: 215(bool) Not 375 376: 215(bool) LogicalNot 375
Store 217(b) 376 Store 217(b) 376
380: 215(bool) Load 217(b) 380: 215(bool) Load 217(b)
SelectionMerge 382 None SelectionMerge 382 None
BranchConditional 380 381 391 BranchConditional 380 381 391
381: Label 381: Label
383: 19(int) Load 21(i) 383: 19(int) Load 21(i)
384: 7(float) ConvertSToF 383 384: 7(float) ConvertSToF 383
385: 8(fvec4) CompositeConstruct 384 384 384 384 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 387: 8(fvec4) CompositeConstruct 386 386 386 386
388: 8(fvec4) FAdd 385 387 388: 8(fvec4) FAdd 385 387
389: 8(fvec4) Load 10(v) 389: 8(fvec4) Load 10(v)
390: 8(fvec4) FAdd 388 389 390: 8(fvec4) FAdd 388 389
Store 379 390 Store 379 390
Branch 382 Branch 382
391: Label 391: Label
392: 8(fvec4) Load 10(v) 392: 8(fvec4) Load 10(v)
Store 379 392 Store 379 392
Branch 382 Branch 382
382: Label 382: Label
393: 8(fvec4) Load 379 393: 8(fvec4) Load 379
Store 378(gl_FragColor) 393 Store 378(gl_FragColor) 393
Branch 6 Branch 6
6: Label 6: Label
Return Return

180
Test/baseResults/spv.accessChain.frag.out Normal file → Executable file
View File

@ -10,9 +10,11 @@ Linked fragment stage:
// Id's are bound by 198 // Id's are bound by 198
Source GLSL 420 Source GLSL 420
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "S" Name 9 "S"
MemberName 9(S) 0 "color" MemberName 9(S) 0 "color"
@ -71,7 +73,7 @@ Linked fragment stage:
Name 195 "param" Name 195 "param"
Decorate 66(OutColor) Location 0 Decorate 66(OutColor) Location 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 3 8: TypeVector 7(float) 3
9(S): TypeStruct 8(fvec3) 9(S): TypeStruct 8(fvec3)
@ -80,7 +82,7 @@ Linked fragment stage:
15: TypePointer Function 14(int) 15: TypePointer Function 14(int)
16: TypeFunction 2 9(S) 15(ptr) 16: TypeFunction 2 9(S) 15(ptr)
65: TypePointer Output 8(fvec3) 65: TypePointer Output 8(fvec3)
66(OutColor): 65(ptr) Variable Output 66(OutColor): 65(ptr) Variable Output
67: 14(int) Constant 0 67: 14(int) Constant 0
68: TypeInt 32 0 68: TypeInt 32 0
69: 68(int) Constant 0 69: 68(int) Constant 0
@ -90,72 +92,72 @@ Linked fragment stage:
143: 8(fvec3) ConstantComposite 142 142 142 143: 8(fvec3) ConstantComposite 142 142 142
144: TypePointer Function 9(S) 144: TypePointer Function 9(S)
149: TypePointer UniformConstant 14(int) 149: TypePointer UniformConstant 14(int)
150(u): 149(ptr) Variable UniformConstant 150(u): 149(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
145(s): 144(ptr) Variable Function 145(s): 144(ptr) Variable Function
151(param): 15(ptr) Variable Function 151(param): 15(ptr) Variable Function
155(param): 15(ptr) Variable Function 155(param): 15(ptr) Variable Function
159(param): 15(ptr) Variable Function 159(param): 15(ptr) Variable Function
163(param): 15(ptr) Variable Function 163(param): 15(ptr) Variable Function
167(param): 15(ptr) Variable Function 167(param): 15(ptr) Variable Function
171(param): 15(ptr) Variable Function 171(param): 15(ptr) Variable Function
175(param): 15(ptr) Variable Function 175(param): 15(ptr) Variable Function
179(param): 15(ptr) Variable Function 179(param): 15(ptr) Variable Function
183(param): 15(ptr) Variable Function 183(param): 15(ptr) Variable Function
187(param): 15(ptr) Variable Function 187(param): 15(ptr) Variable Function
191(param): 15(ptr) Variable Function 191(param): 15(ptr) Variable Function
195(param): 15(ptr) Variable Function 195(param): 15(ptr) Variable Function
Store 66(OutColor) 143 Store 66(OutColor) 143
146: 9(S) Load 145(s) 146: 9(S) Load 145(s)
147: 2 FunctionCall 12(GetColor1(struct-S-vf31;) 146 147: 2 FunctionCall 12(GetColor1(struct-S-vf31;) 146
148: 9(S) Load 145(s) 148: 9(S) Load 145(s)
152: 14(int) Load 150(u) 152: 14(int) Load 150(u)
Store 151(param) 152 Store 151(param) 152
153: 2 FunctionCall 19(GetColor2(struct-S-vf31;i1;) 148 151(param) 153: 2 FunctionCall 19(GetColor2(struct-S-vf31;i1;) 148 151(param)
154: 9(S) Load 145(s) 154: 9(S) Load 145(s)
156: 14(int) Load 150(u) 156: 14(int) Load 150(u)
Store 155(param) 156 Store 155(param) 156
157: 2 FunctionCall 23(GetColor3(struct-S-vf31;i1;) 154 155(param) 157: 2 FunctionCall 23(GetColor3(struct-S-vf31;i1;) 154 155(param)
158: 9(S) Load 145(s) 158: 9(S) Load 145(s)
160: 14(int) Load 150(u) 160: 14(int) Load 150(u)
Store 159(param) 160 Store 159(param) 160
161: 2 FunctionCall 27(GetColor4(struct-S-vf31;i1;) 158 159(param) 161: 2 FunctionCall 27(GetColor4(struct-S-vf31;i1;) 158 159(param)
162: 9(S) Load 145(s) 162: 9(S) Load 145(s)
164: 14(int) Load 150(u) 164: 14(int) Load 150(u)
Store 163(param) 164 Store 163(param) 164
165: 2 FunctionCall 31(GetColor5(struct-S-vf31;i1;) 162 163(param) 165: 2 FunctionCall 31(GetColor5(struct-S-vf31;i1;) 162 163(param)
166: 9(S) Load 145(s) 166: 9(S) Load 145(s)
168: 14(int) Load 150(u) 168: 14(int) Load 150(u)
Store 167(param) 168 Store 167(param) 168
169: 2 FunctionCall 35(GetColor6(struct-S-vf31;i1;) 166 167(param) 169: 2 FunctionCall 35(GetColor6(struct-S-vf31;i1;) 166 167(param)
170: 9(S) Load 145(s) 170: 9(S) Load 145(s)
172: 14(int) Load 150(u) 172: 14(int) Load 150(u)
Store 171(param) 172 Store 171(param) 172
173: 2 FunctionCall 39(GetColor7(struct-S-vf31;i1;) 170 171(param) 173: 2 FunctionCall 39(GetColor7(struct-S-vf31;i1;) 170 171(param)
174: 9(S) Load 145(s) 174: 9(S) Load 145(s)
176: 14(int) Load 150(u) 176: 14(int) Load 150(u)
Store 175(param) 176 Store 175(param) 176
177: 2 FunctionCall 43(GetColor8(struct-S-vf31;i1;) 174 175(param) 177: 2 FunctionCall 43(GetColor8(struct-S-vf31;i1;) 174 175(param)
178: 9(S) Load 145(s) 178: 9(S) Load 145(s)
180: 14(int) Load 150(u) 180: 14(int) Load 150(u)
Store 179(param) 180 Store 179(param) 180
181: 2 FunctionCall 47(GetColor9(struct-S-vf31;i1;) 178 179(param) 181: 2 FunctionCall 47(GetColor9(struct-S-vf31;i1;) 178 179(param)
182: 9(S) Load 145(s) 182: 9(S) Load 145(s)
184: 14(int) Load 150(u) 184: 14(int) Load 150(u)
Store 183(param) 184 Store 183(param) 184
185: 2 FunctionCall 51(GetColor10(struct-S-vf31;i1;) 182 183(param) 185: 2 FunctionCall 51(GetColor10(struct-S-vf31;i1;) 182 183(param)
186: 9(S) Load 145(s) 186: 9(S) Load 145(s)
188: 14(int) Load 150(u) 188: 14(int) Load 150(u)
Store 187(param) 188 Store 187(param) 188
189: 2 FunctionCall 55(GetColor11(struct-S-vf31;i1;) 186 187(param) 189: 2 FunctionCall 55(GetColor11(struct-S-vf31;i1;) 186 187(param)
190: 9(S) Load 145(s) 190: 9(S) Load 145(s)
192: 14(int) Load 150(u) 192: 14(int) Load 150(u)
Store 191(param) 192 Store 191(param) 192
193: 2 FunctionCall 59(GetColor12(struct-S-vf31;i1;) 190 191(param) 193: 2 FunctionCall 59(GetColor12(struct-S-vf31;i1;) 190 191(param)
194: 9(S) Load 145(s) 194: 9(S) Load 145(s)
196: 14(int) Load 150(u) 196: 14(int) Load 150(u)
Store 195(param) 196 Store 195(param) 196
197: 2 FunctionCall 63(GetColor13(struct-S-vf31;i1;) 194 195(param) 197: 2 FunctionCall 63(GetColor13(struct-S-vf31;i1;) 194 195(param)
Branch 6 Branch 6
6: Label 6: Label
@ -165,49 +167,49 @@ Linked fragment stage:
11(i): 9(S) FunctionParameter 11(i): 9(S) FunctionParameter
13: Label 13: Label
70: 7(float) CompositeExtract 11(i) 0 0 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 72: 8(fvec3) CompositeConstruct 70 70 70
73: 8(fvec3) FAdd 71 72 73: 8(fvec3) FAdd 71 72
Store 66(OutColor) 73 Store 66(OutColor) 73
Return Return
FunctionEnd FunctionEnd
19(GetColor2(struct-S-vf31;i1;): 2 Function None 16 19(GetColor2(struct-S-vf31;i1;): 2 Function None 16
17(i): 9(S) FunctionParameter 17(i): 9(S) FunctionParameter
18(comp): 15(ptr) FunctionParameter 18(comp): 15(ptr) FunctionParameter
20: Label 20: Label
74: 14(int) Load 18(comp) 74: 14(int) Load 18(comp)
75: 8(fvec3) CompositeExtract 17(i) 0 75: 8(fvec3) CompositeExtract 17(i) 0
76: 7(float) VectorExtractDynamic 75 74 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 78: 8(fvec3) CompositeConstruct 76 76 76
79: 8(fvec3) FAdd 77 78 79: 8(fvec3) FAdd 77 78
Store 66(OutColor) 79 Store 66(OutColor) 79
Return Return
FunctionEnd FunctionEnd
23(GetColor3(struct-S-vf31;i1;): 2 Function None 16 23(GetColor3(struct-S-vf31;i1;): 2 Function None 16
21(i): 9(S) FunctionParameter 21(i): 9(S) FunctionParameter
22(comp): 15(ptr) FunctionParameter 22(comp): 15(ptr) FunctionParameter
24: Label 24: Label
80: 14(int) Load 22(comp) 80: 14(int) Load 22(comp)
81: 8(fvec3) CompositeExtract 21(i) 0 81: 8(fvec3) CompositeExtract 21(i) 0
82: 7(float) VectorExtractDynamic 81 80 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 84: 8(fvec3) CompositeConstruct 82 82 82
85: 8(fvec3) FAdd 83 84 85: 8(fvec3) FAdd 83 84
Store 66(OutColor) 85 Store 66(OutColor) 85
Return Return
FunctionEnd FunctionEnd
27(GetColor4(struct-S-vf31;i1;): 2 Function None 16 27(GetColor4(struct-S-vf31;i1;): 2 Function None 16
25(i): 9(S) FunctionParameter 25(i): 9(S) FunctionParameter
26(comp): 15(ptr) FunctionParameter 26(comp): 15(ptr) FunctionParameter
28: Label 28: Label
86: 14(int) Load 26(comp) 86: 14(int) Load 26(comp)
87: 8(fvec3) CompositeExtract 25(i) 0 87: 8(fvec3) CompositeExtract 25(i) 0
88: 7(float) VectorExtractDynamic 87 86 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 90: 8(fvec3) CompositeConstruct 88 88 88
91: 8(fvec3) FAdd 89 90 91: 8(fvec3) FAdd 89 90
Store 66(OutColor) 91 Store 66(OutColor) 91
Return Return
FunctionEnd FunctionEnd
31(GetColor5(struct-S-vf31;i1;): 2 Function None 16 31(GetColor5(struct-S-vf31;i1;): 2 Function None 16
@ -215,23 +217,23 @@ Linked fragment stage:
30(comp): 15(ptr) FunctionParameter 30(comp): 15(ptr) FunctionParameter
32: Label 32: Label
92: 8(fvec3) CompositeExtract 29(i) 0 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 94: 8(fvec3) FAdd 93 92
Store 66(OutColor) 94 Store 66(OutColor) 94
Return Return
FunctionEnd FunctionEnd
35(GetColor6(struct-S-vf31;i1;): 2 Function None 16 35(GetColor6(struct-S-vf31;i1;): 2 Function None 16
33(i): 9(S) FunctionParameter 33(i): 9(S) FunctionParameter
34(comp): 15(ptr) FunctionParameter 34(comp): 15(ptr) FunctionParameter
36: Label 36: Label
95: 14(int) Load 34(comp) 95: 14(int) Load 34(comp)
96: 8(fvec3) CompositeExtract 33(i) 0 96: 8(fvec3) CompositeExtract 33(i) 0
98: 97(fvec2) VectorShuffle 96 96 1 0 98: 97(fvec2) VectorShuffle 96 96 1 0
99: 7(float) VectorExtractDynamic 98 95 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 101: 8(fvec3) CompositeConstruct 99 99 99
102: 8(fvec3) FAdd 100 101 102: 8(fvec3) FAdd 100 101
Store 66(OutColor) 102 Store 66(OutColor) 102
Return Return
FunctionEnd FunctionEnd
39(GetColor7(struct-S-vf31;i1;): 2 Function None 16 39(GetColor7(struct-S-vf31;i1;): 2 Function None 16
@ -240,12 +242,12 @@ Linked fragment stage:
40: Label 40: Label
103: 8(fvec3) CompositeExtract 37(i) 0 103: 8(fvec3) CompositeExtract 37(i) 0
104: 97(fvec2) VectorShuffle 103 103 0 1 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 106: 97(fvec2) VectorShuffle 105 105 0 1
107: 97(fvec2) FAdd 106 104 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 109: 8(fvec3) VectorShuffle 108 107 3 4 2
Store 66(OutColor) 109 Store 66(OutColor) 109
Return Return
FunctionEnd FunctionEnd
43(GetColor8(struct-S-vf31;i1;): 2 Function None 16 43(GetColor8(struct-S-vf31;i1;): 2 Function None 16
@ -253,10 +255,10 @@ Linked fragment stage:
42(comp): 15(ptr) FunctionParameter 42(comp): 15(ptr) FunctionParameter
44: Label 44: Label
111: 7(float) CompositeExtract 41(i) 0 2 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 113: 8(fvec3) CompositeConstruct 111 111 111
114: 8(fvec3) FAdd 112 113 114: 8(fvec3) FAdd 112 113
Store 66(OutColor) 114 Store 66(OutColor) 114
Return Return
FunctionEnd FunctionEnd
47(GetColor9(struct-S-vf31;i1;): 2 Function None 16 47(GetColor9(struct-S-vf31;i1;): 2 Function None 16
@ -264,12 +266,12 @@ Linked fragment stage:
46(comp): 15(ptr) FunctionParameter 46(comp): 15(ptr) FunctionParameter
48: Label 48: Label
115: 8(fvec3) CompositeExtract 45(i) 0 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 117: 8(fvec3) VectorShuffle 116 116 2 0 1
118: 8(fvec3) FAdd 117 115 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 120: 8(fvec3) VectorShuffle 119 118 4 5 3
Store 66(OutColor) 120 Store 66(OutColor) 120
Return Return
FunctionEnd FunctionEnd
51(GetColor10(struct-S-vf31;i1;): 2 Function None 16 51(GetColor10(struct-S-vf31;i1;): 2 Function None 16
@ -278,12 +280,12 @@ Linked fragment stage:
52: Label 52: Label
121: 8(fvec3) CompositeExtract 49(i) 0 121: 8(fvec3) CompositeExtract 49(i) 0
122: 97(fvec2) VectorShuffle 121 121 0 1 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 124: 97(fvec2) VectorShuffle 123 123 2 1
125: 97(fvec2) FAdd 124 122 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 127: 8(fvec3) VectorShuffle 126 125 0 4 3
Store 66(OutColor) 127 Store 66(OutColor) 127
Return Return
FunctionEnd FunctionEnd
55(GetColor11(struct-S-vf31;i1;): 2 Function None 16 55(GetColor11(struct-S-vf31;i1;): 2 Function None 16
@ -292,26 +294,26 @@ Linked fragment stage:
56: Label 56: Label
128: 8(fvec3) CompositeExtract 53(i) 0 128: 8(fvec3) CompositeExtract 53(i) 0
129: 97(fvec2) VectorShuffle 128 128 0 1 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 131: 97(fvec2) VectorShuffle 130 130 0 2
132: 97(fvec2) FAdd 131 129 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 134: 8(fvec3) VectorShuffle 133 132 3 1 4
Store 66(OutColor) 134 Store 66(OutColor) 134
Return Return
FunctionEnd FunctionEnd
59(GetColor12(struct-S-vf31;i1;): 2 Function None 16 59(GetColor12(struct-S-vf31;i1;): 2 Function None 16
57(i): 9(S) FunctionParameter 57(i): 9(S) FunctionParameter
58(comp): 15(ptr) FunctionParameter 58(comp): 15(ptr) FunctionParameter
60: Label 60: Label
135: 14(int) Load 58(comp) 135: 14(int) Load 58(comp)
136: 7(float) CompositeExtract 57(i) 0 0 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 138: 7(float) VectorExtractDynamic 137 135
139: 7(float) FAdd 138 136 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 141: 8(fvec3) VectorInsertDynamic 140 139 135
Store 66(OutColor) 141 Store 66(OutColor) 141
Return Return
FunctionEnd FunctionEnd
63(GetColor13(struct-S-vf31;i1;): 2 Function None 16 63(GetColor13(struct-S-vf31;i1;): 2 Function None 16

94
Test/baseResults/spv.always-discard.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 81 // Id's are bound by 81
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "white" Name 10 "white"
Name 13 "black" Name 13 "black"
@ -20,10 +22,10 @@ Linked fragment stage:
Name 28 "y" Name 28 "y"
Name 33 "radius" Name 33 "radius"
Name 56 "gl_FragColor" Name 56 "gl_FragColor"
Decorate 22(tex_coord) Smooth Decorate 22(tex_coord) Smooth
Decorate 56(gl_FragColor) BuiltIn FragColor Decorate 56(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
@ -34,96 +36,96 @@ Linked fragment stage:
18: TypePointer Function 7(float) 18: TypePointer Function 7(float)
20: TypeVector 7(float) 2 20: TypeVector 7(float) 2
21: TypePointer Input 20(fvec2) 21: TypePointer Input 20(fvec2)
22(tex_coord): 21(ptr) Variable Input 22(tex_coord): 21(ptr) Variable Input
25: 7(float) Constant 1073741824 25: 7(float) Constant 1073741824
43: TypeBool 43: TypeBool
48: 7(float) Constant 1066192077 48: 7(float) Constant 1066192077
55: TypePointer Output 8(fvec4) 55: TypePointer Output 8(fvec4)
56(gl_FragColor): 55(ptr) Variable Output 56(gl_FragColor): 55(ptr) Variable Output
59: 7(float) Constant 1067030938 59: 7(float) Constant 1067030938
68: 7(float) Constant 1061158912 68: 7(float) Constant 1061158912
73: 7(float) Constant 1098907648 73: 7(float) Constant 1098907648
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(white): 9(ptr) Variable Function 10(white): 9(ptr) Variable Function
13(black): 9(ptr) Variable Function 13(black): 9(ptr) Variable Function
16(color): 9(ptr) Variable Function 16(color): 9(ptr) Variable Function
19(x): 18(ptr) Variable Function 19(x): 18(ptr) Variable Function
28(y): 18(ptr) Variable Function 28(y): 18(ptr) Variable Function
33(radius): 18(ptr) Variable Function 33(radius): 18(ptr) Variable Function
Store 10(white) 12 Store 10(white) 12
Store 13(black) 15 Store 13(black) 15
17: 8(fvec4) Load 10(white) 17: 8(fvec4) Load 10(white)
Store 16(color) 17 Store 16(color) 17
23: 20(fvec2) Load 22(tex_coord) 23: 20(fvec2) Load 22(tex_coord)
24: 7(float) CompositeExtract 23 0 24: 7(float) CompositeExtract 23 0
26: 7(float) FMul 24 25 26: 7(float) FMul 24 25
27: 7(float) FSub 26 11 27: 7(float) FSub 26 11
Store 19(x) 27 Store 19(x) 27
29: 20(fvec2) Load 22(tex_coord) 29: 20(fvec2) Load 22(tex_coord)
30: 7(float) CompositeExtract 29 1 30: 7(float) CompositeExtract 29 1
31: 7(float) FMul 30 25 31: 7(float) FMul 30 25
32: 7(float) FSub 31 11 32: 7(float) FSub 31 11
Store 28(y) 32 Store 28(y) 32
34: 7(float) Load 19(x) 34: 7(float) Load 19(x)
35: 7(float) Load 19(x) 35: 7(float) Load 19(x)
36: 7(float) FMul 34 35 36: 7(float) FMul 34 35
37: 7(float) Load 28(y) 37: 7(float) Load 28(y)
38: 7(float) Load 28(y) 38: 7(float) Load 28(y)
39: 7(float) FMul 37 38 39: 7(float) FMul 37 38
40: 7(float) FAdd 36 39 40: 7(float) FAdd 36 39
41: 7(float) ExtInst 1(GLSL.std.450) 28(sqrt) 40 41: 7(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 40
Store 33(radius) 41 Store 33(radius) 41
42: 7(float) Load 33(radius) 42: 7(float) Load 33(radius)
44: 43(bool) FOrdGreaterThan 42 11 44: 43(bool) FOrdGreaterThan 42 11
SelectionMerge 46 None SelectionMerge 46 None
BranchConditional 44 45 46 BranchConditional 44 45 46
45: Label 45: Label
47: 7(float) Load 33(radius) 47: 7(float) Load 33(radius)
49: 43(bool) FOrdGreaterThan 47 48 49: 43(bool) FOrdGreaterThan 47 48
SelectionMerge 51 None SelectionMerge 51 None
BranchConditional 49 50 51 BranchConditional 49 50 51
50: Label 50: Label
52: 8(fvec4) Load 16(color) 52: 8(fvec4) Load 16(color)
53: 8(fvec4) CompositeConstruct 11 11 11 11 53: 8(fvec4) CompositeConstruct 11 11 11 11
54: 8(fvec4) FAdd 52 53 54: 8(fvec4) FAdd 52 53
Store 16(color) 54 Store 16(color) 54
Branch 51 Branch 51
51: Label 51: Label
57: 8(fvec4) Load 16(color) 57: 8(fvec4) Load 16(color)
Store 56(gl_FragColor) 57 Store 56(gl_FragColor) 57
58: 7(float) Load 33(radius) 58: 7(float) Load 33(radius)
60: 43(bool) FOrdGreaterThan 58 59 60: 43(bool) FOrdGreaterThan 58 59
SelectionMerge 62 None SelectionMerge 62 None
BranchConditional 60 61 62 BranchConditional 60 61 62
61: Label 61: Label
63: 8(fvec4) Load 16(color) 63: 8(fvec4) Load 16(color)
64: 8(fvec4) CompositeConstruct 11 11 11 11 64: 8(fvec4) CompositeConstruct 11 11 11 11
65: 8(fvec4) FAdd 63 64 65: 8(fvec4) FAdd 63 64
Store 16(color) 65 Store 16(color) 65
Branch 62 Branch 62
62: Label 62: Label
Branch 46 Branch 46
46: Label 46: Label
Kill Kill
66: Label 66: Label
67: 7(float) Load 33(radius) 67: 7(float) Load 33(radius)
69: 43(bool) FOrdGreaterThanEqual 67 68 69: 43(bool) FOrdGreaterThanEqual 67 68
SelectionMerge 71 None SelectionMerge 71 None
BranchConditional 69 70 71 BranchConditional 69 70 71
70: Label 70: Label
72: 7(float) Load 33(radius) 72: 7(float) Load 33(radius)
74: 7(float) ExtInst 1(GLSL.std.450) 23(pow) 72 73 74: 7(float) ExtInst 1(GLSL.std.450) 26(Pow) 72 73
75: 7(float) FDiv 74 25 75: 7(float) FDiv 74 25
76: 7(float) ExtInst 1(GLSL.std.450) 3(abs) 75 76: 7(float) ExtInst 1(GLSL.std.450) 4(FAbs) 75
77: 8(fvec4) Load 16(color) 77: 8(fvec4) Load 16(color)
78: 8(fvec4) CompositeConstruct 76 76 76 76 78: 8(fvec4) CompositeConstruct 76 76 76 76
79: 8(fvec4) FSub 77 78 79: 8(fvec4) FSub 77 78
Store 16(color) 79 Store 16(color) 79
Branch 71 Branch 71
71: Label 71: Label
80: 8(fvec4) Load 16(color) 80: 8(fvec4) Load 16(color)
Store 56(gl_FragColor) 80 Store 56(gl_FragColor) 80
Branch 6 Branch 6
6: Label 6: Label
Return Return

38
Test/baseResults/spv.always-discard2.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 37 // Id's are bound by 37
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "white" Name 10 "white"
Name 13 "black" Name 13 "black"
@ -19,10 +21,10 @@ Linked fragment stage:
Name 22 "tex_coord" Name 22 "tex_coord"
Name 28 "y" Name 28 "y"
Name 35 "gl_FragColor" Name 35 "gl_FragColor"
Decorate 22(tex_coord) Smooth Decorate 22(tex_coord) Smooth
Decorate 35(gl_FragColor) BuiltIn FragColor Decorate 35(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
@ -33,31 +35,31 @@ Linked fragment stage:
18: TypePointer Function 7(float) 18: TypePointer Function 7(float)
20: TypeVector 7(float) 2 20: TypeVector 7(float) 2
21: TypePointer Input 20(fvec2) 21: TypePointer Input 20(fvec2)
22(tex_coord): 21(ptr) Variable Input 22(tex_coord): 21(ptr) Variable Input
25: 7(float) Constant 1073741824 25: 7(float) Constant 1073741824
34: TypePointer Output 8(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
10(white): 9(ptr) Variable Function 10(white): 9(ptr) Variable Function
13(black): 9(ptr) Variable Function 13(black): 9(ptr) Variable Function
16(color): 9(ptr) Variable Function 16(color): 9(ptr) Variable Function
19(x): 18(ptr) Variable Function 19(x): 18(ptr) Variable Function
28(y): 18(ptr) Variable Function 28(y): 18(ptr) Variable Function
Store 10(white) 12 Store 10(white) 12
Store 13(black) 15 Store 13(black) 15
17: 8(fvec4) Load 10(white) 17: 8(fvec4) Load 10(white)
Store 16(color) 17 Store 16(color) 17
23: 20(fvec2) Load 22(tex_coord) 23: 20(fvec2) Load 22(tex_coord)
24: 7(float) CompositeExtract 23 0 24: 7(float) CompositeExtract 23 0
26: 7(float) FMul 24 25 26: 7(float) FMul 24 25
27: 7(float) FSub 26 11 27: 7(float) FSub 26 11
Store 19(x) 27 Store 19(x) 27
29: 20(fvec2) Load 22(tex_coord) 29: 20(fvec2) Load 22(tex_coord)
30: 7(float) CompositeExtract 29 1 30: 7(float) CompositeExtract 29 1
31: 7(float) FMul 30 25 31: 7(float) FMul 30 25
32: 7(float) FSub 31 11 32: 7(float) FSub 31 11
Store 28(y) 32 Store 28(y) 32
Kill Kill
6: Label 6: Label
Return Return

196
Test/baseResults/spv.atomic.comp.out Normal file → Executable file
View File

@ -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? TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 75 // Id's are bound by 77
Source ESSL 310 Source ESSL 310
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint GLCompute 4 EntryPoint GLCompute 4 "main"
Name 4 "main" Name 4 "main"
Name 11 "func(au1;" Name 11 "func(au1;"
Name 10 "c" Name 10 "c"
Name 13 "atoms(" Name 13 "atoms("
Name 20 "counter" Name 23 "counter"
Name 21 "param" Name 24 "param"
Name 24 "val" Name 27 "val"
Name 28 "countArr" Name 31 "countArr"
Name 38 "origi" Name 41 "origi"
Name 40 "atomi" Name 43 "atomi"
Name 44 "origu" Name 47 "origu"
Name 46 "atomu" Name 49 "atomu"
Name 48 "value" Name 51 "value"
Name 72 "arrX" Name 74 "arrX"
Name 73 "arrY" Name 75 "arrY"
Name 74 "arrZ" Name 76 "arrZ"
Decorate 20(counter) PrecisionHigh Decorate 23(counter) Binding 0
Decorate 20(counter) Binding 0 Decorate 31(countArr) Binding 0
Decorate 24(val) PrecisionHigh Decorate 74(arrX) NoStaticUse
Decorate 28(countArr) PrecisionHigh Decorate 75(arrY) NoStaticUse
Decorate 28(countArr) Binding 0 Decorate 76(arrZ) NoStaticUse
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
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 0 7: TypeInt 32 0
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
9: TypeFunction 7(int) 8(ptr) 9: TypeFunction 7(int) 8(ptr)
19: TypePointer UniformConstant 7(int) 16: 7(int) Constant 1
20(counter): 19(ptr) Variable UniformConstant 17: 7(int) Constant 0
25: 7(int) Constant 4 21: 7(int) Constant 256
26: TypeArray 7(int) 25 22: TypePointer UniformConstant 7(int)
27: TypePointer UniformConstant 26 23(counter): 22(ptr) Variable UniformConstant
28(countArr): 27(ptr) Variable UniformConstant 28: 7(int) Constant 4
29: TypeInt 32 1 29: TypeArray 7(int) 28
30: 29(int) Constant 2 30: TypePointer UniformConstant 29
37: TypePointer Function 29(int) 31(countArr): 30(ptr) Variable UniformConstant
39: TypePointer WorkgroupLocal 29(int) 32: TypeInt 32 1
40(atomi): 39(ptr) Variable WorkgroupLocal 33: 32(int) Constant 2
42: 29(int) Constant 3 40: TypePointer Function 32(int)
45: TypePointer WorkgroupLocal 7(int) 42: TypePointer WorkgroupLocal 32(int)
46(atomu): 45(ptr) Variable WorkgroupLocal 43(atomi): 42(ptr) Variable WorkgroupLocal
48(value): 19(ptr) Variable UniformConstant 45: 32(int) Constant 3
52: 7(int) Constant 7 48: TypePointer WorkgroupLocal 7(int)
60: 29(int) Constant 7 49(atomu): 48(ptr) Variable WorkgroupLocal
66: 7(int) Constant 10 51(value): 22(ptr) Variable UniformConstant
69: 7(int) Constant 1 55: 7(int) Constant 7
70: TypeArray 29(int) 69 63: 32(int) Constant 7
71: TypePointer PrivateGlobal 70 69: 7(int) Constant 10
72(arrX): 71(ptr) Variable PrivateGlobal 72: TypeArray 32(int) 16
73(arrY): 71(ptr) Variable PrivateGlobal 73: TypePointer PrivateGlobal 72
74(arrZ): 71(ptr) Variable PrivateGlobal 74(arrX): 73(ptr) Variable PrivateGlobal
75(arrY): 73(ptr) Variable PrivateGlobal
76(arrZ): 73(ptr) Variable PrivateGlobal
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
21(param): 8(ptr) Variable Function 24(param): 8(ptr) Variable Function
24(val): 8(ptr) Variable Function 27(val): 8(ptr) Variable Function
MemoryBarrier Device AtomicCounterMemory MemoryBarrier 16 21
22: 7(int) Load 20(counter) 25: 7(int) Load 23(counter)
Store 21(param) 22 Store 24(param) 25
23: 7(int) FunctionCall 11(func(au1;) 21(param) 26: 7(int) FunctionCall 11(func(au1;) 24(param)
31: 19(ptr) AccessChain 28(countArr) 30 34: 22(ptr) AccessChain 31(countArr) 33
32: 7(int) Load 31 35: 7(int) Load 34
33: 7(int) AtomicLoad 32 Device None 36: 7(int) AtomicLoad 35 16 17
34: 7(int) Load 31 37: 7(int) Load 34
Store 24(val) 34 Store 27(val) 37
35: 7(int) Load 20(counter) 38: 7(int) Load 23(counter)
36: 7(int) AtomicIDecrement 35 Device None 39: 7(int) AtomicIDecrement 38 16 17
Branch 6 Branch 6
6: Label 6: Label
Return 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 11(func(au1;): 7(int) Function None 9
10(c): 8(ptr) FunctionParameter 10(c): 8(ptr) FunctionParameter
12: Label 12: Label
15: 7(int) Load 10(c) 15: 7(int) Load 10(c)
16: 7(int) AtomicIIncrement 15 Device None 18: 7(int) AtomicIIncrement 15 16 17
17: 7(int) Load 10(c) 19: 7(int) Load 10(c)
ReturnValue 17 ReturnValue 19
FunctionEnd FunctionEnd
13(atoms(): 2 Function None 3 13(atoms(): 2 Function None 3
14: Label 14: Label
38(origi): 37(ptr) Variable Function 41(origi): 40(ptr) Variable Function
44(origu): 8(ptr) Variable Function 47(origu): 8(ptr) Variable Function
41: 29(int) Load 40(atomi) 44: 32(int) Load 43(atomi)
43: 29(int) AtomicIAdd 41 Device None 42 46: 32(int) AtomicIAdd 44 16 17 45
Store 38(origi) 43 Store 41(origi) 46
47: 7(int) Load 46(atomu) 50: 7(int) Load 49(atomu)
49: 7(int) Load 48(value) 52: 7(int) Load 51(value)
50: 7(int) AtomicAnd 47 Device None 49 53: 7(int) AtomicAnd 50 16 17 52
Store 44(origu) 50 Store 47(origu) 53
51: 7(int) Load 46(atomu) 54: 7(int) Load 49(atomu)
53: 7(int) AtomicOr 51 Device None 52 56: 7(int) AtomicOr 54 16 17 55
Store 44(origu) 53 Store 47(origu) 56
54: 7(int) Load 46(atomu) 57: 7(int) Load 49(atomu)
55: 7(int) AtomicXor 54 Device None 52 58: 7(int) AtomicXor 57 16 17 55
Store 44(origu) 55 Store 47(origu) 58
56: 7(int) Load 46(atomu) 59: 7(int) Load 49(atomu)
57: 7(int) Load 48(value) 60: 7(int) Load 51(value)
58: 7(int) AtomicIMin 56 Device None 57 61: 7(int) AtomicSMin 59 16 17 60
Store 44(origu) 58 Store 47(origu) 61
59: 29(int) Load 40(atomi) 62: 32(int) Load 43(atomi)
61: 29(int) AtomicIMax 59 Device None 60 64: 32(int) AtomicSMax 62 16 17 63
Store 38(origi) 61 Store 41(origi) 64
62: 29(int) Load 40(atomi) 65: 32(int) Load 43(atomi)
63: 29(int) Load 38(origi) 66: 32(int) Load 41(origi)
64: 29(int) AtomicExchange 62 Device None 63 67: 32(int) AtomicExchange 65 16 17 66
Store 38(origi) 64 Store 41(origi) 67
65: 7(int) Load 46(atomu) 68: 7(int) Load 49(atomu)
67: 7(int) Load 48(value) 70: 7(int) Load 51(value)
68: 7(int) AtomicCompareExchange 65 Device None 66 67 71: 7(int) AtomicCompareExchange 68 16 17 69 70
Store 44(origu) 68 Store 47(origu) 71
Return Return
FunctionEnd FunctionEnd

77
Test/baseResults/spv.conditionalDiscard.frag.out Normal file → Executable file
View File

@ -5,56 +5,59 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 36 // Id's are bound by 37
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "v" Name 10 "v"
Name 13 "tex" Name 14 "tex"
Name 17 "coord" Name 18 "coord"
Name 34 "gl_FragColor" Name 35 "gl_FragColor"
Decorate 17(coord) Smooth Decorate 18(coord) Smooth
Decorate 34(gl_FragColor) BuiltIn FragColor Decorate 35(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypeSampler7(float) 2D filter+texture 11: TypeImage 7(float) 2D sampled format:Unknown
12: TypePointer UniformConstant 11 12: TypeSampledImage 11
13(tex): 12(ptr) Variable UniformConstant 13: TypePointer UniformConstant 12
15: TypeVector 7(float) 2 14(tex): 13(ptr) Variable UniformConstant
16: TypePointer Input 15(fvec2) 16: TypeVector 7(float) 2
17(coord): 16(ptr) Variable Input 17: TypePointer Input 16(fvec2)
21: 7(float) Constant 1036831949 18(coord): 17(ptr) Variable Input
22: 7(float) Constant 1045220557 22: 7(float) Constant 1036831949
23: 7(float) Constant 1050253722 23: 7(float) Constant 1045220557
24: 7(float) Constant 1053609165 24: 7(float) Constant 1050253722
25: 8(fvec4) ConstantComposite 21 22 23 24 25: 7(float) Constant 1053609165
26: TypeBool 26: 8(fvec4) ConstantComposite 22 23 24 25
27: TypeVector 26(bool) 4 27: TypeBool
33: TypePointer Output 8(fvec4) 28: TypeVector 27(bool) 4
34(gl_FragColor): 33(ptr) Variable Output 34: TypePointer Output 8(fvec4)
35(gl_FragColor): 34(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(v): 9(ptr) Variable Function 10(v): 9(ptr) Variable Function
14: 11 Load 13(tex) 15: 12 Load 14(tex)
18: 15(fvec2) Load 17(coord) 19: 16(fvec2) Load 18(coord)
19: 8(fvec4) TextureSample 14 18 20: 8(fvec4) ImageSampleImplicitLod 15 19
Store 10(v) 19 Store 10(v) 20
20: 8(fvec4) Load 10(v) 21: 8(fvec4) Load 10(v)
28: 27(bvec4) FOrdEqual 20 25 29: 28(bvec4) FOrdEqual 21 26
29: 26(bool) All 28 30: 27(bool) All 29
SelectionMerge 31 None SelectionMerge 32 None
BranchConditional 29 30 31 BranchConditional 30 31 32
30: Label 31: Label
Kill Kill
31: Label 32: Label
35: 8(fvec4) Load 10(v) 36: 8(fvec4) Load 10(v)
Store 34(gl_FragColor) 35 Store 35(gl_FragColor) 36
Branch 6 Branch 6
6: Label 6: Label
Return Return

494
Test/baseResults/spv.conversion.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 444 // Id's are bound by 444
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "b" Name 9 "b"
Name 12 "u_i" Name 12 "u_i"
@ -51,54 +53,54 @@ Linked fragment stage:
Name 439 "i_f2" Name 439 "i_f2"
Name 441 "i_f3" Name 441 "i_f3"
Name 443 "i_f4" Name 443 "i_f4"
Decorate 40(i_i) Flat Decorate 40(i_i) Flat
Decorate 54(i_f) Smooth Decorate 54(i_f) Smooth
Decorate 158(i_i4) Flat Decorate 158(i_i4) Flat
Decorate 313(gl_FragColor) BuiltIn FragColor Decorate 313(gl_FragColor) BuiltIn FragColor
Decorate 417(u_b) NoStaticUse Decorate 417(u_b) NoStaticUse
Decorate 419(u_b2) NoStaticUse Decorate 419(u_b2) NoStaticUse
Decorate 421(u_b3) NoStaticUse Decorate 421(u_b3) NoStaticUse
Decorate 423(u_b4) NoStaticUse Decorate 423(u_b4) NoStaticUse
Decorate 425(u_i2) NoStaticUse Decorate 425(u_i2) NoStaticUse
Decorate 427(u_i3) NoStaticUse Decorate 427(u_i3) NoStaticUse
Decorate 429(u_i4) NoStaticUse Decorate 429(u_i4) NoStaticUse
Decorate 430(i_b) NoStaticUse Decorate 430(i_b) NoStaticUse
Decorate 431(i_b2) NoStaticUse Decorate 431(i_b2) NoStaticUse
Decorate 432(i_b3) NoStaticUse Decorate 432(i_b3) NoStaticUse
Decorate 433(i_b4) NoStaticUse Decorate 433(i_b4) NoStaticUse
Decorate 435(i_i2) Flat Decorate 435(i_i2) Flat
Decorate 435(i_i2) NoStaticUse Decorate 435(i_i2) NoStaticUse
Decorate 437(i_i3) Flat Decorate 437(i_i3) Flat
Decorate 437(i_i3) NoStaticUse Decorate 437(i_i3) NoStaticUse
Decorate 439(i_f2) Smooth Decorate 439(i_f2) Smooth
Decorate 439(i_f2) NoStaticUse Decorate 439(i_f2) NoStaticUse
Decorate 441(i_f3) Smooth Decorate 441(i_f3) Smooth
Decorate 441(i_f3) NoStaticUse Decorate 441(i_f3) NoStaticUse
Decorate 443(i_f4) Smooth Decorate 443(i_f4) Smooth
Decorate 443(i_f4) NoStaticUse Decorate 443(i_f4) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeBool 7: TypeBool
8: TypePointer Function 7(bool) 8: TypePointer Function 7(bool)
10: TypeInt 32 1 10: TypeInt 32 1
11: TypePointer UniformConstant 10(int) 11: TypePointer UniformConstant 10(int)
12(u_i): 11(ptr) Variable UniformConstant 12(u_i): 11(ptr) Variable UniformConstant
14: TypeInt 32 0 14: TypeInt 32 0
15: 14(int) Constant 0 15: 14(int) Constant 0
17: TypeFloat 32 17: TypeFloat 32
18: TypePointer UniformConstant 17(float) 18: TypePointer UniformConstant 17(float)
19(u_f): 18(ptr) Variable UniformConstant 19(u_f): 18(ptr) Variable UniformConstant
21: 17(float) Constant 0 21: 17(float) Constant 0
24: TypeVector 7(bool) 2 24: TypeVector 7(bool) 2
25: TypePointer Function 24(bvec2) 25: TypePointer Function 24(bvec2)
32: TypeVector 7(bool) 3 32: TypeVector 7(bool) 3
33: TypePointer Function 32(bvec3) 33: TypePointer Function 32(bvec3)
39: TypePointer Input 10(int) 39: TypePointer Input 10(int)
40(i_i): 39(ptr) Variable Input 40(i_i): 39(ptr) Variable Input
44: TypeVector 7(bool) 4 44: TypeVector 7(bool) 4
45: TypePointer Function 44(bvec4) 45: TypePointer Function 44(bvec4)
53: TypePointer Input 17(float) 53: TypePointer Input 17(float)
54(i_f): 53(ptr) Variable Input 54(i_f): 53(ptr) Variable Input
58: TypePointer Function 10(int) 58: TypePointer Function 10(int)
63: 10(int) Constant 0 63: 10(int) Constant 0
64: 10(int) Constant 1 64: 10(int) Constant 1
@ -106,21 +108,21 @@ Linked fragment stage:
68: TypePointer Function 67(ivec2) 68: TypePointer Function 67(ivec2)
70: TypeVector 17(float) 2 70: TypeVector 17(float) 2
71: TypePointer UniformConstant 70(fvec2) 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 76: 67(ivec2) ConstantComposite 63 63
77: 67(ivec2) ConstantComposite 64 64 77: 67(ivec2) ConstantComposite 64 64
80: TypeVector 10(int) 3 80: TypeVector 10(int) 3
81: TypePointer Function 80(ivec3) 81: TypePointer Function 80(ivec3)
83: TypeVector 17(float) 3 83: TypeVector 17(float) 3
84: TypePointer UniformConstant 83(fvec3) 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 89: 80(ivec3) ConstantComposite 63 63 63
90: 80(ivec3) ConstantComposite 64 64 64 90: 80(ivec3) ConstantComposite 64 64 64
93: TypeVector 10(int) 4 93: TypeVector 10(int) 4
94: TypePointer Function 93(ivec4) 94: TypePointer Function 93(ivec4)
96: TypeVector 17(float) 4 96: TypeVector 17(float) 4
97: TypePointer UniformConstant 96(fvec4) 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 102: 93(ivec4) ConstantComposite 63 63 63 63
103: 93(ivec4) ConstantComposite 64 64 64 64 103: 93(ivec4) ConstantComposite 64 64 64 64
106: TypePointer Function 17(float) 106: TypePointer Function 17(float)
@ -135,442 +137,442 @@ Linked fragment stage:
151: 96(fvec4) ConstantComposite 21 21 21 21 151: 96(fvec4) ConstantComposite 21 21 21 21
152: 96(fvec4) ConstantComposite 125 125 125 125 152: 96(fvec4) ConstantComposite 125 125 125 125
157: TypePointer Input 93(ivec4) 157: TypePointer Input 93(ivec4)
158(i_i4): 157(ptr) Variable Input 158(i_i4): 157(ptr) Variable Input
160: TypeVector 14(int) 4 160: TypeVector 14(int) 4
161: 160(ivec4) ConstantComposite 15 15 15 15 161: 160(ivec4) ConstantComposite 15 15 15 15
312: TypePointer Output 96(fvec4) 312: TypePointer Output 96(fvec4)
313(gl_FragColor): 312(ptr) Variable Output 313(gl_FragColor): 312(ptr) Variable Output
416: TypePointer UniformConstant 7(bool) 416: TypePointer UniformConstant 7(bool)
417(u_b): 416(ptr) Variable UniformConstant 417(u_b): 416(ptr) Variable UniformConstant
418: TypePointer UniformConstant 24(bvec2) 418: TypePointer UniformConstant 24(bvec2)
419(u_b2): 418(ptr) Variable UniformConstant 419(u_b2): 418(ptr) Variable UniformConstant
420: TypePointer UniformConstant 32(bvec3) 420: TypePointer UniformConstant 32(bvec3)
421(u_b3): 420(ptr) Variable UniformConstant 421(u_b3): 420(ptr) Variable UniformConstant
422: TypePointer UniformConstant 44(bvec4) 422: TypePointer UniformConstant 44(bvec4)
423(u_b4): 422(ptr) Variable UniformConstant 423(u_b4): 422(ptr) Variable UniformConstant
424: TypePointer UniformConstant 67(ivec2) 424: TypePointer UniformConstant 67(ivec2)
425(u_i2): 424(ptr) Variable UniformConstant 425(u_i2): 424(ptr) Variable UniformConstant
426: TypePointer UniformConstant 80(ivec3) 426: TypePointer UniformConstant 80(ivec3)
427(u_i3): 426(ptr) Variable UniformConstant 427(u_i3): 426(ptr) Variable UniformConstant
428: TypePointer UniformConstant 93(ivec4) 428: TypePointer UniformConstant 93(ivec4)
429(u_i4): 428(ptr) Variable UniformConstant 429(u_i4): 428(ptr) Variable UniformConstant
430(i_b): 416(ptr) Variable UniformConstant 430(i_b): 416(ptr) Variable UniformConstant
431(i_b2): 418(ptr) Variable UniformConstant 431(i_b2): 418(ptr) Variable UniformConstant
432(i_b3): 420(ptr) Variable UniformConstant 432(i_b3): 420(ptr) Variable UniformConstant
433(i_b4): 422(ptr) Variable UniformConstant 433(i_b4): 422(ptr) Variable UniformConstant
434: TypePointer Input 67(ivec2) 434: TypePointer Input 67(ivec2)
435(i_i2): 434(ptr) Variable Input 435(i_i2): 434(ptr) Variable Input
436: TypePointer Input 80(ivec3) 436: TypePointer Input 80(ivec3)
437(i_i3): 436(ptr) Variable Input 437(i_i3): 436(ptr) Variable Input
438: TypePointer Input 70(fvec2) 438: TypePointer Input 70(fvec2)
439(i_f2): 438(ptr) Variable Input 439(i_f2): 438(ptr) Variable Input
440: TypePointer Input 83(fvec3) 440: TypePointer Input 83(fvec3)
441(i_f3): 440(ptr) Variable Input 441(i_f3): 440(ptr) Variable Input
442: TypePointer Input 96(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
9(b): 8(ptr) Variable Function 9(b): 8(ptr) Variable Function
26(b2): 25(ptr) Variable Function 26(b2): 25(ptr) Variable Function
34(b3): 33(ptr) Variable Function 34(b3): 33(ptr) Variable Function
46(b4): 45(ptr) Variable Function 46(b4): 45(ptr) Variable Function
59(i): 58(ptr) Variable Function 59(i): 58(ptr) Variable Function
69(i2): 68(ptr) Variable Function 69(i2): 68(ptr) Variable Function
82(i3): 81(ptr) Variable Function 82(i3): 81(ptr) Variable Function
95(i4): 94(ptr) Variable Function 95(i4): 94(ptr) Variable Function
107(f): 106(ptr) Variable Function 107(f): 106(ptr) Variable Function
111(f2): 110(ptr) Variable Function 111(f2): 110(ptr) Variable Function
115(f3): 114(ptr) Variable Function 115(f3): 114(ptr) Variable Function
119(f4): 118(ptr) Variable Function 119(f4): 118(ptr) Variable Function
289: 106(ptr) Variable Function 289: 106(ptr) Variable Function
299: 106(ptr) Variable Function 299: 106(ptr) Variable Function
314: 118(ptr) Variable Function 314: 118(ptr) Variable Function
406(cv2): 94(ptr) Variable Function 406(cv2): 94(ptr) Variable Function
407(cv5): 45(ptr) Variable Function 407(cv5): 45(ptr) Variable Function
13: 10(int) Load 12(u_i) 13: 10(int) Load 12(u_i)
16: 7(bool) INotEqual 13 15 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 22: 7(bool) FOrdNotEqual 20 21
23: 7(bool) LogicalXor 16 22 23: 7(bool) LogicalNotEqual 16 22
Store 9(b) 23 Store 9(b) 23
27: 10(int) Load 12(u_i) 27: 10(int) Load 12(u_i)
28: 7(bool) INotEqual 27 15 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 30: 7(bool) FOrdNotEqual 29 21
31: 24(bvec2) CompositeConstruct 28 30 31: 24(bvec2) CompositeConstruct 28 30
Store 26(b2) 31 Store 26(b2) 31
35: 10(int) Load 12(u_i) 35: 10(int) Load 12(u_i)
36: 7(bool) INotEqual 35 15 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 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 42: 7(bool) INotEqual 41 15
43: 32(bvec3) CompositeConstruct 36 38 42 43: 32(bvec3) CompositeConstruct 36 38 42
Store 34(b3) 43 Store 34(b3) 43
47: 10(int) Load 12(u_i) 47: 10(int) Load 12(u_i)
48: 7(bool) INotEqual 47 15 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 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 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 56: 7(bool) FOrdNotEqual 55 21
57: 44(bvec4) CompositeConstruct 48 50 52 56 57: 44(bvec4) CompositeConstruct 48 50 52 56
Store 46(b4) 57 Store 46(b4) 57
60: 17(float) Load 19(u_f) 60: 17(float) Load 19(u_f)
61: 10(int) ConvertFToS 60 61: 10(int) ConvertFToS 60
62: 7(bool) Load 9(b) 62: 7(bool) Load 9(b)
65: 10(int) Select 62 64 63 65: 10(int) Select 62 64 63
66: 10(int) IAdd 61 65 66: 10(int) IAdd 61 65
Store 59(i) 66 Store 59(i) 66
73: 70(fvec2) Load 72(u_f2) 73: 70(fvec2) Load 72(u_f2)
74: 67(ivec2) ConvertFToS 73 74: 67(ivec2) ConvertFToS 73
75: 24(bvec2) Load 26(b2) 75: 24(bvec2) Load 26(b2)
78: 67(ivec2) Select 75 77 76 78: 67(ivec2) Select 75 77 76
79: 67(ivec2) IAdd 74 78 79: 67(ivec2) IAdd 74 78
Store 69(i2) 79 Store 69(i2) 79
86: 83(fvec3) Load 85(u_f3) 86: 83(fvec3) Load 85(u_f3)
87: 80(ivec3) ConvertFToS 86 87: 80(ivec3) ConvertFToS 86
88: 32(bvec3) Load 34(b3) 88: 32(bvec3) Load 34(b3)
91: 80(ivec3) Select 88 90 89 91: 80(ivec3) Select 88 90 89
92: 80(ivec3) IAdd 87 91 92: 80(ivec3) IAdd 87 91
Store 82(i3) 92 Store 82(i3) 92
99: 96(fvec4) Load 98(u_f4) 99: 96(fvec4) Load 98(u_f4)
100: 93(ivec4) ConvertFToS 99 100: 93(ivec4) ConvertFToS 99
101: 44(bvec4) Load 46(b4) 101: 44(bvec4) Load 46(b4)
104: 93(ivec4) Select 101 103 102 104: 93(ivec4) Select 101 103 102
105: 93(ivec4) IAdd 100 104 105: 93(ivec4) IAdd 100 104
Store 95(i4) 105 Store 95(i4) 105
108: 10(int) Load 59(i) 108: 10(int) Load 59(i)
109: 17(float) ConvertSToF 108 109: 17(float) ConvertSToF 108
Store 107(f) 109 Store 107(f) 109
112: 67(ivec2) Load 69(i2) 112: 67(ivec2) Load 69(i2)
113: 70(fvec2) ConvertSToF 112 113: 70(fvec2) ConvertSToF 112
Store 111(f2) 113 Store 111(f2) 113
116: 80(ivec3) Load 82(i3) 116: 80(ivec3) Load 82(i3)
117: 83(fvec3) ConvertSToF 116 117: 83(fvec3) ConvertSToF 116
Store 115(f3) 117 Store 115(f3) 117
120: 93(ivec4) Load 95(i4) 120: 93(ivec4) Load 95(i4)
121: 96(fvec4) ConvertSToF 120 121: 96(fvec4) ConvertSToF 120
Store 119(f4) 121 Store 119(f4) 121
122: 10(int) Load 59(i) 122: 10(int) Load 59(i)
123: 17(float) ConvertSToF 122 123: 17(float) ConvertSToF 122
124: 7(bool) Load 9(b) 124: 7(bool) Load 9(b)
126: 17(float) Select 124 125 21 126: 17(float) Select 124 125 21
127: 17(float) FAdd 123 126 127: 17(float) FAdd 123 126
128: 17(float) Load 107(f) 128: 17(float) Load 107(f)
129: 17(float) FAdd 128 127 129: 17(float) FAdd 128 127
Store 107(f) 129 Store 107(f) 129
130: 67(ivec2) Load 69(i2) 130: 67(ivec2) Load 69(i2)
131: 70(fvec2) ConvertSToF 130 131: 70(fvec2) ConvertSToF 130
132: 24(bvec2) Load 26(b2) 132: 24(bvec2) Load 26(b2)
135: 70(fvec2) Select 132 134 133 135: 70(fvec2) Select 132 134 133
136: 70(fvec2) FAdd 131 135 136: 70(fvec2) FAdd 131 135
137: 70(fvec2) Load 111(f2) 137: 70(fvec2) Load 111(f2)
138: 70(fvec2) FSub 137 136 138: 70(fvec2) FSub 137 136
Store 111(f2) 138 Store 111(f2) 138
139: 80(ivec3) Load 82(i3) 139: 80(ivec3) Load 82(i3)
140: 83(fvec3) ConvertSToF 139 140: 83(fvec3) ConvertSToF 139
141: 32(bvec3) Load 34(b3) 141: 32(bvec3) Load 34(b3)
144: 83(fvec3) Select 141 143 142 144: 83(fvec3) Select 141 143 142
145: 83(fvec3) FAdd 140 144 145: 83(fvec3) FAdd 140 144
146: 83(fvec3) Load 115(f3) 146: 83(fvec3) Load 115(f3)
147: 83(fvec3) FDiv 146 145 147: 83(fvec3) FDiv 146 145
Store 115(f3) 147 Store 115(f3) 147
148: 93(ivec4) Load 95(i4) 148: 93(ivec4) Load 95(i4)
149: 96(fvec4) ConvertSToF 148 149: 96(fvec4) ConvertSToF 148
150: 44(bvec4) Load 46(b4) 150: 44(bvec4) Load 46(b4)
153: 96(fvec4) Select 150 152 151 153: 96(fvec4) Select 150 152 151
154: 96(fvec4) FAdd 149 153 154: 96(fvec4) FAdd 149 153
155: 96(fvec4) Load 119(f4) 155: 96(fvec4) Load 119(f4)
156: 96(fvec4) FAdd 155 154 156: 96(fvec4) FAdd 155 154
Store 119(f4) 156 Store 119(f4) 156
159: 93(ivec4) Load 158(i_i4) 159: 93(ivec4) Load 158(i_i4)
162: 44(bvec4) INotEqual 159 161 162: 44(bvec4) INotEqual 159 161
163: 96(fvec4) Select 162 152 151 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 165: 96(fvec4) FAdd 164 163
Store 119(f4) 165 Store 119(f4) 165
166: 96(fvec4) Load 98(u_f4) 166: 96(fvec4) Load 98(u_f4)
167: 44(bvec4) FOrdNotEqual 166 151 167: 44(bvec4) FOrdNotEqual 166 151
168: 96(fvec4) Select 167 152 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 170: 96(fvec4) FAdd 169 168
Store 119(f4) 170 Store 119(f4) 170
171: 17(float) Load 107(f) 171: 17(float) Load 107(f)
172: 10(int) Load 59(i) 172: 10(int) Load 59(i)
173: 17(float) ConvertSToF 172 173: 17(float) ConvertSToF 172
174: 17(float) FSub 171 173 174: 17(float) FSub 171 173
175: 17(float) Load 107(f) 175: 17(float) Load 107(f)
176: 17(float) FAdd 175 174 176: 17(float) FAdd 175 174
Store 107(f) 176 Store 107(f) 176
177: 17(float) Load 107(f) 177: 17(float) Load 107(f)
178: 10(int) Load 59(i) 178: 10(int) Load 59(i)
179: 17(float) ConvertSToF 178 179: 17(float) ConvertSToF 178
180: 70(fvec2) CompositeConstruct 177 179 180: 70(fvec2) CompositeConstruct 177 179
181: 67(ivec2) Load 69(i2) 181: 67(ivec2) Load 69(i2)
182: 70(fvec2) ConvertSToF 181 182: 70(fvec2) ConvertSToF 181
183: 70(fvec2) FAdd 180 182 183: 70(fvec2) FAdd 180 182
184: 70(fvec2) Load 111(f2) 184: 70(fvec2) Load 111(f2)
185: 70(fvec2) FAdd 184 183 185: 70(fvec2) FAdd 184 183
Store 111(f2) 185 Store 111(f2) 185
186: 80(ivec3) Load 82(i3) 186: 80(ivec3) Load 82(i3)
187: 83(fvec3) ConvertSToF 186 187: 83(fvec3) ConvertSToF 186
188: 17(float) Load 107(f) 188: 17(float) Load 107(f)
189: 10(int) Load 59(i) 189: 10(int) Load 59(i)
190: 17(float) ConvertSToF 189 190: 17(float) ConvertSToF 189
191: 17(float) Load 107(f) 191: 17(float) Load 107(f)
192: 83(fvec3) CompositeConstruct 188 190 191 192: 83(fvec3) CompositeConstruct 188 190 191
193: 83(fvec3) FAdd 187 192 193: 83(fvec3) FAdd 187 192
194: 83(fvec3) Load 115(f3) 194: 83(fvec3) Load 115(f3)
195: 83(fvec3) FAdd 194 193 195: 83(fvec3) FAdd 194 193
Store 115(f3) 195 Store 115(f3) 195
196: 7(bool) Load 9(b) 196: 7(bool) Load 9(b)
197: 17(float) Select 196 125 21 197: 17(float) Select 196 125 21
198: 10(int) Load 59(i) 198: 10(int) Load 59(i)
199: 17(float) ConvertSToF 198 199: 17(float) ConvertSToF 198
200: 17(float) Load 107(f) 200: 17(float) Load 107(f)
201: 10(int) Load 59(i) 201: 10(int) Load 59(i)
202: 17(float) ConvertSToF 201 202: 17(float) ConvertSToF 201
203: 96(fvec4) CompositeConstruct 197 199 200 202 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 205: 96(fvec4) ConvertSToF 204
206: 96(fvec4) FAdd 203 205 206: 96(fvec4) FAdd 203 205
207: 96(fvec4) Load 119(f4) 207: 96(fvec4) Load 119(f4)
208: 96(fvec4) FAdd 207 206 208: 96(fvec4) FAdd 207 206
Store 119(f4) 208 Store 119(f4) 208
209: 17(float) Load 107(f) 209: 17(float) Load 107(f)
210: 10(int) Load 59(i) 210: 10(int) Load 59(i)
211: 17(float) ConvertSToF 210 211: 17(float) ConvertSToF 210
212: 70(fvec2) CompositeConstruct 209 211 212: 70(fvec2) CompositeConstruct 209 211
213: 10(int) Load 59(i) 213: 10(int) Load 59(i)
214: 17(float) ConvertSToF 213 214: 17(float) ConvertSToF 213
215: 70(fvec2) VectorTimesScalar 212 214 215: 70(fvec2) VectorTimesScalar 212 214
216: 70(fvec2) Load 111(f2) 216: 70(fvec2) Load 111(f2)
217: 70(fvec2) FAdd 216 215 217: 70(fvec2) FAdd 216 215
Store 111(f2) 217 Store 111(f2) 217
218: 17(float) Load 107(f) 218: 17(float) Load 107(f)
219: 10(int) Load 59(i) 219: 10(int) Load 59(i)
220: 17(float) ConvertSToF 219 220: 17(float) ConvertSToF 219
221: 17(float) Load 107(f) 221: 17(float) Load 107(f)
222: 83(fvec3) CompositeConstruct 218 220 221 222: 83(fvec3) CompositeConstruct 218 220 221
223: 10(int) Load 59(i) 223: 10(int) Load 59(i)
224: 17(float) ConvertSToF 223 224: 17(float) ConvertSToF 223
225: 83(fvec3) CompositeConstruct 224 224 224 225: 83(fvec3) CompositeConstruct 224 224 224
226: 83(fvec3) FAdd 222 225 226: 83(fvec3) FAdd 222 225
227: 83(fvec3) Load 115(f3) 227: 83(fvec3) Load 115(f3)
228: 83(fvec3) FAdd 227 226 228: 83(fvec3) FAdd 227 226
Store 115(f3) 228 Store 115(f3) 228
229: 10(int) Load 59(i) 229: 10(int) Load 59(i)
230: 17(float) ConvertSToF 229 230: 17(float) ConvertSToF 229
231: 7(bool) Load 9(b) 231: 7(bool) Load 9(b)
232: 17(float) Select 231 125 21 232: 17(float) Select 231 125 21
233: 10(int) Load 59(i) 233: 10(int) Load 59(i)
234: 17(float) ConvertSToF 233 234: 17(float) ConvertSToF 233
235: 17(float) Load 107(f) 235: 17(float) Load 107(f)
236: 10(int) Load 59(i) 236: 10(int) Load 59(i)
237: 17(float) ConvertSToF 236 237: 17(float) ConvertSToF 236
238: 96(fvec4) CompositeConstruct 232 234 235 237 238: 96(fvec4) CompositeConstruct 232 234 235 237
239: 96(fvec4) CompositeConstruct 230 230 230 230 239: 96(fvec4) CompositeConstruct 230 230 230 230
240: 96(fvec4) FSub 239 238 240: 96(fvec4) FSub 239 238
241: 96(fvec4) Load 119(f4) 241: 96(fvec4) Load 119(f4)
242: 96(fvec4) FAdd 241 240 242: 96(fvec4) FAdd 241 240
Store 119(f4) 242 Store 119(f4) 242
243: 17(float) Load 107(f) 243: 17(float) Load 107(f)
244: 10(int) ConvertFToS 243 244: 10(int) ConvertFToS 243
245: 10(int) Load 59(i) 245: 10(int) Load 59(i)
246: 67(ivec2) CompositeConstruct 244 245 246: 67(ivec2) CompositeConstruct 244 245
247: 67(ivec2) Load 69(i2) 247: 67(ivec2) Load 69(i2)
248: 67(ivec2) IAdd 247 246 248: 67(ivec2) IAdd 247 246
Store 69(i2) 248 Store 69(i2) 248
249: 17(float) Load 107(f) 249: 17(float) Load 107(f)
250: 10(int) ConvertFToS 249 250: 10(int) ConvertFToS 249
251: 10(int) Load 59(i) 251: 10(int) Load 59(i)
252: 17(float) Load 107(f) 252: 17(float) Load 107(f)
253: 10(int) ConvertFToS 252 253: 10(int) ConvertFToS 252
254: 80(ivec3) CompositeConstruct 250 251 253 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 256: 80(ivec3) IAdd 255 254
Store 82(i3) 256 Store 82(i3) 256
257: 7(bool) Load 9(b) 257: 7(bool) Load 9(b)
258: 10(int) Select 257 64 63 258: 10(int) Select 257 64 63
259: 10(int) Load 59(i) 259: 10(int) Load 59(i)
260: 17(float) Load 107(f) 260: 17(float) Load 107(f)
261: 10(int) ConvertFToS 260 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 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 265: 93(ivec4) IAdd 264 263
Store 95(i4) 265 Store 95(i4) 265
266: 17(float) Load 107(f) 266: 17(float) Load 107(f)
267: 10(int) Load 59(i) 267: 10(int) Load 59(i)
268: 17(float) ConvertSToF 267 268: 17(float) ConvertSToF 267
269: 7(bool) FOrdLessThan 266 268 269: 7(bool) FOrdLessThan 266 268
270: 10(int) Load 59(i) 270: 10(int) Load 59(i)
271: 17(float) ConvertSToF 270 271: 17(float) ConvertSToF 270
272: 17(float) Load 107(f) 272: 17(float) Load 107(f)
273: 7(bool) FOrdLessThan 271 272 273: 7(bool) FOrdLessThan 271 272
274: 7(bool) LogicalOr 269 273 274: 7(bool) LogicalOr 269 273
275: 70(fvec2) Load 111(f2) 275: 70(fvec2) Load 111(f2)
276: 67(ivec2) Load 69(i2) 276: 67(ivec2) Load 69(i2)
277: 70(fvec2) ConvertSToF 276 277: 70(fvec2) ConvertSToF 276
278: 24(bvec2) FOrdEqual 275 277 278: 24(bvec2) FOrdEqual 275 277
279: 7(bool) All 278 279: 7(bool) All 278
280: 7(bool) LogicalOr 274 279 280: 7(bool) LogicalOr 274 279
281: 80(ivec3) Load 82(i3) 281: 80(ivec3) Load 82(i3)
282: 83(fvec3) ConvertSToF 281 282: 83(fvec3) ConvertSToF 281
283: 83(fvec3) Load 115(f3) 283: 83(fvec3) Load 115(f3)
284: 32(bvec3) FOrdNotEqual 282 283 284: 32(bvec3) FOrdNotEqual 282 283
285: 7(bool) Any 284 285: 7(bool) Any 284
286: 7(bool) LogicalOr 280 285 286: 7(bool) LogicalOr 280 285
SelectionMerge 288 None SelectionMerge 288 None
BranchConditional 286 287 288 BranchConditional 286 287 288
287: Label 287: Label
290: 7(bool) Load 9(b) 290: 7(bool) Load 9(b)
SelectionMerge 292 None SelectionMerge 292 None
BranchConditional 290 291 295 BranchConditional 290 291 295
291: Label 291: Label
293: 10(int) Load 59(i) 293: 10(int) Load 59(i)
294: 17(float) ConvertSToF 293 294: 17(float) ConvertSToF 293
Store 289 294 Store 289 294
Branch 292 Branch 292
295: Label 295: Label
296: 70(fvec2) Load 111(f2) 296: 70(fvec2) Load 111(f2)
297: 17(float) CompositeExtract 296 0 297: 17(float) CompositeExtract 296 0
Store 289 297 Store 289 297
Branch 292 Branch 292
292: Label 292: Label
298: 17(float) Load 289 298: 17(float) Load 289
300: 24(bvec2) Load 26(b2) 300: 24(bvec2) Load 26(b2)
301: 7(bool) CompositeExtract 300 0 301: 7(bool) CompositeExtract 300 0
SelectionMerge 303 None SelectionMerge 303 None
BranchConditional 301 302 306 BranchConditional 301 302 306
302: Label 302: Label
304: 83(fvec3) Load 115(f3) 304: 83(fvec3) Load 115(f3)
305: 17(float) CompositeExtract 304 0 305: 17(float) CompositeExtract 304 0
Store 299 305 Store 299 305
Branch 303 Branch 303
306: Label 306: Label
307: 67(ivec2) Load 69(i2) 307: 67(ivec2) Load 69(i2)
308: 10(int) CompositeExtract 307 1 308: 10(int) CompositeExtract 307 1
309: 17(float) ConvertSToF 308 309: 17(float) ConvertSToF 308
Store 299 309 Store 299 309
Branch 303 Branch 303
303: Label 303: Label
310: 17(float) Load 299 310: 17(float) Load 299
311: 17(float) FAdd 298 310 311: 17(float) FAdd 298 310
Store 107(f) 311 Store 107(f) 311
Branch 288 Branch 288
288: Label 288: Label
315: 7(bool) Load 9(b) 315: 7(bool) Load 9(b)
316: 24(bvec2) Load 26(b2) 316: 24(bvec2) Load 26(b2)
317: 7(bool) CompositeExtract 316 0 317: 7(bool) CompositeExtract 316 0
318: 7(bool) LogicalOr 315 317 318: 7(bool) LogicalOr 315 317
319: 24(bvec2) Load 26(b2) 319: 24(bvec2) Load 26(b2)
320: 7(bool) CompositeExtract 319 1 320: 7(bool) CompositeExtract 319 1
321: 7(bool) LogicalOr 318 320 321: 7(bool) LogicalOr 318 320
322: 32(bvec3) Load 34(b3) 322: 32(bvec3) Load 34(b3)
323: 7(bool) CompositeExtract 322 0 323: 7(bool) CompositeExtract 322 0
324: 7(bool) LogicalOr 321 323 324: 7(bool) LogicalOr 321 323
325: 32(bvec3) Load 34(b3) 325: 32(bvec3) Load 34(b3)
326: 7(bool) CompositeExtract 325 1 326: 7(bool) CompositeExtract 325 1
327: 7(bool) LogicalOr 324 326 327: 7(bool) LogicalOr 324 326
328: 32(bvec3) Load 34(b3) 328: 32(bvec3) Load 34(b3)
329: 7(bool) CompositeExtract 328 2 329: 7(bool) CompositeExtract 328 2
330: 7(bool) LogicalOr 327 329 330: 7(bool) LogicalOr 327 329
331: 44(bvec4) Load 46(b4) 331: 44(bvec4) Load 46(b4)
332: 7(bool) CompositeExtract 331 0 332: 7(bool) CompositeExtract 331 0
333: 7(bool) LogicalOr 330 332 333: 7(bool) LogicalOr 330 332
334: 44(bvec4) Load 46(b4) 334: 44(bvec4) Load 46(b4)
335: 7(bool) CompositeExtract 334 1 335: 7(bool) CompositeExtract 334 1
336: 7(bool) LogicalOr 333 335 336: 7(bool) LogicalOr 333 335
337: 44(bvec4) Load 46(b4) 337: 44(bvec4) Load 46(b4)
338: 7(bool) CompositeExtract 337 2 338: 7(bool) CompositeExtract 337 2
339: 7(bool) LogicalOr 336 338 339: 7(bool) LogicalOr 336 338
340: 44(bvec4) Load 46(b4) 340: 44(bvec4) Load 46(b4)
341: 7(bool) CompositeExtract 340 3 341: 7(bool) CompositeExtract 340 3
342: 7(bool) LogicalOr 339 341 342: 7(bool) LogicalOr 339 341
SelectionMerge 344 None SelectionMerge 344 None
BranchConditional 342 343 404 BranchConditional 342 343 404
343: Label 343: Label
345: 10(int) Load 59(i) 345: 10(int) Load 59(i)
346: 67(ivec2) Load 69(i2) 346: 67(ivec2) Load 69(i2)
347: 10(int) CompositeExtract 346 0 347: 10(int) CompositeExtract 346 0
348: 10(int) IAdd 345 347 348: 10(int) IAdd 345 347
349: 67(ivec2) Load 69(i2) 349: 67(ivec2) Load 69(i2)
350: 10(int) CompositeExtract 349 1 350: 10(int) CompositeExtract 349 1
351: 10(int) IAdd 348 350 351: 10(int) IAdd 348 350
352: 80(ivec3) Load 82(i3) 352: 80(ivec3) Load 82(i3)
353: 10(int) CompositeExtract 352 0 353: 10(int) CompositeExtract 352 0
354: 10(int) IAdd 351 353 354: 10(int) IAdd 351 353
355: 80(ivec3) Load 82(i3) 355: 80(ivec3) Load 82(i3)
356: 10(int) CompositeExtract 355 1 356: 10(int) CompositeExtract 355 1
357: 10(int) IAdd 354 356 357: 10(int) IAdd 354 356
358: 80(ivec3) Load 82(i3) 358: 80(ivec3) Load 82(i3)
359: 10(int) CompositeExtract 358 2 359: 10(int) CompositeExtract 358 2
360: 10(int) IAdd 357 359 360: 10(int) IAdd 357 359
361: 93(ivec4) Load 95(i4) 361: 93(ivec4) Load 95(i4)
362: 10(int) CompositeExtract 361 0 362: 10(int) CompositeExtract 361 0
363: 10(int) IAdd 360 362 363: 10(int) IAdd 360 362
364: 93(ivec4) Load 95(i4) 364: 93(ivec4) Load 95(i4)
365: 10(int) CompositeExtract 364 1 365: 10(int) CompositeExtract 364 1
366: 10(int) IAdd 363 365 366: 10(int) IAdd 363 365
367: 93(ivec4) Load 95(i4) 367: 93(ivec4) Load 95(i4)
368: 10(int) CompositeExtract 367 2 368: 10(int) CompositeExtract 367 2
369: 10(int) IAdd 366 368 369: 10(int) IAdd 366 368
370: 93(ivec4) Load 95(i4) 370: 93(ivec4) Load 95(i4)
371: 10(int) CompositeExtract 370 3 371: 10(int) CompositeExtract 370 3
372: 10(int) IAdd 369 371 372: 10(int) IAdd 369 371
373: 17(float) ConvertSToF 372 373: 17(float) ConvertSToF 372
374: 17(float) Load 107(f) 374: 17(float) Load 107(f)
375: 17(float) FAdd 373 374 375: 17(float) FAdd 373 374
376: 70(fvec2) Load 111(f2) 376: 70(fvec2) Load 111(f2)
377: 17(float) CompositeExtract 376 0 377: 17(float) CompositeExtract 376 0
378: 17(float) FAdd 375 377 378: 17(float) FAdd 375 377
379: 70(fvec2) Load 111(f2) 379: 70(fvec2) Load 111(f2)
380: 17(float) CompositeExtract 379 1 380: 17(float) CompositeExtract 379 1
381: 17(float) FAdd 378 380 381: 17(float) FAdd 378 380
382: 83(fvec3) Load 115(f3) 382: 83(fvec3) Load 115(f3)
383: 17(float) CompositeExtract 382 0 383: 17(float) CompositeExtract 382 0
384: 17(float) FAdd 381 383 384: 17(float) FAdd 381 383
385: 83(fvec3) Load 115(f3) 385: 83(fvec3) Load 115(f3)
386: 17(float) CompositeExtract 385 1 386: 17(float) CompositeExtract 385 1
387: 17(float) FAdd 384 386 387: 17(float) FAdd 384 386
388: 83(fvec3) Load 115(f3) 388: 83(fvec3) Load 115(f3)
389: 17(float) CompositeExtract 388 2 389: 17(float) CompositeExtract 388 2
390: 17(float) FAdd 387 389 390: 17(float) FAdd 387 389
391: 96(fvec4) Load 119(f4) 391: 96(fvec4) Load 119(f4)
392: 17(float) CompositeExtract 391 0 392: 17(float) CompositeExtract 391 0
393: 17(float) FAdd 390 392 393: 17(float) FAdd 390 392
394: 96(fvec4) Load 119(f4) 394: 96(fvec4) Load 119(f4)
395: 17(float) CompositeExtract 394 1 395: 17(float) CompositeExtract 394 1
396: 17(float) FAdd 393 395 396: 17(float) FAdd 393 395
397: 96(fvec4) Load 119(f4) 397: 96(fvec4) Load 119(f4)
398: 17(float) CompositeExtract 397 2 398: 17(float) CompositeExtract 397 2
399: 17(float) FAdd 396 398 399: 17(float) FAdd 396 398
400: 96(fvec4) Load 119(f4) 400: 96(fvec4) Load 119(f4)
401: 17(float) CompositeExtract 400 3 401: 17(float) CompositeExtract 400 3
402: 17(float) FAdd 399 401 402: 17(float) FAdd 399 401
403: 96(fvec4) CompositeConstruct 402 402 402 402 403: 96(fvec4) CompositeConstruct 402 402 402 402
Store 314 403 Store 314 403
Branch 344 Branch 344
404: Label 404: Label
Store 314 152 Store 314 152
Branch 344 Branch 344
344: Label 344: Label
405: 96(fvec4) Load 314 405: 96(fvec4) Load 314
Store 313(gl_FragColor) 405 Store 313(gl_FragColor) 405
Store 406(cv2) 103 Store 406(cv2) 103
408: 93(ivec4) Load 406(cv2) 408: 93(ivec4) Load 406(cv2)
409: 44(bvec4) INotEqual 408 161 409: 44(bvec4) INotEqual 408 161
Store 407(cv5) 409 Store 407(cv5) 409
410: 44(bvec4) Load 407(cv5) 410: 44(bvec4) Load 407(cv5)
411: 96(fvec4) Select 410 152 151 411: 96(fvec4) Select 410 152 151
412: 17(float) CompositeExtract 411 0 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 414: 96(fvec4) CompositeConstruct 412 412 412 412
415: 96(fvec4) FAdd 413 414 415: 96(fvec4) FAdd 413 414
Store 313(gl_FragColor) 415 Store 313(gl_FragColor) 415
Branch 6 Branch 6
6: Label 6: Label
Return Return

16
Test/baseResults/spv.dataOut.frag.out Normal file → Executable file
View File

@ -10,33 +10,35 @@ Linked fragment stage:
// Id's are bound by 21 // Id's are bound by 21
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 13 "gl_FragData" Name 13 "gl_FragData"
Name 17 "Color" Name 17 "Color"
Decorate 13(gl_FragData) BuiltIn FragColor Decorate 13(gl_FragData) BuiltIn FragColor
Decorate 17(Color) Smooth Decorate 17(Color) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypeInt 32 0 9: TypeInt 32 0
10: 9(int) Constant 32 10: 9(int) Constant 32
11: TypeArray 8(fvec4) 10 11: TypeArray 8(fvec4) 10
12: TypePointer Output 11 12: TypePointer Output 11
13(gl_FragData): 12(ptr) Variable Output 13(gl_FragData): 12(ptr) Variable Output
14: TypeInt 32 1 14: TypeInt 32 1
15: 14(int) Constant 1 15: 14(int) Constant 1
16: TypePointer Input 8(fvec4) 16: TypePointer Input 8(fvec4)
17(Color): 16(ptr) Variable Input 17(Color): 16(ptr) Variable Input
19: TypePointer Output 8(fvec4) 19: TypePointer Output 8(fvec4)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
18: 8(fvec4) Load 17(Color) 18: 8(fvec4) Load 17(Color)
20: 19(ptr) AccessChain 13(gl_FragData) 15 20: 19(ptr) AccessChain 13(gl_FragData) 15
Store 20 18 Store 20 18
Branch 6 Branch 6
6: Label 6: Label
Return Return

20
Test/baseResults/spv.dataOutIndirect.frag.out Normal file → Executable file
View File

@ -10,36 +10,38 @@ Linked fragment stage:
// Id's are bound by 23 // Id's are bound by 23
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 13 "gl_FragData" Name 13 "gl_FragData"
Name 16 "i" Name 16 "i"
Name 19 "Color" Name 19 "Color"
Decorate 13(gl_FragData) BuiltIn FragColor Decorate 13(gl_FragData) BuiltIn FragColor
Decorate 19(Color) Smooth Decorate 19(Color) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypeInt 32 0 9: TypeInt 32 0
10: 9(int) Constant 32 10: 9(int) Constant 32
11: TypeArray 8(fvec4) 10 11: TypeArray 8(fvec4) 10
12: TypePointer Output 11 12: TypePointer Output 11
13(gl_FragData): 12(ptr) Variable Output 13(gl_FragData): 12(ptr) Variable Output
14: TypeInt 32 1 14: TypeInt 32 1
15: TypePointer UniformConstant 14(int) 15: TypePointer UniformConstant 14(int)
16(i): 15(ptr) Variable UniformConstant 16(i): 15(ptr) Variable UniformConstant
18: TypePointer Input 8(fvec4) 18: TypePointer Input 8(fvec4)
19(Color): 18(ptr) Variable Input 19(Color): 18(ptr) Variable Input
21: TypePointer Output 8(fvec4) 21: TypePointer Output 8(fvec4)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
17: 14(int) Load 16(i) 17: 14(int) Load 16(i)
20: 8(fvec4) Load 19(Color) 20: 8(fvec4) Load 19(Color)
22: 21(ptr) AccessChain 13(gl_FragData) 17 22: 21(ptr) AccessChain 13(gl_FragData) 17
Store 22 20 Store 22 20
Branch 6 Branch 6
6: Label 6: Label
Return Return

39
Test/baseResults/spv.dataOutIndirect.vert.out Normal file → Executable file
View File

@ -11,21 +11,22 @@ Linked vertex stage:
// Id's are bound by 39 // Id's are bound by 39
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 24 "colorOut" Name 24 "colorOut"
Name 27 "color" Name 27 "color"
Name 33 "gl_Position" Name 33 "gl_Position"
Name 38 "gl_VertexID" Name 38 "gl_VertexID"
Decorate 24(colorOut) Smooth Decorate 24(colorOut) Smooth
Decorate 33(gl_Position) BuiltIn Position Decorate 33(gl_Position) BuiltIn Position
Decorate 38(gl_VertexID) BuiltIn VertexId Decorate 38(gl_VertexID) BuiltIn VertexId
Decorate 38(gl_VertexID) NoStaticUse Decorate 38(gl_VertexID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 1 10: 7(int) Constant 1
@ -37,37 +38,37 @@ Linked vertex stage:
21: 20(int) Constant 6 21: 20(int) Constant 6
22: TypeArray 19(fvec4) 21 22: TypeArray 19(fvec4) 21
23: TypePointer Output 22 23: TypePointer Output 22
24(colorOut): 23(ptr) Variable Output 24(colorOut): 23(ptr) Variable Output
26: TypePointer Input 19(fvec4) 26: TypePointer Input 19(fvec4)
27(color): 26(ptr) Variable Input 27(color): 26(ptr) Variable Input
29: TypePointer Output 19(fvec4) 29: TypePointer Output 19(fvec4)
33(gl_Position): 29(ptr) Variable Output 33(gl_Position): 29(ptr) Variable Output
34: 7(int) Constant 2 34: 7(int) Constant 2
37: TypePointer Input 7(int) 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 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 7(int) Load 9(i) 14: 7(int) Load 9(i)
17: 16(bool) SLessThan 14 15 17: 16(bool) SLessThan 14 15
LoopMerge 12 None LoopMerge 12 None
BranchConditional 17 13 12 BranchConditional 17 13 12
13: Label 13: Label
25: 7(int) Load 9(i) 25: 7(int) Load 9(i)
28: 19(fvec4) Load 27(color) 28: 19(fvec4) Load 27(color)
30: 29(ptr) AccessChain 24(colorOut) 25 30: 29(ptr) AccessChain 24(colorOut) 25
Store 30 28 Store 30 28
31: 7(int) Load 9(i) 31: 7(int) Load 9(i)
32: 7(int) IAdd 31 10 32: 7(int) IAdd 31 10
Store 9(i) 32 Store 9(i) 32
Branch 11 Branch 11
12: Label 12: Label
35: 29(ptr) AccessChain 24(colorOut) 34 35: 29(ptr) AccessChain 24(colorOut) 34
36: 19(fvec4) Load 35 36: 19(fvec4) Load 35
Store 33(gl_Position) 36 Store 33(gl_Position) 36
Branch 6 Branch 6
6: Label 6: Label
Return Return

26
Test/baseResults/spv.depthOut.frag.out Normal file → Executable file
View File

@ -11,36 +11,38 @@ Linked fragment stage:
// Id's are bound by 19 // Id's are bound by 19
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "gl_FragDepth" Name 9 "gl_FragDepth"
Name 11 "Depth" Name 11 "Depth"
Name 15 "gl_FragColor" Name 15 "gl_FragColor"
Name 17 "Color" Name 17 "Color"
Decorate 9(gl_FragDepth) BuiltIn FragDepth Decorate 9(gl_FragDepth) BuiltIn FragDepth
Decorate 11(Depth) Smooth Decorate 11(Depth) Smooth
Decorate 15(gl_FragColor) BuiltIn FragColor Decorate 15(gl_FragColor) BuiltIn FragColor
Decorate 17(Color) Smooth Decorate 17(Color) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypePointer Output 7(float) 8: TypePointer Output 7(float)
9(gl_FragDepth): 8(ptr) Variable Output 9(gl_FragDepth): 8(ptr) Variable Output
10: TypePointer Input 7(float) 10: TypePointer Input 7(float)
11(Depth): 10(ptr) Variable Input 11(Depth): 10(ptr) Variable Input
13: TypeVector 7(float) 4 13: TypeVector 7(float) 4
14: TypePointer Output 13(fvec4) 14: TypePointer Output 13(fvec4)
15(gl_FragColor): 14(ptr) Variable Output 15(gl_FragColor): 14(ptr) Variable Output
16: TypePointer Input 13(fvec4) 16: TypePointer Input 13(fvec4)
17(Color): 16(ptr) Variable Input 17(Color): 16(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
12: 7(float) Load 11(Depth) 12: 7(float) Load 11(Depth)
Store 9(gl_FragDepth) 12 Store 9(gl_FragDepth) 12
18: 13(fvec4) Load 17(Color) 18: 13(fvec4) Load 17(Color)
Store 15(gl_FragColor) 18 Store 15(gl_FragColor) 18
Branch 6 Branch 6
6: Label 6: Label
Return Return

94
Test/baseResults/spv.discard-dce.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 81 // Id's are bound by 81
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "white" Name 10 "white"
Name 13 "black" Name 13 "black"
@ -20,10 +22,10 @@ Linked fragment stage:
Name 28 "y" Name 28 "y"
Name 33 "radius" Name 33 "radius"
Name 56 "gl_FragColor" Name 56 "gl_FragColor"
Decorate 22(tex_coord) Smooth Decorate 22(tex_coord) Smooth
Decorate 56(gl_FragColor) BuiltIn FragColor Decorate 56(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
@ -34,94 +36,94 @@ Linked fragment stage:
18: TypePointer Function 7(float) 18: TypePointer Function 7(float)
20: TypeVector 7(float) 2 20: TypeVector 7(float) 2
21: TypePointer Input 20(fvec2) 21: TypePointer Input 20(fvec2)
22(tex_coord): 21(ptr) Variable Input 22(tex_coord): 21(ptr) Variable Input
25: 7(float) Constant 1073741824 25: 7(float) Constant 1073741824
43: TypeBool 43: TypeBool
48: 7(float) Constant 1066192077 48: 7(float) Constant 1066192077
55: TypePointer Output 8(fvec4) 55: TypePointer Output 8(fvec4)
56(gl_FragColor): 55(ptr) Variable Output 56(gl_FragColor): 55(ptr) Variable Output
59: 7(float) Constant 1067030938 59: 7(float) Constant 1067030938
68: 7(float) Constant 1061158912 68: 7(float) Constant 1061158912
73: 7(float) Constant 1098907648 73: 7(float) Constant 1098907648
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(white): 9(ptr) Variable Function 10(white): 9(ptr) Variable Function
13(black): 9(ptr) Variable Function 13(black): 9(ptr) Variable Function
16(color): 9(ptr) Variable Function 16(color): 9(ptr) Variable Function
19(x): 18(ptr) Variable Function 19(x): 18(ptr) Variable Function
28(y): 18(ptr) Variable Function 28(y): 18(ptr) Variable Function
33(radius): 18(ptr) Variable Function 33(radius): 18(ptr) Variable Function
Store 10(white) 12 Store 10(white) 12
Store 13(black) 15 Store 13(black) 15
17: 8(fvec4) Load 10(white) 17: 8(fvec4) Load 10(white)
Store 16(color) 17 Store 16(color) 17
23: 20(fvec2) Load 22(tex_coord) 23: 20(fvec2) Load 22(tex_coord)
24: 7(float) CompositeExtract 23 0 24: 7(float) CompositeExtract 23 0
26: 7(float) FMul 24 25 26: 7(float) FMul 24 25
27: 7(float) FSub 26 11 27: 7(float) FSub 26 11
Store 19(x) 27 Store 19(x) 27
29: 20(fvec2) Load 22(tex_coord) 29: 20(fvec2) Load 22(tex_coord)
30: 7(float) CompositeExtract 29 1 30: 7(float) CompositeExtract 29 1
31: 7(float) FMul 30 25 31: 7(float) FMul 30 25
32: 7(float) FSub 31 11 32: 7(float) FSub 31 11
Store 28(y) 32 Store 28(y) 32
34: 7(float) Load 19(x) 34: 7(float) Load 19(x)
35: 7(float) Load 19(x) 35: 7(float) Load 19(x)
36: 7(float) FMul 34 35 36: 7(float) FMul 34 35
37: 7(float) Load 28(y) 37: 7(float) Load 28(y)
38: 7(float) Load 28(y) 38: 7(float) Load 28(y)
39: 7(float) FMul 37 38 39: 7(float) FMul 37 38
40: 7(float) FAdd 36 39 40: 7(float) FAdd 36 39
41: 7(float) ExtInst 1(GLSL.std.450) 28(sqrt) 40 41: 7(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 40
Store 33(radius) 41 Store 33(radius) 41
42: 7(float) Load 33(radius) 42: 7(float) Load 33(radius)
44: 43(bool) FOrdGreaterThan 42 11 44: 43(bool) FOrdGreaterThan 42 11
SelectionMerge 46 None SelectionMerge 46 None
BranchConditional 44 45 46 BranchConditional 44 45 46
45: Label 45: Label
47: 7(float) Load 33(radius) 47: 7(float) Load 33(radius)
49: 43(bool) FOrdGreaterThan 47 48 49: 43(bool) FOrdGreaterThan 47 48
SelectionMerge 51 None SelectionMerge 51 None
BranchConditional 49 50 51 BranchConditional 49 50 51
50: Label 50: Label
52: 8(fvec4) Load 16(color) 52: 8(fvec4) Load 16(color)
53: 8(fvec4) CompositeConstruct 11 11 11 11 53: 8(fvec4) CompositeConstruct 11 11 11 11
54: 8(fvec4) FAdd 52 53 54: 8(fvec4) FAdd 52 53
Store 16(color) 54 Store 16(color) 54
Branch 51 Branch 51
51: Label 51: Label
57: 8(fvec4) Load 16(color) 57: 8(fvec4) Load 16(color)
Store 56(gl_FragColor) 57 Store 56(gl_FragColor) 57
58: 7(float) Load 33(radius) 58: 7(float) Load 33(radius)
60: 43(bool) FOrdGreaterThan 58 59 60: 43(bool) FOrdGreaterThan 58 59
SelectionMerge 62 None SelectionMerge 62 None
BranchConditional 60 61 62 BranchConditional 60 61 62
61: Label 61: Label
63: 8(fvec4) Load 16(color) 63: 8(fvec4) Load 16(color)
64: 8(fvec4) CompositeConstruct 11 11 11 11 64: 8(fvec4) CompositeConstruct 11 11 11 11
65: 8(fvec4) FAdd 63 64 65: 8(fvec4) FAdd 63 64
Store 16(color) 65 Store 16(color) 65
Branch 62 Branch 62
62: Label 62: Label
Kill Kill
46: Label 46: Label
67: 7(float) Load 33(radius) 67: 7(float) Load 33(radius)
69: 43(bool) FOrdGreaterThanEqual 67 68 69: 43(bool) FOrdGreaterThanEqual 67 68
SelectionMerge 71 None SelectionMerge 71 None
BranchConditional 69 70 71 BranchConditional 69 70 71
70: Label 70: Label
72: 7(float) Load 33(radius) 72: 7(float) Load 33(radius)
74: 7(float) ExtInst 1(GLSL.std.450) 23(pow) 72 73 74: 7(float) ExtInst 1(GLSL.std.450) 26(Pow) 72 73
75: 7(float) FDiv 74 25 75: 7(float) FDiv 74 25
76: 7(float) ExtInst 1(GLSL.std.450) 3(abs) 75 76: 7(float) ExtInst 1(GLSL.std.450) 4(FAbs) 75
77: 8(fvec4) Load 16(color) 77: 8(fvec4) Load 16(color)
78: 8(fvec4) CompositeConstruct 76 76 76 76 78: 8(fvec4) CompositeConstruct 76 76 76 76
79: 8(fvec4) FSub 77 78 79: 8(fvec4) FSub 77 78
Store 16(color) 79 Store 16(color) 79
Branch 71 Branch 71
71: Label 71: Label
80: 8(fvec4) Load 16(color) 80: 8(fvec4) Load 16(color)
Store 56(gl_FragColor) 80 Store 56(gl_FragColor) 80
Branch 6 Branch 6
6: Label 6: Label
Return Return

30
Test/baseResults/spv.do-simple.vert.out Normal file → Executable file
View File

@ -8,22 +8,20 @@ Linked vertex stage:
// Id's are bound by 30 // Id's are bound by 30
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 28 "gl_VertexID" Name 28 "gl_VertexID"
Name 29 "gl_InstanceID" Name 29 "gl_InstanceID"
Decorate 9(i) PrecisionHigh
Decorate 28(gl_VertexID) PrecisionHigh
Decorate 28(gl_VertexID) BuiltIn VertexId Decorate 28(gl_VertexID) BuiltIn VertexId
Decorate 28(gl_VertexID) NoStaticUse Decorate 28(gl_VertexID) NoStaticUse
Decorate 29(gl_InstanceID) PrecisionHigh
Decorate 29(gl_InstanceID) BuiltIn InstanceId Decorate 29(gl_InstanceID) BuiltIn InstanceId
Decorate 29(gl_InstanceID) NoStaticUse Decorate 29(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 0 10: 7(int) Constant 0
@ -33,12 +31,12 @@ Linked vertex stage:
24: 7(int) Constant 1 24: 7(int) Constant 1
26: 15(bool) ConstantFalse 26: 15(bool) ConstantFalse
27: TypePointer Input 7(int) 27: TypePointer Input 7(int)
28(gl_VertexID): 27(ptr) Variable Input 28(gl_VertexID): 27(ptr) Variable Input
29(gl_InstanceID): 27(ptr) Variable Input 29(gl_InstanceID): 27(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 15(bool) Phi 16 5 26 13 14: 15(bool) Phi 16 5 26 13
@ -46,18 +44,18 @@ Linked vertex stage:
Branch 17 Branch 17
17: Label 17: Label
SelectionMerge 13 None SelectionMerge 13 None
BranchConditional 14 13 18 BranchConditional 14 13 18
18: Label 18: Label
19: 7(int) Load 9(i) 19: 7(int) Load 9(i)
21: 15(bool) SLessThan 19 20 21: 15(bool) SLessThan 19 20
SelectionMerge 22 None SelectionMerge 22 None
BranchConditional 21 22 12 BranchConditional 21 22 12
22: Label 22: Label
Branch 13 Branch 13
13: Label 13: Label
23: 7(int) Load 9(i) 23: 7(int) Load 9(i)
25: 7(int) IAdd 23 24 25: 7(int) IAdd 23 24
Store 9(i) 25 Store 9(i) 25
Branch 11 Branch 11
12: Label 12: Label
Branch 6 Branch 6

71
Test/baseResults/spv.do-while-continue-break.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 52 // Id's are bound by 52
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 25 "A" Name 25 "A"
@ -22,22 +23,12 @@ Linked vertex stage:
Name 47 "G" Name 47 "G"
Name 50 "gl_VertexID" Name 50 "gl_VertexID"
Name 51 "gl_InstanceID" 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) BuiltIn VertexId
Decorate 50(gl_VertexID) NoStaticUse Decorate 50(gl_VertexID) NoStaticUse
Decorate 51(gl_InstanceID) PrecisionHigh
Decorate 51(gl_InstanceID) BuiltIn InstanceId Decorate 51(gl_InstanceID) BuiltIn InstanceId
Decorate 51(gl_InstanceID) NoStaticUse Decorate 51(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 0 10: 7(int) Constant 0
@ -53,19 +44,19 @@ Linked vertex stage:
46: 7(int) Constant 99 46: 7(int) Constant 99
48: 7(int) Constant 12 48: 7(int) Constant 12
49: TypePointer Input 7(int) 49: TypePointer Input 7(int)
50(gl_VertexID): 49(ptr) Variable Input 50(gl_VertexID): 49(ptr) Variable Input
51(gl_InstanceID): 49(ptr) Variable Input 51(gl_InstanceID): 49(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
25(A): 8(ptr) Variable Function 25(A): 8(ptr) Variable Function
31(B): 8(ptr) Variable Function 31(B): 8(ptr) Variable Function
34(C): 8(ptr) Variable Function 34(C): 8(ptr) Variable Function
40(D): 8(ptr) Variable Function 40(D): 8(ptr) Variable Function
43(E): 8(ptr) Variable Function 43(E): 8(ptr) Variable Function
45(F): 8(ptr) Variable Function 45(F): 8(ptr) Variable Function
47(G): 8(ptr) Variable Function 47(G): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 15(bool) Phi 16 5 32 29 32 39 14: 15(bool) Phi 16 5 32 29 32 39
@ -73,44 +64,44 @@ Linked vertex stage:
Branch 17 Branch 17
17: Label 17: Label
SelectionMerge 13 None SelectionMerge 13 None
BranchConditional 14 13 18 BranchConditional 14 13 18
18: Label 18: Label
19: 7(int) Load 9(i) 19: 7(int) Load 9(i)
21: 7(int) IAdd 19 20 21: 7(int) IAdd 19 20
Store 9(i) 21 Store 9(i) 21
23: 15(bool) SLessThan 21 22 23: 15(bool) SLessThan 21 22
SelectionMerge 24 None SelectionMerge 24 None
BranchConditional 23 24 12 BranchConditional 23 24 12
24: Label 24: Label
Branch 13 Branch 13
13: Label 13: Label
Store 25(A) 10 Store 25(A) 10
26: 7(int) Load 9(i) 26: 7(int) Load 9(i)
28: 15(bool) IEqual 26 27 28: 15(bool) IEqual 26 27
SelectionMerge 30 None SelectionMerge 30 None
BranchConditional 28 29 30 BranchConditional 28 29 30
29: Label 29: Label
Store 31(B) 20 Store 31(B) 20
Branch 11 Branch 11
33: Label 33: Label
Store 34(C) 27 Store 34(C) 27
Branch 30 Branch 30
30: Label 30: Label
35: 7(int) Load 9(i) 35: 7(int) Load 9(i)
37: 15(bool) IEqual 35 36 37: 15(bool) IEqual 35 36
SelectionMerge 39 None SelectionMerge 39 None
BranchConditional 37 38 39 BranchConditional 37 38 39
38: Label 38: Label
Store 40(D) 41 Store 40(D) 41
Branch 12 Branch 12
42: Label 42: Label
Store 43(E) 44 Store 43(E) 44
Branch 39 Branch 39
39: Label 39: Label
Store 45(F) 46 Store 45(F) 46
Branch 11 Branch 11
12: Label 12: Label
Store 47(G) 48 Store 47(G) 48
Branch 6 Branch 6
6: Label 6: Label
Return Return

40
Test/baseResults/spv.doWhileLoop.frag.out Normal file → Executable file
View File

@ -8,38 +8,40 @@ Linked fragment stage:
// Id's are bound by 38 // Id's are bound by 38
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 12 "BaseColor" Name 12 "BaseColor"
Name 25 "d" Name 25 "d"
Name 30 "bigColor" Name 30 "bigColor"
Name 36 "gl_FragColor" Name 36 "gl_FragColor"
Decorate 12(BaseColor) Smooth Decorate 12(BaseColor) Smooth
Decorate 36(gl_FragColor) BuiltIn FragColor Decorate 36(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input 12(BaseColor): 11(ptr) Variable Input
18: TypeBool 18: TypeBool
19: 18(bool) ConstantTrue 19: 18(bool) ConstantTrue
24: TypePointer UniformConstant 7(float) 24: TypePointer UniformConstant 7(float)
25(d): 24(ptr) Variable UniformConstant 25(d): 24(ptr) Variable UniformConstant
29: TypePointer UniformConstant 8(fvec4) 29: TypePointer UniformConstant 8(fvec4)
30(bigColor): 29(ptr) Variable UniformConstant 30(bigColor): 29(ptr) Variable UniformConstant
34: 18(bool) ConstantFalse 34: 18(bool) ConstantFalse
35: TypePointer Output 8(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
10(color): 9(ptr) Variable Function 10(color): 9(ptr) Variable Function
13: 8(fvec4) Load 12(BaseColor) 13: 8(fvec4) Load 12(BaseColor)
Store 10(color) 13 Store 10(color) 13
Branch 14 Branch 14
14: Label 14: Label
17: 18(bool) Phi 19 5 34 16 17: 18(bool) Phi 19 5 34 16
@ -47,25 +49,25 @@ Linked fragment stage:
Branch 20 Branch 20
20: Label 20: Label
SelectionMerge 16 None SelectionMerge 16 None
BranchConditional 17 16 21 BranchConditional 17 16 21
21: Label 21: Label
22: 8(fvec4) Load 10(color) 22: 8(fvec4) Load 10(color)
23: 7(float) CompositeExtract 22 0 23: 7(float) CompositeExtract 22 0
26: 7(float) Load 25(d) 26: 7(float) Load 25(d)
27: 18(bool) FOrdLessThan 23 26 27: 18(bool) FOrdLessThan 23 26
SelectionMerge 28 None SelectionMerge 28 None
BranchConditional 27 28 15 BranchConditional 27 28 15
28: Label 28: Label
Branch 16 Branch 16
16: Label 16: Label
31: 8(fvec4) Load 30(bigColor) 31: 8(fvec4) Load 30(bigColor)
32: 8(fvec4) Load 10(color) 32: 8(fvec4) Load 10(color)
33: 8(fvec4) FAdd 32 31 33: 8(fvec4) FAdd 32 31
Store 10(color) 33 Store 10(color) 33
Branch 14 Branch 14
15: Label 15: Label
37: 8(fvec4) Load 10(color) 37: 8(fvec4) Load 10(color)
Store 36(gl_FragColor) 37 Store 36(gl_FragColor) 37
Branch 6 Branch 6
6: Label 6: Label
Return Return

59
Test/baseResults/spv.double.comp.out Normal file → Executable file
View File

@ -10,9 +10,10 @@ Linked compute stage:
// Id's are bound by 63 // Id's are bound by 63
Source GLSL 430 Source GLSL 430
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint GLCompute 4 EntryPoint GLCompute 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "bufName" Name 9 "bufName"
MemberName 9(bufName) 0 "f" MemberName 9(bufName) 0 "f"
@ -26,23 +27,23 @@ Linked compute stage:
Name 55 "globalCoef" Name 55 "globalCoef"
Name 59 "roll" Name 59 "roll"
Name 62 "destTex" Name 62 "destTex"
Decorate 9(bufName) GLSLShared Decorate 9(bufName) GLSLShared
Decorate 9(bufName) BufferBlock Decorate 9(bufName) BufferBlock
Decorate 27(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 27(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
Decorate 34(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 34(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 14 NoStaticUse Decorate 14 NoStaticUse
Decorate 57 NoStaticUse Decorate 57 NoStaticUse
Decorate 14 NoStaticUse Decorate 14 NoStaticUse
Decorate 14 NoStaticUse Decorate 14 NoStaticUse
Decorate 59(roll) NoStaticUse Decorate 59(roll) NoStaticUse
Decorate 62(destTex) NoStaticUse Decorate 62(destTex) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeFloat 64 8: TypeFloat 64
9(bufName): TypeStruct 7(float) 8(float) 9(bufName): TypeStruct 7(float) 8(float)
10: TypePointer Uniform 9(bufName) 10: TypePointer Uniform 9(bufName)
11(bufInst): 10(ptr) Variable Uniform 11(bufInst): 10(ptr) Variable Uniform
12: TypeInt 32 1 12: TypeInt 32 1
13: 12(int) Constant 1 13: 12(int) Constant 1
14: 8(float) Constant 1413754136 1074340347 14: 8(float) Constant 1413754136 1074340347
@ -55,10 +56,10 @@ Linked compute stage:
24: TypeInt 32 0 24: TypeInt 32 0
25: TypeVector 24(int) 3 25: TypeVector 24(int) 3
26: TypePointer Input 25(ivec3) 26: TypePointer Input 25(ivec3)
27(gl_GlobalInvocationID): 26(ptr) Variable Input 27(gl_GlobalInvocationID): 26(ptr) Variable Input
29: TypeVector 24(int) 2 29: TypeVector 24(int) 2
32: TypePointer Function 8(float) 32: TypePointer Function 8(float)
34(gl_LocalInvocationID): 26(ptr) Variable Input 34(gl_LocalInvocationID): 26(ptr) Variable Input
38: 12(int) Constant 8 38: 12(int) Constant 8
41: TypeVector 7(float) 2 41: TypeVector 7(float) 2
43: 7(float) Constant 1090519040 43: 7(float) Constant 1090519040
@ -71,25 +72,25 @@ Linked compute stage:
56: 8(float) Constant 0 1072693248 56: 8(float) Constant 0 1072693248
57: 8(float) Constant 3229815407 1074340298 57: 8(float) Constant 3229815407 1074340298
58: TypePointer UniformConstant 8(float) 58: TypePointer UniformConstant 8(float)
59(roll): 58(ptr) Variable UniformConstant 59(roll): 58(ptr) Variable UniformConstant
60: TypeSampler7(float) 2D image 60: TypeImage 7(float) 2D nonsampled format:Unknown
61: TypePointer UniformConstant 60 61: TypePointer UniformConstant 60
62(destTex): 61(ptr) Variable UniformConstant 62(destTex): 61(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
23(storePos): 22(ptr) Variable Function 23(storePos): 22(ptr) Variable Function
33(localCoef): 32(ptr) Variable Function 33(localCoef): 32(ptr) Variable Function
50(aa): 49(ptr) Variable Function 50(aa): 49(ptr) Variable Function
55(globalCoef): 32(ptr) Variable Function 55(globalCoef): 32(ptr) Variable Function
16: 15(ptr) AccessChain 11(bufInst) 13 16: 15(ptr) AccessChain 11(bufInst) 13
Store 16 14 Store 16 14
20: 19(ptr) AccessChain 11(bufInst) 17 20: 19(ptr) AccessChain 11(bufInst) 17
Store 20 18 Store 20 18
28: 25(ivec3) Load 27(gl_GlobalInvocationID) 28: 25(ivec3) Load 27(gl_GlobalInvocationID)
30: 29(ivec2) VectorShuffle 28 28 0 1 30: 29(ivec2) VectorShuffle 28 28 0 1
31: 21(ivec2) Bitcast 30 31: 21(ivec2) Bitcast 30
Store 23(storePos) 31 Store 23(storePos) 31
35: 25(ivec3) Load 34(gl_LocalInvocationID) 35: 25(ivec3) Load 34(gl_LocalInvocationID)
36: 29(ivec2) VectorShuffle 35 35 0 1 36: 29(ivec2) VectorShuffle 35 35 0 1
37: 21(ivec2) Bitcast 36 37: 21(ivec2) Bitcast 36
39: 21(ivec2) CompositeConstruct 38 38 39: 21(ivec2) CompositeConstruct 38 38
@ -97,11 +98,11 @@ Linked compute stage:
42: 41(fvec2) ConvertSToF 40 42: 41(fvec2) ConvertSToF 40
44: 41(fvec2) CompositeConstruct 43 43 44: 41(fvec2) CompositeConstruct 43 43
45: 41(fvec2) FDiv 42 44 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 47: 8(float) FConvert 46
Store 33(localCoef) 47 Store 33(localCoef) 47
Store 50(aa) 54 Store 50(aa) 54
Store 55(globalCoef) 56 Store 55(globalCoef) 56
Branch 6 Branch 6
6: Label 6: Label
Return Return

130
Test/baseResults/spv.earlyReturnDiscard.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 112 // Id's are bound by 112
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 12 "BaseColor" Name 12 "BaseColor"
@ -26,130 +28,130 @@ Linked fragment stage:
Name 78 "b" Name 78 "b"
Name 107 "gl_FragColor" Name 107 "gl_FragColor"
Name 111 "threshhold3" Name 111 "threshhold3"
Decorate 12(BaseColor) Smooth Decorate 12(BaseColor) Smooth
Decorate 19(c) Smooth Decorate 19(c) Smooth
Decorate 107(gl_FragColor) BuiltIn FragColor Decorate 107(gl_FragColor) BuiltIn FragColor
Decorate 111(threshhold3) NoStaticUse Decorate 111(threshhold3) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input 12(BaseColor): 11(ptr) Variable Input
15: TypePointer UniformConstant 8(fvec4) 15: TypePointer UniformConstant 8(fvec4)
16(otherColor): 15(ptr) Variable UniformConstant 16(otherColor): 15(ptr) Variable UniformConstant
18: TypePointer Input 7(float) 18: TypePointer Input 7(float)
19(c): 18(ptr) Variable Input 19(c): 18(ptr) Variable Input
21: TypePointer UniformConstant 7(float) 21: TypePointer UniformConstant 7(float)
22(d): 21(ptr) Variable UniformConstant 22(d): 21(ptr) Variable UniformConstant
24: TypeBool 24: TypeBool
28(bigColor): 15(ptr) Variable UniformConstant 28(bigColor): 15(ptr) Variable UniformConstant
33(smallColor): 15(ptr) Variable UniformConstant 33(smallColor): 15(ptr) Variable UniformConstant
39(minimum): 21(ptr) Variable UniformConstant 39(minimum): 21(ptr) Variable UniformConstant
47: 7(float) Constant 1065353216 47: 7(float) Constant 1065353216
53(threshhold): 21(ptr) Variable UniformConstant 53(threshhold): 21(ptr) Variable UniformConstant
64(threshhold2): 21(ptr) Variable UniformConstant 64(threshhold2): 21(ptr) Variable UniformConstant
77: TypePointer UniformConstant 24(bool) 77: TypePointer UniformConstant 24(bool)
78(b): 77(ptr) Variable UniformConstant 78(b): 77(ptr) Variable UniformConstant
106: TypePointer Output 8(fvec4) 106: TypePointer Output 8(fvec4)
107(gl_FragColor): 106(ptr) Variable Output 107(gl_FragColor): 106(ptr) Variable Output
111(threshhold3): 21(ptr) Variable UniformConstant 111(threshhold3): 21(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(color): 9(ptr) Variable Function 10(color): 9(ptr) Variable Function
14(color2): 9(ptr) Variable Function 14(color2): 9(ptr) Variable Function
13: 8(fvec4) Load 12(BaseColor) 13: 8(fvec4) Load 12(BaseColor)
Store 10(color) 13 Store 10(color) 13
17: 8(fvec4) Load 16(otherColor) 17: 8(fvec4) Load 16(otherColor)
Store 14(color2) 17 Store 14(color2) 17
20: 7(float) Load 19(c) 20: 7(float) Load 19(c)
23: 7(float) Load 22(d) 23: 7(float) Load 22(d)
25: 24(bool) FOrdGreaterThan 20 23 25: 24(bool) FOrdGreaterThan 20 23
SelectionMerge 27 None SelectionMerge 27 None
BranchConditional 25 26 32 BranchConditional 25 26 32
26: Label 26: Label
29: 8(fvec4) Load 28(bigColor) 29: 8(fvec4) Load 28(bigColor)
30: 8(fvec4) Load 10(color) 30: 8(fvec4) Load 10(color)
31: 8(fvec4) FAdd 30 29 31: 8(fvec4) FAdd 30 29
Store 10(color) 31 Store 10(color) 31
Branch 27 Branch 27
32: Label 32: Label
34: 8(fvec4) Load 33(smallColor) 34: 8(fvec4) Load 33(smallColor)
35: 8(fvec4) Load 10(color) 35: 8(fvec4) Load 10(color)
36: 8(fvec4) FAdd 35 34 36: 8(fvec4) FAdd 35 34
Store 10(color) 36 Store 10(color) 36
Branch 27 Branch 27
27: Label 27: Label
37: 8(fvec4) Load 10(color) 37: 8(fvec4) Load 10(color)
38: 7(float) CompositeExtract 37 2 38: 7(float) CompositeExtract 37 2
40: 7(float) Load 39(minimum) 40: 7(float) Load 39(minimum)
41: 24(bool) FOrdLessThan 38 40 41: 24(bool) FOrdLessThan 38 40
SelectionMerge 43 None SelectionMerge 43 None
BranchConditional 41 42 43 BranchConditional 41 42 43
42: Label 42: Label
Branch 6 Branch 6
43: Label 43: Label
45: 8(fvec4) Load 10(color) 45: 8(fvec4) Load 10(color)
46: 7(float) CompositeExtract 45 2 46: 7(float) CompositeExtract 45 2
48: 7(float) FAdd 46 47 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 50: 8(fvec4) CompositeInsert 48 49 2
Store 10(color) 50 Store 10(color) 50
51: 8(fvec4) Load 10(color) 51: 8(fvec4) Load 10(color)
52: 7(float) CompositeExtract 51 2 52: 7(float) CompositeExtract 51 2
54: 7(float) Load 53(threshhold) 54: 7(float) Load 53(threshhold)
55: 24(bool) FOrdGreaterThan 52 54 55: 24(bool) FOrdGreaterThan 52 54
SelectionMerge 57 None SelectionMerge 57 None
BranchConditional 55 56 57 BranchConditional 55 56 57
56: Label 56: Label
Kill Kill
57: Label 57: Label
59: 8(fvec4) Load 10(color) 59: 8(fvec4) Load 10(color)
60: 8(fvec4) CompositeConstruct 47 47 47 47 60: 8(fvec4) CompositeConstruct 47 47 47 47
61: 8(fvec4) FAdd 59 60 61: 8(fvec4) FAdd 59 60
Store 10(color) 61 Store 10(color) 61
62: 8(fvec4) Load 10(color) 62: 8(fvec4) Load 10(color)
63: 7(float) CompositeExtract 62 3 63: 7(float) CompositeExtract 62 3
65: 7(float) Load 64(threshhold2) 65: 7(float) Load 64(threshhold2)
66: 24(bool) FOrdGreaterThan 63 65 66: 24(bool) FOrdGreaterThan 63 65
SelectionMerge 68 None SelectionMerge 68 None
BranchConditional 66 67 99 BranchConditional 66 67 99
67: Label 67: Label
69: 8(fvec4) Load 10(color) 69: 8(fvec4) Load 10(color)
70: 7(float) CompositeExtract 69 2 70: 7(float) CompositeExtract 69 2
71: 7(float) Load 64(threshhold2) 71: 7(float) Load 64(threshhold2)
72: 24(bool) FOrdGreaterThan 70 71 72: 24(bool) FOrdGreaterThan 70 71
SelectionMerge 74 None SelectionMerge 74 None
BranchConditional 72 73 76 BranchConditional 72 73 76
73: Label 73: Label
Branch 6 Branch 6
76: Label 76: Label
79: 24(bool) Load 78(b) 79: 24(bool) Load 78(b)
SelectionMerge 81 None SelectionMerge 81 None
BranchConditional 79 80 87 BranchConditional 79 80 87
80: Label 80: Label
82: 8(fvec4) Load 10(color) 82: 8(fvec4) Load 10(color)
83: 7(float) CompositeExtract 82 2 83: 7(float) CompositeExtract 82 2
84: 7(float) FAdd 83 47 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 86: 8(fvec4) CompositeInsert 84 85 2
Store 10(color) 86 Store 10(color) 86
Branch 81 Branch 81
87: Label 87: Label
88: 8(fvec4) Load 10(color) 88: 8(fvec4) Load 10(color)
89: 7(float) CompositeExtract 88 0 89: 7(float) CompositeExtract 88 0
90: 7(float) Load 39(minimum) 90: 7(float) Load 39(minimum)
91: 24(bool) FOrdLessThan 89 90 91: 24(bool) FOrdLessThan 89 90
SelectionMerge 93 None SelectionMerge 93 None
BranchConditional 91 92 95 BranchConditional 91 92 95
92: Label 92: Label
Kill Kill
95: Label 95: Label
96: 8(fvec4) Load 10(color) 96: 8(fvec4) Load 10(color)
97: 8(fvec4) CompositeConstruct 47 47 47 47 97: 8(fvec4) CompositeConstruct 47 47 47 47
98: 8(fvec4) FAdd 96 97 98: 8(fvec4) FAdd 96 97
Store 10(color) 98 Store 10(color) 98
Branch 93 Branch 93
93: Label 93: Label
Branch 81 Branch 81
@ -158,9 +160,9 @@ Linked fragment stage:
74: Label 74: Label
Branch 68 Branch 68
99: Label 99: Label
100: 24(bool) Load 78(b) 100: 24(bool) Load 78(b)
SelectionMerge 102 None SelectionMerge 102 None
BranchConditional 100 101 104 BranchConditional 100 101 104
101: Label 101: Label
Kill Kill
104: Label 104: Label
@ -168,10 +170,10 @@ Linked fragment stage:
102: Label 102: Label
Branch 68 Branch 68
68: Label 68: Label
108: 8(fvec4) Load 10(color) 108: 8(fvec4) Load 10(color)
109: 8(fvec4) Load 14(color2) 109: 8(fvec4) Load 14(color2)
110: 8(fvec4) FMul 108 109 110: 8(fvec4) FMul 108 109
Store 107(gl_FragColor) 110 Store 107(gl_FragColor) 110
Branch 6 Branch 6
6: Label 6: Label
Return Return

60
Test/baseResults/spv.flowControl.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 42 // Id's are bound by 42
Source GLSL 120 Source GLSL 120
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 12 "BaseColor" Name 12 "BaseColor"
@ -21,57 +23,57 @@ Linked fragment stage:
Name 28 "bigColor" Name 28 "bigColor"
Name 33 "smallColor" Name 33 "smallColor"
Name 38 "gl_FragColor" Name 38 "gl_FragColor"
Decorate 12(BaseColor) Smooth Decorate 12(BaseColor) Smooth
Decorate 19(c) Smooth Decorate 19(c) Smooth
Decorate 38(gl_FragColor) BuiltIn FragColor Decorate 38(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input 12(BaseColor): 11(ptr) Variable Input
15: TypePointer UniformConstant 8(fvec4) 15: TypePointer UniformConstant 8(fvec4)
16(otherColor): 15(ptr) Variable UniformConstant 16(otherColor): 15(ptr) Variable UniformConstant
18: TypePointer Input 7(float) 18: TypePointer Input 7(float)
19(c): 18(ptr) Variable Input 19(c): 18(ptr) Variable Input
21: TypePointer UniformConstant 7(float) 21: TypePointer UniformConstant 7(float)
22(d): 21(ptr) Variable UniformConstant 22(d): 21(ptr) Variable UniformConstant
24: TypeBool 24: TypeBool
28(bigColor): 15(ptr) Variable UniformConstant 28(bigColor): 15(ptr) Variable UniformConstant
33(smallColor): 15(ptr) Variable UniformConstant 33(smallColor): 15(ptr) Variable UniformConstant
37: TypePointer Output 8(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
10(color): 9(ptr) Variable Function 10(color): 9(ptr) Variable Function
14(color2): 9(ptr) Variable Function 14(color2): 9(ptr) Variable Function
13: 8(fvec4) Load 12(BaseColor) 13: 8(fvec4) Load 12(BaseColor)
Store 10(color) 13 Store 10(color) 13
17: 8(fvec4) Load 16(otherColor) 17: 8(fvec4) Load 16(otherColor)
Store 14(color2) 17 Store 14(color2) 17
20: 7(float) Load 19(c) 20: 7(float) Load 19(c)
23: 7(float) Load 22(d) 23: 7(float) Load 22(d)
25: 24(bool) FOrdGreaterThan 20 23 25: 24(bool) FOrdGreaterThan 20 23
SelectionMerge 27 None SelectionMerge 27 None
BranchConditional 25 26 32 BranchConditional 25 26 32
26: Label 26: Label
29: 8(fvec4) Load 28(bigColor) 29: 8(fvec4) Load 28(bigColor)
30: 8(fvec4) Load 10(color) 30: 8(fvec4) Load 10(color)
31: 8(fvec4) FAdd 30 29 31: 8(fvec4) FAdd 30 29
Store 10(color) 31 Store 10(color) 31
Branch 27 Branch 27
32: Label 32: Label
34: 8(fvec4) Load 33(smallColor) 34: 8(fvec4) Load 33(smallColor)
35: 8(fvec4) Load 10(color) 35: 8(fvec4) Load 10(color)
36: 8(fvec4) FAdd 35 34 36: 8(fvec4) FAdd 35 34
Store 10(color) 36 Store 10(color) 36
Branch 27 Branch 27
27: Label 27: Label
39: 8(fvec4) Load 10(color) 39: 8(fvec4) Load 10(color)
40: 8(fvec4) Load 14(color2) 40: 8(fvec4) Load 14(color2)
41: 8(fvec4) FMul 39 40 41: 8(fvec4) FMul 39 40
Store 38(gl_FragColor) 41 Store 38(gl_FragColor) 41
Branch 6 Branch 6
6: Label 6: Label
Return Return

75
Test/baseResults/spv.for-continue-break.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 49 // Id's are bound by 49
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 18 "A" Name 18 "A"
@ -22,22 +23,12 @@ Linked vertex stage:
Name 44 "G" Name 44 "G"
Name 47 "gl_VertexID" Name 47 "gl_VertexID"
Name 48 "gl_InstanceID" 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) BuiltIn VertexId
Decorate 47(gl_VertexID) NoStaticUse Decorate 47(gl_VertexID) NoStaticUse
Decorate 48(gl_InstanceID) PrecisionHigh
Decorate 48(gl_InstanceID) BuiltIn InstanceId Decorate 48(gl_InstanceID) BuiltIn InstanceId
Decorate 48(gl_InstanceID) NoStaticUse Decorate 48(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 0 10: 7(int) Constant 0
@ -49,61 +40,61 @@ Linked vertex stage:
41: 7(int) Constant 12 41: 7(int) Constant 12
45: 7(int) Constant 99 45: 7(int) Constant 99
46: TypePointer Input 7(int) 46: TypePointer Input 7(int)
47(gl_VertexID): 46(ptr) Variable Input 47(gl_VertexID): 46(ptr) Variable Input
48(gl_InstanceID): 46(ptr) Variable Input 48(gl_InstanceID): 46(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
18(A): 8(ptr) Variable Function 18(A): 8(ptr) Variable Function
26(B): 8(ptr) Variable Function 26(B): 8(ptr) Variable Function
30(C): 8(ptr) Variable Function 30(C): 8(ptr) Variable Function
37(D): 8(ptr) Variable Function 37(D): 8(ptr) Variable Function
39(E): 8(ptr) Variable Function 39(E): 8(ptr) Variable Function
40(F): 8(ptr) Variable Function 40(F): 8(ptr) Variable Function
44(G): 8(ptr) Variable Function 44(G): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 7(int) Load 9(i) 14: 7(int) Load 9(i)
17: 16(bool) SLessThan 14 15 17: 16(bool) SLessThan 14 15
LoopMerge 12 None LoopMerge 12 None
BranchConditional 17 13 12 BranchConditional 17 13 12
13: Label 13: Label
Store 18(A) 19 Store 18(A) 19
20: 7(int) Load 9(i) 20: 7(int) Load 9(i)
22: 7(int) SMod 20 21 22: 7(int) SMod 20 21
23: 16(bool) IEqual 22 10 23: 16(bool) IEqual 22 10
SelectionMerge 25 None SelectionMerge 25 None
BranchConditional 23 24 25 BranchConditional 23 24 25
24: Label 24: Label
Store 26(B) 19 Store 26(B) 19
27: 7(int) Load 9(i) 27: 7(int) Load 9(i)
28: 7(int) IAdd 27 19 28: 7(int) IAdd 27 19
Store 9(i) 28 Store 9(i) 28
Branch 11 Branch 11
29: Label 29: Label
Store 30(C) 19 Store 30(C) 19
Branch 25 Branch 25
25: Label 25: Label
31: 7(int) Load 9(i) 31: 7(int) Load 9(i)
33: 7(int) SMod 31 32 33: 7(int) SMod 31 32
34: 16(bool) IEqual 33 10 34: 16(bool) IEqual 33 10
SelectionMerge 36 None SelectionMerge 36 None
BranchConditional 34 35 36 BranchConditional 34 35 36
35: Label 35: Label
Store 37(D) 19 Store 37(D) 19
Branch 12 Branch 12
38: Label 38: Label
Store 39(E) 19 Store 39(E) 19
Branch 36 Branch 36
36: Label 36: Label
Store 40(F) 41 Store 40(F) 41
42: 7(int) Load 9(i) 42: 7(int) Load 9(i)
43: 7(int) IAdd 42 19 43: 7(int) IAdd 42 19
Store 9(i) 43 Store 9(i) 43
Branch 11 Branch 11
12: Label 12: Label
Store 44(G) 45 Store 44(G) 45
Branch 6 Branch 6
6: Label 6: Label
Return Return

33
Test/baseResults/spv.for-simple.vert.out Normal file → Executable file
View File

@ -8,24 +8,21 @@ Linked vertex stage:
// Id's are bound by 26 // Id's are bound by 26
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 18 "j" Name 18 "j"
Name 24 "gl_VertexID" Name 24 "gl_VertexID"
Name 25 "gl_InstanceID" 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) BuiltIn VertexId
Decorate 24(gl_VertexID) NoStaticUse Decorate 24(gl_VertexID) NoStaticUse
Decorate 25(gl_InstanceID) PrecisionHigh
Decorate 25(gl_InstanceID) BuiltIn InstanceId Decorate 25(gl_InstanceID) BuiltIn InstanceId
Decorate 25(gl_InstanceID) NoStaticUse Decorate 25(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 0 10: 7(int) Constant 0
@ -34,24 +31,24 @@ Linked vertex stage:
19: 7(int) Constant 12 19: 7(int) Constant 12
21: 7(int) Constant 1 21: 7(int) Constant 1
23: TypePointer Input 7(int) 23: TypePointer Input 7(int)
24(gl_VertexID): 23(ptr) Variable Input 24(gl_VertexID): 23(ptr) Variable Input
25(gl_InstanceID): 23(ptr) Variable Input 25(gl_InstanceID): 23(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
18(j): 8(ptr) Variable Function 18(j): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 7(int) Load 9(i) 14: 7(int) Load 9(i)
17: 16(bool) SLessThan 14 15 17: 16(bool) SLessThan 14 15
LoopMerge 12 None LoopMerge 12 None
BranchConditional 17 13 12 BranchConditional 17 13 12
13: Label 13: Label
Store 18(j) 19 Store 18(j) 19
20: 7(int) Load 9(i) 20: 7(int) Load 9(i)
22: 7(int) IAdd 20 21 22: 7(int) IAdd 20 21
Store 9(i) 22 Store 9(i) 22
Branch 11 Branch 11
12: Label 12: Label
Branch 6 Branch 6

162
Test/baseResults/spv.forLoop.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 123 // Id's are bound by 123
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 12 "BaseColor" Name 12 "BaseColor"
@ -27,168 +29,168 @@ Linked fragment stage:
Name 90 "i" Name 90 "i"
Name 98 "f" Name 98 "f"
Name 111 "i" Name 111 "i"
Decorate 12(BaseColor) Smooth Decorate 12(BaseColor) Smooth
Decorate 36(gl_FragColor) BuiltIn FragColor Decorate 36(gl_FragColor) BuiltIn FragColor
Decorate 98(f) Smooth Decorate 98(f) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input 12(BaseColor): 11(ptr) Variable Input
14: TypeInt 32 1 14: TypeInt 32 1
15: TypePointer Function 14(int) 15: TypePointer Function 14(int)
17: 14(int) Constant 0 17: 14(int) Constant 0
22: TypePointer UniformConstant 14(int) 22: TypePointer UniformConstant 14(int)
23(Count): 22(ptr) Variable UniformConstant 23(Count): 22(ptr) Variable UniformConstant
25: TypeBool 25: TypeBool
27: TypePointer UniformConstant 8(fvec4) 27: TypePointer UniformConstant 8(fvec4)
28(bigColor): 27(ptr) Variable UniformConstant 28(bigColor): 27(ptr) Variable UniformConstant
33: 14(int) Constant 1 33: 14(int) Constant 1
35: TypePointer Output 8(fvec4) 35: TypePointer Output 8(fvec4)
36(gl_FragColor): 35(ptr) Variable Output 36(gl_FragColor): 35(ptr) Variable Output
38: TypePointer Function 7(float) 38: TypePointer Function 7(float)
40: 7(float) Constant 0 40: 7(float) Constant 0
46: 14(int) Constant 4 46: 14(int) Constant 4
48: TypeInt 32 0 48: TypeInt 32 0
49: TypeVector 48(int) 4 49: TypeVector 48(int) 4
50: TypePointer UniformConstant 49(ivec4) 50: TypePointer UniformConstant 49(ivec4)
51(v4): 50(ptr) Variable UniformConstant 51(v4): 50(ptr) Variable UniformConstant
71: 48(int) Constant 4 71: 48(int) Constant 4
86: TypeVector 7(float) 3 86: TypeVector 7(float) 3
97: TypePointer Input 7(float) 97: TypePointer Input 7(float)
98(f): 97(ptr) Variable Input 98(f): 97(ptr) Variable Input
116: 14(int) Constant 16 116: 14(int) Constant 16
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(color): 9(ptr) Variable Function 10(color): 9(ptr) Variable Function
16(i): 15(ptr) Variable Function 16(i): 15(ptr) Variable Function
39(sum): 38(ptr) Variable Function 39(sum): 38(ptr) Variable Function
41(i): 15(ptr) Variable Function 41(i): 15(ptr) Variable Function
60(i): 15(ptr) Variable Function 60(i): 15(ptr) Variable Function
66(tv4): 9(ptr) Variable Function 66(tv4): 9(ptr) Variable Function
84(r): 9(ptr) Variable Function 84(r): 9(ptr) Variable Function
90(i): 15(ptr) Variable Function 90(i): 15(ptr) Variable Function
111(i): 15(ptr) Variable Function 111(i): 15(ptr) Variable Function
13: 8(fvec4) Load 12(BaseColor) 13: 8(fvec4) Load 12(BaseColor)
Store 10(color) 13 Store 10(color) 13
Store 16(i) 17 Store 16(i) 17
Branch 18 Branch 18
18: Label 18: Label
21: 14(int) Load 16(i) 21: 14(int) Load 16(i)
24: 14(int) Load 23(Count) 24: 14(int) Load 23(Count)
26: 25(bool) SLessThan 21 24 26: 25(bool) SLessThan 21 24
LoopMerge 19 None LoopMerge 19 None
BranchConditional 26 20 19 BranchConditional 26 20 19
20: Label 20: Label
29: 8(fvec4) Load 28(bigColor) 29: 8(fvec4) Load 28(bigColor)
30: 8(fvec4) Load 10(color) 30: 8(fvec4) Load 10(color)
31: 8(fvec4) FAdd 30 29 31: 8(fvec4) FAdd 30 29
Store 10(color) 31 Store 10(color) 31
32: 14(int) Load 16(i) 32: 14(int) Load 16(i)
34: 14(int) IAdd 32 33 34: 14(int) IAdd 32 33
Store 16(i) 34 Store 16(i) 34
Branch 18 Branch 18
19: Label 19: Label
37: 8(fvec4) Load 10(color) 37: 8(fvec4) Load 10(color)
Store 36(gl_FragColor) 37 Store 36(gl_FragColor) 37
Store 39(sum) 40 Store 39(sum) 40
Store 41(i) 17 Store 41(i) 17
Branch 42 Branch 42
42: Label 42: Label
45: 14(int) Load 41(i) 45: 14(int) Load 41(i)
47: 25(bool) SLessThan 45 46 47: 25(bool) SLessThan 45 46
LoopMerge 43 None LoopMerge 43 None
BranchConditional 47 44 43 BranchConditional 47 44 43
44: Label 44: Label
52: 14(int) Load 41(i) 52: 14(int) Load 41(i)
53: 49(ivec4) Load 51(v4) 53: 49(ivec4) Load 51(v4)
54: 48(int) VectorExtractDynamic 53 52 54: 48(int) VectorExtractDynamic 53 52
55: 7(float) ConvertUToF 54 55: 7(float) ConvertUToF 54
56: 7(float) Load 39(sum) 56: 7(float) Load 39(sum)
57: 7(float) FAdd 56 55 57: 7(float) FAdd 56 55
Store 39(sum) 57 Store 39(sum) 57
58: 14(int) Load 41(i) 58: 14(int) Load 41(i)
59: 14(int) IAdd 58 33 59: 14(int) IAdd 58 33
Store 41(i) 59 Store 41(i) 59
Branch 42 Branch 42
43: Label 43: Label
Store 60(i) 17 Store 60(i) 17
Branch 61 Branch 61
61: Label 61: Label
64: 14(int) Load 60(i) 64: 14(int) Load 60(i)
65: 25(bool) SLessThan 64 46 65: 25(bool) SLessThan 64 46
LoopMerge 62 None LoopMerge 62 None
BranchConditional 65 63 62 BranchConditional 65 63 62
63: Label 63: Label
67: 14(int) Load 60(i) 67: 14(int) Load 60(i)
68: 14(int) Load 60(i) 68: 14(int) Load 60(i)
69: 49(ivec4) Load 51(v4) 69: 49(ivec4) Load 51(v4)
70: 48(int) VectorExtractDynamic 69 68 70: 48(int) VectorExtractDynamic 69 68
72: 48(int) IMul 70 71 72: 48(int) IMul 70 71
73: 7(float) ConvertUToF 72 73: 7(float) ConvertUToF 72
74: 8(fvec4) Load 66(tv4) 74: 8(fvec4) Load 66(tv4)
75: 8(fvec4) VectorInsertDynamic 74 73 67 75: 8(fvec4) VectorInsertDynamic 74 73 67
Store 66(tv4) 75 Store 66(tv4) 75
76: 14(int) Load 60(i) 76: 14(int) Load 60(i)
77: 14(int) IAdd 76 33 77: 14(int) IAdd 76 33
Store 60(i) 77 Store 60(i) 77
Branch 61 Branch 61
62: Label 62: Label
78: 7(float) Load 39(sum) 78: 7(float) Load 39(sum)
79: 8(fvec4) CompositeConstruct 78 78 78 78 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 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 83: 8(fvec4) FAdd 82 81
Store 36(gl_FragColor) 83 Store 36(gl_FragColor) 83
85: 8(fvec4) Load 12(BaseColor) 85: 8(fvec4) Load 12(BaseColor)
87: 86(fvec3) VectorShuffle 85 85 0 1 2 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 89: 8(fvec4) VectorShuffle 88 87 4 5 6 3
Store 84(r) 89 Store 84(r) 89
Store 90(i) 17 Store 90(i) 17
Branch 91 Branch 91
91: Label 91: Label
94: 14(int) Load 90(i) 94: 14(int) Load 90(i)
95: 14(int) Load 23(Count) 95: 14(int) Load 23(Count)
96: 25(bool) SLessThan 94 95 96: 25(bool) SLessThan 94 95
LoopMerge 92 None LoopMerge 92 None
BranchConditional 96 93 92 BranchConditional 96 93 92
93: Label 93: Label
99: 7(float) Load 98(f) 99: 7(float) Load 98(f)
100: 8(fvec4) Load 84(r) 100: 8(fvec4) Load 84(r)
101: 8(fvec4) CompositeInsert 99 100 3 101: 8(fvec4) CompositeInsert 99 100 3
Store 84(r) 101 Store 84(r) 101
102: 14(int) Load 90(i) 102: 14(int) Load 90(i)
103: 14(int) IAdd 102 33 103: 14(int) IAdd 102 33
Store 90(i) 103 Store 90(i) 103
Branch 91 Branch 91
92: Label 92: Label
104: 8(fvec4) Load 84(r) 104: 8(fvec4) Load 84(r)
105: 86(fvec3) VectorShuffle 104 104 0 1 2 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 107: 86(fvec3) VectorShuffle 106 106 0 1 2
108: 86(fvec3) FAdd 107 105 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 110: 8(fvec4) VectorShuffle 109 108 4 5 6 3
Store 36(gl_FragColor) 110 Store 36(gl_FragColor) 110
Store 111(i) 17 Store 111(i) 17
Branch 112 Branch 112
112: Label 112: Label
115: 14(int) Load 111(i) 115: 14(int) Load 111(i)
117: 25(bool) SLessThan 115 116 117: 25(bool) SLessThan 115 116
LoopMerge 113 None LoopMerge 113 None
BranchConditional 117 114 113 BranchConditional 117 114 113
114: Label 114: Label
118: 7(float) Load 98(f) 118: 7(float) Load 98(f)
119: 8(fvec4) Load 36(gl_FragColor) 119: 8(fvec4) Load 36(gl_FragColor)
120: 8(fvec4) VectorTimesScalar 119 118 120: 8(fvec4) VectorTimesScalar 119 118
Store 36(gl_FragColor) 120 Store 36(gl_FragColor) 120
121: 14(int) Load 111(i) 121: 14(int) Load 111(i)
122: 14(int) IAdd 121 46 122: 14(int) IAdd 121 46
Store 111(i) 122 Store 111(i) 122
Branch 112 Branch 112
113: Label 113: Label
Branch 6 Branch 6

70
Test/baseResults/spv.forwardFun.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 59 // Id's are bound by 59
Source ESSL 100 Source ESSL 100
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 7 "bar(" Name 7 "bar("
Name 11 "unreachableReturn(" Name 11 "unreachableReturn("
@ -24,52 +26,52 @@ Linked fragment stage:
Name 37 "d" Name 37 "d"
Name 49 "dummyReturn" Name 49 "dummyReturn"
Name 58 "bigColor" Name 58 "bigColor"
Decorate 19(color) PrecisionMedium Decorate 19(color) RelaxedPrecision
Decorate 21(BaseColor) PrecisionMedium Decorate 21(BaseColor) RelaxedPrecision
Decorate 21(BaseColor) Smooth Decorate 21(BaseColor) Smooth
Decorate 28(f) PrecisionMedium Decorate 28(f) RelaxedPrecision
Decorate 31(gl_FragColor) PrecisionMedium Decorate 31(gl_FragColor) RelaxedPrecision
Decorate 31(gl_FragColor) BuiltIn FragColor Decorate 31(gl_FragColor) BuiltIn FragColor
Decorate 37(d) PrecisionMedium Decorate 37(d) RelaxedPrecision
Decorate 58(bigColor) PrecisionMedium Decorate 58(bigColor) RelaxedPrecision
Decorate 58(bigColor) NoStaticUse Decorate 58(bigColor) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
9: TypeFloat 32 9: TypeFloat 32
10: TypeFunction 9(float) 10: TypeFunction 9(float)
13: TypeVector 9(float) 4 13: TypeVector 9(float) 4
14: TypePointer Function 13(fvec4) 14: TypePointer Function 13(fvec4)
15: TypeFunction 9(float) 14(ptr) 15: TypeFunction 9(float) 14(ptr)
20: TypePointer Input 13(fvec4) 20: TypePointer Input 13(fvec4)
21(BaseColor): 20(ptr) Variable Input 21(BaseColor): 20(ptr) Variable Input
27: TypePointer Function 9(float) 27: TypePointer Function 9(float)
30: TypePointer Output 13(fvec4) 30: TypePointer Output 13(fvec4)
31(gl_FragColor): 30(ptr) Variable Output 31(gl_FragColor): 30(ptr) Variable Output
36: TypePointer UniformConstant 9(float) 36: TypePointer UniformConstant 9(float)
37(d): 36(ptr) Variable UniformConstant 37(d): 36(ptr) Variable UniformConstant
39: 9(float) Constant 1082549862 39: 9(float) Constant 1082549862
40: TypeBool 40: TypeBool
44: 9(float) Constant 1067030938 44: 9(float) Constant 1067030938
47: 9(float) Constant 1083179008 47: 9(float) Constant 1083179008
57: TypePointer UniformConstant 13(fvec4) 57: TypePointer UniformConstant 13(fvec4)
58(bigColor): 57(ptr) Variable UniformConstant 58(bigColor): 57(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
19(color): 14(ptr) Variable Function 19(color): 14(ptr) Variable Function
22(param): 14(ptr) Variable Function 22(param): 14(ptr) Variable Function
28(f): 27(ptr) Variable Function 28(f): 27(ptr) Variable Function
23: 13(fvec4) Load 21(BaseColor) 23: 13(fvec4) Load 21(BaseColor)
Store 22(param) 23 Store 22(param) 23
24: 9(float) FunctionCall 17(foo(vf4;) 22(param) 24: 9(float) FunctionCall 17(foo(vf4;) 22(param)
25: 13(fvec4) CompositeConstruct 24 24 24 24 25: 13(fvec4) CompositeConstruct 24 24 24 24
Store 19(color) 25 Store 19(color) 25
26: 2 FunctionCall 7(bar() 26: 2 FunctionCall 7(bar()
29: 9(float) FunctionCall 11(unreachableReturn() 29: 9(float) FunctionCall 11(unreachableReturn()
Store 28(f) 29 Store 28(f) 29
32: 13(fvec4) Load 19(color) 32: 13(fvec4) Load 19(color)
33: 9(float) Load 28(f) 33: 9(float) Load 28(f)
34: 13(fvec4) VectorTimesScalar 32 33 34: 13(fvec4) VectorTimesScalar 32 33
Store 31(gl_FragColor) 34 Store 31(gl_FragColor) 34
Branch 6 Branch 6
6: Label 6: Label
Return Return
@ -80,26 +82,26 @@ Linked fragment stage:
FunctionEnd FunctionEnd
11(unreachableReturn(): 9(float) Function None 10 11(unreachableReturn(): 9(float) Function None 10
12: Label 12: Label
49(dummyReturn): 27(ptr) Variable Function 49(dummyReturn): 27(ptr) Variable Function
35: 2 FunctionCall 7(bar() 35: 2 FunctionCall 7(bar()
38: 9(float) Load 37(d) 38: 9(float) Load 37(d)
41: 40(bool) FOrdLessThan 38 39 41: 40(bool) FOrdLessThan 38 39
SelectionMerge 43 None SelectionMerge 43 None
BranchConditional 41 42 46 BranchConditional 41 42 46
42: Label 42: Label
ReturnValue 44 ReturnValue 44
46: Label 46: Label
ReturnValue 47 ReturnValue 47
43: Label 43: Label
50: 9(float) Load 49(dummyReturn) 50: 9(float) Load 49(dummyReturn)
ReturnValue 50 ReturnValue 50
FunctionEnd FunctionEnd
17(foo(vf4;): 9(float) Function None 15 17(foo(vf4;): 9(float) Function None 15
16(bar): 14(ptr) FunctionParameter 16(bar): 14(ptr) FunctionParameter
18: Label 18: Label
51: 13(fvec4) Load 16(bar) 51: 13(fvec4) Load 16(bar)
52: 9(float) CompositeExtract 51 0 52: 9(float) CompositeExtract 51 0
53: 13(fvec4) Load 16(bar) 53: 13(fvec4) Load 16(bar)
54: 9(float) CompositeExtract 53 1 54: 9(float) CompositeExtract 53 1
55: 9(float) FAdd 52 54 55: 9(float) FAdd 52 54
ReturnValue 55 ReturnValue 55

80
Test/baseResults/spv.functionCall.frag.out Normal file → Executable file
View File

@ -10,9 +10,11 @@ Linked fragment stage:
// Id's are bound by 76 // Id's are bound by 76
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 12 "foo(vf4;" Name 12 "foo(vf4;"
Name 11 "bar" Name 11 "bar"
@ -30,21 +32,21 @@ Linked fragment stage:
Name 65 "g" Name 65 "g"
Name 68 "gl_FragColor" Name 68 "gl_FragColor"
Name 75 "bigColor" Name 75 "bigColor"
Decorate 57(BaseColor) Smooth Decorate 57(BaseColor) Smooth
Decorate 68(gl_FragColor) BuiltIn FragColor Decorate 68(gl_FragColor) BuiltIn FragColor
Decorate 75(bigColor) NoStaticUse Decorate 75(bigColor) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
10: TypeFunction 7(float) 9(ptr) 10: TypeFunction 7(float) 9(ptr)
16: TypeFunction 7(float) 16: TypeFunction 7(float)
21: TypePointer PrivateGlobal 7(float) 21: TypePointer PrivateGlobal 7(float)
22(h): 21(ptr) Variable PrivateGlobal 22(h): 21(ptr) Variable PrivateGlobal
23: 7(float) Constant 0 23: 7(float) Constant 0
30: TypePointer UniformConstant 7(float) 30: TypePointer UniformConstant 7(float)
31(d): 30(ptr) Variable UniformConstant 31(d): 30(ptr) Variable UniformConstant
33: 7(float) Constant 1082549862 33: 7(float) Constant 1082549862
34: TypeBool 34: TypeBool
38: 7(float) Constant 1067030938 38: 7(float) Constant 1067030938
@ -52,34 +54,34 @@ Linked fragment stage:
43: TypePointer Function 7(float) 43: TypePointer Function 7(float)
51: 7(float) Constant 1081711002 51: 7(float) Constant 1081711002
56: TypePointer Input 8(fvec4) 56: TypePointer Input 8(fvec4)
57(BaseColor): 56(ptr) Variable Input 57(BaseColor): 56(ptr) Variable Input
67: TypePointer Output 8(fvec4) 67: TypePointer Output 8(fvec4)
68(gl_FragColor): 67(ptr) Variable Output 68(gl_FragColor): 67(ptr) Variable Output
74: TypePointer UniformConstant 8(fvec4) 74: TypePointer UniformConstant 8(fvec4)
75(bigColor): 74(ptr) Variable UniformConstant 75(bigColor): 74(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
55(color): 9(ptr) Variable Function 55(color): 9(ptr) Variable Function
58(param): 9(ptr) Variable Function 58(param): 9(ptr) Variable Function
63(f): 43(ptr) Variable Function 63(f): 43(ptr) Variable Function
65(g): 43(ptr) Variable Function 65(g): 43(ptr) Variable Function
Store 22(h) 23 Store 22(h) 23
59: 8(fvec4) Load 57(BaseColor) 59: 8(fvec4) Load 57(BaseColor)
Store 58(param) 59 Store 58(param) 59
60: 7(float) FunctionCall 12(foo(vf4;) 58(param) 60: 7(float) FunctionCall 12(foo(vf4;) 58(param)
61: 8(fvec4) CompositeConstruct 60 60 60 60 61: 8(fvec4) CompositeConstruct 60 60 60 60
Store 55(color) 61 Store 55(color) 61
62: 2 FunctionCall 14(bar() 62: 2 FunctionCall 14(bar()
64: 7(float) FunctionCall 17(unreachableReturn() 64: 7(float) FunctionCall 17(unreachableReturn()
Store 63(f) 64 Store 63(f) 64
66: 7(float) FunctionCall 19(missingReturn() 66: 7(float) FunctionCall 19(missingReturn()
Store 65(g) 66 Store 65(g) 66
69: 8(fvec4) Load 55(color) 69: 8(fvec4) Load 55(color)
70: 7(float) Load 63(f) 70: 7(float) Load 63(f)
71: 8(fvec4) VectorTimesScalar 69 70 71: 8(fvec4) VectorTimesScalar 69 70
72: 7(float) Load 22(h) 72: 7(float) Load 22(h)
73: 8(fvec4) VectorTimesScalar 71 72 73: 8(fvec4) VectorTimesScalar 71 72
Store 68(gl_FragColor) 73 Store 68(gl_FragColor) 73
Branch 6 Branch 6
6: Label 6: Label
Return Return
@ -87,9 +89,9 @@ Linked fragment stage:
12(foo(vf4;): 7(float) Function None 10 12(foo(vf4;): 7(float) Function None 10
11(bar): 9(ptr) FunctionParameter 11(bar): 9(ptr) FunctionParameter
13: Label 13: Label
24: 8(fvec4) Load 11(bar) 24: 8(fvec4) Load 11(bar)
25: 7(float) CompositeExtract 24 0 25: 7(float) CompositeExtract 24 0
26: 8(fvec4) Load 11(bar) 26: 8(fvec4) Load 11(bar)
27: 7(float) CompositeExtract 26 1 27: 7(float) CompositeExtract 26 1
28: 7(float) FAdd 25 27 28: 7(float) FAdd 25 27
ReturnValue 28 ReturnValue 28
@ -100,31 +102,31 @@ Linked fragment stage:
FunctionEnd FunctionEnd
17(unreachableReturn(): 7(float) Function None 16 17(unreachableReturn(): 7(float) Function None 16
18: Label 18: Label
44(dummyReturn): 43(ptr) Variable Function 44(dummyReturn): 43(ptr) Variable Function
32: 7(float) Load 31(d) 32: 7(float) Load 31(d)
35: 34(bool) FOrdLessThan 32 33 35: 34(bool) FOrdLessThan 32 33
SelectionMerge 37 None SelectionMerge 37 None
BranchConditional 35 36 40 BranchConditional 35 36 40
36: Label 36: Label
ReturnValue 38 ReturnValue 38
40: Label 40: Label
ReturnValue 41 ReturnValue 41
37: Label 37: Label
45: 7(float) Load 44(dummyReturn) 45: 7(float) Load 44(dummyReturn)
ReturnValue 45 ReturnValue 45
FunctionEnd FunctionEnd
19(missingReturn(): 7(float) Function None 16 19(missingReturn(): 7(float) Function None 16
20: Label 20: Label
53(dummyReturn): 43(ptr) Variable Function 53(dummyReturn): 43(ptr) Variable Function
46: 7(float) Load 31(d) 46: 7(float) Load 31(d)
47: 34(bool) FOrdLessThan 46 41 47: 34(bool) FOrdLessThan 46 41
SelectionMerge 49 None SelectionMerge 49 None
BranchConditional 47 48 49 BranchConditional 47 48 49
48: Label 48: Label
50: 7(float) Load 31(d) 50: 7(float) Load 31(d)
Store 22(h) 50 Store 22(h) 50
ReturnValue 51 ReturnValue 51
49: Label 49: Label
54: 7(float) Load 53(dummyReturn) 54: 7(float) Load 53(dummyReturn)
ReturnValue 54 ReturnValue 54
FunctionEnd FunctionEnd

164
Test/baseResults/spv.functionSemantics.frag.out Normal file → Executable file
View File

@ -10,9 +10,11 @@ Linked fragment stage:
// Id's are bound by 159 // Id's are bound by 159
Source GLSL 400 Source GLSL 400
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 16 "foo(i1;i1;i1;i1;i1;i1;" Name 16 "foo(i1;i1;i1;i1;i1;i1;"
Name 10 "a" Name 10 "a"
@ -48,7 +50,7 @@ Linked fragment stage:
Name 155 "gl_FragColor" Name 155 "gl_FragColor"
Decorate 155(gl_FragColor) BuiltIn FragColor Decorate 155(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
9: TypeFunction 7(int) 8(ptr) 7(int) 8(ptr) 7(int) 8(ptr) 8(ptr) 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 20: TypeVector 18(float) 3
21: TypePointer Function 20(fvec3) 21: TypePointer Function 20(fvec3)
22: TypeFunction 7(int) 19(ptr) 21(ptr) 8(ptr) 22: TypeFunction 7(int) 19(ptr) 21(ptr) 8(ptr)
28: TypeFunction 7(int) 28: TypeFunction 7(int)
39: 7(int) Constant 64 39: 7(int) Constant 64
44: 7(int) Constant 1024 44: 7(int) Constant 1024
62: 18(float) Constant 1077936128 62: 18(float) Constant 1077936128
66: 18(float) Constant 1084227584 66: 18(float) Constant 1084227584
72: TypePointer UniformConstant 18(float) 72: TypePointer UniformConstant 18(float)
73(u): 72(ptr) Variable UniformConstant 73(u): 72(ptr) Variable UniformConstant
75: 18(float) Constant 1078774989 75: 18(float) Constant 1078774989
76: TypeBool 76: TypeBool
81: 7(int) Constant 1000000 81: 7(int) Constant 1000000
@ -79,89 +81,89 @@ Linked fragment stage:
102: 7(int) Constant 8 102: 7(int) Constant 8
117: 7(int) Constant 128 117: 7(int) Constant 128
127: TypePointer PrivateGlobal 7(int) 127: TypePointer PrivateGlobal 7(int)
128(tempReturn): 127(ptr) Variable PrivateGlobal 128(tempReturn): 127(ptr) Variable PrivateGlobal
129: 18(float) Constant 1082130432 129: 18(float) Constant 1082130432
130: 18(float) Constant 1065353216 130: 18(float) Constant 1065353216
131: 18(float) Constant 1073741824 131: 18(float) Constant 1073741824
132: 20(fvec3) ConstantComposite 130 131 62 132: 20(fvec3) ConstantComposite 130 131 62
153: TypeVector 18(float) 4 153: TypeVector 18(float) 4
154: TypePointer Output 153(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
85(t): 8(ptr) Variable Function 85(t): 8(ptr) Variable Function
90(f): 89(ptr) Variable Function 90(f): 89(ptr) Variable Function
97(color): 8(ptr) Variable Function 97(color): 8(ptr) Variable Function
103(e): 8(ptr) Variable Function 103(e): 8(ptr) Variable Function
104(param): 8(ptr) Variable Function 104(param): 8(ptr) Variable Function
105(param): 8(ptr) Variable Function 105(param): 8(ptr) Variable Function
106(param): 8(ptr) Variable Function 106(param): 8(ptr) Variable Function
107(param): 8(ptr) Variable Function 107(param): 8(ptr) Variable Function
126(ret): 19(ptr) Variable Function 126(ret): 19(ptr) Variable Function
133(tempArg): 8(ptr) Variable Function 133(tempArg): 8(ptr) Variable Function
134(param): 19(ptr) Variable Function 134(param): 19(ptr) Variable Function
135(param): 21(ptr) Variable Function 135(param): 21(ptr) Variable Function
136(param): 8(ptr) Variable Function 136(param): 8(ptr) Variable Function
139(arg): 19(ptr) Variable Function 139(arg): 19(ptr) Variable Function
Store 85(t) 86 Store 85(t) 86
94: 93(ptr) AccessChain 90(f) 91 94: 93(ptr) AccessChain 90(f) 91
95: 87(ivec4) Load 94 95: 87(ivec4) Load 94
96: 87(ivec4) CompositeInsert 92 95 1 96: 87(ivec4) CompositeInsert 92 95 1
Store 94 96 Store 94 96
99: 7(int) Load 85(t) 99: 7(int) Load 85(t)
100: 7(int) Load 85(t) 100: 7(int) Load 85(t)
101: 7(int) IAdd 99 100 101: 7(int) IAdd 99 100
Store 104(param) 98 Store 104(param) 98
Store 105(param) 101 Store 105(param) 101
108: 93(ptr) AccessChain 90(f) 91 108: 93(ptr) AccessChain 90(f) 91
109: 87(ivec4) Load 108 109: 87(ivec4) Load 108
110: 7(int) CompositeExtract 109 1 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) 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) 112: 7(int) Load 106(param)
Store 103(e) 112 Store 103(e) 112
113: 7(int) Load 107(param) 113: 7(int) Load 107(param)
114: 93(ptr) AccessChain 90(f) 91 114: 93(ptr) AccessChain 90(f) 91
115: 87(ivec4) Load 114 115: 87(ivec4) Load 114
116: 87(ivec4) CompositeInsert 113 115 1 116: 87(ivec4) CompositeInsert 113 115 1
Store 114 116 Store 114 116
Store 97(color) 111 Store 97(color) 111
118: 7(int) Load 103(e) 118: 7(int) Load 103(e)
119: 93(ptr) AccessChain 90(f) 91 119: 93(ptr) AccessChain 90(f) 91
120: 87(ivec4) Load 119 120: 87(ivec4) Load 119
121: 7(int) CompositeExtract 120 1 121: 7(int) CompositeExtract 120 1
122: 7(int) IAdd 118 121 122: 7(int) IAdd 118 121
123: 7(int) IMul 117 122 123: 7(int) IMul 117 122
124: 7(int) Load 97(color) 124: 7(int) Load 97(color)
125: 7(int) IAdd 124 123 125: 7(int) IAdd 124 123
Store 97(color) 125 Store 97(color) 125
Store 134(param) 129 Store 134(param) 129
Store 135(param) 132 Store 135(param) 132
137: 7(int) FunctionCall 26(foo2(f1;vf3;i1;) 134(param) 135(param) 136(param) 137: 7(int) FunctionCall 26(foo2(f1;vf3;i1;) 134(param) 135(param) 136(param)
138: 7(int) Load 136(param) 138: 7(int) Load 136(param)
Store 133(tempArg) 138 Store 133(tempArg) 138
Store 128(tempReturn) 137 Store 128(tempReturn) 137
140: 7(int) Load 133(tempArg) 140: 7(int) Load 133(tempArg)
141: 18(float) ConvertSToF 140 141: 18(float) ConvertSToF 140
Store 139(arg) 141 Store 139(arg) 141
142: 7(int) Load 128(tempReturn) 142: 7(int) Load 128(tempReturn)
143: 18(float) ConvertSToF 142 143: 18(float) ConvertSToF 142
Store 126(ret) 143 Store 126(ret) 143
144: 18(float) Load 126(ret) 144: 18(float) Load 126(ret)
145: 18(float) Load 139(arg) 145: 18(float) Load 139(arg)
146: 18(float) FAdd 144 145 146: 18(float) FAdd 144 145
147: 7(int) ConvertFToS 146 147: 7(int) ConvertFToS 146
148: 7(int) Load 97(color) 148: 7(int) Load 97(color)
149: 7(int) IAdd 148 147 149: 7(int) IAdd 148 147
Store 97(color) 149 Store 97(color) 149
150: 7(int) FunctionCall 29(foo3() 150: 7(int) FunctionCall 29(foo3()
151: 7(int) Load 97(color) 151: 7(int) Load 97(color)
152: 7(int) IAdd 151 150 152: 7(int) IAdd 151 150
Store 97(color) 152 Store 97(color) 152
156: 7(int) Load 97(color) 156: 7(int) Load 97(color)
157: 18(float) ConvertSToF 156 157: 18(float) ConvertSToF 156
158: 153(fvec4) CompositeConstruct 157 157 157 157 158: 153(fvec4) CompositeConstruct 157 157 157 157
Store 155(gl_FragColor) 158 Store 155(gl_FragColor) 158
Branch 6 Branch 6
6: Label 6: Label
Return Return
@ -174,40 +176,40 @@ Linked fragment stage:
14(e): 8(ptr) FunctionParameter 14(e): 8(ptr) FunctionParameter
15(f): 8(ptr) FunctionParameter 15(f): 8(ptr) FunctionParameter
17: Label 17: Label
31(sum): 8(ptr) Variable Function 31(sum): 8(ptr) Variable Function
32: 7(int) Load 10(a) 32: 7(int) Load 10(a)
33: 7(int) IAdd 32 11(b) 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 35: 7(int) IAdd 33 34
36: 7(int) IAdd 35 13(d) 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 38: 7(int) IAdd 36 37
Store 31(sum) 38 Store 31(sum) 38
40: 7(int) Load 10(a) 40: 7(int) Load 10(a)
41: 7(int) IMul 40 39 41: 7(int) IMul 40 39
Store 10(a) 41 Store 10(a) 41
42: 7(int) Load 12(c) 42: 7(int) Load 12(c)
43: 7(int) IMul 42 39 43: 7(int) IMul 42 39
Store 12(c) 43 Store 12(c) 43
Store 14(e) 44 Store 14(e) 44
45: 7(int) Load 15(f) 45: 7(int) Load 15(f)
46: 7(int) IMul 45 39 46: 7(int) IMul 45 39
Store 15(f) 46 Store 15(f) 46
47: 7(int) Load 10(a) 47: 7(int) Load 10(a)
48: 7(int) IMul 39 11(b) 48: 7(int) IMul 39 11(b)
49: 7(int) IAdd 47 48 49: 7(int) IAdd 47 48
50: 7(int) Load 12(c) 50: 7(int) Load 12(c)
51: 7(int) IAdd 49 50 51: 7(int) IAdd 49 50
52: 7(int) IMul 39 13(d) 52: 7(int) IMul 39 13(d)
53: 7(int) IAdd 51 52 53: 7(int) IAdd 51 52
54: 7(int) Load 14(e) 54: 7(int) Load 14(e)
55: 7(int) IAdd 53 54 55: 7(int) IAdd 53 54
56: 7(int) Load 15(f) 56: 7(int) Load 15(f)
57: 7(int) IAdd 55 56 57: 7(int) IAdd 55 56
58: 7(int) Load 31(sum) 58: 7(int) Load 31(sum)
59: 7(int) IAdd 58 57 59: 7(int) IAdd 58 57
Store 31(sum) 59 Store 31(sum) 59
60: 7(int) Load 31(sum) 60: 7(int) Load 31(sum)
ReturnValue 60 ReturnValue 60
FunctionEnd FunctionEnd
26(foo2(f1;vf3;i1;): 7(int) Function None 22 26(foo2(f1;vf3;i1;): 7(int) Function None 22
@ -215,11 +217,11 @@ Linked fragment stage:
24(b): 21(ptr) FunctionParameter 24(b): 21(ptr) FunctionParameter
25(r): 8(ptr) FunctionParameter 25(r): 8(ptr) FunctionParameter
27: Label 27: Label
63: 18(float) Load 23(a) 63: 18(float) Load 23(a)
64: 18(float) FMul 62 63 64: 18(float) FMul 62 63
65: 7(int) ConvertFToS 64 65: 7(int) ConvertFToS 64
Store 25(r) 65 Store 25(r) 65
67: 20(fvec3) Load 24(b) 67: 20(fvec3) Load 24(b)
68: 18(float) CompositeExtract 67 1 68: 18(float) CompositeExtract 67 1
69: 18(float) FMul 66 68 69: 18(float) FMul 66 68
70: 7(int) ConvertFToS 69 70: 7(int) ConvertFToS 69
@ -227,10 +229,10 @@ Linked fragment stage:
FunctionEnd FunctionEnd
29(foo3(): 7(int) Function None 28 29(foo3(): 7(int) Function None 28
30: Label 30: Label
74: 18(float) Load 73(u) 74: 18(float) Load 73(u)
77: 76(bool) FOrdGreaterThan 74 75 77: 76(bool) FOrdGreaterThan 74 75
SelectionMerge 79 None SelectionMerge 79 None
BranchConditional 77 78 79 BranchConditional 77 78 79
78: Label 78: Label
Kill Kill
79: Label 79: Label

26
Test/baseResults/spv.length.frag.out Normal file → Executable file
View File

@ -8,19 +8,21 @@ Linked fragment stage:
// Id's are bound by 34 // Id's are bound by 34
Source GLSL 120 Source GLSL 120
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "t" Name 10 "t"
Name 15 "v" Name 15 "v"
Name 27 "gl_FragColor" Name 27 "gl_FragColor"
Name 33 "u" Name 33 "u"
Decorate 15(v) Smooth Decorate 15(v) Smooth
Decorate 27(gl_FragColor) BuiltIn FragColor Decorate 27(gl_FragColor) BuiltIn FragColor
Decorate 33(u) NoStaticUse Decorate 33(u) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 2 8: TypeVector 7(float) 2
9: TypePointer Function 8(fvec2) 9: TypePointer Function 8(fvec2)
@ -28,30 +30,30 @@ Linked fragment stage:
12: 11(int) Constant 2 12: 11(int) Constant 2
13: TypeArray 8(fvec2) 12 13: TypeArray 8(fvec2) 12
14: TypePointer Input 13 14: TypePointer Input 13
15(v): 14(ptr) Variable Input 15(v): 14(ptr) Variable Input
16: TypeInt 32 1 16: TypeInt 32 1
17: 16(int) Constant 0 17: 16(int) Constant 0
18: TypePointer Input 8(fvec2) 18: TypePointer Input 8(fvec2)
21: 16(int) Constant 1 21: 16(int) Constant 1
25: TypeVector 7(float) 4 25: TypeVector 7(float) 4
26: TypePointer Output 25(fvec4) 26: TypePointer Output 25(fvec4)
27(gl_FragColor): 26(ptr) Variable Output 27(gl_FragColor): 26(ptr) Variable Output
28: 7(float) Constant 1106247680 28: 7(float) Constant 1106247680
29: 25(fvec4) ConstantComposite 28 28 28 28 29: 25(fvec4) ConstantComposite 28 28 28 28
30: 11(int) Constant 3 30: 11(int) Constant 3
31: TypeArray 25(fvec4) 30 31: TypeArray 25(fvec4) 30
32: TypePointer UniformConstant 31 32: TypePointer UniformConstant 31
33(u): 32(ptr) Variable UniformConstant 33(u): 32(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(t): 9(ptr) Variable Function 10(t): 9(ptr) Variable Function
19: 18(ptr) AccessChain 15(v) 17 19: 18(ptr) AccessChain 15(v) 17
20: 8(fvec2) Load 19 20: 8(fvec2) Load 19
22: 18(ptr) AccessChain 15(v) 21 22: 18(ptr) AccessChain 15(v) 21
23: 8(fvec2) Load 22 23: 8(fvec2) Load 22
24: 8(fvec2) FAdd 20 23 24: 8(fvec2) FAdd 20 23
Store 10(t) 24 Store 10(t) 24
Store 27(gl_FragColor) 29 Store 27(gl_FragColor) 29
Branch 6 Branch 6
6: Label 6: Label
Return Return

165
Test/baseResults/spv.localAggregates.frag.out Normal file → Executable file
View File

@ -8,12 +8,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 134 // Id's are bound by 135
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "s1" Name 9 "s1"
MemberName 9(s1) 0 "i" MemberName 9(s1) 0 "i"
@ -40,18 +42,18 @@ Linked fragment stage:
Name 87 "condition" Name 87 "condition"
Name 95 "color" Name 95 "color"
Name 105 "gl_FragColor" Name 105 "gl_FragColor"
Name 124 "sampler" Name 125 "sampler"
Name 130 "foo" Name 131 "foo"
Name 131 "foo2" Name 132 "foo2"
Name 133 "uFloatArray" Name 134 "uFloatArray"
Decorate 41(coord) Smooth Decorate 41(coord) Smooth
Decorate 95(color) Smooth Decorate 95(color) Smooth
Decorate 105(gl_FragColor) BuiltIn FragColor Decorate 105(gl_FragColor) BuiltIn FragColor
Decorate 130(foo) NoStaticUse Decorate 131(foo) NoStaticUse
Decorate 131(foo2) NoStaticUse Decorate 132(foo2) NoStaticUse
Decorate 133(uFloatArray) NoStaticUse Decorate 134(uFloatArray) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypeFloat 32 8: TypeFloat 32
9(s1): TypeStruct 7(int) 8(float) 9(s1): TypeStruct 7(int) 8(float)
@ -60,7 +62,7 @@ Linked fragment stage:
12: TypePointer Function 11(s2) 12: TypePointer Function 11(s2)
14(s3): TypeStruct 11(s2) 7(int) 8(float) 9(s1) 14(s3): TypeStruct 11(s2) 7(int) 8(float) 9(s1)
15: TypePointer UniformConstant 14(s3) 15: TypePointer UniformConstant 14(s3)
16(foo3): 15(ptr) Variable UniformConstant 16(foo3): 15(ptr) Variable UniformConstant
17: 7(int) Constant 0 17: 7(int) Constant 0
18: TypePointer UniformConstant 11(s2) 18: TypePointer UniformConstant 11(s2)
21: TypePointer UniformConstant 7(int) 21: TypePointer UniformConstant 7(int)
@ -76,7 +78,7 @@ Linked fragment stage:
38: 7(int) Constant 4 38: 7(int) Constant 4
39: TypeVector 8(float) 2 39: TypeVector 8(float) 2
40: TypePointer Input 39(fvec2) 40: TypePointer Input 39(fvec2)
41(coord): 40(ptr) Variable Input 41(coord): 40(ptr) Variable Input
45: 33(int) Constant 8 45: 33(int) Constant 8
46: TypeArray 7(int) 45 46: TypeArray 7(int) 45
47: TypePointer Function 46 47: TypePointer Function 46
@ -84,134 +86,135 @@ Linked fragment stage:
68: 7(int) Constant 5 68: 7(int) Constant 5
79: 7(int) Constant 16 79: 7(int) Constant 16
83: 8(float) Constant 0 83: 8(float) Constant 0
87(condition): 21(ptr) Variable UniformConstant 87(condition): 21(ptr) Variable UniformConstant
93: 7(int) Constant 3 93: 7(int) Constant 3
94: TypePointer Input 10(fvec4) 94: TypePointer Input 10(fvec4)
95(color): 94(ptr) Variable Input 95(color): 94(ptr) Variable Input
97: TypePointer Function 10(fvec4) 97: TypePointer Function 10(fvec4)
104: TypePointer Output 10(fvec4) 104: TypePointer Output 10(fvec4)
105(gl_FragColor): 104(ptr) Variable Output 105(gl_FragColor): 104(ptr) Variable Output
122: TypeSampler8(float) 2D filter+texture 122: TypeImage 8(float) 2D sampled format:Unknown
123: TypePointer UniformConstant 122 123: TypeSampledImage 122
124(sampler): 123(ptr) Variable UniformConstant 124: TypePointer UniformConstant 123
129: TypePointer UniformConstant 9(s1) 125(sampler): 124(ptr) Variable UniformConstant
130(foo): 129(ptr) Variable UniformConstant 130: TypePointer UniformConstant 9(s1)
131(foo2): 18(ptr) Variable UniformConstant 131(foo): 130(ptr) Variable UniformConstant
132: TypePointer UniformConstant 35 132(foo2): 18(ptr) Variable UniformConstant
133(uFloatArray): 132(ptr) Variable UniformConstant 133: TypePointer UniformConstant 35
134(uFloatArray): 133(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
13(locals2): 12(ptr) Variable Function 13(locals2): 12(ptr) Variable Function
37(localFArray): 36(ptr) Variable Function 37(localFArray): 36(ptr) Variable Function
48(localIArray): 47(ptr) Variable Function 48(localIArray): 47(ptr) Variable Function
67(x): 51(ptr) Variable Function 67(x): 51(ptr) Variable Function
69(localArray): 36(ptr) Variable Function 69(localArray): 36(ptr) Variable Function
74(i): 51(ptr) Variable Function 74(i): 51(ptr) Variable Function
81(a): 36(ptr) Variable Function 81(a): 36(ptr) Variable Function
19: 18(ptr) AccessChain 16(foo3) 17 19: 18(ptr) AccessChain 16(foo3) 17
20: 11(s2) Load 19 20: 11(s2) Load 19
Store 13(locals2) 20 Store 13(locals2) 20
22: 21(ptr) AccessChain 16(foo3) 17 17 22: 21(ptr) AccessChain 16(foo3) 17 17
23: 7(int) Load 22 23: 7(int) Load 22
25: 24(bool) SGreaterThan 23 17 25: 24(bool) SGreaterThan 23 17
SelectionMerge 27 None SelectionMerge 27 None
BranchConditional 25 26 53 BranchConditional 25 26 53
26: Label 26: Label
32: 31(ptr) AccessChain 13(locals2) 28 29 32: 31(ptr) AccessChain 13(locals2) 28 29
Store 32 30 Store 32 30
42: 39(fvec2) Load 41(coord) 42: 39(fvec2) Load 41(coord)
43: 8(float) CompositeExtract 42 0 43: 8(float) CompositeExtract 42 0
44: 31(ptr) AccessChain 37(localFArray) 38 44: 31(ptr) AccessChain 37(localFArray) 38
Store 44 43 Store 44 43
49: 21(ptr) AccessChain 16(foo3) 17 17 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 52: 51(ptr) AccessChain 48(localIArray) 28
Store 52 50 Store 52 50
Branch 27 Branch 27
53: Label 53: Label
54: 39(fvec2) Load 41(coord) 54: 39(fvec2) Load 41(coord)
55: 8(float) CompositeExtract 54 0 55: 8(float) CompositeExtract 54 0
56: 31(ptr) AccessChain 13(locals2) 28 29 56: 31(ptr) AccessChain 13(locals2) 28 29
Store 56 55 Store 56 55
57: 31(ptr) AccessChain 37(localFArray) 38 57: 31(ptr) AccessChain 37(localFArray) 38
Store 57 30 Store 57 30
58: 51(ptr) AccessChain 48(localIArray) 28 58: 51(ptr) AccessChain 48(localIArray) 28
Store 58 17 Store 58 17
Branch 27 Branch 27
27: Label 27: Label
59: 51(ptr) AccessChain 48(localIArray) 28 59: 51(ptr) AccessChain 48(localIArray) 28
60: 7(int) Load 59 60: 7(int) Load 59
61: 24(bool) IEqual 60 17 61: 24(bool) IEqual 60 17
SelectionMerge 63 None SelectionMerge 63 None
BranchConditional 61 62 63 BranchConditional 61 62 63
62: Label 62: Label
64: 31(ptr) AccessChain 37(localFArray) 38 64: 31(ptr) AccessChain 37(localFArray) 38
65: 8(float) Load 64 65: 8(float) Load 64
66: 8(float) FAdd 65 30 66: 8(float) FAdd 65 30
Store 64 66 Store 64 66
Branch 63 Branch 63
63: Label 63: Label
Store 67(x) 68 Store 67(x) 68
70: 7(int) Load 67(x) 70: 7(int) Load 67(x)
71: 39(fvec2) Load 41(coord) 71: 39(fvec2) Load 41(coord)
72: 8(float) CompositeExtract 71 0 72: 8(float) CompositeExtract 71 0
73: 31(ptr) AccessChain 69(localArray) 70 73: 31(ptr) AccessChain 69(localArray) 70
Store 73 72 Store 73 72
Store 74(i) 17 Store 74(i) 17
Branch 75 Branch 75
75: Label 75: Label
78: 7(int) Load 74(i) 78: 7(int) Load 74(i)
80: 24(bool) SLessThan 78 79 80: 24(bool) SLessThan 78 79
LoopMerge 76 None LoopMerge 76 None
BranchConditional 80 77 76 BranchConditional 80 77 76
77: Label 77: Label
82: 7(int) Load 74(i) 82: 7(int) Load 74(i)
84: 31(ptr) AccessChain 81(a) 82 84: 31(ptr) AccessChain 81(a) 82
Store 84 83 Store 84 83
85: 7(int) Load 74(i) 85: 7(int) Load 74(i)
86: 7(int) IAdd 85 29 86: 7(int) IAdd 85 29
Store 74(i) 86 Store 74(i) 86
Branch 75 Branch 75
76: Label 76: Label
88: 7(int) Load 87(condition) 88: 7(int) Load 87(condition)
89: 24(bool) IEqual 88 29 89: 24(bool) IEqual 88 29
SelectionMerge 91 None SelectionMerge 91 None
BranchConditional 89 90 91 BranchConditional 89 90 91
90: Label 90: Label
92: 35 Load 69(localArray) 92: 35 Load 69(localArray)
Store 81(a) 92 Store 81(a) 92
Branch 91 Branch 91
91: Label 91: Label
96: 10(fvec4) Load 95(color) 96: 10(fvec4) Load 95(color)
98: 97(ptr) AccessChain 13(locals2) 93 98: 97(ptr) AccessChain 13(locals2) 93
Store 98 96 Store 98 96
99: 39(fvec2) Load 41(coord) 99: 39(fvec2) Load 41(coord)
100: 8(float) CompositeExtract 99 1 100: 8(float) CompositeExtract 99 1
101: 97(ptr) AccessChain 13(locals2) 93 101: 97(ptr) AccessChain 13(locals2) 93
102: 10(fvec4) Load 101 102: 10(fvec4) Load 101
103: 10(fvec4) CompositeInsert 100 102 2 103: 10(fvec4) CompositeInsert 100 102 2
Store 101 103 Store 101 103
106: 97(ptr) AccessChain 13(locals2) 93 106: 97(ptr) AccessChain 13(locals2) 93
107: 10(fvec4) Load 106 107: 10(fvec4) Load 106
108: 31(ptr) AccessChain 37(localFArray) 38 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 110: 31(ptr) AccessChain 13(locals2) 28 29
111: 8(float) Load 110 111: 8(float) Load 110
112: 8(float) FAdd 109 111 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 114: 31(ptr) AccessChain 69(localArray) 113
115: 8(float) Load 114 115: 8(float) Load 114
116: 8(float) FAdd 112 115 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 118: 31(ptr) AccessChain 81(a) 117
119: 8(float) Load 118 119: 8(float) Load 118
120: 8(float) FAdd 116 119 120: 8(float) FAdd 116 119
121: 10(fvec4) VectorTimesScalar 107 120 121: 10(fvec4) VectorTimesScalar 107 120
125: 122 Load 124(sampler) 126: 123 Load 125(sampler)
126: 39(fvec2) Load 41(coord) 127: 39(fvec2) Load 41(coord)
127: 10(fvec4) TextureSample 125 126 128: 10(fvec4) ImageSampleImplicitLod 126 127
128: 10(fvec4) FMul 121 127 129: 10(fvec4) FMul 121 128
Store 105(gl_FragColor) 128 Store 105(gl_FragColor) 129
Branch 6 Branch 6
6: Label 6: Label
Return Return

864
Test/baseResults/spv.loops.frag.out Normal file → Executable file

File diff suppressed because it is too large Load Diff

336
Test/baseResults/spv.loopsArtificial.frag.out Normal file → Executable file
View File

@ -10,9 +10,11 @@ Linked fragment stage:
// Id's are bound by 196 // Id's are bound by 196
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 12 "BaseColor" Name 12 "BaseColor"
@ -63,120 +65,120 @@ Linked fragment stage:
Name 191 "d33" Name 191 "d33"
Name 192 "d34" Name 192 "d34"
Name 195 "Count" Name 195 "Count"
Decorate 12(BaseColor) Smooth Decorate 12(BaseColor) Smooth
Decorate 149(gl_FragColor) BuiltIn FragColor Decorate 149(gl_FragColor) BuiltIn FragColor
Decorate 151(bigColor) NoStaticUse Decorate 151(bigColor) NoStaticUse
Decorate 152(bigColor1_1) NoStaticUse Decorate 152(bigColor1_1) NoStaticUse
Decorate 153(bigColor1_2) NoStaticUse Decorate 153(bigColor1_2) NoStaticUse
Decorate 154(bigColor1_3) NoStaticUse Decorate 154(bigColor1_3) NoStaticUse
Decorate 155(bigColor2) NoStaticUse Decorate 155(bigColor2) NoStaticUse
Decorate 156(bigColor3) NoStaticUse Decorate 156(bigColor3) NoStaticUse
Decorate 157(bigColor5) NoStaticUse Decorate 157(bigColor5) NoStaticUse
Decorate 158(bigColor6) NoStaticUse Decorate 158(bigColor6) NoStaticUse
Decorate 159(bigColor7) NoStaticUse Decorate 159(bigColor7) NoStaticUse
Decorate 160(bigColor8) NoStaticUse Decorate 160(bigColor8) NoStaticUse
Decorate 161(d) NoStaticUse Decorate 161(d) NoStaticUse
Decorate 162(d2) NoStaticUse Decorate 162(d2) NoStaticUse
Decorate 163(d3) NoStaticUse Decorate 163(d3) NoStaticUse
Decorate 164(d5) NoStaticUse Decorate 164(d5) NoStaticUse
Decorate 165(d6) NoStaticUse Decorate 165(d6) NoStaticUse
Decorate 166(d7) NoStaticUse Decorate 166(d7) NoStaticUse
Decorate 167(d8) NoStaticUse Decorate 167(d8) NoStaticUse
Decorate 168(d9) NoStaticUse Decorate 168(d9) NoStaticUse
Decorate 169(d10) NoStaticUse Decorate 169(d10) NoStaticUse
Decorate 170(d11) NoStaticUse Decorate 170(d11) NoStaticUse
Decorate 171(d12) NoStaticUse Decorate 171(d12) NoStaticUse
Decorate 172(d14) NoStaticUse Decorate 172(d14) NoStaticUse
Decorate 173(d15) NoStaticUse Decorate 173(d15) NoStaticUse
Decorate 174(d16) NoStaticUse Decorate 174(d16) NoStaticUse
Decorate 175(d17) NoStaticUse Decorate 175(d17) NoStaticUse
Decorate 176(d18) NoStaticUse Decorate 176(d18) NoStaticUse
Decorate 177(d19) NoStaticUse Decorate 177(d19) NoStaticUse
Decorate 178(d20) NoStaticUse Decorate 178(d20) NoStaticUse
Decorate 179(d21) NoStaticUse Decorate 179(d21) NoStaticUse
Decorate 180(d22) NoStaticUse Decorate 180(d22) NoStaticUse
Decorate 181(d23) NoStaticUse Decorate 181(d23) NoStaticUse
Decorate 182(d24) NoStaticUse Decorate 182(d24) NoStaticUse
Decorate 183(d25) NoStaticUse Decorate 183(d25) NoStaticUse
Decorate 184(d26) NoStaticUse Decorate 184(d26) NoStaticUse
Decorate 185(d27) NoStaticUse Decorate 185(d27) NoStaticUse
Decorate 186(d28) NoStaticUse Decorate 186(d28) NoStaticUse
Decorate 187(d29) NoStaticUse Decorate 187(d29) NoStaticUse
Decorate 188(d30) NoStaticUse Decorate 188(d30) NoStaticUse
Decorate 189(d31) NoStaticUse Decorate 189(d31) NoStaticUse
Decorate 190(d32) NoStaticUse Decorate 190(d32) NoStaticUse
Decorate 191(d33) NoStaticUse Decorate 191(d33) NoStaticUse
Decorate 192(d34) NoStaticUse Decorate 192(d34) NoStaticUse
Decorate 195(Count) NoStaticUse Decorate 195(Count) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input 12(BaseColor): 11(ptr) Variable Input
18: TypeBool 18: TypeBool
19: 18(bool) ConstantTrue 19: 18(bool) ConstantTrue
24: TypePointer UniformConstant 7(float) 24: TypePointer UniformConstant 7(float)
25(d4): 24(ptr) Variable UniformConstant 25(d4): 24(ptr) Variable UniformConstant
29: TypePointer UniformConstant 8(fvec4) 29: TypePointer UniformConstant 8(fvec4)
30(bigColor4): 29(ptr) Variable UniformConstant 30(bigColor4): 29(ptr) Variable UniformConstant
40: 7(float) Constant 1073741824 40: 7(float) Constant 1073741824
54: 7(float) Constant 1065353216 54: 7(float) Constant 1065353216
58: 18(bool) ConstantFalse 58: 18(bool) ConstantFalse
84(d13): 24(ptr) Variable UniformConstant 84(d13): 24(ptr) Variable UniformConstant
148: TypePointer Output 8(fvec4) 148: TypePointer Output 8(fvec4)
149(gl_FragColor): 148(ptr) Variable Output 149(gl_FragColor): 148(ptr) Variable Output
151(bigColor): 29(ptr) Variable UniformConstant 151(bigColor): 29(ptr) Variable UniformConstant
152(bigColor1_1): 29(ptr) Variable UniformConstant 152(bigColor1_1): 29(ptr) Variable UniformConstant
153(bigColor1_2): 29(ptr) Variable UniformConstant 153(bigColor1_2): 29(ptr) Variable UniformConstant
154(bigColor1_3): 29(ptr) Variable UniformConstant 154(bigColor1_3): 29(ptr) Variable UniformConstant
155(bigColor2): 29(ptr) Variable UniformConstant 155(bigColor2): 29(ptr) Variable UniformConstant
156(bigColor3): 29(ptr) Variable UniformConstant 156(bigColor3): 29(ptr) Variable UniformConstant
157(bigColor5): 29(ptr) Variable UniformConstant 157(bigColor5): 29(ptr) Variable UniformConstant
158(bigColor6): 29(ptr) Variable UniformConstant 158(bigColor6): 29(ptr) Variable UniformConstant
159(bigColor7): 29(ptr) Variable UniformConstant 159(bigColor7): 29(ptr) Variable UniformConstant
160(bigColor8): 29(ptr) Variable UniformConstant 160(bigColor8): 29(ptr) Variable UniformConstant
161(d): 24(ptr) Variable UniformConstant 161(d): 24(ptr) Variable UniformConstant
162(d2): 24(ptr) Variable UniformConstant 162(d2): 24(ptr) Variable UniformConstant
163(d3): 24(ptr) Variable UniformConstant 163(d3): 24(ptr) Variable UniformConstant
164(d5): 24(ptr) Variable UniformConstant 164(d5): 24(ptr) Variable UniformConstant
165(d6): 24(ptr) Variable UniformConstant 165(d6): 24(ptr) Variable UniformConstant
166(d7): 24(ptr) Variable UniformConstant 166(d7): 24(ptr) Variable UniformConstant
167(d8): 24(ptr) Variable UniformConstant 167(d8): 24(ptr) Variable UniformConstant
168(d9): 24(ptr) Variable UniformConstant 168(d9): 24(ptr) Variable UniformConstant
169(d10): 24(ptr) Variable UniformConstant 169(d10): 24(ptr) Variable UniformConstant
170(d11): 24(ptr) Variable UniformConstant 170(d11): 24(ptr) Variable UniformConstant
171(d12): 24(ptr) Variable UniformConstant 171(d12): 24(ptr) Variable UniformConstant
172(d14): 24(ptr) Variable UniformConstant 172(d14): 24(ptr) Variable UniformConstant
173(d15): 24(ptr) Variable UniformConstant 173(d15): 24(ptr) Variable UniformConstant
174(d16): 24(ptr) Variable UniformConstant 174(d16): 24(ptr) Variable UniformConstant
175(d17): 24(ptr) Variable UniformConstant 175(d17): 24(ptr) Variable UniformConstant
176(d18): 24(ptr) Variable UniformConstant 176(d18): 24(ptr) Variable UniformConstant
177(d19): 24(ptr) Variable UniformConstant 177(d19): 24(ptr) Variable UniformConstant
178(d20): 24(ptr) Variable UniformConstant 178(d20): 24(ptr) Variable UniformConstant
179(d21): 24(ptr) Variable UniformConstant 179(d21): 24(ptr) Variable UniformConstant
180(d22): 24(ptr) Variable UniformConstant 180(d22): 24(ptr) Variable UniformConstant
181(d23): 24(ptr) Variable UniformConstant 181(d23): 24(ptr) Variable UniformConstant
182(d24): 24(ptr) Variable UniformConstant 182(d24): 24(ptr) Variable UniformConstant
183(d25): 24(ptr) Variable UniformConstant 183(d25): 24(ptr) Variable UniformConstant
184(d26): 24(ptr) Variable UniformConstant 184(d26): 24(ptr) Variable UniformConstant
185(d27): 24(ptr) Variable UniformConstant 185(d27): 24(ptr) Variable UniformConstant
186(d28): 24(ptr) Variable UniformConstant 186(d28): 24(ptr) Variable UniformConstant
187(d29): 24(ptr) Variable UniformConstant 187(d29): 24(ptr) Variable UniformConstant
188(d30): 24(ptr) Variable UniformConstant 188(d30): 24(ptr) Variable UniformConstant
189(d31): 24(ptr) Variable UniformConstant 189(d31): 24(ptr) Variable UniformConstant
190(d32): 24(ptr) Variable UniformConstant 190(d32): 24(ptr) Variable UniformConstant
191(d33): 24(ptr) Variable UniformConstant 191(d33): 24(ptr) Variable UniformConstant
192(d34): 24(ptr) Variable UniformConstant 192(d34): 24(ptr) Variable UniformConstant
193: TypeInt 32 1 193: TypeInt 32 1
194: TypePointer UniformConstant 193(int) 194: TypePointer UniformConstant 193(int)
195(Count): 194(ptr) Variable UniformConstant 195(Count): 194(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(color): 9(ptr) Variable Function 10(color): 9(ptr) Variable Function
13: 8(fvec4) Load 12(BaseColor) 13: 8(fvec4) Load 12(BaseColor)
Store 10(color) 13 Store 10(color) 13
Branch 14 Branch 14
14: Label 14: Label
17: 18(bool) Phi 19 5 58 50 58 65 17: 18(bool) Phi 19 5 58 50 58 65
@ -184,173 +186,173 @@ Linked fragment stage:
Branch 20 Branch 20
20: Label 20: Label
SelectionMerge 16 None SelectionMerge 16 None
BranchConditional 17 16 21 BranchConditional 17 16 21
21: Label 21: Label
22: 8(fvec4) Load 10(color) 22: 8(fvec4) Load 10(color)
23: 7(float) CompositeExtract 22 2 23: 7(float) CompositeExtract 22 2
26: 7(float) Load 25(d4) 26: 7(float) Load 25(d4)
27: 18(bool) FOrdLessThan 23 26 27: 18(bool) FOrdLessThan 23 26
SelectionMerge 28 None SelectionMerge 28 None
BranchConditional 27 28 15 BranchConditional 27 28 15
28: Label 28: Label
Branch 16 Branch 16
16: Label 16: Label
31: 8(fvec4) Load 30(bigColor4) 31: 8(fvec4) Load 30(bigColor4)
32: 8(fvec4) Load 10(color) 32: 8(fvec4) Load 10(color)
33: 8(fvec4) FAdd 32 31 33: 8(fvec4) FAdd 32 31
Store 10(color) 33 Store 10(color) 33
34: 8(fvec4) Load 10(color) 34: 8(fvec4) Load 10(color)
35: 7(float) CompositeExtract 34 0 35: 7(float) CompositeExtract 34 0
36: 7(float) Load 25(d4) 36: 7(float) Load 25(d4)
37: 18(bool) FOrdLessThan 35 36 37: 18(bool) FOrdLessThan 35 36
SelectionMerge 39 None SelectionMerge 39 None
BranchConditional 37 38 39 BranchConditional 37 38 39
38: Label 38: Label
41: 8(fvec4) Load 10(color) 41: 8(fvec4) Load 10(color)
42: 7(float) CompositeExtract 41 2 42: 7(float) CompositeExtract 41 2
43: 7(float) FAdd 42 40 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 45: 8(fvec4) CompositeInsert 43 44 2
Store 10(color) 45 Store 10(color) 45
46: 8(fvec4) Load 10(color) 46: 8(fvec4) Load 10(color)
47: 7(float) CompositeExtract 46 2 47: 7(float) CompositeExtract 46 2
48: 7(float) Load 25(d4) 48: 7(float) Load 25(d4)
49: 18(bool) FOrdLessThan 47 48 49: 18(bool) FOrdLessThan 47 48
SelectionMerge 51 None SelectionMerge 51 None
BranchConditional 49 50 51 BranchConditional 49 50 51
50: Label 50: Label
52: 8(fvec4) Load 10(color) 52: 8(fvec4) Load 10(color)
53: 7(float) CompositeExtract 52 0 53: 7(float) CompositeExtract 52 0
55: 7(float) FAdd 53 54 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 57: 8(fvec4) CompositeInsert 55 56 0
Store 10(color) 57 Store 10(color) 57
Branch 14 Branch 14
51: Label 51: Label
Branch 39 Branch 39
39: Label 39: Label
60: 8(fvec4) Load 10(color) 60: 8(fvec4) Load 10(color)
61: 7(float) CompositeExtract 60 1 61: 7(float) CompositeExtract 60 1
62: 7(float) Load 25(d4) 62: 7(float) Load 25(d4)
63: 18(bool) FOrdLessThan 61 62 63: 18(bool) FOrdLessThan 61 62
SelectionMerge 65 None SelectionMerge 65 None
BranchConditional 63 64 72 BranchConditional 63 64 72
64: Label 64: Label
66: 7(float) Load 25(d4) 66: 7(float) Load 25(d4)
67: 8(fvec4) Load 10(color) 67: 8(fvec4) Load 10(color)
68: 7(float) CompositeExtract 67 1 68: 7(float) CompositeExtract 67 1
69: 7(float) FAdd 68 66 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 71: 8(fvec4) CompositeInsert 69 70 1
Store 10(color) 71 Store 10(color) 71
Branch 65 Branch 65
72: Label 72: Label
73: 7(float) Load 25(d4) 73: 7(float) Load 25(d4)
74: 8(fvec4) Load 10(color) 74: 8(fvec4) Load 10(color)
75: 7(float) CompositeExtract 74 0 75: 7(float) CompositeExtract 74 0
76: 7(float) FAdd 75 73 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 78: 8(fvec4) CompositeInsert 76 77 0
Store 10(color) 78 Store 10(color) 78
Branch 65 Branch 65
65: Label 65: Label
Branch 14 Branch 14
15: Label 15: Label
Branch 79 Branch 79
79: Label 79: Label
82: 8(fvec4) Load 10(color) 82: 8(fvec4) Load 10(color)
83: 7(float) CompositeExtract 82 3 83: 7(float) CompositeExtract 82 3
85: 7(float) Load 84(d13) 85: 7(float) Load 84(d13)
86: 18(bool) FOrdLessThan 83 85 86: 18(bool) FOrdLessThan 83 85
LoopMerge 80 None LoopMerge 80 None
BranchConditional 86 81 80 BranchConditional 86 81 80
81: Label 81: Label
87: 8(fvec4) Load 10(color) 87: 8(fvec4) Load 10(color)
88: 7(float) CompositeExtract 87 2 88: 7(float) CompositeExtract 87 2
89: 7(float) Load 84(d13) 89: 7(float) Load 84(d13)
90: 18(bool) FOrdLessThan 88 89 90: 18(bool) FOrdLessThan 88 89
SelectionMerge 92 None SelectionMerge 92 None
BranchConditional 90 91 96 BranchConditional 90 91 96
91: Label 91: Label
93: 8(fvec4) Load 10(color) 93: 8(fvec4) Load 10(color)
94: 8(fvec4) CompositeConstruct 54 54 54 54 94: 8(fvec4) CompositeConstruct 54 54 54 54
95: 8(fvec4) FAdd 93 94 95: 8(fvec4) FAdd 93 94
Store 10(color) 95 Store 10(color) 95
Branch 92 Branch 92
96: Label 96: Label
97: 8(fvec4) Load 10(color) 97: 8(fvec4) Load 10(color)
98: 8(fvec4) CompositeConstruct 54 54 54 54 98: 8(fvec4) CompositeConstruct 54 54 54 54
99: 8(fvec4) FSub 97 98 99: 8(fvec4) FSub 97 98
Store 10(color) 99 Store 10(color) 99
Branch 92 Branch 92
92: Label 92: Label
100: 8(fvec4) Load 30(bigColor4) 100: 8(fvec4) Load 30(bigColor4)
101: 8(fvec4) Load 10(color) 101: 8(fvec4) Load 10(color)
102: 8(fvec4) FAdd 101 100 102: 8(fvec4) FAdd 101 100
Store 10(color) 102 Store 10(color) 102
103: 8(fvec4) Load 10(color) 103: 8(fvec4) Load 10(color)
104: 7(float) CompositeExtract 103 0 104: 7(float) CompositeExtract 103 0
105: 7(float) Load 25(d4) 105: 7(float) Load 25(d4)
106: 18(bool) FOrdLessThan 104 105 106: 18(bool) FOrdLessThan 104 105
SelectionMerge 108 None SelectionMerge 108 None
BranchConditional 106 107 108 BranchConditional 106 107 108
107: Label 107: Label
109: 8(fvec4) Load 10(color) 109: 8(fvec4) Load 10(color)
110: 7(float) CompositeExtract 109 2 110: 7(float) CompositeExtract 109 2
111: 7(float) FAdd 110 40 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 113: 8(fvec4) CompositeInsert 111 112 2
Store 10(color) 113 Store 10(color) 113
114: 8(fvec4) Load 10(color) 114: 8(fvec4) Load 10(color)
115: 7(float) CompositeExtract 114 2 115: 7(float) CompositeExtract 114 2
116: 7(float) Load 25(d4) 116: 7(float) Load 25(d4)
117: 18(bool) FOrdLessThan 115 116 117: 18(bool) FOrdLessThan 115 116
SelectionMerge 119 None SelectionMerge 119 None
BranchConditional 117 118 119 BranchConditional 117 118 119
118: Label 118: Label
120: 8(fvec4) Load 10(color) 120: 8(fvec4) Load 10(color)
121: 7(float) CompositeExtract 120 0 121: 7(float) CompositeExtract 120 0
122: 7(float) FAdd 121 54 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 124: 8(fvec4) CompositeInsert 122 123 0
Store 10(color) 124 Store 10(color) 124
Branch 79 Branch 79
119: Label 119: Label
Branch 108 Branch 108
108: Label 108: Label
126: 8(fvec4) Load 10(color) 126: 8(fvec4) Load 10(color)
127: 7(float) CompositeExtract 126 1 127: 7(float) CompositeExtract 126 1
128: 7(float) Load 25(d4) 128: 7(float) Load 25(d4)
129: 18(bool) FOrdLessThan 127 128 129: 18(bool) FOrdLessThan 127 128
SelectionMerge 131 None SelectionMerge 131 None
BranchConditional 129 130 138 BranchConditional 129 130 138
130: Label 130: Label
132: 7(float) Load 25(d4) 132: 7(float) Load 25(d4)
133: 8(fvec4) Load 10(color) 133: 8(fvec4) Load 10(color)
134: 7(float) CompositeExtract 133 1 134: 7(float) CompositeExtract 133 1
135: 7(float) FAdd 134 132 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 137: 8(fvec4) CompositeInsert 135 136 1
Store 10(color) 137 Store 10(color) 137
Branch 131 Branch 131
138: Label 138: Label
139: 7(float) Load 25(d4) 139: 7(float) Load 25(d4)
140: 8(fvec4) Load 10(color) 140: 8(fvec4) Load 10(color)
141: 7(float) CompositeExtract 140 0 141: 7(float) CompositeExtract 140 0
142: 7(float) FAdd 141 139 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 144: 8(fvec4) CompositeInsert 142 143 0
Store 10(color) 144 Store 10(color) 144
Branch 131 Branch 131
131: Label 131: Label
Branch 79 Branch 79
80: Label 80: Label
145: 8(fvec4) Load 10(color) 145: 8(fvec4) Load 10(color)
146: 8(fvec4) CompositeConstruct 54 54 54 54 146: 8(fvec4) CompositeConstruct 54 54 54 54
147: 8(fvec4) FAdd 145 146 147: 8(fvec4) FAdd 145 146
Store 10(color) 147 Store 10(color) 147
150: 8(fvec4) Load 10(color) 150: 8(fvec4) Load 10(color)
Store 149(gl_FragColor) 150 Store 149(gl_FragColor) 150
Branch 6 Branch 6
6: Label 6: Label
Return Return

61
Test/baseResults/spv.matFun.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 94 // Id's are bound by 94
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 15 "xf(mf33;vf3;" Name 15 "xf(mf33;vf3;"
Name 13 "m" Name 13 "m"
@ -32,9 +33,9 @@ Linked vertex stage:
Name 93 "gl_VertexID" Name 93 "gl_VertexID"
Decorate 70(gl_Position) BuiltIn Position Decorate 70(gl_Position) BuiltIn Position
Decorate 93(gl_VertexID) BuiltIn VertexId Decorate 93(gl_VertexID) BuiltIn VertexId
Decorate 93(gl_VertexID) NoStaticUse Decorate 93(gl_VertexID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 3 8: TypeVector 7(float) 3
9: TypeMatrix 8(fvec3) 3 9: TypeMatrix 8(fvec3) 3
@ -54,37 +55,37 @@ Linked vertex stage:
47: 7(float) Constant 1065353216 47: 7(float) Constant 1065353216
48: 7(float) Constant 0 48: 7(float) Constant 0
69: TypePointer Output 17(fvec4) 69: TypePointer Output 17(fvec4)
70(gl_Position): 69(ptr) Variable Output 70(gl_Position): 69(ptr) Variable Output
71: TypePointer UniformConstant 18 71: TypePointer UniformConstant 18
72(m4): 71(ptr) Variable UniformConstant 72(m4): 71(ptr) Variable UniformConstant
73: TypePointer Input 8(fvec3) 73: TypePointer Input 8(fvec3)
74(v3): 73(ptr) Variable Input 74(v3): 73(ptr) Variable Input
80: TypePointer UniformConstant 9 80: TypePointer UniformConstant 9
81(m3): 80(ptr) Variable UniformConstant 81(m3): 80(ptr) Variable UniformConstant
92: TypePointer Input 33(int) 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 4(main): 2 Function None 3
5: Label 5: Label
75(param): 19(ptr) Variable Function 75(param): 19(ptr) Variable Function
77(param): 11(ptr) Variable Function 77(param): 11(ptr) Variable Function
82(param): 10(ptr) Variable Function 82(param): 10(ptr) Variable Function
84(param): 11(ptr) Variable Function 84(param): 11(ptr) Variable Function
76: 18 Load 72(m4) 76: 18 Load 72(m4)
Store 75(param) 76 Store 75(param) 76
78: 8(fvec3) Load 74(v3) 78: 8(fvec3) Load 74(v3)
Store 77(param) 78 Store 77(param) 78
79: 8(fvec3) FunctionCall 27(mxv(mf44;vf3;) 75(param) 77(param) 79: 8(fvec3) FunctionCall 27(mxv(mf44;vf3;) 75(param) 77(param)
83: 9 Load 81(m3) 83: 9 Load 81(m3)
Store 82(param) 83 Store 82(param) 83
85: 8(fvec3) Load 74(v3) 85: 8(fvec3) Load 74(v3)
Store 84(param) 85 Store 84(param) 85
86: 8(fvec3) FunctionCall 15(xf(mf33;vf3;) 82(param) 84(param) 86: 8(fvec3) FunctionCall 15(xf(mf33;vf3;) 82(param) 84(param)
87: 8(fvec3) FAdd 79 86 87: 8(fvec3) FAdd 79 86
88: 7(float) CompositeExtract 87 0 88: 7(float) CompositeExtract 87 0
89: 7(float) CompositeExtract 87 1 89: 7(float) CompositeExtract 87 1
90: 7(float) CompositeExtract 87 2 90: 7(float) CompositeExtract 87 2
91: 17(fvec4) CompositeConstruct 88 89 90 47 91: 17(fvec4) CompositeConstruct 88 89 90 47
Store 70(gl_Position) 91 Store 70(gl_Position) 91
Branch 6 Branch 6
6: Label 6: Label
Return Return
@ -93,8 +94,8 @@ Linked vertex stage:
13(m): 10(ptr) FunctionParameter 13(m): 10(ptr) FunctionParameter
14(v): 11(ptr) FunctionParameter 14(v): 11(ptr) FunctionParameter
16: Label 16: Label
29: 8(fvec3) Load 14(v) 29: 8(fvec3) Load 14(v)
30: 9 Load 13(m) 30: 9 Load 13(m)
31: 8(fvec3) VectorTimesMatrix 29 30 31: 8(fvec3) VectorTimesMatrix 29 30
ReturnValue 31 ReturnValue 31
FunctionEnd FunctionEnd
@ -102,13 +103,13 @@ Linked vertex stage:
21(m): 19(ptr) FunctionParameter 21(m): 19(ptr) FunctionParameter
23: Label 23: Label
36: 35(ptr) AccessChain 21(m) 34 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 38: 8(fvec3) VectorShuffle 37 37 0 1 2
40: 35(ptr) AccessChain 21(m) 39 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 42: 8(fvec3) VectorShuffle 41 41 0 1 2
44: 35(ptr) AccessChain 21(m) 43 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 46: 8(fvec3) VectorShuffle 45 45 0 1 2
49: 7(float) CompositeExtract 38 0 49: 7(float) CompositeExtract 38 0
50: 7(float) CompositeExtract 38 1 50: 7(float) CompositeExtract 38 1
@ -129,10 +130,10 @@ Linked vertex stage:
25(m4): 19(ptr) FunctionParameter 25(m4): 19(ptr) FunctionParameter
26(v): 11(ptr) FunctionParameter 26(v): 11(ptr) FunctionParameter
28: Label 28: Label
64(param): 19(ptr) Variable Function 64(param): 19(ptr) Variable Function
63: 8(fvec3) Load 26(v) 63: 8(fvec3) Load 26(v)
65: 18 Load 25(m4) 65: 18 Load 25(m4)
Store 64(param) 65 Store 64(param) 65
66: 9 FunctionCall 22(Mat3(mf44;) 64(param) 66: 9 FunctionCall 22(Mat3(mf44;) 64(param)
67: 8(fvec3) VectorTimesMatrix 63 66 67: 8(fvec3) VectorTimesMatrix 63 66
ReturnValue 67 ReturnValue 67

47
Test/baseResults/spv.nonSquare.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 91 // Id's are bound by 91
Source GLSL 120 Source GLSL 120
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 10 "a" Name 10 "a"
Name 13 "v3" Name 13 "v3"
@ -20,25 +21,25 @@ Linked vertex stage:
Name 29 "gl_Position" Name 29 "gl_Position"
Name 56 "v4" Name 56 "v4"
Decorate 29(gl_Position) BuiltIn Position Decorate 29(gl_Position) BuiltIn Position
Decorate 75 NoStaticUse Decorate 75 NoStaticUse
Decorate 79 NoStaticUse Decorate 79 NoStaticUse
Decorate 90 NoStaticUse Decorate 90 NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 2 8: TypeVector 7(float) 2
9: TypePointer Function 8(fvec2) 9: TypePointer Function 8(fvec2)
11: TypeVector 7(float) 3 11: TypeVector 7(float) 3
12: TypePointer Input 11(fvec3) 12: TypePointer Input 11(fvec3)
13(v3): 12(ptr) Variable Input 13(v3): 12(ptr) Variable Input
15: TypeMatrix 11(fvec3) 2 15: TypeMatrix 11(fvec3) 2
16: TypePointer Function 15 16: TypePointer Function 15
21: TypeMatrix 8(fvec2) 3 21: TypeMatrix 8(fvec2) 3
22: TypePointer UniformConstant 21 22: TypePointer UniformConstant 21
23(m32): 22(ptr) Variable UniformConstant 23(m32): 22(ptr) Variable UniformConstant
27: TypeVector 7(float) 4 27: TypeVector 7(float) 4
28: TypePointer Output 27(fvec4) 28: TypePointer Output 27(fvec4)
29(gl_Position): 28(ptr) Variable Output 29(gl_Position): 28(ptr) Variable Output
32: TypeMatrix 11(fvec3) 3 32: TypeMatrix 11(fvec3) 3
36: 7(float) Constant 0 36: 7(float) Constant 0
41: TypeMatrix 27(fvec4) 4 41: TypeMatrix 27(fvec4) 4
@ -56,7 +57,7 @@ Linked vertex stage:
53: 27(fvec4) ConstantComposite 51 52 36 36 53: 27(fvec4) ConstantComposite 51 52 36 36
54: 41 ConstantComposite 44 47 50 53 54: 41 ConstantComposite 44 47 50 53
55: TypePointer Input 27(fvec4) 55: TypePointer Input 27(fvec4)
56(v4): 55(ptr) Variable Input 56(v4): 55(ptr) Variable Input
60: 7(float) Constant 1112014848 60: 7(float) Constant 1112014848
61: 7(float) Constant 1121714176 61: 7(float) Constant 1121714176
62: 7(float) Constant 1126825984 62: 7(float) Constant 1126825984
@ -87,33 +88,33 @@ Linked vertex stage:
90: 80 ConstantComposite 83 85 86 89 90: 80 ConstantComposite 83 85 86 89
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(a): 9(ptr) Variable Function 10(a): 9(ptr) Variable Function
17(m23): 16(ptr) Variable Function 17(m23): 16(ptr) Variable Function
20(b): 9(ptr) Variable Function 20(b): 9(ptr) Variable Function
14: 11(fvec3) Load 13(v3) 14: 11(fvec3) Load 13(v3)
18: 15 Load 17(m23) 18: 15 Load 17(m23)
19: 8(fvec2) VectorTimesMatrix 14 18 19: 8(fvec2) VectorTimesMatrix 14 18
Store 10(a) 19 Store 10(a) 19
24: 21 Load 23(m32) 24: 21 Load 23(m32)
25: 11(fvec3) Load 13(v3) 25: 11(fvec3) Load 13(v3)
26: 8(fvec2) MatrixTimesVector 24 25 26: 8(fvec2) MatrixTimesVector 24 25
Store 20(b) 26 Store 20(b) 26
30: 15 Load 17(m23) 30: 15 Load 17(m23)
31: 21 Load 23(m32) 31: 21 Load 23(m32)
33: 32 MatrixTimesMatrix 30 31 33: 32 MatrixTimesMatrix 30 31
34: 11(fvec3) Load 13(v3) 34: 11(fvec3) Load 13(v3)
35: 11(fvec3) MatrixTimesVector 33 34 35: 11(fvec3) MatrixTimesVector 33 34
37: 7(float) CompositeExtract 35 0 37: 7(float) CompositeExtract 35 0
38: 7(float) CompositeExtract 35 1 38: 7(float) CompositeExtract 35 1
39: 7(float) CompositeExtract 35 2 39: 7(float) CompositeExtract 35 2
40: 27(fvec4) CompositeConstruct 37 38 39 36 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 58: 27(fvec4) MatrixTimesVector 54 57
59: 27(fvec4) FAdd 40 58 59: 27(fvec4) FAdd 40 58
65: 27(fvec4) FAdd 59 64 65: 27(fvec4) FAdd 59 64
69: 27(fvec4) FAdd 65 68 69: 27(fvec4) FAdd 65 68
74: 27(fvec4) FAdd 69 73 74: 27(fvec4) FAdd 69 73
Store 29(gl_Position) 74 Store 29(gl_Position) 74
Branch 6 Branch 6
6: Label 6: Label
Return Return

144
Test/baseResults/spv.precision.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 111 // Id's are bound by 111
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 13 "foo(vf3;" Name 13 "foo(vf3;"
Name 12 "mv3" Name 12 "mv3"
@ -31,24 +33,20 @@ Linked fragment stage:
Name 72 "mediumfout" Name 72 "mediumfout"
Name 101 "ub2" Name 101 "ub2"
Name 102 "param" Name 102 "param"
Decorate 24(highfin) PrecisionHigh Decorate 24(highfin) Smooth
Decorate 24(highfin) Smooth Decorate 37(sum) RelaxedPrecision
Decorate 37(sum) PrecisionLow Decorate 39(uniform_medium) RelaxedPrecision
Decorate 39(uniform_medium) PrecisionMedium Decorate 47(uniform_low) RelaxedPrecision
Decorate 41(uniform_high) PrecisionHigh Decorate 52(arg1) RelaxedPrecision
Decorate 47(uniform_low) PrecisionLow Decorate 54(arg2) RelaxedPrecision
Decorate 52(arg1) PrecisionLow Decorate 56(d) RelaxedPrecision
Decorate 54(arg2) PrecisionMedium Decorate 58(lowfin) RelaxedPrecision
Decorate 56(d) PrecisionLow Decorate 58(lowfin) Smooth
Decorate 58(lowfin) PrecisionLow Decorate 60(mediumfin) RelaxedPrecision
Decorate 58(lowfin) Smooth Decorate 60(mediumfin) Smooth
Decorate 60(mediumfin) PrecisionMedium Decorate 72(mediumfout) RelaxedPrecision
Decorate 60(mediumfin) Smooth
Decorate 64(global_highp) PrecisionHigh
Decorate 68(local_highp) PrecisionHigh
Decorate 72(mediumfout) PrecisionMedium
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 3 8: TypeVector 7(float) 3
9: TypePointer Function 8(fvec3) 9: TypePointer Function 8(fvec3)
@ -60,102 +58,102 @@ Linked fragment stage:
18: TypeFunction 15(bool) 17(ptr) 18: TypeFunction 15(bool) 17(ptr)
22: TypeVector 7(float) 4 22: TypeVector 7(float) 4
23: TypePointer Input 22(fvec4) 23: TypePointer Input 22(fvec4)
24(highfin): 23(ptr) Variable Input 24(highfin): 23(ptr) Variable Input
29: 15(bool) ConstantFalse 29: 15(bool) ConstantFalse
30: 15(bool) ConstantTrue 30: 15(bool) ConstantTrue
31: 16(bvec2) ConstantComposite 29 30 31: 16(bvec2) ConstantComposite 29 30
35: TypeInt 32 1 35: TypeInt 32 1
36: TypePointer Function 35(int) 36: TypePointer Function 35(int)
38: TypePointer UniformConstant 35(int) 38: TypePointer UniformConstant 35(int)
39(uniform_medium): 38(ptr) Variable UniformConstant 39(uniform_medium): 38(ptr) Variable UniformConstant
41(uniform_high): 38(ptr) Variable UniformConstant 41(uniform_high): 38(ptr) Variable UniformConstant
47(uniform_low): 38(ptr) Variable UniformConstant 47(uniform_low): 38(ptr) Variable UniformConstant
51: TypePointer Function 7(float) 51: TypePointer Function 7(float)
53: 7(float) Constant 1078774989 53: 7(float) Constant 1078774989
55: 7(float) Constant 1232730691 55: 7(float) Constant 1232730691
57: TypePointer Input 7(float) 57: TypePointer Input 7(float)
58(lowfin): 57(ptr) Variable Input 58(lowfin): 57(ptr) Variable Input
60(mediumfin): 57(ptr) Variable Input 60(mediumfin): 57(ptr) Variable Input
63: TypePointer PrivateGlobal 7(float) 63: TypePointer PrivateGlobal 7(float)
64(global_highp): 63(ptr) Variable PrivateGlobal 64(global_highp): 63(ptr) Variable PrivateGlobal
67: TypePointer Function 22(fvec4) 67: TypePointer Function 22(fvec4)
71: TypePointer Output 22(fvec4) 71: TypePointer Output 22(fvec4)
72(mediumfout): 71(ptr) Variable Output 72(mediumfout): 71(ptr) Variable Output
81: 35(int) Constant 4 81: 35(int) Constant 4
83: TypeVector 35(int) 2 83: TypeVector 35(int) 2
100: TypePointer UniformConstant 16(bvec2) 100: TypePointer UniformConstant 16(bvec2)
101(ub2): 100(ptr) Variable UniformConstant 101(ub2): 100(ptr) Variable UniformConstant
108: 7(float) Constant 1065353216 108: 7(float) Constant 1065353216
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
37(sum): 36(ptr) Variable Function 37(sum): 36(ptr) Variable Function
52(arg1): 51(ptr) Variable Function 52(arg1): 51(ptr) Variable Function
54(arg2): 51(ptr) Variable Function 54(arg2): 51(ptr) Variable Function
56(d): 51(ptr) Variable Function 56(d): 51(ptr) Variable Function
68(local_highp): 67(ptr) Variable Function 68(local_highp): 67(ptr) Variable Function
102(param): 17(ptr) Variable Function 102(param): 17(ptr) Variable Function
40: 35(int) Load 39(uniform_medium) 40: 35(int) Load 39(uniform_medium)
42: 35(int) Load 41(uniform_high) 42: 35(int) Load 41(uniform_high)
43: 35(int) IAdd 40 42 43: 35(int) IAdd 40 42
Store 37(sum) 43 Store 37(sum) 43
44: 35(int) Load 41(uniform_high) 44: 35(int) Load 41(uniform_high)
45: 35(int) Load 37(sum) 45: 35(int) Load 37(sum)
46: 35(int) IAdd 45 44 46: 35(int) IAdd 45 44
Store 37(sum) 46 Store 37(sum) 46
48: 35(int) Load 47(uniform_low) 48: 35(int) Load 47(uniform_low)
49: 35(int) Load 37(sum) 49: 35(int) Load 37(sum)
50: 35(int) IAdd 49 48 50: 35(int) IAdd 49 48
Store 37(sum) 50 Store 37(sum) 50
Store 52(arg1) 53 Store 52(arg1) 53
Store 54(arg2) 55 Store 54(arg2) 55
59: 7(float) Load 58(lowfin) 59: 7(float) Load 58(lowfin)
61: 7(float) Load 60(mediumfin) 61: 7(float) Load 60(mediumfin)
62: 7(float) ExtInst 1(GLSL.std.450) 59(distance) 59 61 62: 7(float) ExtInst 1(GLSL.std.450) 66(Distance) 59 61
Store 56(d) 62 Store 56(d) 62
65: 22(fvec4) Load 24(highfin) 65: 22(fvec4) Load 24(highfin)
66: 7(float) ExtInst 1(GLSL.std.450) 58(length) 65 66: 7(float) ExtInst 1(GLSL.std.450) 65(Length) 65
Store 64(global_highp) 66 Store 64(global_highp) 66
69: 7(float) Load 64(global_highp) 69: 7(float) Load 64(global_highp)
70: 22(fvec4) CompositeConstruct 69 69 69 69 70: 22(fvec4) CompositeConstruct 69 69 69 69
Store 68(local_highp) 70 Store 68(local_highp) 70
73: 7(float) Load 56(d) 73: 7(float) Load 56(d)
74: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 73 74: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 73
75: 22(fvec4) CompositeConstruct 74 74 74 74 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 77: 22(fvec4) CompositeConstruct 76 76 76 76
78: 22(fvec4) FAdd 75 77 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 80: 22(fvec4) FAdd 78 79
Store 72(mediumfout) 80 Store 72(mediumfout) 80
82: 35(int) Load 47(uniform_low) 82: 35(int) Load 47(uniform_low)
84: 83(ivec2) CompositeConstruct 82 82 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 86: 83(ivec2) CompositeConstruct 85 85
87: 83(ivec2) IMul 84 86 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 89: 83(ivec2) CompositeConstruct 88 88
90: 83(ivec2) IAdd 87 89 90: 83(ivec2) IAdd 87 89
91: 35(int) CompositeExtract 90 0 91: 35(int) CompositeExtract 90 0
92: 35(int) IAdd 81 91 92: 35(int) IAdd 81 91
93: 35(int) Load 37(sum) 93: 35(int) Load 37(sum)
94: 35(int) IAdd 93 92 94: 35(int) IAdd 93 92
Store 37(sum) 94 Store 37(sum) 94
95: 35(int) Load 37(sum) 95: 35(int) Load 37(sum)
96: 7(float) ConvertSToF 95 96: 7(float) ConvertSToF 95
97: 22(fvec4) CompositeConstruct 96 96 96 96 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 99: 22(fvec4) FAdd 98 97
Store 72(mediumfout) 99 Store 72(mediumfout) 99
103: 16(bvec2) Load 101(ub2) 103: 16(bvec2) Load 101(ub2)
Store 102(param) 103 Store 102(param) 103
104: 15(bool) FunctionCall 20(boolfun(vb2;) 102(param) 104: 15(bool) FunctionCall 20(boolfun(vb2;) 102(param)
SelectionMerge 106 None SelectionMerge 106 None
BranchConditional 104 105 106 BranchConditional 104 105 106
105: Label 105: Label
107: 22(fvec4) Load 72(mediumfout) 107: 22(fvec4) Load 72(mediumfout)
109: 22(fvec4) CompositeConstruct 108 108 108 108 109: 22(fvec4) CompositeConstruct 108 108 108 108
110: 22(fvec4) FAdd 107 109 110: 22(fvec4) FAdd 107 109
Store 72(mediumfout) 110 Store 72(mediumfout) 110
Branch 106 Branch 106
106: Label 106: Label
Branch 6 Branch 6
@ -165,14 +163,14 @@ Linked fragment stage:
13(foo(vf3;): 10(fvec2) Function None 11 13(foo(vf3;): 10(fvec2) Function None 11
12(mv3): 9(ptr) FunctionParameter 12(mv3): 9(ptr) FunctionParameter
14: Label 14: Label
25: 22(fvec4) Load 24(highfin) 25: 22(fvec4) Load 24(highfin)
26: 10(fvec2) VectorShuffle 25 25 0 1 26: 10(fvec2) VectorShuffle 25 25 0 1
ReturnValue 26 ReturnValue 26
FunctionEnd FunctionEnd
20(boolfun(vb2;): 15(bool) Function None 18 20(boolfun(vb2;): 15(bool) Function None 18
19(bv2): 17(ptr) FunctionParameter 19(bv2): 17(ptr) FunctionParameter
21: Label 21: Label
28: 16(bvec2) Load 19(bv2) 28: 16(bvec2) Load 19(bv2)
32: 16(bvec2) IEqual 28 31 32: 16(bvec2) IEqual 28 31
33: 15(bool) All 32 33: 15(bool) All 32
ReturnValue 33 ReturnValue 33

130
Test/baseResults/spv.prepost.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 97 // Id's are bound by 97
Source GLSL 140 Source GLSL 140
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "index" Name 9 "index"
Name 15 "s" Name 15 "s"
@ -24,7 +26,7 @@ Linked fragment stage:
Name 93 "gl_FragColor" Name 93 "gl_FragColor"
Decorate 93(gl_FragColor) BuiltIn FragColor Decorate 93(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 5 10: 7(int) Constant 5
@ -46,104 +48,104 @@ Linked fragment stage:
76: 11(float) Constant 1082130432 76: 11(float) Constant 1082130432
77: 72(fvec4) ConstantComposite 29 20 75 76 77: 72(fvec4) ConstantComposite 29 20 75 76
92: TypePointer Output 72(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
9(index): 8(ptr) Variable Function 9(index): 8(ptr) Variable Function
17(str): 16(ptr) Variable Function 17(str): 16(ptr) Variable Function
23(t): 21(ptr) Variable Function 23(t): 21(ptr) Variable Function
51(x): 21(ptr) Variable Function 51(x): 21(ptr) Variable Function
62(y): 21(ptr) Variable Function 62(y): 21(ptr) Variable Function
67(z): 21(ptr) Variable Function 67(z): 21(ptr) Variable Function
74(v): 73(ptr) Variable Function 74(v): 73(ptr) Variable Function
Store 9(index) 10 Store 9(index) 10
22: 21(ptr) AccessChain 17(str) 18 19 22: 21(ptr) AccessChain 17(str) 18 19
Store 22 20 Store 22 20
24: 7(int) Load 9(index) 24: 7(int) Load 9(index)
26: 7(int) ISub 24 25 26: 7(int) ISub 24 25
Store 9(index) 26 Store 9(index) 26
27: 21(ptr) AccessChain 17(str) 18 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 30: 11(float) FAdd 28 29
Store 27 30 Store 27 30
Store 23(t) 30 Store 23(t) 30
31: 11(float) Load 23(t) 31: 11(float) Load 23(t)
32: 21(ptr) AccessChain 17(str) 18 19 32: 21(ptr) AccessChain 17(str) 18 19
33: 11(float) Load 32 33: 11(float) Load 32
34: 11(float) FAdd 33 31 34: 11(float) FAdd 33 31
35: 21(ptr) AccessChain 17(str) 18 19 35: 21(ptr) AccessChain 17(str) 18 19
Store 35 34 Store 35 34
36: 21(ptr) AccessChain 17(str) 18 19 36: 21(ptr) AccessChain 17(str) 18 19
37: 11(float) Load 36 37: 11(float) Load 36
38: 11(float) FSub 37 29 38: 11(float) FSub 37 29
Store 36 38 Store 36 38
Store 23(t) 37 Store 23(t) 37
39: 7(int) Load 9(index) 39: 7(int) Load 9(index)
40: 7(int) IAdd 39 25 40: 7(int) IAdd 39 25
Store 9(index) 40 Store 9(index) 40
41: 11(float) Load 23(t) 41: 11(float) Load 23(t)
42: 21(ptr) AccessChain 17(str) 18 39 42: 21(ptr) AccessChain 17(str) 18 39
43: 11(float) Load 42 43: 11(float) Load 42
44: 11(float) FAdd 43 41 44: 11(float) FAdd 43 41
45: 21(ptr) AccessChain 17(str) 18 39 45: 21(ptr) AccessChain 17(str) 18 39
Store 45 44 Store 45 44
46: 7(int) Load 9(index) 46: 7(int) Load 9(index)
47: 7(int) ISub 46 25 47: 7(int) ISub 46 25
Store 9(index) 47 Store 9(index) 47
48: 21(ptr) AccessChain 17(str) 18 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 50: 11(float) FSub 49 29
Store 48 50 Store 48 50
52: 21(ptr) AccessChain 17(str) 18 19 52: 21(ptr) AccessChain 17(str) 18 19
53: 11(float) Load 52 53: 11(float) Load 52
Store 51(x) 53 Store 51(x) 53
54: 11(float) Load 51(x) 54: 11(float) Load 51(x)
55: 11(float) FAdd 54 29 55: 11(float) FAdd 54 29
Store 51(x) 55 Store 51(x) 55
56: 11(float) Load 51(x) 56: 11(float) Load 51(x)
57: 11(float) FSub 56 29 57: 11(float) FSub 56 29
Store 51(x) 57 Store 51(x) 57
58: 11(float) Load 51(x) 58: 11(float) Load 51(x)
59: 11(float) FAdd 58 29 59: 11(float) FAdd 58 29
Store 51(x) 59 Store 51(x) 59
60: 11(float) Load 51(x) 60: 11(float) Load 51(x)
61: 11(float) FSub 60 29 61: 11(float) FSub 60 29
Store 51(x) 61 Store 51(x) 61
63: 11(float) Load 51(x) 63: 11(float) Load 51(x)
64: 11(float) Load 51(x) 64: 11(float) Load 51(x)
65: 11(float) FAdd 64 29 65: 11(float) FAdd 64 29
Store 51(x) 65 Store 51(x) 65
66: 11(float) FMul 63 65 66: 11(float) FMul 63 65
Store 62(y) 66 Store 62(y) 66
68: 11(float) Load 62(y) 68: 11(float) Load 62(y)
69: 11(float) Load 51(x) 69: 11(float) Load 51(x)
70: 11(float) FSub 69 29 70: 11(float) FSub 69 29
Store 51(x) 70 Store 51(x) 70
71: 11(float) FMul 68 69 71: 11(float) FMul 68 69
Store 67(z) 71 Store 67(z) 71
Store 74(v) 77 Store 74(v) 77
78: 72(fvec4) Load 74(v) 78: 72(fvec4) Load 74(v)
79: 11(float) CompositeExtract 78 2 79: 11(float) CompositeExtract 78 2
80: 11(float) FSub 79 29 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 82: 72(fvec4) CompositeInsert 80 81 2
Store 74(v) 82 Store 74(v) 82
83: 72(fvec4) Load 74(v) 83: 72(fvec4) Load 74(v)
84: 72(fvec4) CompositeInsert 79 83 1 84: 72(fvec4) CompositeInsert 79 83 1
Store 74(v) 84 Store 74(v) 84
85: 72(fvec4) Load 74(v) 85: 72(fvec4) Load 74(v)
86: 11(float) CompositeExtract 85 3 86: 11(float) CompositeExtract 85 3
87: 11(float) FSub 86 29 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 89: 72(fvec4) CompositeInsert 87 88 3
Store 74(v) 89 Store 74(v) 89
90: 72(fvec4) Load 74(v) 90: 72(fvec4) Load 74(v)
91: 72(fvec4) CompositeInsert 87 90 0 91: 72(fvec4) CompositeInsert 87 90 0
Store 74(v) 91 Store 74(v) 91
94: 11(float) Load 67(z) 94: 11(float) Load 67(z)
95: 72(fvec4) Load 74(v) 95: 72(fvec4) Load 74(v)
96: 72(fvec4) VectorTimesScalar 95 94 96: 72(fvec4) VectorTimesScalar 95 94
Store 93(gl_FragColor) 96 Store 93(gl_FragColor) 96
Branch 6 Branch 6
6: Label 6: Label
Return Return

55
Test/baseResults/spv.qualifiers.vert.out Normal file → Executable file
View File

@ -10,9 +10,10 @@ Linked vertex stage:
// Id's are bound by 26 // Id's are bound by 26
Source GLSL 430 Source GLSL 430
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 10 "outVc" Name 10 "outVc"
Name 12 "inV" Name 12 "inV"
@ -22,43 +23,43 @@ Linked vertex stage:
Name 20 "outVcn" Name 20 "outVcn"
Name 24 "gl_VertexID" Name 24 "gl_VertexID"
Name 25 "gl_InstanceID" Name 25 "gl_InstanceID"
Decorate 10(outVc) Smooth Decorate 10(outVc) Smooth
Decorate 14(outVs) Smooth Decorate 14(outVs) Smooth
Decorate 16(outVf) Flat Decorate 16(outVf) Flat
Decorate 18(outVn) Noperspective Decorate 18(outVn) Noperspective
Decorate 20(outVcn) Noperspective Decorate 20(outVcn) Noperspective
Decorate 24(gl_VertexID) BuiltIn VertexId 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) BuiltIn InstanceId
Decorate 25(gl_InstanceID) NoStaticUse Decorate 25(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Output 8(fvec4) 9: TypePointer Output 8(fvec4)
10(outVc): 9(ptr) Variable Output 10(outVc): 9(ptr) Variable Output
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(inV): 11(ptr) Variable Input 12(inV): 11(ptr) Variable Input
14(outVs): 9(ptr) Variable Output 14(outVs): 9(ptr) Variable Output
16(outVf): 9(ptr) Variable Output 16(outVf): 9(ptr) Variable Output
18(outVn): 9(ptr) Variable Output 18(outVn): 9(ptr) Variable Output
20(outVcn): 9(ptr) Variable Output 20(outVcn): 9(ptr) Variable Output
22: TypeInt 32 1 22: TypeInt 32 1
23: TypePointer Input 22(int) 23: TypePointer Input 22(int)
24(gl_VertexID): 23(ptr) Variable Input 24(gl_VertexID): 23(ptr) Variable Input
25(gl_InstanceID): 23(ptr) Variable Input 25(gl_InstanceID): 23(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
13: 8(fvec4) Load 12(inV) 13: 8(fvec4) Load 12(inV)
Store 10(outVc) 13 Store 10(outVc) 13
15: 8(fvec4) Load 12(inV) 15: 8(fvec4) Load 12(inV)
Store 14(outVs) 15 Store 14(outVs) 15
17: 8(fvec4) Load 12(inV) 17: 8(fvec4) Load 12(inV)
Store 16(outVf) 17 Store 16(outVf) 17
19: 8(fvec4) Load 12(inV) 19: 8(fvec4) Load 12(inV)
Store 18(outVn) 19 Store 18(outVn) 19
21: 8(fvec4) Load 12(inV) 21: 8(fvec4) Load 12(inV)
Store 20(outVcn) 21 Store 20(outVcn) 21
Branch 6 Branch 6
6: Label 6: Label
Return Return

54
Test/baseResults/spv.set.vert.out Normal file → Executable file
View File

@ -7,55 +7,57 @@ Linked vertex stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 25 // Id's are bound by 26
Source GLSL 450 Source GLSL 450
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 11 "setBuf" Name 11 "setBuf"
MemberName 11(setBuf) 0 "color" MemberName 11(setBuf) 0 "color"
Name 13 "setBufInst" Name 13 "setBufInst"
Name 21 "sampler" Name 22 "sampler"
Name 23 "gl_VertexID" Name 24 "gl_VertexID"
Name 24 "gl_InstanceID" Name 25 "gl_InstanceID"
Decorate 10(color) Smooth Decorate 10(color) Smooth
Decorate 11(setBuf) GLSLShared Decorate 11(setBuf) GLSLShared
Decorate 11(setBuf) BufferBlock Decorate 11(setBuf) BufferBlock
Decorate 13(setBufInst) DescriptorSet 0 Decorate 13(setBufInst) DescriptorSet 0
Decorate 13(setBufInst) Binding 8 Decorate 13(setBufInst) Binding 8
Decorate 21(sampler) DescriptorSet 4 Decorate 22(sampler) DescriptorSet 4
Decorate 21(sampler) Binding 7 Decorate 22(sampler) Binding 7
Decorate 21(sampler) NoStaticUse Decorate 22(sampler) NoStaticUse
Decorate 23(gl_VertexID) BuiltIn VertexId Decorate 24(gl_VertexID) BuiltIn VertexId
Decorate 23(gl_VertexID) NoStaticUse Decorate 24(gl_VertexID) NoStaticUse
Decorate 24(gl_InstanceID) BuiltIn InstanceId Decorate 25(gl_InstanceID) BuiltIn InstanceId
Decorate 24(gl_InstanceID) NoStaticUse Decorate 25(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Output 8(fvec4) 9: TypePointer Output 8(fvec4)
10(color): 9(ptr) Variable Output 10(color): 9(ptr) Variable Output
11(setBuf): TypeStruct 8(fvec4) 11(setBuf): TypeStruct 8(fvec4)
12: TypePointer Uniform 11(setBuf) 12: TypePointer Uniform 11(setBuf)
13(setBufInst): 12(ptr) Variable Uniform 13(setBufInst): 12(ptr) Variable Uniform
14: TypeInt 32 1 14: TypeInt 32 1
15: 14(int) Constant 0 15: 14(int) Constant 0
16: TypePointer Uniform 8(fvec4) 16: TypePointer Uniform 8(fvec4)
19: TypeSampler7(float) 2D filter+texture 19: TypeImage 7(float) 2D sampled format:Unknown
20: TypePointer UniformConstant 19 20: TypeSampledImage 19
21(sampler): 20(ptr) Variable UniformConstant 21: TypePointer UniformConstant 20
22: TypePointer Input 14(int) 22(sampler): 21(ptr) Variable UniformConstant
23(gl_VertexID): 22(ptr) Variable Input 23: TypePointer Input 14(int)
24(gl_InstanceID): 22(ptr) Variable Input 24(gl_VertexID): 23(ptr) Variable Input
25(gl_InstanceID): 23(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
17: 16(ptr) AccessChain 13(setBufInst) 15 17: 16(ptr) AccessChain 13(setBufInst) 15
18: 8(fvec4) Load 17 18: 8(fvec4) Load 17
Store 10(color) 18 Store 10(color) 18
Branch 6 Branch 6
6: Label 6: Label
Return Return

28
Test/baseResults/spv.simpleFunctionCall.frag.out Normal file → Executable file
View File

@ -10,42 +10,44 @@ Linked fragment stage:
// Id's are bound by 23 // Id's are bound by 23
Source GLSL 150 Source GLSL 150
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "foo(" Name 10 "foo("
Name 13 "BaseColor" Name 13 "BaseColor"
Name 17 "gl_FragColor" Name 17 "gl_FragColor"
Name 20 "bigColor" Name 20 "bigColor"
Name 22 "d" Name 22 "d"
Decorate 13(BaseColor) Smooth Decorate 13(BaseColor) Smooth
Decorate 17(gl_FragColor) BuiltIn FragColor Decorate 17(gl_FragColor) BuiltIn FragColor
Decorate 20(bigColor) NoStaticUse Decorate 20(bigColor) NoStaticUse
Decorate 22(d) NoStaticUse Decorate 22(d) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypeFunction 8(fvec4) 9: TypeFunction 8(fvec4)
12: TypePointer Input 8(fvec4) 12: TypePointer Input 8(fvec4)
13(BaseColor): 12(ptr) Variable Input 13(BaseColor): 12(ptr) Variable Input
16: TypePointer Output 8(fvec4) 16: TypePointer Output 8(fvec4)
17(gl_FragColor): 16(ptr) Variable Output 17(gl_FragColor): 16(ptr) Variable Output
19: TypePointer UniformConstant 8(fvec4) 19: TypePointer UniformConstant 8(fvec4)
20(bigColor): 19(ptr) Variable UniformConstant 20(bigColor): 19(ptr) Variable UniformConstant
21: TypePointer UniformConstant 7(float) 21: TypePointer UniformConstant 7(float)
22(d): 21(ptr) Variable UniformConstant 22(d): 21(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
18: 8(fvec4) FunctionCall 10(foo() 18: 8(fvec4) FunctionCall 10(foo()
Store 17(gl_FragColor) 18 Store 17(gl_FragColor) 18
Branch 6 Branch 6
6: Label 6: Label
Return Return
FunctionEnd FunctionEnd
10(foo(): 8(fvec4) Function None 9 10(foo(): 8(fvec4) Function None 9
11: Label 11: Label
14: 8(fvec4) Load 13(BaseColor) 14: 8(fvec4) Load 13(BaseColor)
ReturnValue 14 ReturnValue 14
FunctionEnd FunctionEnd

41
Test/baseResults/spv.simpleMat.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 44 // Id's are bound by 44
Source GLSL 330 Source GLSL 330
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 10 "glPos" Name 10 "glPos"
Name 13 "mvp" Name 13 "mvp"
@ -20,29 +21,29 @@ Linked vertex stage:
Name 35 "arraym" Name 35 "arraym"
Name 42 "gl_VertexID" Name 42 "gl_VertexID"
Name 43 "gl_InstanceID" Name 43 "gl_InstanceID"
Decorate 10(glPos) Smooth Decorate 10(glPos) Smooth
Decorate 20(f) Smooth Decorate 20(f) Smooth
Decorate 42(gl_VertexID) BuiltIn VertexId 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) BuiltIn InstanceId
Decorate 43(gl_InstanceID) NoStaticUse Decorate 43(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Output 8(fvec4) 9: TypePointer Output 8(fvec4)
10(glPos): 9(ptr) Variable Output 10(glPos): 9(ptr) Variable Output
11: TypeMatrix 8(fvec4) 4 11: TypeMatrix 8(fvec4) 4
12: TypePointer UniformConstant 11 12: TypePointer UniformConstant 11
13(mvp): 12(ptr) Variable UniformConstant 13(mvp): 12(ptr) Variable UniformConstant
15: TypePointer Input 8(fvec4) 15: TypePointer Input 8(fvec4)
16(v): 15(ptr) Variable Input 16(v): 15(ptr) Variable Input
19: TypePointer Output 7(float) 19: TypePointer Output 7(float)
20(f): 19(ptr) Variable Output 20(f): 19(ptr) Variable Output
21: TypeVector 7(float) 3 21: TypeVector 7(float) 3
22: TypeMatrix 21(fvec3) 3 22: TypeMatrix 21(fvec3) 3
23: TypePointer Input 22 23: TypePointer Input 22
24(am3): 23(ptr) Variable Input 24(am3): 23(ptr) Variable Input
25: TypeInt 32 1 25: TypeInt 32 1
26: 25(int) Constant 2 26: 25(int) Constant 2
27: TypePointer Input 21(fvec3) 27: TypePointer Input 21(fvec3)
@ -50,25 +51,25 @@ Linked vertex stage:
32: 31(int) Constant 3 32: 31(int) Constant 3
33: TypeArray 11 32 33: TypeArray 11 32
34: TypePointer Input 33 34: TypePointer Input 33
35(arraym): 34(ptr) Variable Input 35(arraym): 34(ptr) Variable Input
36: 25(int) Constant 1 36: 25(int) Constant 1
41: TypePointer Input 25(int) 41: TypePointer Input 25(int)
42(gl_VertexID): 41(ptr) Variable Input 42(gl_VertexID): 41(ptr) Variable Input
43(gl_InstanceID): 41(ptr) Variable Input 43(gl_InstanceID): 41(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
14: 11 Load 13(mvp) 14: 11 Load 13(mvp)
17: 8(fvec4) Load 16(v) 17: 8(fvec4) Load 16(v)
18: 8(fvec4) MatrixTimesVector 14 17 18: 8(fvec4) MatrixTimesVector 14 17
Store 10(glPos) 18 Store 10(glPos) 18
28: 27(ptr) AccessChain 24(am3) 26 28: 27(ptr) AccessChain 24(am3) 26
29: 21(fvec3) Load 28 29: 21(fvec3) Load 28
30: 7(float) CompositeExtract 29 1 30: 7(float) CompositeExtract 29 1
37: 15(ptr) AccessChain 35(arraym) 36 26 37: 15(ptr) AccessChain 35(arraym) 36 26
38: 8(fvec4) Load 37 38: 8(fvec4) Load 37
39: 7(float) CompositeExtract 38 3 39: 7(float) CompositeExtract 38 3
40: 7(float) FAdd 30 39 40: 7(float) FAdd 30 39
Store 20(f) 40 Store 20(f) 40
Branch 6 Branch 6
6: Label 6: Label
Return Return

67
Test/baseResults/spv.structAssignment.frag.out Normal file → Executable file
View File

@ -7,12 +7,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 50 // Id's are bound by 51
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "lunarStruct1" Name 9 "lunarStruct1"
MemberName 9(lunarStruct1) 0 "i" MemberName 9(lunarStruct1) 0 "i"
@ -30,66 +32,67 @@ Linked fragment stage:
Name 23 "locals2" Name 23 "locals2"
Name 28 "foo2" Name 28 "foo2"
Name 32 "gl_FragColor" Name 32 "gl_FragColor"
Name 40 "sampler" Name 41 "sampler"
Name 44 "coord" Name 45 "coord"
Name 49 "foo" Name 50 "foo"
Decorate 32(gl_FragColor) BuiltIn FragColor Decorate 32(gl_FragColor) BuiltIn FragColor
Decorate 44(coord) Smooth Decorate 45(coord) Smooth
Decorate 49(foo) NoStaticUse Decorate 50(foo) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypeFloat 32 8: TypeFloat 32
9(lunarStruct1): TypeStruct 7(int) 8(float) 9(lunarStruct1): TypeStruct 7(int) 8(float)
10(lunarStruct2): TypeStruct 7(int) 8(float) 9(lunarStruct1) 10(lunarStruct2): TypeStruct 7(int) 8(float) 9(lunarStruct1)
11(lunarStruct3): TypeStruct 10(lunarStruct2) 7(int) 8(float) 9(lunarStruct1) 11(lunarStruct3): TypeStruct 10(lunarStruct2) 7(int) 8(float) 9(lunarStruct1)
12: TypePointer UniformConstant 11(lunarStruct3) 12: TypePointer UniformConstant 11(lunarStruct3)
13(foo3): 12(ptr) Variable UniformConstant 13(foo3): 12(ptr) Variable UniformConstant
14: 7(int) Constant 0 14: 7(int) Constant 0
15: TypePointer UniformConstant 7(int) 15: TypePointer UniformConstant 7(int)
18: TypeBool 18: TypeBool
22: TypePointer Function 10(lunarStruct2) 22: TypePointer Function 10(lunarStruct2)
24: TypePointer UniformConstant 10(lunarStruct2) 24: TypePointer UniformConstant 10(lunarStruct2)
28(foo2): 24(ptr) Variable UniformConstant 28(foo2): 24(ptr) Variable UniformConstant
30: TypeVector 8(float) 4 30: TypeVector 8(float) 4
31: TypePointer Output 30(fvec4) 31: TypePointer Output 30(fvec4)
32(gl_FragColor): 31(ptr) Variable Output 32(gl_FragColor): 31(ptr) Variable Output
33: 7(int) Constant 2 33: 7(int) Constant 2
34: 7(int) Constant 1 34: 7(int) Constant 1
35: TypePointer Function 8(float) 35: TypePointer Function 8(float)
38: TypeSampler8(float) 2D filter+texture 38: TypeImage 8(float) 2D sampled format:Unknown
39: TypePointer UniformConstant 38 39: TypeSampledImage 38
40(sampler): 39(ptr) Variable UniformConstant 40: TypePointer UniformConstant 39
42: TypeVector 8(float) 2 41(sampler): 40(ptr) Variable UniformConstant
43: TypePointer Input 42(fvec2) 43: TypeVector 8(float) 2
44(coord): 43(ptr) Variable Input 44: TypePointer Input 43(fvec2)
48: TypePointer UniformConstant 9(lunarStruct1) 45(coord): 44(ptr) Variable Input
49(foo): 48(ptr) Variable UniformConstant 49: TypePointer UniformConstant 9(lunarStruct1)
50(foo): 49(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
23(locals2): 22(ptr) Variable Function 23(locals2): 22(ptr) Variable Function
16: 15(ptr) AccessChain 13(foo3) 14 14 16: 15(ptr) AccessChain 13(foo3) 14 14
17: 7(int) Load 16 17: 7(int) Load 16
19: 18(bool) SGreaterThan 17 14 19: 18(bool) SGreaterThan 17 14
SelectionMerge 21 None SelectionMerge 21 None
BranchConditional 19 20 27 BranchConditional 19 20 27
20: Label 20: Label
25: 24(ptr) AccessChain 13(foo3) 14 25: 24(ptr) AccessChain 13(foo3) 14
26:10(lunarStruct2) Load 25 26:10(lunarStruct2) Load 25
Store 23(locals2) 26 Store 23(locals2) 26
Branch 21 Branch 21
27: Label 27: Label
29:10(lunarStruct2) Load 28(foo2) 29:10(lunarStruct2) Load 28(foo2)
Store 23(locals2) 29 Store 23(locals2) 29
Branch 21 Branch 21
21: Label 21: Label
36: 35(ptr) AccessChain 23(locals2) 33 34 36: 35(ptr) AccessChain 23(locals2) 33 34
37: 8(float) Load 36 37: 8(float) Load 36
41: 38 Load 40(sampler) 42: 39 Load 41(sampler)
45: 42(fvec2) Load 44(coord) 46: 43(fvec2) Load 45(coord)
46: 30(fvec4) TextureSample 41 45 47: 30(fvec4) ImageSampleImplicitLod 42 46
47: 30(fvec4) VectorTimesScalar 46 37 48: 30(fvec4) VectorTimesScalar 47 37
Store 32(gl_FragColor) 47 Store 32(gl_FragColor) 48
Branch 6 Branch 6
6: Label 6: Label
Return Return

117
Test/baseResults/spv.structDeref.frag.out Normal file → Executable file
View File

@ -7,12 +7,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 120 // Id's are bound by 121
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "s0" Name 9 "s0"
MemberName 9(s0) 0 "i" MemberName 9(s0) 0 "i"
@ -42,13 +44,13 @@ Linked fragment stage:
Name 69 "foo0" Name 69 "foo0"
Name 84 "foo00" Name 84 "foo00"
Name 97 "gl_FragColor" Name 97 "gl_FragColor"
Name 113 "sampler" Name 114 "sampler"
Name 119 "foo2" Name 120 "foo2"
Decorate 62(coord) Smooth Decorate 62(coord) Smooth
Decorate 97(gl_FragColor) BuiltIn FragColor Decorate 97(gl_FragColor) BuiltIn FragColor
Decorate 119(foo2) NoStaticUse Decorate 120(foo2) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypeFloat 32 8: TypeFloat 32
9(s0): TypeStruct 7(int) 9(s0): TypeStruct 7(int)
@ -59,7 +61,7 @@ Linked fragment stage:
14: TypeArray 11(s2) 13 14: TypeArray 11(s2) 13
15(s3): TypeStruct 14 7(int) 8(float) 10(s1) 15(s3): TypeStruct 14 7(int) 8(float) 10(s1)
16: TypePointer UniformConstant 15(s3) 16: TypePointer UniformConstant 15(s3)
17(foo3): 16(ptr) Variable UniformConstant 17(foo3): 16(ptr) Variable UniformConstant
18: 7(int) Constant 0 18: 7(int) Constant 0
19: 7(int) Constant 9 19: 7(int) Constant 9
20: TypePointer UniformConstant 7(int) 20: TypePointer UniformConstant 7(int)
@ -82,109 +84,110 @@ Linked fragment stage:
46: TypePointer Function 45 46: TypePointer Function 45
48: 7(int) Constant 6 48: 7(int) Constant 6
49: TypePointer UniformConstant 10(s1) 49: TypePointer UniformConstant 10(s1)
50(foo1): 49(ptr) Variable UniformConstant 50(foo1): 49(ptr) Variable UniformConstant
53: TypePointer Function 9(s0) 53: TypePointer Function 9(s0)
55(s00): TypeStruct 9(s0) 55(s00): TypeStruct 9(s0)
56: TypePointer Function 55(s00) 56: TypePointer Function 55(s00)
58: 55(s00) ConstantComposite 34 58: 55(s00) ConstantComposite 34
60: TypeVector 8(float) 2 60: TypeVector 8(float) 2
61: TypePointer Input 60(fvec2) 61: TypePointer Input 60(fvec2)
62(coord): 61(ptr) Variable Input 62(coord): 61(ptr) Variable Input
68: TypePointer UniformConstant 9(s0) 68: TypePointer UniformConstant 9(s0)
69(foo0): 68(ptr) Variable UniformConstant 69(foo0): 68(ptr) Variable UniformConstant
73: 8(float) Constant 1073741824 73: 8(float) Constant 1073741824
74: 8(float) Constant 1077936128 74: 8(float) Constant 1077936128
75: 8(float) Constant 1082130432 75: 8(float) Constant 1082130432
76: 8(float) Constant 1084227584 76: 8(float) Constant 1084227584
77: 39 ConstantComposite 42 30 73 74 75 76 77: 39 ConstantComposite 42 30 73 74 75 76
83: TypePointer UniformConstant 55(s00) 83: TypePointer UniformConstant 55(s00)
84(foo00): 83(ptr) Variable UniformConstant 84(foo00): 83(ptr) Variable UniformConstant
86: TypePointer Function 7(int) 86: TypePointer Function 7(int)
89: 7(int) Constant 5 89: 7(int) Constant 5
95: TypeVector 8(float) 4 95: TypeVector 8(float) 4
96: TypePointer Output 95(fvec4) 96: TypePointer Output 95(fvec4)
97(gl_FragColor): 96(ptr) Variable Output 97(gl_FragColor): 96(ptr) Variable Output
104: 7(int) Constant 3 104: 7(int) Constant 3
111: TypeSampler8(float) 2D filter+texture 111: TypeImage 8(float) 2D sampled format:Unknown
112: TypePointer UniformConstant 111 112: TypeSampledImage 111
113(sampler): 112(ptr) Variable UniformConstant 113: TypePointer UniformConstant 112
118: TypePointer UniformConstant 11(s2) 114(sampler): 113(ptr) Variable UniformConstant
119(foo2): 118(ptr) Variable UniformConstant 119: TypePointer UniformConstant 11(s2)
120(foo2): 119(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
28(locals2): 27(ptr) Variable Function 28(locals2): 27(ptr) Variable Function
41(fArray): 40(ptr) Variable Function 41(fArray): 40(ptr) Variable Function
47(locals1Array): 46(ptr) Variable Function 47(locals1Array): 46(ptr) Variable Function
54(locals0): 53(ptr) Variable Function 54(locals0): 53(ptr) Variable Function
57(locals00): 56(ptr) Variable Function 57(locals00): 56(ptr) Variable Function
21: 20(ptr) AccessChain 17(foo3) 18 19 18 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 24: 23(bool) SGreaterThan 22 18
SelectionMerge 26 None SelectionMerge 26 None
BranchConditional 24 25 59 BranchConditional 24 25 59
25: Label 25: Label
32: 31(ptr) AccessChain 28(locals2) 29 32: 31(ptr) AccessChain 28(locals2) 29
Store 32 30 Store 32 30
37: 36(ptr) AccessChain 28(locals2) 33 37: 36(ptr) AccessChain 28(locals2) 33
Store 37 35 Store 37 35
Store 41(fArray) 43 Store 41(fArray) 43
51: 10(s1) Load 50(foo1) 51: 10(s1) Load 50(foo1)
52: 36(ptr) AccessChain 47(locals1Array) 48 52: 36(ptr) AccessChain 47(locals1Array) 48
Store 52 51 Store 52 51
Store 54(locals0) 34 Store 54(locals0) 34
Store 57(locals00) 58 Store 57(locals00) 58
Branch 26 Branch 26
59: Label 59: Label
63: 60(fvec2) Load 62(coord) 63: 60(fvec2) Load 62(coord)
64: 8(float) CompositeExtract 63 0 64: 8(float) CompositeExtract 63 0
65: 31(ptr) AccessChain 28(locals2) 29 65: 31(ptr) AccessChain 28(locals2) 29
Store 65 64 Store 65 64
66: 60(fvec2) Load 62(coord) 66: 60(fvec2) Load 62(coord)
67: 8(float) CompositeExtract 66 1 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 71: 10(s1) CompositeConstruct 29 67 70
72: 36(ptr) AccessChain 28(locals2) 33 72: 36(ptr) AccessChain 28(locals2) 33
Store 72 71 Store 72 71
Store 41(fArray) 77 Store 41(fArray) 77
78: 36(ptr) AccessChain 28(locals2) 33 78: 36(ptr) AccessChain 28(locals2) 33
79: 10(s1) Load 78 79: 10(s1) Load 78
80: 36(ptr) AccessChain 47(locals1Array) 48 80: 36(ptr) AccessChain 47(locals1Array) 48
Store 80 79 Store 80 79
81: 68(ptr) AccessChain 50(foo1) 33 81: 68(ptr) AccessChain 50(foo1) 33
82: 9(s0) Load 81 82: 9(s0) Load 81
Store 54(locals0) 82 Store 54(locals0) 82
85: 55(s00) Load 84(foo00) 85: 55(s00) Load 84(foo00)
Store 57(locals00) 85 Store 57(locals00) 85
Branch 26 Branch 26
26: Label 26: Label
87: 86(ptr) AccessChain 54(locals0) 18 87: 86(ptr) AccessChain 54(locals0) 18
88: 7(int) Load 87 88: 7(int) Load 87
90: 23(bool) SGreaterThan 88 89 90: 23(bool) SGreaterThan 88 89
SelectionMerge 92 None SelectionMerge 92 None
BranchConditional 90 91 92 BranchConditional 90 91 92
91: Label 91: Label
93: 53(ptr) AccessChain 57(locals00) 18 93: 53(ptr) AccessChain 57(locals00) 18
94: 9(s0) Load 93 94: 9(s0) Load 93
Store 54(locals0) 94 Store 54(locals0) 94
Branch 92 Branch 92
92: Label 92: Label
98: 86(ptr) AccessChain 54(locals0) 18 98: 86(ptr) AccessChain 54(locals0) 18
99: 7(int) Load 98 99: 7(int) Load 98
100: 8(float) ConvertSToF 99 100: 8(float) ConvertSToF 99
101: 31(ptr) AccessChain 47(locals1Array) 48 29 101: 31(ptr) AccessChain 47(locals1Array) 48 29
102: 8(float) Load 101 102: 8(float) Load 101
103: 8(float) FAdd 100 102 103: 8(float) FAdd 100 102
105: 31(ptr) AccessChain 41(fArray) 104 105: 31(ptr) AccessChain 41(fArray) 104
106: 8(float) Load 105 106: 8(float) Load 105
107: 8(float) FAdd 103 106 107: 8(float) FAdd 103 106
108: 31(ptr) AccessChain 28(locals2) 33 29 108: 31(ptr) AccessChain 28(locals2) 33 29
109: 8(float) Load 108 109: 8(float) Load 108
110: 8(float) FAdd 107 109 110: 8(float) FAdd 107 109
114: 111 Load 113(sampler) 115: 112 Load 114(sampler)
115: 60(fvec2) Load 62(coord) 116: 60(fvec2) Load 62(coord)
116: 95(fvec4) TextureSample 114 115 117: 95(fvec4) ImageSampleImplicitLod 115 116
117: 95(fvec4) VectorTimesScalar 116 110 118: 95(fvec4) VectorTimesScalar 117 110
Store 97(gl_FragColor) 117 Store 97(gl_FragColor) 118
Branch 6 Branch 6
6: Label 6: Label
Return Return

67
Test/baseResults/spv.structure.frag.out Normal file → Executable file
View File

@ -7,12 +7,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 61 // Id's are bound by 62
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "scale" Name 9 "scale"
Name 19 "lunarStruct1" Name 19 "lunarStruct1"
@ -25,14 +27,14 @@ Linked fragment stage:
MemberName 22(lunarStruct2) 2 "s1_1" MemberName 22(lunarStruct2) 2 "s1_1"
Name 25 "foo2" Name 25 "foo2"
Name 47 "gl_FragColor" Name 47 "gl_FragColor"
Name 51 "sampler" Name 52 "sampler"
Name 55 "coord" Name 56 "coord"
Name 60 "foo" Name 61 "foo"
Decorate 47(gl_FragColor) BuiltIn FragColor Decorate 47(gl_FragColor) BuiltIn FragColor
Decorate 55(coord) Smooth Decorate 56(coord) Smooth
Decorate 60(foo) NoStaticUse Decorate 61(foo) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypePointer Function 7(float) 8: TypePointer Function 7(float)
10: 7(float) Constant 0 10: 7(float) Constant 0
@ -50,7 +52,7 @@ Linked fragment stage:
22(lunarStruct2): TypeStruct 14 7(float) 21 22(lunarStruct2): TypeStruct 14 7(float) 21
23: TypeArray 22(lunarStruct2) 13 23: TypeArray 22(lunarStruct2) 13
24: TypePointer UniformConstant 23 24: TypePointer UniformConstant 23
25(foo2): 24(ptr) Variable UniformConstant 25(foo2): 24(ptr) Variable UniformConstant
26: 11(int) Constant 3 26: 11(int) Constant 3
27: 11(int) Constant 0 27: 11(int) Constant 0
28: 11(int) Constant 4 28: 11(int) Constant 4
@ -61,42 +63,43 @@ Linked fragment stage:
42: 11(int) Constant 1 42: 11(int) Constant 1
43: TypePointer UniformConstant 7(float) 43: TypePointer UniformConstant 7(float)
46: TypePointer Output 17(fvec4) 46: TypePointer Output 17(fvec4)
47(gl_FragColor): 46(ptr) Variable Output 47(gl_FragColor): 46(ptr) Variable Output
49: TypeSampler7(float) 2D filter+texture 49: TypeImage 7(float) 2D sampled format:Unknown
50: TypePointer UniformConstant 49 50: TypeSampledImage 49
51(sampler): 50(ptr) Variable UniformConstant 51: TypePointer UniformConstant 50
53: TypeVector 7(float) 2 52(sampler): 51(ptr) Variable UniformConstant
54: TypePointer Input 53(fvec2) 54: TypeVector 7(float) 2
55(coord): 54(ptr) Variable Input 55: TypePointer Input 54(fvec2)
59: TypePointer UniformConstant 19(lunarStruct1) 56(coord): 55(ptr) Variable Input
60(foo): 59(ptr) Variable UniformConstant 60: TypePointer UniformConstant 19(lunarStruct1)
61(foo): 60(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(scale): 8(ptr) Variable Function 9(scale): 8(ptr) Variable Function
Store 9(scale) 10 Store 9(scale) 10
30: 29(ptr) AccessChain 25(foo2) 26 27 28 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 33: 32(bool) SGreaterThan 31 27
SelectionMerge 35 None SelectionMerge 35 None
BranchConditional 33 34 41 BranchConditional 33 34 41
34: Label 34: Label
38: 37(ptr) AccessChain 25(foo2) 26 36 36 36 26 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 40: 7(float) CompositeExtract 39 0
Store 9(scale) 40 Store 9(scale) 40
Branch 35 Branch 35
41: Label 41: Label
44: 43(ptr) AccessChain 25(foo2) 26 36 36 42 26 44: 43(ptr) AccessChain 25(foo2) 26 36 36 42 26
45: 7(float) Load 44 45: 7(float) Load 44
Store 9(scale) 45 Store 9(scale) 45
Branch 35 Branch 35
35: Label 35: Label
48: 7(float) Load 9(scale) 48: 7(float) Load 9(scale)
52: 49 Load 51(sampler) 53: 50 Load 52(sampler)
56: 53(fvec2) Load 55(coord) 57: 54(fvec2) Load 56(coord)
57: 17(fvec4) TextureSample 52 56 58: 17(fvec4) ImageSampleImplicitLod 53 57
58: 17(fvec4) VectorTimesScalar 57 48 59: 17(fvec4) VectorTimesScalar 58 48
Store 47(gl_FragColor) 58 Store 47(gl_FragColor) 59
Branch 6 Branch 6
6: Label 6: Label
Return Return

298
Test/baseResults/spv.switch.frag.out Normal file → Executable file
View File

@ -13,9 +13,11 @@ Linked fragment stage:
// Id's are bound by 261 // Id's are bound by 261
Source ESSL 310 Source ESSL 310
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 16 "foo1(vf4;vf4;i1;" Name 16 "foo1(vf4;vf4;i1;"
Name 13 "v1" Name 13 "v1"
@ -40,18 +42,18 @@ Linked fragment stage:
Name 239 "param" Name 239 "param"
Name 241 "param" Name 241 "param"
Name 243 "param" Name 243 "param"
Decorate 59(local) PrecisionMedium Decorate 59(local) RelaxedPrecision
Decorate 61(c) PrecisionMedium Decorate 61(c) RelaxedPrecision
Decorate 72(f) PrecisionMedium Decorate 72(f) RelaxedPrecision
Decorate 74(x) PrecisionMedium Decorate 74(x) RelaxedPrecision
Decorate 74(x) Smooth Decorate 74(x) Smooth
Decorate 128(d) PrecisionMedium Decorate 128(d) RelaxedPrecision
Decorate 154(i) PrecisionMedium Decorate 154(i) RelaxedPrecision
Decorate 172(j) PrecisionMedium Decorate 172(j) RelaxedPrecision
Decorate 222(color) PrecisionMedium Decorate 222(color) RelaxedPrecision
Decorate 228(v) PrecisionMedium Decorate 228(v) RelaxedPrecision
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
@ -63,12 +65,12 @@ Linked fragment stage:
48: 7(float) Constant 1065353216 48: 7(float) Constant 1065353216
49: 8(fvec4) ConstantComposite 48 48 48 48 49: 8(fvec4) ConstantComposite 48 48 48 48
60: TypePointer UniformConstant 10(int) 60: TypePointer UniformConstant 10(int)
61(c): 60(ptr) Variable UniformConstant 61(c): 60(ptr) Variable UniformConstant
64: 10(int) Constant 1 64: 10(int) Constant 1
71: TypePointer Function 7(float) 71: TypePointer Function 7(float)
73: TypePointer Input 7(float) 73: TypePointer Input 7(float)
74(x): 73(ptr) Variable Input 74(x): 73(ptr) Variable Input
128(d): 60(ptr) Variable UniformConstant 128(d): 60(ptr) Variable UniformConstant
155: 10(int) Constant 0 155: 10(int) Constant 0
160: 10(int) Constant 10 160: 10(int) Constant 10
161: TypeBool 161: TypeBool
@ -77,253 +79,253 @@ Linked fragment stage:
183: 7(float) Constant 1120429670 183: 7(float) Constant 1120429670
203: 7(float) Constant 1079739679 203: 7(float) Constant 1079739679
221: TypePointer Output 7(float) 221: TypePointer Output 7(float)
222(color): 221(ptr) Variable Output 222(color): 221(ptr) Variable Output
227: TypePointer UniformConstant 8(fvec4) 227: TypePointer UniformConstant 8(fvec4)
228(v): 227(ptr) Variable UniformConstant 228(v): 227(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
59(local): 11(ptr) Variable Function 59(local): 11(ptr) Variable Function
72(f): 71(ptr) Variable Function 72(f): 71(ptr) Variable Function
154(i): 11(ptr) Variable Function 154(i): 11(ptr) Variable Function
172(j): 11(ptr) Variable Function 172(j): 11(ptr) Variable Function
229(param): 9(ptr) Variable Function 229(param): 9(ptr) Variable Function
231(param): 9(ptr) Variable Function 231(param): 9(ptr) Variable Function
233(param): 11(ptr) Variable Function 233(param): 11(ptr) Variable Function
239(param): 9(ptr) Variable Function 239(param): 9(ptr) Variable Function
241(param): 9(ptr) Variable Function 241(param): 9(ptr) Variable Function
243(param): 11(ptr) Variable Function 243(param): 11(ptr) Variable Function
62: 10(int) Load 61(c) 62: 10(int) Load 61(c)
Store 59(local) 62 Store 59(local) 62
63: 10(int) Load 59(local) 63: 10(int) Load 59(local)
65: 10(int) IAdd 63 64 65: 10(int) IAdd 63 64
Store 59(local) 65 Store 59(local) 65
66: 10(int) Load 61(c) 66: 10(int) Load 61(c)
SelectionMerge 70 None SelectionMerge 70 None
Switch 66 69 Switch 66 69
case 1: 67 case 1: 67
case 2: 68 case 2: 68
67: Label 67: Label
75: 7(float) Load 74(x) 75: 7(float) Load 74(x)
76: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 75 76: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 75
Store 72(f) 76 Store 72(f) 76
Branch 70 Branch 70
68: Label 68: Label
78: 7(float) Load 74(x) 78: 7(float) Load 74(x)
79: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 78 79: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 78
Store 72(f) 79 Store 72(f) 79
Branch 70 Branch 70
69: Label 69: Label
81: 7(float) Load 74(x) 81: 7(float) Load 74(x)
82: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 81 82: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 81
Store 72(f) 82 Store 72(f) 82
Branch 70 Branch 70
70: Label 70: Label
84: 10(int) Load 61(c) 84: 10(int) Load 61(c)
SelectionMerge 88 None SelectionMerge 88 None
Switch 84 87 Switch 84 87
case 1: 85 case 1: 85
case 2: 86 case 2: 86
85: Label 85: Label
89: 7(float) Load 74(x) 89: 7(float) Load 74(x)
90: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 89 90: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 89
91: 7(float) Load 72(f) 91: 7(float) Load 72(f)
92: 7(float) FAdd 91 90 92: 7(float) FAdd 91 90
Store 72(f) 92 Store 72(f) 92
Branch 86 Branch 86
86: Label 86: Label
93: 7(float) Load 74(x) 93: 7(float) Load 74(x)
94: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 93 94: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 93
95: 7(float) Load 72(f) 95: 7(float) Load 72(f)
96: 7(float) FAdd 95 94 96: 7(float) FAdd 95 94
Store 72(f) 96 Store 72(f) 96
Branch 88 Branch 88
87: Label 87: Label
98: 7(float) Load 74(x) 98: 7(float) Load 74(x)
99: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 98 99: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 98
100: 7(float) Load 72(f) 100: 7(float) Load 72(f)
101: 7(float) FAdd 100 99 101: 7(float) FAdd 100 99
Store 72(f) 101 Store 72(f) 101
Branch 88 Branch 88
88: Label 88: Label
103: 10(int) Load 61(c) 103: 10(int) Load 61(c)
SelectionMerge 106 None SelectionMerge 106 None
Switch 103 106 Switch 103 106
case 1: 104 case 1: 104
case 2: 105 case 2: 105
104: Label 104: Label
107: 7(float) Load 74(x) 107: 7(float) Load 74(x)
108: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 107 108: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 107
109: 7(float) Load 72(f) 109: 7(float) Load 72(f)
110: 7(float) FAdd 109 108 110: 7(float) FAdd 109 108
Store 72(f) 110 Store 72(f) 110
Branch 106 Branch 106
105: Label 105: Label
112: 7(float) Load 74(x) 112: 7(float) Load 74(x)
113: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 112 113: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 112
114: 7(float) Load 72(f) 114: 7(float) Load 72(f)
115: 7(float) FAdd 114 113 115: 7(float) FAdd 114 113
Store 72(f) 115 Store 72(f) 115
Branch 106 Branch 106
106: Label 106: Label
118: 10(int) Load 61(c) 118: 10(int) Load 61(c)
SelectionMerge 122 None SelectionMerge 122 None
Switch 118 121 Switch 118 121
case 1: 119 case 1: 119
case 2: 120 case 2: 120
119: Label 119: Label
123: 7(float) Load 74(x) 123: 7(float) Load 74(x)
124: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 123 124: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 123
125: 7(float) Load 72(f) 125: 7(float) Load 72(f)
126: 7(float) FAdd 125 124 126: 7(float) FAdd 125 124
Store 72(f) 126 Store 72(f) 126
Branch 122 Branch 122
120: Label 120: Label
129: 10(int) Load 128(d) 129: 10(int) Load 128(d)
SelectionMerge 132 None SelectionMerge 132 None
Switch 129 132 Switch 129 132
case 1: 130 case 1: 130
case 2: 131 case 2: 131
130: Label 130: Label
133: 7(float) Load 74(x) 133: 7(float) Load 74(x)
134: 7(float) Load 74(x) 134: 7(float) Load 74(x)
135: 7(float) FMul 133 134 135: 7(float) FMul 133 134
136: 7(float) Load 74(x) 136: 7(float) Load 74(x)
137: 7(float) FMul 135 136 137: 7(float) FMul 135 136
138: 7(float) Load 72(f) 138: 7(float) Load 72(f)
139: 7(float) FAdd 138 137 139: 7(float) FAdd 138 137
Store 72(f) 139 Store 72(f) 139
Branch 132 Branch 132
131: Label 131: Label
141: 7(float) Load 74(x) 141: 7(float) Load 74(x)
142: 7(float) Load 74(x) 142: 7(float) Load 74(x)
143: 7(float) FMul 141 142 143: 7(float) FMul 141 142
144: 7(float) Load 72(f) 144: 7(float) Load 72(f)
145: 7(float) FAdd 144 143 145: 7(float) FAdd 144 143
Store 72(f) 145 Store 72(f) 145
Branch 132 Branch 132
132: Label 132: Label
Branch 122 Branch 122
121: Label 121: Label
149: 7(float) Load 74(x) 149: 7(float) Load 74(x)
150: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 149 150: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 149
151: 7(float) Load 72(f) 151: 7(float) Load 72(f)
152: 7(float) FAdd 151 150 152: 7(float) FAdd 151 150
Store 72(f) 152 Store 72(f) 152
Branch 122 Branch 122
122: Label 122: Label
Store 154(i) 155 Store 154(i) 155
Branch 156 Branch 156
156: Label 156: Label
159: 10(int) Load 154(i) 159: 10(int) Load 154(i)
162: 161(bool) SLessThan 159 160 162: 161(bool) SLessThan 159 160
LoopMerge 157 None LoopMerge 157 None
BranchConditional 162 158 157 BranchConditional 162 158 157
158: Label 158: Label
163: 10(int) Load 61(c) 163: 10(int) Load 61(c)
SelectionMerge 167 None SelectionMerge 167 None
Switch 163 166 Switch 163 166
case 1: 164 case 1: 164
case 2: 165 case 2: 165
164: Label 164: Label
168: 7(float) Load 74(x) 168: 7(float) Load 74(x)
169: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 168 169: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 168
170: 7(float) Load 72(f) 170: 7(float) Load 72(f)
171: 7(float) FAdd 170 169 171: 7(float) FAdd 170 169
Store 72(f) 171 Store 72(f) 171
Store 172(j) 173 Store 172(j) 173
Branch 174 Branch 174
174: Label 174: Label
177: 10(int) Load 172(j) 177: 10(int) Load 172(j)
179: 161(bool) SLessThan 177 178 179: 161(bool) SLessThan 177 178
LoopMerge 175 None LoopMerge 175 None
BranchConditional 179 176 175 BranchConditional 179 176 175
176: Label 176: Label
180: 7(float) Load 72(f) 180: 7(float) Load 72(f)
181: 7(float) FAdd 180 48 181: 7(float) FAdd 180 48
Store 72(f) 181 Store 72(f) 181
182: 7(float) Load 72(f) 182: 7(float) Load 72(f)
184: 161(bool) FOrdLessThan 182 183 184: 161(bool) FOrdLessThan 182 183
SelectionMerge 186 None SelectionMerge 186 None
BranchConditional 184 185 186 BranchConditional 184 185 186
185: Label 185: Label
Branch 175 Branch 175
186: Label 186: Label
188: 10(int) Load 172(j) 188: 10(int) Load 172(j)
189: 10(int) IAdd 188 64 189: 10(int) IAdd 188 64
Store 172(j) 189 Store 172(j) 189
Branch 174 Branch 174
175: Label 175: Label
Branch 167 Branch 167
165: Label 165: Label
191: 7(float) Load 74(x) 191: 7(float) Load 74(x)
192: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 191 192: 7(float) ExtInst 1(GLSL.std.450) 14(Cos) 191
193: 7(float) Load 72(f) 193: 7(float) Load 72(f)
194: 7(float) FAdd 193 192 194: 7(float) FAdd 193 192
Store 72(f) 194 Store 72(f) 194
Branch 167 Branch 167
166: Label 166: Label
197: 7(float) Load 74(x) 197: 7(float) Load 74(x)
198: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 197 198: 7(float) ExtInst 1(GLSL.std.450) 15(Tan) 197
199: 7(float) Load 72(f) 199: 7(float) Load 72(f)
200: 7(float) FAdd 199 198 200: 7(float) FAdd 199 198
Store 72(f) 200 Store 72(f) 200
Branch 167 Branch 167
167: Label 167: Label
202: 7(float) Load 72(f) 202: 7(float) Load 72(f)
204: 161(bool) FOrdLessThan 202 203 204: 161(bool) FOrdLessThan 202 203
SelectionMerge 206 None SelectionMerge 206 None
BranchConditional 204 205 206 BranchConditional 204 205 206
205: Label 205: Label
Branch 157 Branch 157
206: Label 206: Label
208: 10(int) Load 154(i) 208: 10(int) Load 154(i)
209: 10(int) IAdd 208 64 209: 10(int) IAdd 208 64
Store 154(i) 209 Store 154(i) 209
Branch 156 Branch 156
157: Label 157: Label
210: 10(int) Load 61(c) 210: 10(int) Load 61(c)
SelectionMerge 213 None SelectionMerge 213 None
Switch 210 213 Switch 210 213
case 1: 211 case 1: 211
case 2: 212 case 2: 212
211: Label 211: Label
214: 7(float) Load 74(x) 214: 7(float) Load 74(x)
215: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 214 215: 7(float) ExtInst 1(GLSL.std.450) 13(Sin) 214
216: 7(float) Load 72(f) 216: 7(float) Load 72(f)
217: 7(float) FAdd 216 215 217: 7(float) FAdd 216 215
Store 72(f) 217 Store 72(f) 217
Branch 213 Branch 213
212: Label 212: Label
Branch 213 Branch 213
213: Label 213: Label
223: 7(float) Load 72(f) 223: 7(float) Load 72(f)
224: 10(int) Load 59(local) 224: 10(int) Load 59(local)
225: 7(float) ConvertSToF 224 225: 7(float) ConvertSToF 224
226: 7(float) FAdd 223 225 226: 7(float) FAdd 223 225
Store 222(color) 226 Store 222(color) 226
230: 8(fvec4) Load 228(v) 230: 8(fvec4) Load 228(v)
Store 229(param) 230 Store 229(param) 230
232: 8(fvec4) Load 228(v) 232: 8(fvec4) Load 228(v)
Store 231(param) 232 Store 231(param) 232
234: 10(int) Load 61(c) 234: 10(int) Load 61(c)
Store 233(param) 234 Store 233(param) 234
235: 8(fvec4) FunctionCall 16(foo1(vf4;vf4;i1;) 229(param) 231(param) 233(param) 235: 8(fvec4) FunctionCall 16(foo1(vf4;vf4;i1;) 229(param) 231(param) 233(param)
236: 7(float) CompositeExtract 235 1 236: 7(float) CompositeExtract 235 1
237: 7(float) Load 222(color) 237: 7(float) Load 222(color)
238: 7(float) FAdd 237 236 238: 7(float) FAdd 237 236
Store 222(color) 238 Store 222(color) 238
240: 8(fvec4) Load 228(v) 240: 8(fvec4) Load 228(v)
Store 239(param) 240 Store 239(param) 240
242: 8(fvec4) Load 228(v) 242: 8(fvec4) Load 228(v)
Store 241(param) 242 Store 241(param) 242
244: 10(int) Load 61(c) 244: 10(int) Load 61(c)
Store 243(param) 244 Store 243(param) 244
245: 8(fvec4) FunctionCall 21(foo2(vf4;vf4;i1;) 239(param) 241(param) 243(param) 245: 8(fvec4) FunctionCall 21(foo2(vf4;vf4;i1;) 239(param) 241(param) 243(param)
246: 7(float) CompositeExtract 245 2 246: 7(float) CompositeExtract 245 2
247: 7(float) Load 222(color) 247: 7(float) Load 222(color)
248: 7(float) FAdd 247 246 248: 7(float) FAdd 247 246
Store 222(color) 248 Store 222(color) 248
249: 10(int) Load 61(c) 249: 10(int) Load 61(c)
SelectionMerge 252 None SelectionMerge 252 None
Switch 249 251 Switch 249 251
case 0: 250 case 0: 250
@ -332,9 +334,9 @@ Linked fragment stage:
251: Label 251: Label
Branch 252 Branch 252
252: Label 252: Label
256: 10(int) Load 61(c) 256: 10(int) Load 61(c)
SelectionMerge 258 None SelectionMerge 258 None
Switch 256 257 Switch 256 257
257: Label 257: Label
Branch 258 Branch 258
258: Label 258: Label
@ -347,7 +349,7 @@ Linked fragment stage:
14(v2): 9(ptr) FunctionParameter 14(v2): 9(ptr) FunctionParameter
15(i1): 11(ptr) FunctionParameter 15(i1): 11(ptr) FunctionParameter
17: Label 17: Label
23: 10(int) Load 15(i1) 23: 10(int) Load 15(i1)
SelectionMerge 27 None SelectionMerge 27 None
Switch 23 27 Switch 23 27
case 0: 24 case 0: 24
@ -355,14 +357,14 @@ Linked fragment stage:
case 1: 25 case 1: 25
case 3: 26 case 3: 26
24: Label 24: Label
28: 8(fvec4) Load 13(v1) 28: 8(fvec4) Load 13(v1)
ReturnValue 28 ReturnValue 28
25: Label 25: Label
30: 8(fvec4) Load 14(v2) 30: 8(fvec4) Load 14(v2)
ReturnValue 30 ReturnValue 30
26: Label 26: Label
32: 8(fvec4) Load 13(v1) 32: 8(fvec4) Load 13(v1)
33: 8(fvec4) Load 14(v2) 33: 8(fvec4) Load 14(v2)
34: 8(fvec4) FMul 32 33 34: 8(fvec4) FMul 32 33
ReturnValue 34 ReturnValue 34
27: Label 27: Label
@ -373,7 +375,7 @@ Linked fragment stage:
19(v2): 9(ptr) FunctionParameter 19(v2): 9(ptr) FunctionParameter
20(i1): 11(ptr) FunctionParameter 20(i1): 11(ptr) FunctionParameter
22: Label 22: Label
40: 10(int) Load 20(i1) 40: 10(int) Load 20(i1)
SelectionMerge 45 None SelectionMerge 45 None
Switch 40 45 Switch 40 45
case 0: 41 case 0: 41
@ -381,16 +383,16 @@ Linked fragment stage:
case 1: 43 case 1: 43
case 3: 44 case 3: 44
41: Label 41: Label
46: 8(fvec4) Load 18(v1) 46: 8(fvec4) Load 18(v1)
ReturnValue 46 ReturnValue 46
42: Label 42: Label
ReturnValue 49 ReturnValue 49
43: Label 43: Label
51: 8(fvec4) Load 19(v2) 51: 8(fvec4) Load 19(v2)
ReturnValue 51 ReturnValue 51
44: Label 44: Label
53: 8(fvec4) Load 18(v1) 53: 8(fvec4) Load 18(v1)
54: 8(fvec4) Load 19(v2) 54: 8(fvec4) Load 19(v2)
55: 8(fvec4) FMul 53 54 55: 8(fvec4) FMul 53 54
ReturnValue 55 ReturnValue 55
45: Label 45: Label

168
Test/baseResults/spv.swizzle.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 112 // Id's are bound by 112
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "blendscale" Name 9 "blendscale"
Name 13 "w" Name 13 "w"
@ -26,26 +28,26 @@ Linked fragment stage:
Name 82 "c" Name 82 "c"
Name 84 "rep" Name 84 "rep"
Name 111 "blend" Name 111 "blend"
Decorate 30(t) Smooth Decorate 30(t) Smooth
Decorate 70(gl_FragColor) BuiltIn FragColor Decorate 70(gl_FragColor) BuiltIn FragColor
Decorate 111(blend) NoStaticUse Decorate 111(blend) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypePointer Function 7(float) 8: TypePointer Function 7(float)
10: 7(float) Constant 1071971828 10: 7(float) Constant 1071971828
11: TypeVector 7(float) 4 11: TypeVector 7(float) 4
12: TypePointer Function 11(fvec4) 12: TypePointer Function 11(fvec4)
14: TypePointer UniformConstant 11(fvec4) 14: TypePointer UniformConstant 11(fvec4)
15(u): 14(ptr) Variable UniformConstant 15(u): 14(ptr) Variable UniformConstant
28: TypeVector 7(float) 2 28: TypeVector 7(float) 2
29: TypePointer Input 28(fvec2) 29: TypePointer Input 28(fvec2)
30(t): 29(ptr) Variable Input 30(t): 29(ptr) Variable Input
54: TypeBool 54: TypeBool
55: TypePointer UniformConstant 54(bool) 55: TypePointer UniformConstant 54(bool)
56(p): 55(ptr) Variable UniformConstant 56(p): 55(ptr) Variable UniformConstant
69: TypePointer Output 11(fvec4) 69: TypePointer Output 11(fvec4)
70(gl_FragColor): 69(ptr) Variable Output 70(gl_FragColor): 69(ptr) Variable Output
81: TypePointer Function 28(fvec2) 81: TypePointer Function 28(fvec2)
85: 7(float) Constant 0 85: 7(float) Constant 0
86: 7(float) Constant 1065353216 86: 7(float) Constant 1065353216
@ -53,123 +55,123 @@ Linked fragment stage:
93: 7(float) Constant 3212836864 93: 7(float) Constant 3212836864
104: 7(float) Constant 1079613850 104: 7(float) Constant 1079613850
110: TypePointer UniformConstant 7(float) 110: TypePointer UniformConstant 7(float)
111(blend): 110(ptr) Variable UniformConstant 111(blend): 110(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(blendscale): 8(ptr) Variable Function 9(blendscale): 8(ptr) Variable Function
13(w): 12(ptr) Variable Function 13(w): 12(ptr) Variable Function
17(w_dep): 12(ptr) Variable Function 17(w_dep): 12(ptr) Variable Function
19(w_reorder): 12(ptr) Variable Function 19(w_reorder): 12(ptr) Variable Function
21(w2): 12(ptr) Variable Function 21(w2): 12(ptr) Variable Function
23(w_flow): 12(ptr) Variable Function 23(w_flow): 12(ptr) Variable Function
49(w_undef): 12(ptr) Variable Function 49(w_undef): 12(ptr) Variable Function
82(c): 81(ptr) Variable Function 82(c): 81(ptr) Variable Function
84(rep): 12(ptr) Variable Function 84(rep): 12(ptr) Variable Function
Store 9(blendscale) 10 Store 9(blendscale) 10
16: 11(fvec4) Load 15(u) 16: 11(fvec4) Load 15(u)
Store 13(w) 16 Store 13(w) 16
18: 11(fvec4) Load 15(u) 18: 11(fvec4) Load 15(u)
Store 17(w_dep) 18 Store 17(w_dep) 18
20: 11(fvec4) Load 15(u) 20: 11(fvec4) Load 15(u)
Store 19(w_reorder) 20 Store 19(w_reorder) 20
22: 11(fvec4) Load 15(u) 22: 11(fvec4) Load 15(u)
Store 21(w2) 22 Store 21(w2) 22
24: 11(fvec4) Load 15(u) 24: 11(fvec4) Load 15(u)
Store 23(w_flow) 24 Store 23(w_flow) 24
25: 7(float) Load 9(blendscale) 25: 7(float) Load 9(blendscale)
26: 11(fvec4) Load 19(w_reorder) 26: 11(fvec4) Load 19(w_reorder)
27: 11(fvec4) CompositeInsert 25 26 2 27: 11(fvec4) CompositeInsert 25 26 2
Store 19(w_reorder) 27 Store 19(w_reorder) 27
31: 28(fvec2) Load 30(t) 31: 28(fvec2) Load 30(t)
32: 11(fvec4) Load 13(w) 32: 11(fvec4) Load 13(w)
33: 11(fvec4) VectorShuffle 32 31 0 5 2 4 33: 11(fvec4) VectorShuffle 32 31 0 5 2 4
Store 13(w) 33 Store 13(w) 33
34: 7(float) Load 9(blendscale) 34: 7(float) Load 9(blendscale)
35: 11(fvec4) Load 19(w_reorder) 35: 11(fvec4) Load 19(w_reorder)
36: 11(fvec4) CompositeInsert 34 35 0 36: 11(fvec4) CompositeInsert 34 35 0
Store 19(w_reorder) 36 Store 19(w_reorder) 36
37: 11(fvec4) Load 15(u) 37: 11(fvec4) Load 15(u)
38: 11(fvec4) VectorShuffle 37 37 2 3 0 1 38: 11(fvec4) VectorShuffle 37 37 2 3 0 1
Store 21(w2) 38 Store 21(w2) 38
39: 7(float) Load 9(blendscale) 39: 7(float) Load 9(blendscale)
40: 11(fvec4) Load 19(w_reorder) 40: 11(fvec4) Load 19(w_reorder)
41: 11(fvec4) CompositeInsert 39 40 1 41: 11(fvec4) CompositeInsert 39 40 1
Store 19(w_reorder) 41 Store 19(w_reorder) 41
42: 11(fvec4) Load 21(w2) 42: 11(fvec4) Load 21(w2)
43: 28(fvec2) VectorShuffle 42 42 0 2 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 45: 11(fvec4) VectorShuffle 44 43 4 5 2 3
Store 17(w_dep) 45 Store 17(w_dep) 45
46: 28(fvec2) Load 30(t) 46: 28(fvec2) Load 30(t)
47: 11(fvec4) Load 17(w_dep) 47: 11(fvec4) Load 17(w_dep)
48: 11(fvec4) VectorShuffle 47 46 0 1 4 5 48: 11(fvec4) VectorShuffle 47 46 0 1 4 5
Store 17(w_dep) 48 Store 17(w_dep) 48
50: 11(fvec4) Load 15(u) 50: 11(fvec4) Load 15(u)
51: 28(fvec2) VectorShuffle 50 50 2 3 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 53: 11(fvec4) VectorShuffle 52 51 4 5 2 3
Store 49(w_undef) 53 Store 49(w_undef) 53
57: 54(bool) Load 56(p) 57: 54(bool) Load 56(p)
SelectionMerge 59 None SelectionMerge 59 None
BranchConditional 57 58 64 BranchConditional 57 58 64
58: Label 58: Label
60: 28(fvec2) Load 30(t) 60: 28(fvec2) Load 30(t)
61: 7(float) CompositeExtract 60 0 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 63: 11(fvec4) CompositeInsert 61 62 0
Store 23(w_flow) 63 Store 23(w_flow) 63
Branch 59 Branch 59
64: Label 64: Label
65: 28(fvec2) Load 30(t) 65: 28(fvec2) Load 30(t)
66: 7(float) CompositeExtract 65 1 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 68: 11(fvec4) CompositeInsert 66 67 0
Store 23(w_flow) 68 Store 23(w_flow) 68
Branch 59 Branch 59
59: Label 59: Label
71: 11(fvec4) Load 19(w_reorder) 71: 11(fvec4) Load 19(w_reorder)
72: 11(fvec4) Load 49(w_undef) 72: 11(fvec4) Load 49(w_undef)
73: 11(fvec4) Load 13(w) 73: 11(fvec4) Load 13(w)
74: 11(fvec4) Load 21(w2) 74: 11(fvec4) Load 21(w2)
75: 11(fvec4) FMul 73 74 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 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 79: 11(fvec4) FMul 77 78
80: 11(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 71 72 79 80: 11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 71 72 79
Store 70(gl_FragColor) 80 Store 70(gl_FragColor) 80
83: 28(fvec2) Load 30(t) 83: 28(fvec2) Load 30(t)
Store 82(c) 83 Store 82(c) 83
Store 84(rep) 87 Store 84(rep) 87
88: 28(fvec2) Load 82(c) 88: 28(fvec2) Load 82(c)
89: 7(float) CompositeExtract 88 0 89: 7(float) CompositeExtract 88 0
90: 54(bool) FOrdLessThan 89 85 90: 54(bool) FOrdLessThan 89 85
SelectionMerge 92 None SelectionMerge 92 None
BranchConditional 90 91 92 BranchConditional 90 91 92
91: Label 91: Label
94: 28(fvec2) Load 82(c) 94: 28(fvec2) Load 82(c)
95: 7(float) CompositeExtract 94 0 95: 7(float) CompositeExtract 94 0
96: 7(float) FMul 95 93 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 98: 28(fvec2) CompositeInsert 96 97 0
Store 82(c) 98 Store 82(c) 98
Branch 92 Branch 92
92: Label 92: Label
99: 28(fvec2) Load 82(c) 99: 28(fvec2) Load 82(c)
100: 7(float) CompositeExtract 99 0 100: 7(float) CompositeExtract 99 0
101: 54(bool) FOrdLessThanEqual 100 86 101: 54(bool) FOrdLessThanEqual 100 86
SelectionMerge 103 None SelectionMerge 103 None
BranchConditional 101 102 103 BranchConditional 101 102 103
102: Label 102: Label
105: 11(fvec4) Load 84(rep) 105: 11(fvec4) Load 84(rep)
106: 11(fvec4) CompositeInsert 104 105 0 106: 11(fvec4) CompositeInsert 104 105 0
Store 84(rep) 106 Store 84(rep) 106
Branch 103 Branch 103
103: Label 103: Label
107: 11(fvec4) Load 84(rep) 107: 11(fvec4) Load 84(rep)
108: 11(fvec4) Load 70(gl_FragColor) 108: 11(fvec4) Load 70(gl_FragColor)
109: 11(fvec4) FAdd 108 107 109: 11(fvec4) FAdd 108 107
Store 70(gl_FragColor) 109 Store 70(gl_FragColor) 109
Branch 6 Branch 6
6: Label 6: Label
Return Return

126
Test/baseResults/spv.test.frag.out Normal file → Executable file
View File

@ -5,82 +5,86 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 54 // Id's are bound by 56
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "blendscale" Name 9 "blendscale"
Name 13 "v" Name 13 "v"
Name 16 "texSampler2D" Name 17 "texSampler2D"
Name 20 "t" Name 21 "t"
Name 23 "scale" Name 24 "scale"
Name 30 "w" Name 31 "w"
Name 33 "texSampler3D" Name 35 "texSampler3D"
Name 37 "coords" Name 39 "coords"
Name 43 "gl_FragColor" Name 45 "gl_FragColor"
Name 46 "u" Name 48 "u"
Name 49 "blend" Name 51 "blend"
Decorate 20(t) Smooth Decorate 21(t) Smooth
Decorate 37(coords) Smooth Decorate 39(coords) Smooth
Decorate 43(gl_FragColor) BuiltIn FragColor Decorate 45(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypePointer Function 7(float) 8: TypePointer Function 7(float)
10: 7(float) Constant 1071971828 10: 7(float) Constant 1071971828
11: TypeVector 7(float) 4 11: TypeVector 7(float) 4
12: TypePointer Function 11(fvec4) 12: TypePointer Function 11(fvec4)
14: TypeSampler7(float) 2D filter+texture 14: TypeImage 7(float) 2D sampled format:Unknown
15: TypePointer UniformConstant 14 15: TypeSampledImage 14
16(texSampler2D): 15(ptr) Variable UniformConstant 16: TypePointer UniformConstant 15
18: TypeVector 7(float) 2 17(texSampler2D): 16(ptr) Variable UniformConstant
19: TypePointer Input 18(fvec2) 19: TypeVector 7(float) 2
20(t): 19(ptr) Variable Input 20: TypePointer Input 19(fvec2)
22: TypePointer UniformConstant 18(fvec2) 21(t): 20(ptr) Variable Input
23(scale): 22(ptr) Variable UniformConstant 23: TypePointer UniformConstant 19(fvec2)
31: TypeSampler7(float) 3D filter+texture 24(scale): 23(ptr) Variable UniformConstant
32: TypePointer UniformConstant 31 32: TypeImage 7(float) 3D sampled format:Unknown
33(texSampler3D): 32(ptr) Variable UniformConstant 33: TypeSampledImage 32
35: TypeVector 7(float) 3 34: TypePointer UniformConstant 33
36: TypePointer Input 35(fvec3) 35(texSampler3D): 34(ptr) Variable UniformConstant
37(coords): 36(ptr) Variable Input 37: TypeVector 7(float) 3
42: TypePointer Output 11(fvec4) 38: TypePointer Input 37(fvec3)
43(gl_FragColor): 42(ptr) Variable Output 39(coords): 38(ptr) Variable Input
45: TypePointer UniformConstant 11(fvec4) 44: TypePointer Output 11(fvec4)
46(u): 45(ptr) Variable UniformConstant 45(gl_FragColor): 44(ptr) Variable Output
48: TypePointer UniformConstant 7(float) 47: TypePointer UniformConstant 11(fvec4)
49(blend): 48(ptr) Variable UniformConstant 48(u): 47(ptr) Variable UniformConstant
50: TypePointer UniformConstant 7(float)
51(blend): 50(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(blendscale): 8(ptr) Variable Function 9(blendscale): 8(ptr) Variable Function
13(v): 12(ptr) Variable Function 13(v): 12(ptr) Variable Function
30(w): 12(ptr) Variable Function 31(w): 12(ptr) Variable Function
Store 9(blendscale) 10 Store 9(blendscale) 10
17: 14 Load 16(texSampler2D) 18: 15 Load 17(texSampler2D)
21: 18(fvec2) Load 20(t) 22: 19(fvec2) Load 21(t)
24: 18(fvec2) Load 23(scale) 25: 19(fvec2) Load 24(scale)
25: 18(fvec2) FAdd 21 24 26: 19(fvec2) FAdd 22 25
26: 18(fvec2) Load 23(scale) 27: 19(fvec2) Load 24(scale)
27: 18(fvec2) FDiv 25 26 28: 19(fvec2) FDiv 26 27
28: 11(fvec4) TextureSample 17 27 29: 11(fvec4) ImageSampleImplicitLod 18 28
29: 11(fvec4) VectorShuffle 28 28 3 2 1 0 30: 11(fvec4) VectorShuffle 29 29 3 2 1 0
Store 13(v) 29 Store 13(v) 30
34: 31 Load 33(texSampler3D) 36: 33 Load 35(texSampler3D)
38: 35(fvec3) Load 37(coords) 40: 37(fvec3) Load 39(coords)
39: 11(fvec4) TextureSample 34 38 41: 11(fvec4) ImageSampleImplicitLod 36 40
40: 11(fvec4) Load 13(v) 42: 11(fvec4) Load 13(v)
41: 11(fvec4) FAdd 39 40 43: 11(fvec4) FAdd 41 42
Store 30(w) 41 Store 31(w) 43
44: 11(fvec4) Load 30(w) 46: 11(fvec4) Load 31(w)
47: 11(fvec4) Load 46(u) 49: 11(fvec4) Load 48(u)
50: 7(float) Load 49(blend) 52: 7(float) Load 51(blend)
51: 7(float) Load 9(blendscale) 53: 7(float) Load 9(blendscale)
52: 7(float) FMul 50 51 54: 7(float) FMul 52 53
53: 11(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 44 47 52 55: 11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 46 49 54
Store 43(gl_FragColor) 53 Store 45(gl_FragColor) 55
Branch 6 Branch 6
6: Label 6: Label
Return Return

299
Test/baseResults/spv.texture.vert.out Normal file → Executable file
View File

@ -5,32 +5,33 @@ Linked vertex stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 132 // Id's are bound by 142
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "lod" Name 9 "lod"
Name 11 "coords1D" Name 11 "coords1D"
Name 15 "coords3D" Name 15 "coords3D"
Name 21 "coords4D" Name 21 "coords4D"
Name 24 "color" Name 24 "color"
Name 29 "texSampler1D" Name 30 "texSampler1D"
Name 39 "coords2D" Name 40 "coords2D"
Name 53 "texSampler2D" Name 55 "texSampler2D"
Name 74 "texSampler3D" Name 77 "texSampler3D"
Name 89 "texSamplerCube" Name 93 "texSamplerCube"
Name 98 "shadowSampler1D" Name 103 "shadowSampler1D"
Name 107 "shadowSampler2D" Name 114 "shadowSampler2D"
Name 127 "gl_Position" Name 137 "gl_Position"
Name 131 "gl_VertexID" Name 141 "gl_VertexID"
Decorate 127(gl_Position) BuiltIn Position Decorate 137(gl_Position) BuiltIn Position
Decorate 131(gl_VertexID) BuiltIn VertexId Decorate 141(gl_VertexID) BuiltIn VertexId
Decorate 131(gl_VertexID) NoStaticUse Decorate 141(gl_VertexID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypePointer Function 7(float) 8: TypePointer Function 7(float)
10: 7(float) Constant 1077936128 10: 7(float) Constant 1077936128
@ -46,137 +47,147 @@ Linked vertex stage:
23: 19(fvec4) ConstantComposite 12 16 17 22 23: 19(fvec4) ConstantComposite 12 16 17 22
25: 7(float) Constant 0 25: 7(float) Constant 0
26: 19(fvec4) ConstantComposite 25 25 25 25 26: 19(fvec4) ConstantComposite 25 25 25 25
27: TypeSampler7(float) 1D filter+texture 27: TypeImage 7(float) 1D sampled format:Unknown
28: TypePointer UniformConstant 27 28: TypeSampledImage 27
29(texSampler1D): 28(ptr) Variable UniformConstant 29: TypePointer UniformConstant 28
37: TypeVector 7(float) 2 30(texSampler1D): 29(ptr) Variable UniformConstant
38: TypePointer Input 37(fvec2) 38: TypeVector 7(float) 2
39(coords2D): 38(ptr) Variable Input 39: TypePointer Input 38(fvec2)
51: TypeSampler7(float) 2D filter+texture 40(coords2D): 39(ptr) Variable Input
52: TypePointer UniformConstant 51 52: TypeImage 7(float) 2D sampled format:Unknown
53(texSampler2D): 52(ptr) Variable UniformConstant 53: TypeSampledImage 52
72: TypeSampler7(float) 3D filter+texture 54: TypePointer UniformConstant 53
73: TypePointer UniformConstant 72 55(texSampler2D): 54(ptr) Variable UniformConstant
74(texSampler3D): 73(ptr) Variable UniformConstant 74: TypeImage 7(float) 3D sampled format:Unknown
87: TypeSampler7(float) Cube filter+texture 75: TypeSampledImage 74
88: TypePointer UniformConstant 87 76: TypePointer UniformConstant 75
89(texSamplerCube): 88(ptr) Variable UniformConstant 77(texSampler3D): 76(ptr) Variable UniformConstant
96: TypeSampler7(float) 1D filter+texture depth 90: TypeImage 7(float) Cube sampled format:Unknown
97: TypePointer UniformConstant 96 91: TypeSampledImage 90
98(shadowSampler1D): 97(ptr) Variable UniformConstant 92: TypePointer UniformConstant 91
105: TypeSampler7(float) 2D filter+texture depth 93(texSamplerCube): 92(ptr) Variable UniformConstant
106: TypePointer UniformConstant 105 100: TypeImage 7(float) 1D depth sampled format:Unknown
107(shadowSampler2D): 106(ptr) Variable UniformConstant 101: TypeSampledImage 100
126: TypePointer Output 19(fvec4) 102: TypePointer UniformConstant 101
127(gl_Position): 126(ptr) Variable Output 103(shadowSampler1D): 102(ptr) Variable UniformConstant
129: TypeInt 32 1 111: TypeImage 7(float) 2D depth sampled format:Unknown
130: TypePointer Input 129(int) 112: TypeSampledImage 111
131(gl_VertexID): 130(ptr) Variable Input 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 4(main): 2 Function None 3
5: Label 5: Label
9(lod): 8(ptr) Variable Function 9(lod): 8(ptr) Variable Function
11(coords1D): 8(ptr) Variable Function 11(coords1D): 8(ptr) Variable Function
15(coords3D): 14(ptr) Variable Function 15(coords3D): 14(ptr) Variable Function
21(coords4D): 20(ptr) Variable Function 21(coords4D): 20(ptr) Variable Function
24(color): 20(ptr) Variable Function 24(color): 20(ptr) Variable Function
Store 9(lod) 10 Store 9(lod) 10
Store 11(coords1D) 12 Store 11(coords1D) 12
Store 15(coords3D) 18 Store 15(coords3D) 18
Store 21(coords4D) 23 Store 21(coords4D) 23
Store 24(color) 26 Store 24(color) 26
30: 27 Load 29(texSampler1D) 31: 28 Load 30(texSampler1D)
31: 7(float) Load 11(coords1D) 32: 7(float) Load 11(coords1D)
32: 7(float) Load 9(lod) 33: 7(float) Load 9(lod)
33: 19(fvec4) TextureSampleLod 30 31 32 34: 19(fvec4) ImageSampleExplicitLod 31 32 33
34: 19(fvec4) Load 24(color) 35: 19(fvec4) Load 24(color)
35: 19(fvec4) FAdd 34 33 36: 19(fvec4) FAdd 35 34
Store 24(color) 35 Store 24(color) 36
36: 27 Load 29(texSampler1D) 37: 28 Load 30(texSampler1D)
40: 37(fvec2) Load 39(coords2D) 41: 38(fvec2) Load 40(coords2D)
41: 7(float) Load 9(lod) 42: 7(float) Load 9(lod)
42: 19(fvec4) TextureSampleProjLod 36 40 41 43: 19(fvec4) ImageSampleProjExplicitLod 37 41 42
43: 19(fvec4) Load 24(color) 44: 19(fvec4) Load 24(color)
44: 19(fvec4) FAdd 43 42 45: 19(fvec4) FAdd 44 43
Store 24(color) 44 Store 24(color) 45
45: 27 Load 29(texSampler1D) 46: 28 Load 30(texSampler1D)
46: 19(fvec4) Load 21(coords4D) 47: 19(fvec4) Load 21(coords4D)
47: 7(float) Load 9(lod) 48: 7(float) Load 9(lod)
48: 19(fvec4) TextureSampleProjLod 45 46 47 49: 19(fvec4) ImageSampleProjExplicitLod 46 47 48
49: 19(fvec4) Load 24(color) 50: 19(fvec4) Load 24(color)
50: 19(fvec4) FAdd 49 48 51: 19(fvec4) FAdd 50 49
Store 24(color) 50 Store 24(color) 51
54: 51 Load 53(texSampler2D) 56: 53 Load 55(texSampler2D)
55: 37(fvec2) Load 39(coords2D) 57: 38(fvec2) Load 40(coords2D)
56: 7(float) Load 9(lod) 58: 7(float) Load 9(lod)
57: 19(fvec4) TextureSampleLod 54 55 56 59: 19(fvec4) ImageSampleExplicitLod 56 57 58
58: 19(fvec4) Load 24(color) 60: 19(fvec4) Load 24(color)
59: 19(fvec4) FAdd 58 57 61: 19(fvec4) FAdd 60 59
Store 24(color) 59 Store 24(color) 61
60: 51 Load 53(texSampler2D) 62: 53 Load 55(texSampler2D)
61: 13(fvec3) Load 15(coords3D) 63: 13(fvec3) Load 15(coords3D)
62: 7(float) Load 9(lod) 64: 7(float) Load 9(lod)
63: 19(fvec4) TextureSampleProjLod 60 61 62 65: 19(fvec4) ImageSampleProjExplicitLod 62 63 64
64: 19(fvec4) Load 24(color) 66: 19(fvec4) Load 24(color)
65: 19(fvec4) FAdd 64 63 67: 19(fvec4) FAdd 66 65
Store 24(color) 65 Store 24(color) 67
66: 51 Load 53(texSampler2D) 68: 53 Load 55(texSampler2D)
67: 19(fvec4) Load 21(coords4D) 69: 19(fvec4) Load 21(coords4D)
68: 7(float) Load 9(lod) 70: 7(float) Load 9(lod)
69: 19(fvec4) TextureSampleProjLod 66 67 68 71: 19(fvec4) ImageSampleProjExplicitLod 68 69 70
70: 19(fvec4) Load 24(color) 72: 19(fvec4) Load 24(color)
71: 19(fvec4) FAdd 70 69 73: 19(fvec4) FAdd 72 71
Store 24(color) 71 Store 24(color) 73
75: 72 Load 74(texSampler3D) 78: 75 Load 77(texSampler3D)
76: 13(fvec3) Load 15(coords3D) 79: 13(fvec3) Load 15(coords3D)
77: 7(float) Load 9(lod) 80: 7(float) Load 9(lod)
78: 19(fvec4) TextureSampleLod 75 76 77 81: 19(fvec4) ImageSampleExplicitLod 78 79 80
79: 19(fvec4) Load 24(color) 82: 19(fvec4) Load 24(color)
80: 19(fvec4) FAdd 79 78 83: 19(fvec4) FAdd 82 81
Store 24(color) 80 Store 24(color) 83
81: 72 Load 74(texSampler3D) 84: 75 Load 77(texSampler3D)
82: 19(fvec4) Load 21(coords4D) 85: 19(fvec4) Load 21(coords4D)
83: 7(float) Load 9(lod) 86: 7(float) Load 9(lod)
84: 19(fvec4) TextureSampleProjLod 81 82 83 87: 19(fvec4) ImageSampleProjExplicitLod 84 85 86
85: 19(fvec4) Load 24(color) 88: 19(fvec4) Load 24(color)
86: 19(fvec4) FAdd 85 84 89: 19(fvec4) FAdd 88 87
Store 24(color) 86 Store 24(color) 89
90: 87 Load 89(texSamplerCube) 94: 91 Load 93(texSamplerCube)
91: 13(fvec3) Load 15(coords3D) 95: 13(fvec3) Load 15(coords3D)
92: 7(float) Load 9(lod) 96: 7(float) Load 9(lod)
93: 19(fvec4) TextureSampleLod 90 91 92 97: 19(fvec4) ImageSampleExplicitLod 94 95 96
94: 19(fvec4) Load 24(color) 98: 19(fvec4) Load 24(color)
95: 19(fvec4) FAdd 94 93 99: 19(fvec4) FAdd 98 97
Store 24(color) 95 Store 24(color) 99
99: 96 Load 98(shadowSampler1D) 104: 101 Load 103(shadowSampler1D)
100: 13(fvec3) Load 15(coords3D) 105: 13(fvec3) Load 15(coords3D)
101: 7(float) Load 9(lod) 106: 7(float) Load 9(lod)
102: 19(fvec4) TextureSampleLod 99 100 101 107: 7(float) CompositeExtract 105 2
103: 19(fvec4) Load 24(color) 108: 19(fvec4) ImageSampleDrefExplicitLod 104 105 107 106
104: 19(fvec4) FAdd 103 102 109: 19(fvec4) Load 24(color)
Store 24(color) 104 110: 19(fvec4) FAdd 109 108
108: 105 Load 107(shadowSampler2D) Store 24(color) 110
109: 13(fvec3) Load 15(coords3D) 115: 112 Load 114(shadowSampler2D)
110: 7(float) Load 9(lod) 116: 13(fvec3) Load 15(coords3D)
111: 19(fvec4) TextureSampleLod 108 109 110 117: 7(float) Load 9(lod)
112: 19(fvec4) Load 24(color) 118: 7(float) CompositeExtract 116 2
113: 19(fvec4) FAdd 112 111 119: 19(fvec4) ImageSampleDrefExplicitLod 115 116 118 117
Store 24(color) 113 120: 19(fvec4) Load 24(color)
114: 96 Load 98(shadowSampler1D) 121: 19(fvec4) FAdd 120 119
115: 19(fvec4) Load 21(coords4D) Store 24(color) 121
116: 7(float) Load 9(lod) 122: 101 Load 103(shadowSampler1D)
117: 19(fvec4) TextureSampleProjLod 114 115 116 123: 19(fvec4) Load 21(coords4D)
118: 19(fvec4) Load 24(color) 124: 7(float) Load 9(lod)
119: 19(fvec4) FAdd 118 117 125: 7(float) CompositeExtract 123 3
Store 24(color) 119 126: 19(fvec4) ImageSampleProjDrefExplicitLod 122 123 125 124
120: 105 Load 107(shadowSampler2D) 127: 19(fvec4) Load 24(color)
121: 19(fvec4) Load 21(coords4D) 128: 19(fvec4) FAdd 127 126
122: 7(float) Load 9(lod) Store 24(color) 128
123: 19(fvec4) TextureSampleProjLod 120 121 122 129: 112 Load 114(shadowSampler2D)
124: 19(fvec4) Load 24(color) 130: 19(fvec4) Load 21(coords4D)
125: 19(fvec4) FAdd 124 123 131: 7(float) Load 9(lod)
Store 24(color) 125 132: 7(float) CompositeExtract 130 3
128: 19(fvec4) Load 24(color) 133: 19(fvec4) ImageSampleProjDrefExplicitLod 129 130 132 131
Store 127(gl_Position) 128 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 Branch 6
6: Label 6: Label
Return Return

264
Test/baseResults/spv.types.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 264 // Id's are bound by 264
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "b" Name 9 "b"
Name 11 "u_b" Name 11 "u_b"
@ -49,295 +51,295 @@ Linked fragment stage:
Name 162 "u_f4" Name 162 "u_f4"
Name 165 "i_f4" Name 165 "i_f4"
Name 169 "gl_FragColor" Name 169 "gl_FragColor"
Decorate 95(i_i) Flat Decorate 95(i_i) Flat
Decorate 105(i_i2) Flat Decorate 105(i_i2) Flat
Decorate 115(i_i3) Flat Decorate 115(i_i3) Flat
Decorate 125(i_i4) Flat Decorate 125(i_i4) Flat
Decorate 135(i_f) Smooth Decorate 135(i_f) Smooth
Decorate 145(i_f2) Smooth Decorate 145(i_f2) Smooth
Decorate 155(i_f3) Smooth Decorate 155(i_f3) Smooth
Decorate 165(i_f4) Smooth Decorate 165(i_f4) Smooth
Decorate 169(gl_FragColor) BuiltIn FragColor Decorate 169(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeBool 7: TypeBool
8: TypePointer Function 7(bool) 8: TypePointer Function 7(bool)
10: TypePointer UniformConstant 7(bool) 10: TypePointer UniformConstant 7(bool)
11(u_b): 10(ptr) Variable UniformConstant 11(u_b): 10(ptr) Variable UniformConstant
13(i_b): 10(ptr) Variable UniformConstant 13(i_b): 10(ptr) Variable UniformConstant
16: TypeVector 7(bool) 2 16: TypeVector 7(bool) 2
17: TypePointer Function 16(bvec2) 17: TypePointer Function 16(bvec2)
19: TypePointer UniformConstant 16(bvec2) 19: TypePointer UniformConstant 16(bvec2)
20(u_b2): 19(ptr) Variable UniformConstant 20(u_b2): 19(ptr) Variable UniformConstant
23(i_b2): 19(ptr) Variable UniformConstant 23(i_b2): 19(ptr) Variable UniformConstant
34: TypeVector 7(bool) 3 34: TypeVector 7(bool) 3
35: TypePointer Function 34(bvec3) 35: TypePointer Function 34(bvec3)
37: TypePointer UniformConstant 34(bvec3) 37: TypePointer UniformConstant 34(bvec3)
38(u_b3): 37(ptr) Variable UniformConstant 38(u_b3): 37(ptr) Variable UniformConstant
41(i_b3): 37(ptr) Variable UniformConstant 41(i_b3): 37(ptr) Variable UniformConstant
58: TypeVector 7(bool) 4 58: TypeVector 7(bool) 4
59: TypePointer Function 58(bvec4) 59: TypePointer Function 58(bvec4)
61: TypePointer UniformConstant 58(bvec4) 61: TypePointer UniformConstant 58(bvec4)
62(u_b4): 61(ptr) Variable UniformConstant 62(u_b4): 61(ptr) Variable UniformConstant
65(i_b4): 61(ptr) Variable UniformConstant 65(i_b4): 61(ptr) Variable UniformConstant
88: TypeInt 32 1 88: TypeInt 32 1
89: TypePointer Function 88(int) 89: TypePointer Function 88(int)
91: TypePointer UniformConstant 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) 94: TypePointer Input 88(int)
95(i_i): 94(ptr) Variable Input 95(i_i): 94(ptr) Variable Input
98: TypeVector 88(int) 2 98: TypeVector 88(int) 2
99: TypePointer Function 98(ivec2) 99: TypePointer Function 98(ivec2)
101: TypePointer UniformConstant 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) 104: TypePointer Input 98(ivec2)
105(i_i2): 104(ptr) Variable Input 105(i_i2): 104(ptr) Variable Input
108: TypeVector 88(int) 3 108: TypeVector 88(int) 3
109: TypePointer Function 108(ivec3) 109: TypePointer Function 108(ivec3)
111: TypePointer UniformConstant 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) 114: TypePointer Input 108(ivec3)
115(i_i3): 114(ptr) Variable Input 115(i_i3): 114(ptr) Variable Input
118: TypeVector 88(int) 4 118: TypeVector 88(int) 4
119: TypePointer Function 118(ivec4) 119: TypePointer Function 118(ivec4)
121: TypePointer UniformConstant 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) 124: TypePointer Input 118(ivec4)
125(i_i4): 124(ptr) Variable Input 125(i_i4): 124(ptr) Variable Input
128: TypeFloat 32 128: TypeFloat 32
129: TypePointer Function 128(float) 129: TypePointer Function 128(float)
131: TypePointer UniformConstant 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) 134: TypePointer Input 128(float)
135(i_f): 134(ptr) Variable Input 135(i_f): 134(ptr) Variable Input
138: TypeVector 128(float) 2 138: TypeVector 128(float) 2
139: TypePointer Function 138(fvec2) 139: TypePointer Function 138(fvec2)
141: TypePointer UniformConstant 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) 144: TypePointer Input 138(fvec2)
145(i_f2): 144(ptr) Variable Input 145(i_f2): 144(ptr) Variable Input
148: TypeVector 128(float) 3 148: TypeVector 128(float) 3
149: TypePointer Function 148(fvec3) 149: TypePointer Function 148(fvec3)
151: TypePointer UniformConstant 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) 154: TypePointer Input 148(fvec3)
155(i_f3): 154(ptr) Variable Input 155(i_f3): 154(ptr) Variable Input
158: TypeVector 128(float) 4 158: TypeVector 128(float) 4
159: TypePointer Function 158(fvec4) 159: TypePointer Function 158(fvec4)
161: TypePointer UniformConstant 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) 164: TypePointer Input 158(fvec4)
165(i_f4): 164(ptr) Variable Input 165(i_f4): 164(ptr) Variable Input
168: TypePointer Output 158(fvec4) 168: TypePointer Output 158(fvec4)
169(gl_FragColor): 168(ptr) Variable Output 169(gl_FragColor): 168(ptr) Variable Output
261: 128(float) Constant 1065353216 261: 128(float) Constant 1065353216
262: 158(fvec4) ConstantComposite 261 261 261 261 262: 158(fvec4) ConstantComposite 261 261 261 261
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(b): 8(ptr) Variable Function 9(b): 8(ptr) Variable Function
18(b2): 17(ptr) Variable Function 18(b2): 17(ptr) Variable Function
36(b3): 35(ptr) Variable Function 36(b3): 35(ptr) Variable Function
60(b4): 59(ptr) Variable Function 60(b4): 59(ptr) Variable Function
90(i): 89(ptr) Variable Function 90(i): 89(ptr) Variable Function
100(i2): 99(ptr) Variable Function 100(i2): 99(ptr) Variable Function
110(i3): 109(ptr) Variable Function 110(i3): 109(ptr) Variable Function
120(i4): 119(ptr) Variable Function 120(i4): 119(ptr) Variable Function
130(f): 129(ptr) Variable Function 130(f): 129(ptr) Variable Function
140(f2): 139(ptr) Variable Function 140(f2): 139(ptr) Variable Function
150(f3): 149(ptr) Variable Function 150(f3): 149(ptr) Variable Function
160(f4): 159(ptr) Variable Function 160(f4): 159(ptr) Variable Function
170: 159(ptr) Variable Function 170: 159(ptr) Variable Function
12: 7(bool) Load 11(u_b) 12: 7(bool) Load 11(u_b)
14: 7(bool) Load 13(i_b) 14: 7(bool) Load 13(i_b)
15: 7(bool) LogicalAnd 12 14 15: 7(bool) LogicalAnd 12 14
Store 9(b) 15 Store 9(b) 15
21: 16(bvec2) Load 20(u_b2) 21: 16(bvec2) Load 20(u_b2)
22: 7(bool) CompositeExtract 21 0 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 25: 7(bool) CompositeExtract 24 0
26: 7(bool) LogicalAnd 22 25 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 28: 7(bool) CompositeExtract 27 1
29: 7(bool) LogicalAnd 26 28 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 31: 7(bool) CompositeExtract 30 1
32: 7(bool) LogicalAnd 29 31 32: 7(bool) LogicalAnd 29 31
33: 16(bvec2) CompositeConstruct 32 32 33: 16(bvec2) CompositeConstruct 32 32
Store 18(b2) 33 Store 18(b2) 33
39: 34(bvec3) Load 38(u_b3) 39: 34(bvec3) Load 38(u_b3)
40: 7(bool) CompositeExtract 39 0 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 43: 7(bool) CompositeExtract 42 0
44: 7(bool) LogicalAnd 40 43 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 46: 7(bool) CompositeExtract 45 1
47: 7(bool) LogicalAnd 44 46 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 49: 7(bool) CompositeExtract 48 1
50: 7(bool) LogicalAnd 47 49 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 52: 7(bool) CompositeExtract 51 2
53: 7(bool) LogicalAnd 50 52 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 55: 7(bool) CompositeExtract 54 2
56: 7(bool) LogicalAnd 53 55 56: 7(bool) LogicalAnd 53 55
57: 34(bvec3) CompositeConstruct 56 56 56 57: 34(bvec3) CompositeConstruct 56 56 56
Store 36(b3) 57 Store 36(b3) 57
63: 58(bvec4) Load 62(u_b4) 63: 58(bvec4) Load 62(u_b4)
64: 7(bool) CompositeExtract 63 0 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 67: 7(bool) CompositeExtract 66 0
68: 7(bool) LogicalAnd 64 67 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 70: 7(bool) CompositeExtract 69 1
71: 7(bool) LogicalAnd 68 70 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 73: 7(bool) CompositeExtract 72 1
74: 7(bool) LogicalAnd 71 73 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 76: 7(bool) CompositeExtract 75 2
77: 7(bool) LogicalAnd 74 76 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 79: 7(bool) CompositeExtract 78 2
80: 7(bool) LogicalAnd 77 79 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 82: 7(bool) CompositeExtract 81 3
83: 7(bool) LogicalAnd 80 82 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 85: 7(bool) CompositeExtract 84 3
86: 7(bool) LogicalAnd 83 85 86: 7(bool) LogicalAnd 83 85
87: 58(bvec4) CompositeConstruct 86 86 86 86 87: 58(bvec4) CompositeConstruct 86 86 86 86
Store 60(b4) 87 Store 60(b4) 87
93: 88(int) Load 92(u_i) 93: 88(int) Load 92(u_i)
96: 88(int) Load 95(i_i) 96: 88(int) Load 95(i_i)
97: 88(int) IAdd 93 96 97: 88(int) IAdd 93 96
Store 90(i) 97 Store 90(i) 97
103: 98(ivec2) Load 102(u_i2) 103: 98(ivec2) Load 102(u_i2)
106: 98(ivec2) Load 105(i_i2) 106: 98(ivec2) Load 105(i_i2)
107: 98(ivec2) IAdd 103 106 107: 98(ivec2) IAdd 103 106
Store 100(i2) 107 Store 100(i2) 107
113: 108(ivec3) Load 112(u_i3) 113: 108(ivec3) Load 112(u_i3)
116: 108(ivec3) Load 115(i_i3) 116: 108(ivec3) Load 115(i_i3)
117: 108(ivec3) IAdd 113 116 117: 108(ivec3) IAdd 113 116
Store 110(i3) 117 Store 110(i3) 117
123: 118(ivec4) Load 122(u_i4) 123: 118(ivec4) Load 122(u_i4)
126: 118(ivec4) Load 125(i_i4) 126: 118(ivec4) Load 125(i_i4)
127: 118(ivec4) IAdd 123 126 127: 118(ivec4) IAdd 123 126
Store 120(i4) 127 Store 120(i4) 127
133: 128(float) Load 132(u_f) 133: 128(float) Load 132(u_f)
136: 128(float) Load 135(i_f) 136: 128(float) Load 135(i_f)
137: 128(float) FAdd 133 136 137: 128(float) FAdd 133 136
Store 130(f) 137 Store 130(f) 137
143: 138(fvec2) Load 142(u_f2) 143: 138(fvec2) Load 142(u_f2)
146: 138(fvec2) Load 145(i_f2) 146: 138(fvec2) Load 145(i_f2)
147: 138(fvec2) FAdd 143 146 147: 138(fvec2) FAdd 143 146
Store 140(f2) 147 Store 140(f2) 147
153: 148(fvec3) Load 152(u_f3) 153: 148(fvec3) Load 152(u_f3)
156: 148(fvec3) Load 155(i_f3) 156: 148(fvec3) Load 155(i_f3)
157: 148(fvec3) FAdd 153 156 157: 148(fvec3) FAdd 153 156
Store 150(f3) 157 Store 150(f3) 157
163: 158(fvec4) Load 162(u_f4) 163: 158(fvec4) Load 162(u_f4)
166: 158(fvec4) Load 165(i_f4) 166: 158(fvec4) Load 165(i_f4)
167: 158(fvec4) FAdd 163 166 167: 158(fvec4) FAdd 163 166
Store 160(f4) 167 Store 160(f4) 167
171: 7(bool) Load 9(b) 171: 7(bool) Load 9(b)
172: 16(bvec2) Load 18(b2) 172: 16(bvec2) Load 18(b2)
173: 7(bool) CompositeExtract 172 0 173: 7(bool) CompositeExtract 172 0
174: 7(bool) LogicalOr 171 173 174: 7(bool) LogicalOr 171 173
175: 16(bvec2) Load 18(b2) 175: 16(bvec2) Load 18(b2)
176: 7(bool) CompositeExtract 175 1 176: 7(bool) CompositeExtract 175 1
177: 7(bool) LogicalOr 174 176 177: 7(bool) LogicalOr 174 176
178: 34(bvec3) Load 36(b3) 178: 34(bvec3) Load 36(b3)
179: 7(bool) CompositeExtract 178 0 179: 7(bool) CompositeExtract 178 0
180: 7(bool) LogicalOr 177 179 180: 7(bool) LogicalOr 177 179
181: 34(bvec3) Load 36(b3) 181: 34(bvec3) Load 36(b3)
182: 7(bool) CompositeExtract 181 1 182: 7(bool) CompositeExtract 181 1
183: 7(bool) LogicalOr 180 182 183: 7(bool) LogicalOr 180 182
184: 34(bvec3) Load 36(b3) 184: 34(bvec3) Load 36(b3)
185: 7(bool) CompositeExtract 184 2 185: 7(bool) CompositeExtract 184 2
186: 7(bool) LogicalOr 183 185 186: 7(bool) LogicalOr 183 185
187: 58(bvec4) Load 60(b4) 187: 58(bvec4) Load 60(b4)
188: 7(bool) CompositeExtract 187 0 188: 7(bool) CompositeExtract 187 0
189: 7(bool) LogicalOr 186 188 189: 7(bool) LogicalOr 186 188
190: 58(bvec4) Load 60(b4) 190: 58(bvec4) Load 60(b4)
191: 7(bool) CompositeExtract 190 1 191: 7(bool) CompositeExtract 190 1
192: 7(bool) LogicalOr 189 191 192: 7(bool) LogicalOr 189 191
193: 58(bvec4) Load 60(b4) 193: 58(bvec4) Load 60(b4)
194: 7(bool) CompositeExtract 193 2 194: 7(bool) CompositeExtract 193 2
195: 7(bool) LogicalOr 192 194 195: 7(bool) LogicalOr 192 194
196: 58(bvec4) Load 60(b4) 196: 58(bvec4) Load 60(b4)
197: 7(bool) CompositeExtract 196 3 197: 7(bool) CompositeExtract 196 3
198: 7(bool) LogicalOr 195 197 198: 7(bool) LogicalOr 195 197
SelectionMerge 200 None SelectionMerge 200 None
BranchConditional 198 199 260 BranchConditional 198 199 260
199: Label 199: Label
201: 88(int) Load 90(i) 201: 88(int) Load 90(i)
202: 98(ivec2) Load 100(i2) 202: 98(ivec2) Load 100(i2)
203: 88(int) CompositeExtract 202 0 203: 88(int) CompositeExtract 202 0
204: 88(int) IAdd 201 203 204: 88(int) IAdd 201 203
205: 98(ivec2) Load 100(i2) 205: 98(ivec2) Load 100(i2)
206: 88(int) CompositeExtract 205 1 206: 88(int) CompositeExtract 205 1
207: 88(int) IAdd 204 206 207: 88(int) IAdd 204 206
208: 108(ivec3) Load 110(i3) 208: 108(ivec3) Load 110(i3)
209: 88(int) CompositeExtract 208 0 209: 88(int) CompositeExtract 208 0
210: 88(int) IAdd 207 209 210: 88(int) IAdd 207 209
211: 108(ivec3) Load 110(i3) 211: 108(ivec3) Load 110(i3)
212: 88(int) CompositeExtract 211 1 212: 88(int) CompositeExtract 211 1
213: 88(int) IAdd 210 212 213: 88(int) IAdd 210 212
214: 108(ivec3) Load 110(i3) 214: 108(ivec3) Load 110(i3)
215: 88(int) CompositeExtract 214 2 215: 88(int) CompositeExtract 214 2
216: 88(int) IAdd 213 215 216: 88(int) IAdd 213 215
217: 118(ivec4) Load 120(i4) 217: 118(ivec4) Load 120(i4)
218: 88(int) CompositeExtract 217 0 218: 88(int) CompositeExtract 217 0
219: 88(int) IAdd 216 218 219: 88(int) IAdd 216 218
220: 118(ivec4) Load 120(i4) 220: 118(ivec4) Load 120(i4)
221: 88(int) CompositeExtract 220 1 221: 88(int) CompositeExtract 220 1
222: 88(int) IAdd 219 221 222: 88(int) IAdd 219 221
223: 118(ivec4) Load 120(i4) 223: 118(ivec4) Load 120(i4)
224: 88(int) CompositeExtract 223 2 224: 88(int) CompositeExtract 223 2
225: 88(int) IAdd 222 224 225: 88(int) IAdd 222 224
226: 118(ivec4) Load 120(i4) 226: 118(ivec4) Load 120(i4)
227: 88(int) CompositeExtract 226 3 227: 88(int) CompositeExtract 226 3
228: 88(int) IAdd 225 227 228: 88(int) IAdd 225 227
229: 128(float) ConvertSToF 228 229: 128(float) ConvertSToF 228
230: 128(float) Load 130(f) 230: 128(float) Load 130(f)
231: 128(float) FAdd 229 230 231: 128(float) FAdd 229 230
232: 138(fvec2) Load 140(f2) 232: 138(fvec2) Load 140(f2)
233: 128(float) CompositeExtract 232 0 233: 128(float) CompositeExtract 232 0
234: 128(float) FAdd 231 233 234: 128(float) FAdd 231 233
235: 138(fvec2) Load 140(f2) 235: 138(fvec2) Load 140(f2)
236: 128(float) CompositeExtract 235 1 236: 128(float) CompositeExtract 235 1
237: 128(float) FAdd 234 236 237: 128(float) FAdd 234 236
238: 148(fvec3) Load 150(f3) 238: 148(fvec3) Load 150(f3)
239: 128(float) CompositeExtract 238 0 239: 128(float) CompositeExtract 238 0
240: 128(float) FAdd 237 239 240: 128(float) FAdd 237 239
241: 148(fvec3) Load 150(f3) 241: 148(fvec3) Load 150(f3)
242: 128(float) CompositeExtract 241 1 242: 128(float) CompositeExtract 241 1
243: 128(float) FAdd 240 242 243: 128(float) FAdd 240 242
244: 148(fvec3) Load 150(f3) 244: 148(fvec3) Load 150(f3)
245: 128(float) CompositeExtract 244 2 245: 128(float) CompositeExtract 244 2
246: 128(float) FAdd 243 245 246: 128(float) FAdd 243 245
247: 158(fvec4) Load 160(f4) 247: 158(fvec4) Load 160(f4)
248: 128(float) CompositeExtract 247 0 248: 128(float) CompositeExtract 247 0
249: 128(float) FAdd 246 248 249: 128(float) FAdd 246 248
250: 158(fvec4) Load 160(f4) 250: 158(fvec4) Load 160(f4)
251: 128(float) CompositeExtract 250 1 251: 128(float) CompositeExtract 250 1
252: 128(float) FAdd 249 251 252: 128(float) FAdd 249 251
253: 158(fvec4) Load 160(f4) 253: 158(fvec4) Load 160(f4)
254: 128(float) CompositeExtract 253 2 254: 128(float) CompositeExtract 253 2
255: 128(float) FAdd 252 254 255: 128(float) FAdd 252 254
256: 158(fvec4) Load 160(f4) 256: 158(fvec4) Load 160(f4)
257: 128(float) CompositeExtract 256 3 257: 128(float) CompositeExtract 256 3
258: 128(float) FAdd 255 257 258: 128(float) FAdd 255 257
259: 158(fvec4) CompositeConstruct 258 258 258 258 259: 158(fvec4) CompositeConstruct 258 258 258 258
Store 170 259 Store 170 259
Branch 200 Branch 200
260: Label 260: Label
Store 170 262 Store 170 262
Branch 200 Branch 200
200: Label 200: Label
263: 158(fvec4) Load 170 263: 158(fvec4) Load 170
Store 169(gl_FragColor) 263 Store 169(gl_FragColor) 263
Branch 6 Branch 6
6: Label 6: Label
Return Return

541
Test/baseResults/spv.uint.frag.out Normal file → Executable file
View File

@ -5,12 +5,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 206 // Id's are bound by 207
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "count" Name 9 "count"
Name 13 "u" Name 13 "u"
@ -20,47 +22,47 @@ Linked fragment stage:
Name 58 "shiftediu" Name 58 "shiftediu"
Name 59 "shifteduu" Name 59 "shifteduu"
Name 67 "c" Name 67 "c"
Name 70 "usampler" Name 71 "usampler"
Name 75 "tc" Name 76 "tc"
Name 108 "af" Name 109 "af"
Name 112 "ab" Name 113 "ab"
Name 116 "ai" Name 117 "ai"
Name 151 "mask1" Name 152 "mask1"
Name 153 "mask2" Name 154 "mask2"
Name 155 "mask3" Name 156 "mask3"
Name 159 "mask4" Name 160 "mask4"
Name 199 "f" Name 200 "f"
Name 201 "v" Name 202 "v"
Name 203 "i" Name 204 "i"
Name 205 "b" Name 206 "b"
Decorate 9(count) PrecisionMedium Decorate 9(count) RelaxedPrecision
Decorate 13(u) PrecisionMedium Decorate 13(u) RelaxedPrecision
Decorate 16(t) PrecisionMedium Decorate 16(t) RelaxedPrecision
Decorate 16(t) Flat Decorate 16(t) Flat
Decorate 54(shiftedii) PrecisionMedium Decorate 54(shiftedii) RelaxedPrecision
Decorate 56(shiftedui) PrecisionMedium Decorate 56(shiftedui) RelaxedPrecision
Decorate 58(shiftediu) PrecisionMedium Decorate 58(shiftediu) RelaxedPrecision
Decorate 59(shifteduu) PrecisionMedium Decorate 59(shifteduu) RelaxedPrecision
Decorate 67(c) PrecisionMedium Decorate 67(c) RelaxedPrecision
Decorate 70(usampler) PrecisionMedium Decorate 71(usampler) RelaxedPrecision
Decorate 75(tc) PrecisionMedium Decorate 76(tc) RelaxedPrecision
Decorate 75(tc) Smooth Decorate 76(tc) Smooth
Decorate 108(af) PrecisionMedium Decorate 109(af) RelaxedPrecision
Decorate 116(ai) PrecisionMedium Decorate 117(ai) RelaxedPrecision
Decorate 151(mask1) PrecisionMedium Decorate 152(mask1) RelaxedPrecision
Decorate 153(mask2) PrecisionMedium Decorate 154(mask2) RelaxedPrecision
Decorate 155(mask3) PrecisionMedium Decorate 156(mask3) RelaxedPrecision
Decorate 159(mask4) PrecisionMedium Decorate 160(mask4) RelaxedPrecision
Decorate 199(f) PrecisionMedium Decorate 200(f) RelaxedPrecision
Decorate 199(f) Smooth Decorate 200(f) Smooth
Decorate 199(f) NoStaticUse Decorate 200(f) NoStaticUse
Decorate 201(v) PrecisionMedium Decorate 202(v) RelaxedPrecision
Decorate 201(v) NoStaticUse Decorate 202(v) NoStaticUse
Decorate 203(i) PrecisionMedium Decorate 204(i) RelaxedPrecision
Decorate 203(i) NoStaticUse Decorate 204(i) NoStaticUse
Decorate 205(b) NoStaticUse Decorate 206(b) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 1 10: 7(int) Constant 1
@ -68,7 +70,7 @@ Linked fragment stage:
12: TypePointer Function 11(int) 12: TypePointer Function 11(int)
14: TypeVector 11(int) 2 14: TypeVector 11(int) 2
15: TypePointer Input 14(ivec2) 15: TypePointer Input 14(ivec2)
16(t): 15(ptr) Variable Input 16(t): 15(ptr) Variable Input
19: 11(int) Constant 3 19: 11(int) Constant 3
21: TypeBool 21: TypeBool
22: 21(bool) ConstantTrue 22: 21(bool) ConstantTrue
@ -83,271 +85,272 @@ Linked fragment stage:
57: 11(int) Constant 4194303 57: 11(int) Constant 4194303
65: TypeVector 11(int) 4 65: TypeVector 11(int) 4
66: TypePointer Output 65(ivec4) 66: TypePointer Output 65(ivec4)
67(c): 66(ptr) Variable Output 67(c): 66(ptr) Variable Output
68: TypeSampler11(int) 2D filter+texture 68: TypeImage 11(int) 2D sampled format:Unknown
69: TypePointer UniformConstant 68 69: TypeSampledImage 68
70(usampler): 69(ptr) Variable UniformConstant 70: TypePointer UniformConstant 69
72: TypeFloat 32 71(usampler): 70(ptr) Variable UniformConstant
73: TypeVector 72(float) 2 73: TypeFloat 32
74: TypePointer Input 73(fvec2) 74: TypeVector 73(float) 2
75(tc): 74(ptr) Variable Input 75: TypePointer Input 74(fvec2)
85: 72(float) Constant 1065353216 76(tc): 75(ptr) Variable Input
97: 72(float) Constant 1073741824 86: 73(float) Constant 1065353216
98: 73(fvec2) ConstantComposite 97 97 98: 73(float) Constant 1073741824
103: 11(int) Constant 4 99: 74(fvec2) ConstantComposite 98 98
107: TypePointer Function 72(float) 104: 11(int) Constant 4
111: TypePointer Function 21(bool) 108: TypePointer Function 73(float)
114: 11(int) Constant 0 112: TypePointer Function 21(bool)
122: 11(int) Constant 1 115: 11(int) Constant 0
133: 7(int) Constant 17 123: 11(int) Constant 1
138: 7(int) Constant 19 134: 7(int) Constant 17
143: 7(int) Constant 23 139: 7(int) Constant 19
148: 7(int) Constant 27 144: 7(int) Constant 23
152: 11(int) Constant 161 149: 7(int) Constant 27
154: 11(int) Constant 2576 153: 11(int) Constant 161
157: 7(int) Constant 4 155: 11(int) Constant 2576
160: 11(int) Constant 2737 158: 7(int) Constant 4
198: TypePointer Input 72(float) 161: 11(int) Constant 2737
199(f): 198(ptr) Variable Input 199: TypePointer Input 73(float)
200: TypePointer UniformConstant 65(ivec4) 200(f): 199(ptr) Variable Input
201(v): 200(ptr) Variable UniformConstant 201: TypePointer UniformConstant 65(ivec4)
202: TypePointer UniformConstant 7(int) 202(v): 201(ptr) Variable UniformConstant
203(i): 202(ptr) Variable UniformConstant 203: TypePointer UniformConstant 7(int)
204: TypePointer UniformConstant 21(bool) 204(i): 203(ptr) Variable UniformConstant
205(b): 204(ptr) Variable UniformConstant 205: TypePointer UniformConstant 21(bool)
206(b): 205(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(count): 8(ptr) Variable Function 9(count): 8(ptr) Variable Function
13(u): 12(ptr) Variable Function 13(u): 12(ptr) Variable Function
54(shiftedii): 8(ptr) Variable Function 54(shiftedii): 8(ptr) Variable Function
56(shiftedui): 12(ptr) Variable Function 56(shiftedui): 12(ptr) Variable Function
58(shiftediu): 8(ptr) Variable Function 58(shiftediu): 8(ptr) Variable Function
59(shifteduu): 12(ptr) Variable Function 59(shifteduu): 12(ptr) Variable Function
108(af): 107(ptr) Variable Function 109(af): 108(ptr) Variable Function
112(ab): 111(ptr) Variable Function 113(ab): 112(ptr) Variable Function
116(ai): 8(ptr) Variable Function 117(ai): 8(ptr) Variable Function
151(mask1): 12(ptr) Variable Function 152(mask1): 12(ptr) Variable Function
153(mask2): 12(ptr) Variable Function 154(mask2): 12(ptr) Variable Function
155(mask3): 12(ptr) Variable Function 156(mask3): 12(ptr) Variable Function
159(mask4): 12(ptr) Variable Function 160(mask4): 12(ptr) Variable Function
Store 9(count) 10 Store 9(count) 10
17: 14(ivec2) Load 16(t) 17: 14(ivec2) Load 16(t)
18: 11(int) CompositeExtract 17 1 18: 11(int) CompositeExtract 17 1
20: 11(int) IAdd 18 19 20: 11(int) IAdd 18 19
Store 13(u) 20 Store 13(u) 20
SelectionMerge 24 None SelectionMerge 24 None
BranchConditional 22 23 24 BranchConditional 22 23 24
23: Label 23: Label
26: 7(int) Load 9(count) 26: 7(int) Load 9(count)
27: 7(int) IMul 26 25 27: 7(int) IMul 26 25
Store 9(count) 27 Store 9(count) 27
Branch 24 Branch 24
24: Label 24: Label
SelectionMerge 29 None SelectionMerge 29 None
BranchConditional 22 28 29 BranchConditional 22 28 29
28: Label 28: Label
31: 7(int) Load 9(count) 31: 7(int) Load 9(count)
32: 7(int) IMul 31 30 32: 7(int) IMul 31 30
Store 9(count) 32 Store 9(count) 32
Branch 29 Branch 29
29: Label 29: Label
SelectionMerge 35 None SelectionMerge 35 None
BranchConditional 33 34 35 BranchConditional 33 34 35
34: Label 34: Label
37: 7(int) Load 9(count) 37: 7(int) Load 9(count)
38: 7(int) IMul 37 36 38: 7(int) IMul 37 36
Store 9(count) 38 Store 9(count) 38
Branch 35 Branch 35
35: Label 35: Label
SelectionMerge 40 None SelectionMerge 40 None
BranchConditional 22 39 40 BranchConditional 22 39 40
39: Label 39: Label
42: 7(int) Load 9(count) 42: 7(int) Load 9(count)
43: 7(int) IMul 42 41 43: 7(int) IMul 42 41
Store 9(count) 43 Store 9(count) 43
Branch 40 Branch 40
40: Label 40: Label
SelectionMerge 45 None SelectionMerge 45 None
BranchConditional 22 44 45 BranchConditional 22 44 45
44: Label 44: Label
47: 7(int) Load 9(count) 47: 7(int) Load 9(count)
48: 7(int) IMul 47 46 48: 7(int) IMul 47 46
Store 9(count) 48 Store 9(count) 48
Branch 45 Branch 45
45: Label 45: Label
SelectionMerge 50 None SelectionMerge 50 None
BranchConditional 33 49 50 BranchConditional 33 49 50
49: Label 49: Label
52: 7(int) Load 9(count) 52: 7(int) Load 9(count)
53: 7(int) IMul 52 51 53: 7(int) IMul 52 51
Store 9(count) 53 Store 9(count) 53
Branch 50 Branch 50
50: Label 50: Label
Store 54(shiftedii) 55 Store 54(shiftedii) 55
Store 56(shiftedui) 57 Store 56(shiftedui) 57
Store 58(shiftediu) 55 Store 58(shiftediu) 55
Store 59(shifteduu) 57 Store 59(shifteduu) 57
60: 7(int) Load 54(shiftedii) 60: 7(int) Load 54(shiftedii)
61: 7(int) Load 58(shiftediu) 61: 7(int) Load 58(shiftediu)
62: 21(bool) IEqual 60 61 62: 21(bool) IEqual 60 61
SelectionMerge 64 None SelectionMerge 64 None
BranchConditional 62 63 64 BranchConditional 62 63 64
63: Label 63: Label
71: 68 Load 70(usampler) 72: 69 Load 71(usampler)
76: 73(fvec2) Load 75(tc) 77: 74(fvec2) Load 76(tc)
77: 65(ivec4) TextureSample 71 76 78: 65(ivec4) ImageSampleImplicitLod 72 77
Store 67(c) 77 Store 67(c) 78
Branch 64 Branch 64
64: Label 64: Label
78: 11(int) Load 56(shiftedui) 79: 11(int) Load 56(shiftedui)
79: 11(int) Load 59(shifteduu) 80: 11(int) Load 59(shifteduu)
80: 21(bool) IEqual 78 79 81: 21(bool) IEqual 79 80
SelectionMerge 82 None SelectionMerge 83 None
BranchConditional 80 81 82 BranchConditional 81 82 83
81: Label 82: Label
83: 68 Load 70(usampler) 84: 69 Load 71(usampler)
84: 73(fvec2) Load 75(tc) 85: 74(fvec2) Load 76(tc)
86: 73(fvec2) CompositeConstruct 85 85 87: 74(fvec2) CompositeConstruct 86 86
87: 73(fvec2) FAdd 84 86 88: 74(fvec2) FAdd 85 87
88: 65(ivec4) TextureSample 83 87 89: 65(ivec4) ImageSampleImplicitLod 84 88
Store 67(c) 88 Store 67(c) 89
Branch 82 Branch 83
82: Label 83: Label
89: 7(int) Load 54(shiftedii) 90: 7(int) Load 54(shiftedii)
90: 11(int) Load 56(shiftedui) 91: 11(int) Load 56(shiftedui)
91: 7(int) Bitcast 90 92: 7(int) Bitcast 91
92: 21(bool) IEqual 89 91 93: 21(bool) IEqual 90 92
SelectionMerge 94 None SelectionMerge 95 None
BranchConditional 92 93 94 BranchConditional 93 94 95
93: Label 94: Label
95: 68 Load 70(usampler) 96: 69 Load 71(usampler)
96: 73(fvec2) Load 75(tc) 97: 74(fvec2) Load 76(tc)
99: 73(fvec2) FSub 96 98 100: 74(fvec2) FSub 97 99
100: 65(ivec4) TextureSample 95 99 101: 65(ivec4) ImageSampleImplicitLod 96 100
Store 67(c) 100 Store 67(c) 101
Branch 94 Branch 95
94: Label 95: Label
101: 14(ivec2) Load 16(t) 102: 14(ivec2) Load 16(t)
102: 11(int) CompositeExtract 101 0 103: 11(int) CompositeExtract 102 0
104: 21(bool) UGreaterThan 102 103 105: 21(bool) UGreaterThan 103 104
SelectionMerge 106 None SelectionMerge 107 None
BranchConditional 104 105 106 BranchConditional 105 106 107
105: Label 106: Label
109: 11(int) Load 13(u) 110: 11(int) Load 13(u)
110: 72(float) ConvertUToF 109 111: 73(float) ConvertUToF 110
Store 108(af) 110 Store 109(af) 111
113: 11(int) Load 13(u) 114: 11(int) Load 13(u)
115: 21(bool) INotEqual 113 114 116: 21(bool) INotEqual 114 115
Store 112(ab) 115 Store 113(ab) 116
117: 11(int) Load 13(u) 118: 11(int) Load 13(u)
118: 7(int) Bitcast 117 119: 7(int) Bitcast 118
Store 116(ai) 118 Store 117(ai) 119
119: 72(float) Load 108(af) 120: 73(float) Load 109(af)
120: 11(int) ConvertFToU 119 121: 11(int) ConvertFToU 120
121: 21(bool) Load 112(ab) 122: 21(bool) Load 113(ab)
123: 11(int) Select 121 122 114 124: 11(int) Select 122 123 115
124: 7(int) Load 116(ai) 125: 7(int) Load 117(ai)
125: 11(int) Bitcast 124 126: 11(int) Bitcast 125
126: 7(int) Load 9(count) 127: 7(int) Load 9(count)
127: 11(int) Bitcast 126 128: 11(int) Bitcast 127
128: 65(ivec4) CompositeConstruct 120 123 125 127 129: 65(ivec4) CompositeConstruct 121 124 126 128
129: 65(ivec4) Load 67(c) 130: 65(ivec4) Load 67(c)
130: 65(ivec4) IAdd 129 128 131: 65(ivec4) IAdd 130 129
Store 67(c) 130 Store 67(c) 131
Branch 106 Branch 107
106: Label 107: Label
SelectionMerge 132 None SelectionMerge 133 None
BranchConditional 22 131 132 BranchConditional 22 132 133
131: Label 132: Label
134: 7(int) Load 9(count) 135: 7(int) Load 9(count)
135: 7(int) IMul 134 133 136: 7(int) IMul 135 134
Store 9(count) 135 Store 9(count) 136
Branch 132 Branch 133
132: Label 133: Label
SelectionMerge 137 None SelectionMerge 138 None
BranchConditional 33 136 137 BranchConditional 33 137 138
136: Label 137: Label
139: 7(int) Load 9(count) 140: 7(int) Load 9(count)
140: 7(int) IMul 139 138 141: 7(int) IMul 140 139
Store 9(count) 140 Store 9(count) 141
Branch 137 Branch 138
137: Label 138: Label
SelectionMerge 142 None SelectionMerge 143 None
BranchConditional 22 141 142 BranchConditional 22 142 143
141: Label 142: Label
144: 7(int) Load 9(count) 145: 7(int) Load 9(count)
145: 7(int) IMul 144 143 146: 7(int) IMul 145 144
Store 9(count) 145 Store 9(count) 146
Branch 142 Branch 143
142: Label 143: Label
SelectionMerge 147 None SelectionMerge 148 None
BranchConditional 22 146 147 BranchConditional 22 147 148
146: Label 147: Label
149: 7(int) Load 9(count) 150: 7(int) Load 9(count)
150: 7(int) IMul 149 148 151: 7(int) IMul 150 149
Store 9(count) 150 Store 9(count) 151
Branch 147 Branch 148
147: Label 148: Label
Store 151(mask1) 152 Store 152(mask1) 153
Store 153(mask2) 154 Store 154(mask2) 155
156: 11(int) Load 151(mask1) 157: 11(int) Load 152(mask1)
158: 11(int) ShiftLeftLogical 156 157 159: 11(int) ShiftLeftLogical 157 158
Store 155(mask3) 158 Store 156(mask3) 159
Store 159(mask4) 160 Store 160(mask4) 161
161: 11(int) Load 155(mask3) 162: 11(int) Load 156(mask3)
162: 11(int) Load 153(mask2) 163: 11(int) Load 154(mask2)
163: 21(bool) IEqual 161 162 164: 21(bool) IEqual 162 163
SelectionMerge 165 None SelectionMerge 166 None
BranchConditional 163 164 165 BranchConditional 164 165 166
164: Label 165: Label
166: 7(int) Load 9(count) 167: 7(int) Load 9(count)
167: 7(int) IMul 166 25 168: 7(int) IMul 167 25
Store 9(count) 167 Store 9(count) 168
Branch 165 Branch 166
165: Label 166: Label
168: 11(int) Load 155(mask3) 169: 11(int) Load 156(mask3)
169: 11(int) Load 151(mask1) 170: 11(int) Load 152(mask1)
170: 11(int) BitwiseAnd 168 169 171: 11(int) BitwiseAnd 169 170
171: 21(bool) INotEqual 170 114 172: 21(bool) INotEqual 171 115
SelectionMerge 173 None SelectionMerge 174 None
BranchConditional 171 172 173 BranchConditional 172 173 174
172: Label 173: Label
174: 7(int) Load 9(count) 175: 7(int) Load 9(count)
175: 7(int) IMul 174 30 176: 7(int) IMul 175 30
Store 9(count) 175 Store 9(count) 176
Branch 173 Branch 174
173: Label 174: Label
176: 11(int) Load 151(mask1) 177: 11(int) Load 152(mask1)
177: 11(int) Load 155(mask3) 178: 11(int) Load 156(mask3)
178: 11(int) BitwiseOr 176 177 179: 11(int) BitwiseOr 177 178
179: 11(int) Load 159(mask4) 180: 11(int) Load 160(mask4)
180: 21(bool) IEqual 178 179 181: 21(bool) IEqual 179 180
SelectionMerge 182 None SelectionMerge 183 None
BranchConditional 180 181 182 BranchConditional 181 182 183
181: Label 182: Label
183: 7(int) Load 9(count) 184: 7(int) Load 9(count)
184: 7(int) IMul 183 36 185: 7(int) IMul 184 36
Store 9(count) 184 Store 9(count) 185
Branch 182 Branch 183
182: Label 183: Label
185: 11(int) Load 151(mask1) 186: 11(int) Load 152(mask1)
186: 11(int) Load 159(mask4) 187: 11(int) Load 160(mask4)
187: 11(int) BitwiseXor 185 186 188: 11(int) BitwiseXor 186 187
188: 21(bool) IEqual 187 154 189: 21(bool) IEqual 188 155
SelectionMerge 190 None SelectionMerge 191 None
BranchConditional 188 189 190 BranchConditional 189 190 191
189: Label 190: Label
191: 7(int) Load 9(count) 192: 7(int) Load 9(count)
192: 7(int) IMul 191 41 193: 7(int) IMul 192 41
Store 9(count) 192 Store 9(count) 193
Branch 190 Branch 191
190: Label 191: Label
193: 7(int) Load 9(count) 194: 7(int) Load 9(count)
194: 11(int) Bitcast 193 195: 11(int) Bitcast 194
195: 65(ivec4) CompositeConstruct 194 194 194 194 196: 65(ivec4) CompositeConstruct 195 195 195 195
196: 65(ivec4) Load 67(c) 197: 65(ivec4) Load 67(c)
197: 65(ivec4) IAdd 196 195 198: 65(ivec4) IAdd 197 196
Store 67(c) 197 Store 67(c) 198
Branch 6 Branch 6
6: Label 6: Label
Return Return

55
Test/baseResults/spv.uniformArray.frag.out Normal file → Executable file
View File

@ -5,23 +5,25 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 52 // Id's are bound by 53
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "texColor" Name 10 "texColor"
Name 15 "color" Name 15 "color"
Name 26 "inColor" Name 26 "inColor"
Name 36 "alpha" Name 36 "alpha"
Name 47 "gl_FragColor" Name 47 "gl_FragColor"
Name 51 "texSampler2D" Name 52 "texSampler2D"
Decorate 47(gl_FragColor) BuiltIn FragColor Decorate 47(gl_FragColor) BuiltIn FragColor
Decorate 51(texSampler2D) NoStaticUse Decorate 52(texSampler2D) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
@ -29,50 +31,51 @@ Linked fragment stage:
12: 11(int) Constant 6 12: 11(int) Constant 6
13: TypeArray 8(fvec4) 12 13: TypeArray 8(fvec4) 12
14: TypePointer UniformConstant 13 14: TypePointer UniformConstant 13
15(color): 14(ptr) Variable UniformConstant 15(color): 14(ptr) Variable UniformConstant
16: TypeInt 32 1 16: TypeInt 32 1
17: 16(int) Constant 1 17: 16(int) Constant 1
18: TypePointer UniformConstant 8(fvec4) 18: TypePointer UniformConstant 8(fvec4)
24: TypeVector 7(float) 3 24: TypeVector 7(float) 3
25: TypePointer UniformConstant 24(fvec3) 25: TypePointer UniformConstant 24(fvec3)
26(inColor): 25(ptr) Variable UniformConstant 26(inColor): 25(ptr) Variable UniformConstant
33: 11(int) Constant 16 33: 11(int) Constant 16
34: TypeArray 7(float) 33 34: TypeArray 7(float) 33
35: TypePointer UniformConstant 34 35: TypePointer UniformConstant 34
36(alpha): 35(ptr) Variable UniformConstant 36(alpha): 35(ptr) Variable UniformConstant
37: 16(int) Constant 12 37: 16(int) Constant 12
38: TypePointer UniformConstant 7(float) 38: TypePointer UniformConstant 7(float)
46: TypePointer Output 8(fvec4) 46: TypePointer Output 8(fvec4)
47(gl_FragColor): 46(ptr) Variable Output 47(gl_FragColor): 46(ptr) Variable Output
49: TypeSampler7(float) 2D filter+texture 49: TypeImage 7(float) 2D sampled format:Unknown
50: TypePointer UniformConstant 49 50: TypeSampledImage 49
51(texSampler2D): 50(ptr) Variable UniformConstant 51: TypePointer UniformConstant 50
52(texSampler2D): 51(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(texColor): 9(ptr) Variable Function 10(texColor): 9(ptr) Variable Function
19: 18(ptr) AccessChain 15(color) 17 19: 18(ptr) AccessChain 15(color) 17
20: 8(fvec4) Load 19 20: 8(fvec4) Load 19
21: 18(ptr) AccessChain 15(color) 17 21: 18(ptr) AccessChain 15(color) 17
22: 8(fvec4) Load 21 22: 8(fvec4) Load 21
23: 8(fvec4) FAdd 20 22 23: 8(fvec4) FAdd 20 22
Store 10(texColor) 23 Store 10(texColor) 23
27: 24(fvec3) Load 26(inColor) 27: 24(fvec3) Load 26(inColor)
28: 8(fvec4) Load 10(texColor) 28: 8(fvec4) Load 10(texColor)
29: 24(fvec3) VectorShuffle 28 28 0 1 2 29: 24(fvec3) VectorShuffle 28 28 0 1 2
30: 24(fvec3) FAdd 29 27 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 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 39: 38(ptr) AccessChain 36(alpha) 37
40: 7(float) Load 39 40: 7(float) Load 39
41: 8(fvec4) Load 10(texColor) 41: 8(fvec4) Load 10(texColor)
42: 7(float) CompositeExtract 41 3 42: 7(float) CompositeExtract 41 3
43: 7(float) FAdd 42 40 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 45: 8(fvec4) CompositeInsert 43 44 3
Store 10(texColor) 45 Store 10(texColor) 45
48: 8(fvec4) Load 10(texColor) 48: 8(fvec4) Load 10(texColor)
Store 47(gl_FragColor) 48 Store 47(gl_FragColor) 48
Branch 6 Branch 6
6: Label 6: Label
Return Return

135
Test/baseResults/spv.variableArrayIndex.frag.out Normal file → Executable file
View File

@ -7,12 +7,14 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 93 // Id's are bound by 94
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 9 "iLocal" Name 9 "iLocal"
Name 11 "Count" Name 11 "Count"
@ -33,17 +35,17 @@ Linked fragment stage:
Name 35 "foo2" Name 35 "foo2"
Name 37 "foo" Name 37 "foo"
Name 55 "gl_FragColor" Name 55 "gl_FragColor"
Name 59 "sampler" Name 60 "sampler"
Name 63 "coord" Name 64 "coord"
Name 69 "constructed" Name 70 "constructed"
Decorate 55(gl_FragColor) BuiltIn FragColor Decorate 55(gl_FragColor) BuiltIn FragColor
Decorate 63(coord) Smooth Decorate 64(coord) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: TypePointer UniformConstant 7(int) 10: TypePointer UniformConstant 7(int)
11(Count): 10(ptr) Variable UniformConstant 11(Count): 10(ptr) Variable UniformConstant
13: TypeFloat 32 13: TypeFloat 32
14(lunarStruct1): TypeStruct 7(int) 13(float) 14(lunarStruct1): TypeStruct 7(int) 13(float)
15(lunarStruct2): TypeStruct 7(int) 13(float) 14(lunarStruct1) 15(lunarStruct2): TypeStruct 7(int) 13(float) 14(lunarStruct1)
@ -52,7 +54,7 @@ Linked fragment stage:
18: TypeArray 15(lunarStruct2) 17 18: TypeArray 15(lunarStruct2) 17
19(lunarStruct3): TypeStruct 18 7(int) 13(float) 14(lunarStruct1) 19(lunarStruct3): TypeStruct 18 7(int) 13(float) 14(lunarStruct1)
20: TypePointer UniformConstant 19(lunarStruct3) 20: TypePointer UniformConstant 19(lunarStruct3)
21(foo3): 20(ptr) Variable UniformConstant 21(foo3): 20(ptr) Variable UniformConstant
22: 7(int) Constant 0 22: 7(int) Constant 0
23: 7(int) Constant 1 23: 7(int) Constant 1
26: TypeBool 26: TypeBool
@ -60,85 +62,86 @@ Linked fragment stage:
32: 16(int) Constant 5 32: 16(int) Constant 5
33: TypeArray 15(lunarStruct2) 32 33: TypeArray 15(lunarStruct2) 32
34: TypePointer UniformConstant 33 34: TypePointer UniformConstant 33
35(foo2): 34(ptr) Variable UniformConstant 35(foo2): 34(ptr) Variable UniformConstant
36: TypePointer UniformConstant 14(lunarStruct1) 36: TypePointer UniformConstant 14(lunarStruct1)
37(foo): 36(ptr) Variable UniformConstant 37(foo): 36(ptr) Variable UniformConstant
42: 7(int) Constant 2 42: 7(int) Constant 2
47: TypePointer UniformConstant 13(float) 47: TypePointer UniformConstant 13(float)
53: TypeVector 13(float) 4 53: TypeVector 13(float) 4
54: TypePointer Output 53(fvec4) 54: TypePointer Output 53(fvec4)
55(gl_FragColor): 54(ptr) Variable Output 55(gl_FragColor): 54(ptr) Variable Output
57: TypeSampler13(float) 2D filter+texture 57: TypeImage 13(float) 2D sampled format:Unknown
58: TypePointer UniformConstant 57 58: TypeSampledImage 57
59(sampler): 58(ptr) Variable UniformConstant 59: TypePointer UniformConstant 58
61: TypeVector 13(float) 2 60(sampler): 59(ptr) Variable UniformConstant
62: TypePointer Input 61(fvec2) 62: TypeVector 13(float) 2
63(coord): 62(ptr) Variable Input 63: TypePointer Input 62(fvec2)
67: TypeArray 61(fvec2) 17 64(coord): 63(ptr) Variable Input
68: TypePointer Function 67 68: TypeArray 62(fvec2) 17
73: 13(float) Constant 1065353216 69: TypePointer Function 68
74: 13(float) Constant 1073741824 74: 13(float) Constant 1065353216
75: 61(fvec2) ConstantComposite 73 74 75: 13(float) Constant 1073741824
79: TypePointer Function 61(fvec2) 76: 62(fvec2) ConstantComposite 74 75
80: TypePointer Function 62(fvec2)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(iLocal): 8(ptr) Variable Function 9(iLocal): 8(ptr) Variable Function
31(scale): 30(ptr) Variable Function 31(scale): 30(ptr) Variable Function
69(constructed): 68(ptr) Variable Function 70(constructed): 69(ptr) Variable Function
12: 7(int) Load 11(Count) 12: 7(int) Load 11(Count)
Store 9(iLocal) 12 Store 9(iLocal) 12
24: 10(ptr) AccessChain 21(foo3) 22 23 22 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 27: 26(bool) SGreaterThan 25 22
SelectionMerge 29 None SelectionMerge 29 None
BranchConditional 27 28 50 BranchConditional 27 28 50
28: Label 28: Label
38: 10(ptr) AccessChain 37(foo) 22 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 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 43: 7(int) IAdd 41 42
44: 7(int) Load 9(iLocal) 44: 7(int) Load 9(iLocal)
45: 7(int) IAdd 44 23 45: 7(int) IAdd 44 23
Store 9(iLocal) 45 Store 9(iLocal) 45
46: 7(int) IAdd 43 45 46: 7(int) IAdd 43 45
48: 47(ptr) AccessChain 35(foo2) 46 42 23 48: 47(ptr) AccessChain 35(foo2) 46 42 23
49: 13(float) Load 48 49: 13(float) Load 48
Store 31(scale) 49 Store 31(scale) 49
Branch 29 Branch 29
50: Label 50: Label
51: 47(ptr) AccessChain 21(foo3) 22 22 42 23 51: 47(ptr) AccessChain 21(foo3) 22 22 42 23
52: 13(float) Load 51 52: 13(float) Load 51
Store 31(scale) 52 Store 31(scale) 52
Branch 29 Branch 29
29: Label 29: Label
56: 13(float) Load 31(scale) 56: 13(float) Load 31(scale)
60: 57 Load 59(sampler) 61: 58 Load 60(sampler)
64: 61(fvec2) Load 63(coord) 65: 62(fvec2) Load 64(coord)
65: 53(fvec4) TextureSample 60 64 66: 53(fvec4) ImageSampleImplicitLod 61 65
66: 53(fvec4) VectorTimesScalar 65 56 67: 53(fvec4) VectorTimesScalar 66 56
Store 55(gl_FragColor) 66 Store 55(gl_FragColor) 67
70: 61(fvec2) Load 63(coord) 71: 62(fvec2) Load 64(coord)
71: 13(float) Load 31(scale) 72: 13(float) Load 31(scale)
72: 61(fvec2) CompositeConstruct 71 71 73: 62(fvec2) CompositeConstruct 72 72
76: 67 CompositeConstruct 70 72 75 77: 68 CompositeConstruct 71 73 76
Store 69(constructed) 76 Store 70(constructed) 77
77: 10(ptr) AccessChain 37(foo) 22 78: 10(ptr) AccessChain 37(foo) 22
78: 7(int) Load 77 79: 7(int) Load 78
80: 79(ptr) AccessChain 69(constructed) 78 81: 80(ptr) AccessChain 70(constructed) 79
81: 61(fvec2) Load 80 82: 62(fvec2) Load 81
82: 10(ptr) AccessChain 37(foo) 22 83: 10(ptr) AccessChain 37(foo) 22
83: 7(int) Load 82 84: 7(int) Load 83
84: 79(ptr) AccessChain 69(constructed) 83 85: 80(ptr) AccessChain 70(constructed) 84
85: 61(fvec2) Load 84 86: 62(fvec2) Load 85
86: 13(float) CompositeExtract 81 0 87: 13(float) CompositeExtract 82 0
87: 13(float) CompositeExtract 81 1 88: 13(float) CompositeExtract 82 1
88: 13(float) CompositeExtract 85 0 89: 13(float) CompositeExtract 86 0
89: 13(float) CompositeExtract 85 1 90: 13(float) CompositeExtract 86 1
90: 53(fvec4) CompositeConstruct 86 87 88 89 91: 53(fvec4) CompositeConstruct 87 88 89 90
91: 53(fvec4) Load 55(gl_FragColor) 92: 53(fvec4) Load 55(gl_FragColor)
92: 53(fvec4) FAdd 91 90 93: 53(fvec4) FAdd 92 91
Store 55(gl_FragColor) 92 Store 55(gl_FragColor) 93
Branch 6 Branch 6
6: Label 6: Label
Return Return

141
Test/baseResults/spv.varyingArray.frag.out Normal file → Executable file
View File

@ -10,87 +10,90 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 61 // Id's are bound by 62
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "texColor" Name 10 "texColor"
Name 13 "texSampler2D" Name 14 "texSampler2D"
Name 19 "gl_TexCoord" Name 20 "gl_TexCoord"
Name 34 "color" Name 35 "color"
Name 39 "alpha" Name 40 "alpha"
Name 44 "gl_FragColor" Name 45 "gl_FragColor"
Name 48 "foo" Name 49 "foo"
Decorate 19(gl_TexCoord) Smooth Decorate 20(gl_TexCoord) Smooth
Decorate 34(color) Smooth Decorate 35(color) Smooth
Decorate 39(alpha) Smooth Decorate 40(alpha) Smooth
Decorate 44(gl_FragColor) BuiltIn FragColor Decorate 45(gl_FragColor) BuiltIn FragColor
Decorate 48(foo) Smooth Decorate 49(foo) Smooth
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypeSampler7(float) 2D filter+texture 11: TypeImage 7(float) 2D sampled format:Unknown
12: TypePointer UniformConstant 11 12: TypeSampledImage 11
13(texSampler2D): 12(ptr) Variable UniformConstant 13: TypePointer UniformConstant 12
15: TypeInt 32 0 14(texSampler2D): 13(ptr) Variable UniformConstant
16: 15(int) Constant 6 16: TypeInt 32 0
17: TypeArray 8(fvec4) 16 17: 16(int) Constant 6
18: TypePointer Input 17 18: TypeArray 8(fvec4) 17
19(gl_TexCoord): 18(ptr) Variable Input 19: TypePointer Input 18
20: TypeInt 32 1 20(gl_TexCoord): 19(ptr) Variable Input
21: 20(int) Constant 4 21: TypeInt 32 1
22: TypePointer Input 8(fvec4) 22: 21(int) Constant 4
25: 20(int) Constant 5 23: TypePointer Input 8(fvec4)
29: TypeVector 7(float) 2 26: 21(int) Constant 5
34(color): 22(ptr) Variable Input 30: TypeVector 7(float) 2
38: TypePointer Input 7(float) 35(color): 23(ptr) Variable Input
39(alpha): 38(ptr) Variable Input 39: TypePointer Input 7(float)
43: TypePointer Output 8(fvec4) 40(alpha): 39(ptr) Variable Input
44(gl_FragColor): 43(ptr) Variable Output 44: TypePointer Output 8(fvec4)
45: 15(int) Constant 3 45(gl_FragColor): 44(ptr) Variable Output
46: TypeArray 8(fvec4) 45 46: 16(int) Constant 3
47: TypePointer Input 46 47: TypeArray 8(fvec4) 46
48(foo): 47(ptr) Variable Input 48: TypePointer Input 47
49: 20(int) Constant 1 49(foo): 48(ptr) Variable Input
52: 20(int) Constant 0 50: 21(int) Constant 1
53: 21(int) Constant 0
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(texColor): 9(ptr) Variable Function 10(texColor): 9(ptr) Variable Function
14: 11 Load 13(texSampler2D) 15: 12 Load 14(texSampler2D)
23: 22(ptr) AccessChain 19(gl_TexCoord) 21 24: 23(ptr) AccessChain 20(gl_TexCoord) 22
24: 8(fvec4) Load 23 25: 8(fvec4) Load 24
26: 22(ptr) AccessChain 19(gl_TexCoord) 25 27: 23(ptr) AccessChain 20(gl_TexCoord) 26
27: 8(fvec4) Load 26 28: 8(fvec4) Load 27
28: 8(fvec4) FAdd 24 27 29: 8(fvec4) FAdd 25 28
30: 7(float) CompositeExtract 28 0 31: 7(float) CompositeExtract 29 0
31: 7(float) CompositeExtract 28 1 32: 7(float) CompositeExtract 29 1
32: 29(fvec2) CompositeConstruct 30 31 33: 30(fvec2) CompositeConstruct 31 32
33: 8(fvec4) TextureSample 14 32 34: 8(fvec4) ImageSampleImplicitLod 15 33
Store 10(texColor) 33 Store 10(texColor) 34
35: 8(fvec4) Load 34(color) 36: 8(fvec4) Load 35(color)
36: 8(fvec4) Load 10(texColor) 37: 8(fvec4) Load 10(texColor)
37: 8(fvec4) FAdd 36 35 38: 8(fvec4) FAdd 37 36
Store 10(texColor) 37 Store 10(texColor) 38
40: 7(float) Load 39(alpha) 41: 7(float) Load 40(alpha)
41: 8(fvec4) Load 10(texColor) 42: 8(fvec4) Load 10(texColor)
42: 8(fvec4) CompositeInsert 40 41 3 43: 8(fvec4) CompositeInsert 41 42 3
Store 10(texColor) 42 Store 10(texColor) 43
50: 22(ptr) AccessChain 48(foo) 49 51: 23(ptr) AccessChain 49(foo) 50
51: 8(fvec4) Load 50 52: 8(fvec4) Load 51
53: 22(ptr) AccessChain 19(gl_TexCoord) 52 54: 23(ptr) AccessChain 20(gl_TexCoord) 53
54: 8(fvec4) Load 53 55: 8(fvec4) Load 54
55: 8(fvec4) FAdd 51 54 56: 8(fvec4) FAdd 52 55
56: 22(ptr) AccessChain 19(gl_TexCoord) 21 57: 23(ptr) AccessChain 20(gl_TexCoord) 22
57: 8(fvec4) Load 56 58: 8(fvec4) Load 57
58: 8(fvec4) FAdd 55 57 59: 8(fvec4) FAdd 56 58
59: 8(fvec4) Load 10(texColor) 60: 8(fvec4) Load 10(texColor)
60: 8(fvec4) FAdd 58 59 61: 8(fvec4) FAdd 59 60
Store 44(gl_FragColor) 60 Store 45(gl_FragColor) 61
Branch 6 Branch 6
6: Label 6: Label
Return Return

161
Test/baseResults/spv.varyingArrayIndirect.frag.out Normal file → Executable file
View File

@ -10,97 +10,100 @@ Linked fragment stage:
// Module Version 99 // Module Version 99
// Generated by (magic number): 51a00bb // Generated by (magic number): 51a00bb
// Id's are bound by 69 // Id's are bound by 70
Source GLSL 130 Source GLSL 130
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "texColor" Name 10 "texColor"
Name 13 "texSampler2D" Name 14 "texSampler2D"
Name 19 "userIn" Name 20 "userIn"
Name 22 "b" Name 23 "b"
Name 30 "gl_TexCoord" Name 31 "gl_TexCoord"
Name 31 "a" Name 32 "a"
Name 45 "color" Name 46 "color"
Name 50 "alpha" Name 51 "alpha"
Name 55 "gl_FragColor" Name 56 "gl_FragColor"
Decorate 19(userIn) Smooth Decorate 20(userIn) Smooth
Decorate 30(gl_TexCoord) Smooth Decorate 31(gl_TexCoord) Smooth
Decorate 45(color) Smooth Decorate 46(color) Smooth
Decorate 50(alpha) Smooth Decorate 51(alpha) Smooth
Decorate 55(gl_FragColor) BuiltIn FragColor Decorate 56(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypeSampler7(float) 2D filter+texture 11: TypeImage 7(float) 2D sampled format:Unknown
12: TypePointer UniformConstant 11 12: TypeSampledImage 11
13(texSampler2D): 12(ptr) Variable UniformConstant 13: TypePointer UniformConstant 12
15: TypeInt 32 0 14(texSampler2D): 13(ptr) Variable UniformConstant
16: 15(int) Constant 2 16: TypeInt 32 0
17: TypeArray 8(fvec4) 16 17: 16(int) Constant 2
18: TypePointer Input 17 18: TypeArray 8(fvec4) 17
19(userIn): 18(ptr) Variable Input 19: TypePointer Input 18
20: TypeInt 32 1 20(userIn): 19(ptr) Variable Input
21: TypePointer UniformConstant 20(int) 21: TypeInt 32 1
22(b): 21(ptr) Variable UniformConstant 22: TypePointer UniformConstant 21(int)
24: TypePointer Input 8(fvec4) 23(b): 22(ptr) Variable UniformConstant
27: 15(int) Constant 6 25: TypePointer Input 8(fvec4)
28: TypeArray 8(fvec4) 27 28: 16(int) Constant 6
29: TypePointer Input 28 29: TypeArray 8(fvec4) 28
30(gl_TexCoord): 29(ptr) Variable Input 30: TypePointer Input 29
31(a): 21(ptr) Variable UniformConstant 31(gl_TexCoord): 30(ptr) Variable Input
36: 20(int) Constant 5 32(a): 22(ptr) Variable UniformConstant
40: TypeVector 7(float) 2 37: 21(int) Constant 5
45(color): 24(ptr) Variable Input 41: TypeVector 7(float) 2
49: TypePointer Input 7(float) 46(color): 25(ptr) Variable Input
50(alpha): 49(ptr) Variable Input 50: TypePointer Input 7(float)
54: TypePointer Output 8(fvec4) 51(alpha): 50(ptr) Variable Input
55(gl_FragColor): 54(ptr) Variable Output 55: TypePointer Output 8(fvec4)
56: 20(int) Constant 0 56(gl_FragColor): 55(ptr) Variable Output
57: 21(int) Constant 0
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
10(texColor): 9(ptr) Variable Function 10(texColor): 9(ptr) Variable Function
14: 11 Load 13(texSampler2D) 15: 12 Load 14(texSampler2D)
23: 20(int) Load 22(b) 24: 21(int) Load 23(b)
25: 24(ptr) AccessChain 19(userIn) 23 26: 25(ptr) AccessChain 20(userIn) 24
26: 8(fvec4) Load 25 27: 8(fvec4) Load 26
32: 20(int) Load 31(a) 33: 21(int) Load 32(a)
33: 24(ptr) AccessChain 30(gl_TexCoord) 32 34: 25(ptr) AccessChain 31(gl_TexCoord) 33
34: 8(fvec4) Load 33 35: 8(fvec4) Load 34
35: 8(fvec4) FAdd 26 34 36: 8(fvec4) FAdd 27 35
37: 24(ptr) AccessChain 30(gl_TexCoord) 36 38: 25(ptr) AccessChain 31(gl_TexCoord) 37
38: 8(fvec4) Load 37 39: 8(fvec4) Load 38
39: 8(fvec4) FAdd 35 38 40: 8(fvec4) FAdd 36 39
41: 7(float) CompositeExtract 39 0 42: 7(float) CompositeExtract 40 0
42: 7(float) CompositeExtract 39 1 43: 7(float) CompositeExtract 40 1
43: 40(fvec2) CompositeConstruct 41 42 44: 41(fvec2) CompositeConstruct 42 43
44: 8(fvec4) TextureSample 14 43 45: 8(fvec4) ImageSampleImplicitLod 15 44
Store 10(texColor) 44 Store 10(texColor) 45
46: 8(fvec4) Load 45(color) 47: 8(fvec4) Load 46(color)
47: 8(fvec4) Load 10(texColor) 48: 8(fvec4) Load 10(texColor)
48: 8(fvec4) FAdd 47 46 49: 8(fvec4) FAdd 48 47
Store 10(texColor) 48 Store 10(texColor) 49
51: 7(float) Load 50(alpha) 52: 7(float) Load 51(alpha)
52: 8(fvec4) Load 10(texColor) 53: 8(fvec4) Load 10(texColor)
53: 8(fvec4) CompositeInsert 51 52 3 54: 8(fvec4) CompositeInsert 52 53 3
Store 10(texColor) 53 Store 10(texColor) 54
57: 24(ptr) AccessChain 30(gl_TexCoord) 56 58: 25(ptr) AccessChain 31(gl_TexCoord) 57
58: 8(fvec4) Load 57 59: 8(fvec4) Load 58
59: 20(int) Load 22(b) 60: 21(int) Load 23(b)
60: 24(ptr) AccessChain 30(gl_TexCoord) 59 61: 25(ptr) AccessChain 31(gl_TexCoord) 60
61: 8(fvec4) Load 60 62: 8(fvec4) Load 61
62: 8(fvec4) FAdd 58 61 63: 8(fvec4) FAdd 59 62
63: 8(fvec4) Load 10(texColor) 64: 8(fvec4) Load 10(texColor)
64: 8(fvec4) FAdd 62 63 65: 8(fvec4) FAdd 63 64
65: 20(int) Load 31(a) 66: 21(int) Load 32(a)
66: 24(ptr) AccessChain 19(userIn) 65 67: 25(ptr) AccessChain 20(userIn) 66
67: 8(fvec4) Load 66 68: 8(fvec4) Load 67
68: 8(fvec4) FAdd 64 67 69: 8(fvec4) FAdd 65 68
Store 55(gl_FragColor) 68 Store 56(gl_FragColor) 69
Branch 6 Branch 6
6: Label 6: Label
Return Return

54
Test/baseResults/spv.voidFunction.frag.out Normal file → Executable file
View File

@ -8,9 +8,11 @@ Linked fragment stage:
// Id's are bound by 43 // Id's are bound by 43
Source GLSL 120 Source GLSL 120
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 7 "foo(" Name 7 "foo("
Name 9 "foo2(" Name 9 "foo2("
@ -21,58 +23,58 @@ Linked fragment stage:
Name 40 "BaseColor" Name 40 "BaseColor"
Name 42 "d" Name 42 "d"
Decorate 36(gl_FragColor) BuiltIn FragColor Decorate 36(gl_FragColor) BuiltIn FragColor
Decorate 40(BaseColor) Smooth Decorate 40(BaseColor) Smooth
Decorate 40(BaseColor) NoStaticUse Decorate 40(BaseColor) NoStaticUse
Decorate 42(d) NoStaticUse Decorate 42(d) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
11: TypeFloat 32 11: TypeFloat 32
12: TypePointer PrivateGlobal 11(float) 12: TypePointer PrivateGlobal 11(float)
13(bar): 12(ptr) Variable PrivateGlobal 13(bar): 12(ptr) Variable PrivateGlobal
14: 11(float) Constant 1073741824 14: 11(float) Constant 1073741824
16: 11(float) Constant 1065353216 16: 11(float) Constant 1065353216
21: TypeVector 11(float) 4 21: TypeVector 11(float) 4
22: TypePointer Function 21(fvec4) 22: TypePointer Function 21(fvec4)
24: TypePointer UniformConstant 21(fvec4) 24: TypePointer UniformConstant 21(fvec4)
25(bigColor): 24(ptr) Variable UniformConstant 25(bigColor): 24(ptr) Variable UniformConstant
35: TypePointer Output 21(fvec4) 35: TypePointer Output 21(fvec4)
36(gl_FragColor): 35(ptr) Variable Output 36(gl_FragColor): 35(ptr) Variable Output
39: TypePointer Input 21(fvec4) 39: TypePointer Input 21(fvec4)
40(BaseColor): 39(ptr) Variable Input 40(BaseColor): 39(ptr) Variable Input
41: TypePointer UniformConstant 11(float) 41: TypePointer UniformConstant 11(float)
42(d): 41(ptr) Variable UniformConstant 42(d): 41(ptr) Variable UniformConstant
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
23(outColor): 22(ptr) Variable Function 23(outColor): 22(ptr) Variable Function
Store 13(bar) 14 Store 13(bar) 14
26: 21(fvec4) Load 25(bigColor) 26: 21(fvec4) Load 25(bigColor)
Store 23(outColor) 26 Store 23(outColor) 26
27: 2 FunctionCall 7(foo() 27: 2 FunctionCall 7(foo()
28: 2 FunctionCall 9(foo2() 28: 2 FunctionCall 9(foo2()
29: 11(float) Load 13(bar) 29: 11(float) Load 13(bar)
30: 21(fvec4) Load 23(outColor) 30: 21(fvec4) Load 23(outColor)
31: 11(float) CompositeExtract 30 0 31: 11(float) CompositeExtract 30 0
32: 11(float) FAdd 31 29 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 34: 21(fvec4) CompositeInsert 32 33 0
Store 23(outColor) 34 Store 23(outColor) 34
37: 21(fvec4) Load 23(outColor) 37: 21(fvec4) Load 23(outColor)
Store 36(gl_FragColor) 37 Store 36(gl_FragColor) 37
Branch 6 Branch 6
6: Label 6: Label
Return Return
FunctionEnd FunctionEnd
7(foo(): 2 Function None 3 7(foo(): 2 Function None 3
8: Label 8: Label
15: 11(float) Load 13(bar) 15: 11(float) Load 13(bar)
17: 11(float) FAdd 15 16 17: 11(float) FAdd 15 16
Store 13(bar) 17 Store 13(bar) 17
Return Return
FunctionEnd FunctionEnd
9(foo2(): 2 Function None 3 9(foo2(): 2 Function None 3
10: Label 10: Label
19: 11(float) Load 13(bar) 19: 11(float) Load 13(bar)
20: 11(float) FAdd 19 16 20: 11(float) FAdd 19 16
Store 13(bar) 20 Store 13(bar) 20
Return Return
FunctionEnd FunctionEnd

60
Test/baseResults/spv.while-continue-break.vert.out Normal file → Executable file
View File

@ -8,9 +8,10 @@ Linked vertex stage:
// Id's are bound by 43 // Id's are bound by 43
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 18 "A" Name 18 "A"
@ -19,19 +20,12 @@ Linked vertex stage:
Name 38 "D" Name 38 "D"
Name 41 "gl_VertexID" Name 41 "gl_VertexID"
Name 42 "gl_InstanceID" 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) BuiltIn VertexId
Decorate 41(gl_VertexID) NoStaticUse Decorate 41(gl_VertexID) NoStaticUse
Decorate 42(gl_InstanceID) PrecisionHigh
Decorate 42(gl_InstanceID) BuiltIn InstanceId Decorate 42(gl_InstanceID) BuiltIn InstanceId
Decorate 42(gl_InstanceID) NoStaticUse Decorate 42(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 0 10: 7(int) Constant 0
@ -42,54 +36,54 @@ Linked vertex stage:
30: 7(int) Constant 5 30: 7(int) Constant 5
39: 7(int) Constant 3 39: 7(int) Constant 3
40: TypePointer Input 7(int) 40: TypePointer Input 7(int)
41(gl_VertexID): 40(ptr) Variable Input 41(gl_VertexID): 40(ptr) Variable Input
42(gl_InstanceID): 40(ptr) Variable Input 42(gl_InstanceID): 40(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
18(A): 8(ptr) Variable Function 18(A): 8(ptr) Variable Function
26(B): 8(ptr) Variable Function 26(B): 8(ptr) Variable Function
28(C): 8(ptr) Variable Function 28(C): 8(ptr) Variable Function
38(D): 8(ptr) Variable Function 38(D): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 7(int) Load 9(i) 14: 7(int) Load 9(i)
17: 16(bool) SLessThan 14 15 17: 16(bool) SLessThan 14 15
LoopMerge 12 None LoopMerge 12 None
BranchConditional 17 13 12 BranchConditional 17 13 12
13: Label 13: Label
Store 18(A) 19 Store 18(A) 19
20: 7(int) Load 9(i) 20: 7(int) Load 9(i)
22: 7(int) SMod 20 21 22: 7(int) SMod 20 21
23: 16(bool) IEqual 22 10 23: 16(bool) IEqual 22 10
SelectionMerge 25 None SelectionMerge 25 None
BranchConditional 23 24 25 BranchConditional 23 24 25
24: Label 24: Label
Store 26(B) 21 Store 26(B) 21
Branch 11 Branch 11
27: Label 27: Label
Store 28(C) 21 Store 28(C) 21
Branch 25 Branch 25
25: Label 25: Label
29: 7(int) Load 9(i) 29: 7(int) Load 9(i)
31: 7(int) SMod 29 30 31: 7(int) SMod 29 30
32: 16(bool) IEqual 31 10 32: 16(bool) IEqual 31 10
SelectionMerge 34 None SelectionMerge 34 None
BranchConditional 32 33 34 BranchConditional 32 33 34
33: Label 33: Label
Store 26(B) 21 Store 26(B) 21
Branch 12 Branch 12
35: Label 35: Label
Store 28(C) 21 Store 28(C) 21
Branch 34 Branch 34
34: Label 34: Label
36: 7(int) Load 9(i) 36: 7(int) Load 9(i)
37: 7(int) IAdd 36 19 37: 7(int) IAdd 36 19
Store 9(i) 37 Store 9(i) 37
Branch 11 Branch 11
12: Label 12: Label
Store 38(D) 39 Store 38(D) 39
Branch 6 Branch 6
6: Label 6: Label
Return Return

28
Test/baseResults/spv.while-simple.vert.out Normal file → Executable file
View File

@ -8,22 +8,20 @@ Linked vertex stage:
// Id's are bound by 24 // Id's are bound by 24
Source ESSL 300 Source ESSL 300
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 EntryPoint Vertex 4 "main"
Name 4 "main" Name 4 "main"
Name 9 "i" Name 9 "i"
Name 22 "gl_VertexID" Name 22 "gl_VertexID"
Name 23 "gl_InstanceID" Name 23 "gl_InstanceID"
Decorate 9(i) PrecisionHigh
Decorate 22(gl_VertexID) PrecisionHigh
Decorate 22(gl_VertexID) BuiltIn VertexId Decorate 22(gl_VertexID) BuiltIn VertexId
Decorate 22(gl_VertexID) NoStaticUse Decorate 22(gl_VertexID) NoStaticUse
Decorate 23(gl_InstanceID) PrecisionHigh
Decorate 23(gl_InstanceID) BuiltIn InstanceId Decorate 23(gl_InstanceID) BuiltIn InstanceId
Decorate 23(gl_InstanceID) NoStaticUse Decorate 23(gl_InstanceID) NoStaticUse
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeInt 32 1 7: TypeInt 32 1
8: TypePointer Function 7(int) 8: TypePointer Function 7(int)
10: 7(int) Constant 0 10: 7(int) Constant 0
@ -31,22 +29,22 @@ Linked vertex stage:
16: TypeBool 16: TypeBool
19: 7(int) Constant 1 19: 7(int) Constant 1
21: TypePointer Input 7(int) 21: TypePointer Input 7(int)
22(gl_VertexID): 21(ptr) Variable Input 22(gl_VertexID): 21(ptr) Variable Input
23(gl_InstanceID): 21(ptr) Variable Input 23(gl_InstanceID): 21(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
9(i): 8(ptr) Variable Function 9(i): 8(ptr) Variable Function
Store 9(i) 10 Store 9(i) 10
Branch 11 Branch 11
11: Label 11: Label
14: 7(int) Load 9(i) 14: 7(int) Load 9(i)
17: 16(bool) SLessThan 14 15 17: 16(bool) SLessThan 14 15
LoopMerge 12 None LoopMerge 12 None
BranchConditional 17 13 12 BranchConditional 17 13 12
13: Label 13: Label
18: 7(int) Load 9(i) 18: 7(int) Load 9(i)
20: 7(int) IAdd 18 19 20: 7(int) IAdd 18 19
Store 9(i) 20 Store 9(i) 20
Branch 11 Branch 11
12: Label 12: Label
Branch 6 Branch 6

38
Test/baseResults/spv.whileLoop.frag.out Normal file → Executable file
View File

@ -8,53 +8,55 @@ Linked fragment stage:
// Id's are bound by 32 // Id's are bound by 32
Source GLSL 110 Source GLSL 110
Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main" Name 4 "main"
Name 10 "color" Name 10 "color"
Name 12 "BaseColor" Name 12 "BaseColor"
Name 20 "d" Name 20 "d"
Name 25 "bigColor" Name 25 "bigColor"
Name 30 "gl_FragColor" Name 30 "gl_FragColor"
Decorate 12(BaseColor) Smooth Decorate 12(BaseColor) Smooth
Decorate 30(gl_FragColor) BuiltIn FragColor Decorate 30(gl_FragColor) BuiltIn FragColor
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
7: TypeFloat 32 7: TypeFloat 32
8: TypeVector 7(float) 4 8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4) 9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4) 11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input 12(BaseColor): 11(ptr) Variable Input
19: TypePointer UniformConstant 7(float) 19: TypePointer UniformConstant 7(float)
20(d): 19(ptr) Variable UniformConstant 20(d): 19(ptr) Variable UniformConstant
22: TypeBool 22: TypeBool
24: TypePointer UniformConstant 8(fvec4) 24: TypePointer UniformConstant 8(fvec4)
25(bigColor): 24(ptr) Variable UniformConstant 25(bigColor): 24(ptr) Variable UniformConstant
29: TypePointer Output 8(fvec4) 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 4(main): 2 Function None 3
5: Label 5: Label
10(color): 9(ptr) Variable Function 10(color): 9(ptr) Variable Function
13: 8(fvec4) Load 12(BaseColor) 13: 8(fvec4) Load 12(BaseColor)
Store 10(color) 13 Store 10(color) 13
Branch 14 Branch 14
14: Label 14: Label
17: 8(fvec4) Load 10(color) 17: 8(fvec4) Load 10(color)
18: 7(float) CompositeExtract 17 0 18: 7(float) CompositeExtract 17 0
21: 7(float) Load 20(d) 21: 7(float) Load 20(d)
23: 22(bool) FOrdLessThan 18 21 23: 22(bool) FOrdLessThan 18 21
LoopMerge 15 None LoopMerge 15 None
BranchConditional 23 16 15 BranchConditional 23 16 15
16: Label 16: Label
26: 8(fvec4) Load 25(bigColor) 26: 8(fvec4) Load 25(bigColor)
27: 8(fvec4) Load 10(color) 27: 8(fvec4) Load 10(color)
28: 8(fvec4) FAdd 27 26 28: 8(fvec4) FAdd 27 26
Store 10(color) 28 Store 10(color) 28
Branch 14 Branch 14
15: Label 15: Label
31: 8(fvec4) Load 10(color) 31: 8(fvec4) Load 10(color)
Store 30(gl_FragColor) 31 Store 30(gl_FragColor) 31
Branch 6 Branch 6
6: Label 6: Label
Return Return

View File

@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits. // 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). // 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" #define GLSLANG_DATE "06-Aug-2015"